LINUX.ORG.RU

Запуск Quake в «неродном» разрешении

 ,


0

1

Всем здравствуйте.

Есть ноутбук с одной встроенной и одной внешней («дискретной») видеокартой:

$ xrandr --listproviders 
Providers: number : 2
Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 5 associated providers: 1 name:Intel
Provider 1: id: 0x54 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 5 outputs: 0 associated providers: 1 name:POLARIS11 @ pci:0000:01:00.0

$ glxinfo | grep -F 'OpenGL renderer'
OpenGL renderer string: Mesa DRI Intel(R) Kabylake GT2 

$ DRI_PRIME=1 glxinfo | grep -F 'OpenGL renderer'
OpenGL renderer string: Gallium 0.4 on AMD POLARIS11 (DRM 3.27.0 / 4.19.0-0.bpo.6-amd64, LLVM 3.9.1)

У этого ноутбука есть один встроенный (1920x1080) и один внешний монитор (3840x2160).

Так вот проблема в том, что ни один из движков quake (quakespasm, darkplaces) я не могу включить в разрешении, отличном от «родного» разрешения монитора (4k для внешнего либо 1080p для встроенного).

Причём независимо от того, добавляю ли я ключи командной строки (-width 640 -height 480) либо предварительно переключаю монитор в более низкое разрешение (через lxrandr или arandr) – я вижу либо искажённую картинку, либо серый экран. Поведение не зависит от используемого движка quake.

Как лечить?

★★★★★

Последнее исправление: Bass (всего исправлений: 1)

Попробуй в начале сменить разрешение на нужное на самом мониторе посреством screen -s разрешение, а потом запускать движок quake, после выхода из quake вернёшь назрешение назад.

anonymous
()

Не знаю, как в портах первого Quake, но в актуальных source-портах Quake II, например, Yamagi Quake II, для вывода изображения используется библиотека SDL2, которая позволяет запускать Quake II в различных разрешениях не меняя сам видеорежим. Достигается это, если я ничего не путаю, с помощью флага SDL_WINDOW_FULLSCREEN_DESKTOP:

https://github.com/yquake2/yquake2/blob/6ecc083c837923de920b06273853977d476de7c9/src/client/vid/glimp_sdl.c#L112

В самом Quake II это видно как «Fullscreen: Keep resolution».

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

В quakespasm есть настройка r_scale, которая позволяет понизить качество картинки не меняя разрешение.

anonymous
()
Ответ на: комментарий от xDShot

А, написано в шапке.

Там спец квар есть для эксклюзивного полного разрешения.

Или хочется игру растянуть на все мониторы?..

xDShot ★★★★★
()
Ответ на: комментарий от xDShot

Нет, хочется таки на одном.

Но неужели мой сценарий настолько редок, что стандартными настройками это решить невозможно? Зачем специальные переменные?

Bass ★★★★★
() автор топика

В общем, всем спасибо, но проблема разрешилась совсем по-другому.

Во-первых, для quakespasm, поддерживающего оконный режим, нашёлся свой специфичный обходной путь: предварительно переключившись в видеорежим с пониженным разрешением, запустить его с пониженным разрешением, выключив при этом window decorations. При этом окно, естественно, рисуется, начиная с левого верхнего угла, т. е. с геометрией WxH+0+0, что меня вполне устраивает:

quakespasm -basedir /usr/share/games/quake -width 1920 -height 1080 -w

Что касается darkplaces, то здесь такой трюк не прокатывает. Но выяснилось, что у WindowMaker есть свои сильные и слабые стороны. Похоже, что переключения видеорежима в 1080p с помощью обычного lxrandr/arandr было недостаточно, т. к. (моя гипотеза) размер корневого окна оставался прежним. А вот после перезапуска WindowMaker последующий запуск любого из движков quake в полноэкранном режиме в текущем (пониженном) разрешении проходил успешно.

Bass ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.