Bug 38113

Summary: kernel-image-std-def 5.4: в qemu у многих DE очень мелкий интерфейс
Product: Sisyphus Reporter: Антон Мидюков <antohami>
Component: qemuAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, boyarsh, glebfm, iv, kernelbot, ldv, mike, mithraen, obirvalger, rider, sbolshakov, sem, shaba, shrek, sin, vitty, vsu, vt, zerg
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 33000    
Attachments:
Description Flags
скрин regular-mate
none
мате в qemu с ядрами 4.19 и 5.4
none
мате в qemu с ядрами 4.19 и 5.4 (qemu-4.2.0) none

Description Антон Мидюков 2020-02-18 11:18:14 MSK
Created attachment 8617 [details]
скрин regular-mate

При использовании ядер std-def и un-def в qemu не масштабируется интерфейс во всех DE, кроме gnome3 и Cinnamon. При загрузке с ядром 4.19 такой проблемы нет.
Comment 1 Антон Мидюков 2020-02-18 11:25:25 MSK
Удаление kernel-modules-drm-std-def и make-initrd проблему решают.
Comment 2 Антон Мидюков 2020-02-25 11:17:34 MSK
Я считаю, что это проблема является препятствием для попадания ядра 5.4 в качестве std-def в p9, так как мы же ещё делаем десктопные сборки для cloud. Пока это только alt-workstation-cloud.
Comment 3 Anton Farygin 2020-02-25 11:26:05 MSK
А что значит - не маштабируется ? 
При увеличении окна ?
Comment 4 Антон Мидюков 2020-02-25 11:48:28 MSK
(Ответ для Anton Farygin на комментарий #3)
> А что значит - не маштабируется ? 
> При увеличении окна ?

Нет. Как я понимаю, обычно dpi подбирается автоматически, исходя из физических размеров экрана и разрешения. Так что при высоких разрешениях экрана интерфейс всё равно достаточно крупен, чтобы его нормально разглядеть можно было. Сейчас же в qemu всё очень мелко при любых размерах окна (любом разрешении).

Чтобы почувствовать разницу, нужно загрузиться в qemu с ядром 4.19, а потом с ядром 5.4.

Проблема присутствует как при запуске с опцией -vga virtio (используется модуль ядра virtio-gpu), так и без неё (используется модуль ядра bochs_drm).
Comment 5 Anton Farygin 2020-02-25 11:52:09 MSK
А с qxl есть проблема ?
Comment 6 Антон Мидюков 2020-02-25 13:28:51 MSK
(Ответ для Anton Farygin на комментарий #5)
> А с qxl есть проблема ?

С опцией -vga qxl проблема не наблюдается. Но она же доступна только для x86?
Comment 7 Anton V. Boyarshinov 2020-02-25 14:27:28 MSK
Created attachment 8635 [details]
мате в qemu с ядрами 4.19 и 5.4

Не вижу никакой разницы в размерах шрифтов и элементов интерфейса.
Comment 8 Антон Мидюков 2020-02-25 14:42:01 MSK
(Ответ для Anton V. Boyarshinov на комментарий #7)
> Создано вложение 8635 [details] [подробности]
> мате в qemu с ядрами 4.19 и 5.4
> 
> Не вижу никакой разницы в размерах шрифтов и элементов интерфейса.

А версия qemu у вас какая?
Comment 9 Sergey V Turchin 2020-02-25 14:43:51 MSK
(Ответ для Антон Мидюков на комментарий #0)
> не масштабируется интерфейс во всех DE
Есть разница в выводе от
xdpyinfo | grep -E '(resol|dimen)'
?
Comment 10 Anton V. Boyarshinov 2020-02-25 15:17:02 MSK
(Ответ для Sergey V Turchin на комментарий #9)
> (Ответ для Антон Мидюков на комментарий #0)
> > не масштабируется интерфейс во всех DE
>А версия qemu у вас какая?

QEMU emulator version 3.0.1

> Есть разница в выводе от
> xdpyinfo | grep -E '(resol|dimen)'
> ?

Нет, всё одинаково.
1024x768 pixels (270x203 millimeters)
96x96 dpi
Comment 11 Anton V. Boyarshinov 2020-02-25 15:32:01 MSK
> > Есть разница в выводе от
> > xdpyinfo | grep -E '(resol|dimen)'
> > ?
> 
> Нет, всё одинаково.
> 1024x768 pixels (270x203 millimeters)
> 96x96 dpi

А вот после обновления qemu до p9, разрешение получается 65 dpi, а размер экрана 403x203 мм
Comment 12 Антон Мидюков 2020-02-25 15:35:41 MSK
Created attachment 8636 [details]
мате в qemu с ядрами 4.19 и 5.4 (qemu-4.2.0)

У меня qemu 4.2.0. Я установил стартеркит p9, обновил ядро, сделал скрины при загрузке с ядрами 5.4 (справа) и 4.19 (слева). При загрузке с ядром 4.19 dpi 96x96, при загрузке с 5.4 dpi 65x65. Я уже думал, что проблема в том, что у меня на хосте принудительно установлен dpi 96x96 (пакет xorg-96dpi). Удалил пакет, перезагрузилс результат тот же. Остаётся грешить на qemu 4.2.0 раз нет проблем с qemu 3.0.1.
Comment 13 Антон Мидюков 2020-02-25 15:42:41 MSK
Также убедился, что проблема есть и на aarch64. Проверял с опциями -device virtio-gpu,xres=1280,yres=800 -vnc :0
Comment 14 Anton V. Boyarshinov 2020-02-25 16:19:04 MSK
исследование исходников показало вот что:
1) в версии ядра 4.20 добавили чтение EDID в драйвера virtio-gpu и bochs
2) в qemu после 3.1 добавили поддержку создания этого самого edid

До этой версии ядра и qemu разрешение считалось равным 96 и размеры экрана вычислялись из него. А теперь они приходят из qemu. Срабатывает это, естественно, когда ядро >4.20 и qemu >3.2

Почему qemu выдаёт такие странные размеры экрана я сказать не могу. В qemu, насколько я понял, можно отключить поддержку EDID (во время комплияции), но не знаю как наши образы поведут себя на чужих qemu.
Comment 15 Anton V. Boyarshinov 2020-02-25 17:45:27 MSK
Я нашёл забавную ошибку в qemu, из-за которой это происходит. Будем делать исправление и апстримить его.
Comment 17 Gleb F-Malinovskiy 2020-02-25 21:06:07 MSK
(In reply to Anton V. Boyarshinov from comment #16)
> http://git.altlinux.org/people/boyarsh/packages/qemu.git?p=qemu.git;a=commit;
> h=01c46e6850c6d4586674c1e54fd2e403c6ae867c

Разве cast сделает из float то что ты хочешь?
Comment 18 Anton V. Boyarshinov 2020-02-25 22:40:12 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #17)
> (In reply to Anton V. Boyarshinov from comment #16)
> > http://git.altlinux.org/people/boyarsh/packages/qemu.git?p=qemu.git;a=commit;
> > h=01c46e6850c6d4586674c1e54fd2e403c6ae867c
> 
> Разве cast сделает из float то что ты хочешь?

В половине случаев -- да. Для реальных случаев 96 и 100 -- он делает ровно то, что надо 27 и 26. Я писал тестовую программу.

Так или иначе, ошибка на полсантиметра явно лучше, чем ошибка почти вдвое.
Comment 19 Dmitry V. Levin 2020-02-26 00:53:28 MSK
А почему просто не написать info->prefx * 254 / 100 / info->dpi и info->prefy * 254 / 100 / info->dpi?
Comment 20 Sergey V Turchin 2020-02-26 09:22:46 MSK
(Ответ для Dmitry V. Levin на комментарий #19)
> А почему просто не написать info->prefx * 254 / 100 / info->dpi и
> info->prefy * 254 / 100 / info->dpi?
Попробовал: у Boyarsh меньше на 1. Видимо, тут точнее, т.к. у Антона обрезание без округления.
Comment 21 Anton V. Boyarshinov 2020-02-26 10:38:44 MSK
(Ответ для Sergey V Turchin на комментарий #20)
> (Ответ для Dmitry V. Levin на комментарий #19)
> > А почему просто не написать info->prefx * 254 / 100 / info->dpi и
> > info->prefy * 254 / 100 / info->dpi?

Я думал об этом, но мне не понравилась перестановка операндов, которая лично мне кажется контринтуитивной. Они уже один раз переупорядочили эту формулу -- такая фигня получилась... 

> Попробовал: у Boyarsh меньше на 1. Видимо, тут точнее, т.к. у Антона
> обрезание без округления.

А в этой конструкции округление откуда возьмётся?
Comment 22 Sergey V Turchin 2020-02-26 11:12:06 MSK
(Ответ для Anton V. Boyarshinov на комментарий #21)
> А в этой конструкции округление откуда возьмётся?
Просто меньше обрезается, видимо.
Comment 23 Dmitry V. Levin 2020-02-26 13:32:37 MSK
Не будите float, пока оно тихо.
Comment 24 Антон Мидюков 2020-04-28 16:06:28 MSK
Есть новости какие-нибудь?
Comment 25 Alexey Shabalin 2020-04-28 16:51:03 MSK
(Ответ для Антон Мидюков на комментарий #24)
> Есть новости какие-нибудь?
в qemu-4.2.0-alt2 этот патч добавлен, и в сизифе и в p9.
Comment 26 Антон Мидюков 2020-07-15 23:23:04 MSK
(Ответ для Alexey Shabalin на комментарий #25)
> (Ответ для Антон Мидюков на комментарий #24)
> > Есть новости какие-нибудь?
> в qemu-4.2.0-alt2 этот патч добавлен, и в сизифе и в p9.

В qemu-5.0.0-alt1 проблема есть.
Comment 27 Антон Мидюков 2022-01-20 18:25:22 MSK
Исправлено и уже очень давно.