LINUX.ORG.RU

[SOLVED] S3 Savage + DRI

 , , ,


2

2

Добрый день. Пытаюсь запустить X с аппаратным ускорением на Debian (buster) kernel 4.19.0-11-686-pae.

lspci | grep VGA
01:00.0 VGA compatible controller: S3 Grphics Ltd. 86C380 [ProSavageDDR K4M266]

Установил пакет xserver-xorg-video-savage

Сгенерировал xorg.conf с помощью «X -configure» (в разделе Device стоит Driver «savage»)

В секции Screen добавил DefaultDepth 16, якобы direct render на Savage запускается только с 16bit-ным цветом.

При запуске xstart в логах отображается:

SAVAGE(0): Sufficient Videoram available for 3D
SAVAGE(0): DRI isn't enabled
....
Initializing extension GLX
AIGLX: Screen 0 is not DRI2 capable
IGLX: Loaded and initialized swrast
GLS: Initialized DRISWRAST GL proviider for screen0

т.е. видно что используется софтовый рендер. X-ы запускаются glxgears -fullscreen выдает fps 5

После безрезультатных игр с параметрами в секции Device (xorg.conf), решил посмотреть исходники DRV модуля savage.

apt xserver-xorg-video-savage...

Понатыкал отладочных сообщение в savage_driver.c в функции SavageScreenInit (та в свою очередь вызывает SAVAGEDRIScreenInit) и в savage_dri.c функции SAVAGEDRIScreenInit.

Оказалось что в SAVAGEDRIScreenInit, есть проверка:

xf86LoaderCheckSymbol("GlxSetVisualConfigs")

В случае если функция xf86LoaderCheckSymbol возвращает false то SAVAGEDRIScreenInit так же возвращет false, а это в своей очереди указывает в SavageScreenInit что DRI не инициализировался (SAVAGE(0): DRI isn’t enabled).

Причем после проверки xf86LoaderCheckSymbol в коде нету отладочных сообщение, т.е. в логах этого нельзя увидеть.

Поиски показали что вроде как GlxSetVisualConfigs удалили из свежих xorg https://www.mail-archive.com/xorg-devel@lists.x.org/msg53329.html

Закомментировал эту проверку в коде, собрал savage_drv.so заново заменил в модулях xorg

Теперь при старте в логах xorg вот что:

...
[   101.604] (II) SAVAGE(0): psav->NoAccel=false
[   101.604] (II) SAVAGE(0): psav->Chipset is S3_TWISTER true
[   101.604] (II) SAVAGE(0): 4740 kB of Videoram needed for 3D; 32768 kB of Videoram available
[   101.604] (II) SAVAGE(0): Sufficient Videoram available for 3D
[   101.604] (II) SAVAGE(0): Goal #1
[   101.604] (EE) SAVAGE(0): can't load GlxSetVisualConfigs
[   101.609] (II) SAVAGE(0): [drm] bpp: 16 depth: 16
[   101.609] (II) SAVAGE(0): [drm] Sarea 2200+284: 2484
[   101.610] drmOpenDevice: node name is /dev/dri/card0
[   101.616] drmOpenDevice: node name is /dev/dri/card0
[   101.812] drmOpenByBusid: Searching for BusID pci:0000:01:00.0
[   101.812] drmOpenDevice: node name is /dev/dri/card0
[   101.813] drmOpenDevice: open result is 14, (OK)
[   101.814] drmOpenByBusid: drmOpenMinor returns 14
[   101.814] drmOpenByBusid: drmGetBusid reports pci:0000:01:00.0
[   101.814] (II) [drm] loaded kernel module for "savage" driver.
[   101.814] (II) [drm] DRM interface version 1.4
[   101.815] (II) [drm] DRM open master succeeded.
[   101.816] (II) SAVAGE(0): [drm] Using the DRM lock SAREA also for drawables.
[   101.816] (II) SAVAGE(0): [drm] framebuffer handle = 0xd0000000
[   101.816] (II) SAVAGE(0): [drm] added 1 reserved context for kernel
[   101.816] (II) SAVAGE(0): X context handle = 0x1
[   101.816] (EE) SAVAGE(0): [drm] failed to setup DRM signal handler
[   101.816] (EE) SAVAGE(0): [drm] DRIScreenInit failed.  Disabling DRI.
[   101.816] (II) SAVAGE(0): SAVAGEDRIScreeInit return false
[   101.816] (II) SAVAGE(0): psav->ShadowStatus == psav->ConfigShadowStatus = true
[   101.816] (EE) SAVAGE(0): DRI isn't enabled
[   102.018] (II) EXA(0): Offscreen pixmap area of 29749248 bytes
[   102.018] (II) EXA(0): Driver registered support for the following operations:
[   102.018] (II)         Solid
[   102.018] (II)         Copy
[   102.018] (II)         UploadToScreen
[   102.018] (II) SAVAGE(0): Savage EXA Acceleration enabled.
[   102.018] (==) SAVAGE(0): Backing store enabled
[   102.026] (==) SAVAGE(0): DPMS enabled
[   102.026] (WW) SAVAGE(0): Direct rendering disabled
....
[   102.065] (II) SELinux: Disabled on system
[   102.065] (II) Initializing extension GLX
[   102.067] (II) AIGLX: Screen 0 is not DRI2 capable
[   103.315] (II) IGLX: Loaded and initialized swrast
[   103.315] (II) GLX: Initialized DRISWRAST GL provider for screen 0
....
[   104.207] (EE) Backtrace:
[   104.209] (EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x122) [0x5cd122]
[   104.212] (EE) 1: linux-gate.so.1 (?+0x0) [0xb7f37d77]
[   104.216] (EE) 2: ? (?+0x0) [0xc0000000]
[   104.217] (EE) unw_step failed: unspecified (general) error [-1]
[   104.217] (EE) 
[   104.217] (EE) Segmentation fault at address 0xc0000000
[   104.218] (EE) 
Fatal server error:
[   104.218] (EE) Caught signal 11 (Segmentation fault). Server aborting
[   104.218] (EE) 
[   104.218] (EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[   104.218] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[   104.218] (EE) 
[   104.504] (EE) Server terminated with error (1). Closing log file.

X-ы не запускаются.

lsmod | grep savage:
savage	32768	0
drm	323584	2	savage

[drm] failed to setup DRM signal handler - что этот за ерунда !?!?!

Может кто подскажет куда дальне копать ?


S3 Savage

зачем, особенно под линуксом? ещё можно представить такое под старой вендой запускающее старые игры, правда всё равно непонятно зачем

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

Железяка - старый сенсорный POS-терминал. Назначение - управление станком. Все работает, кроме видео, LinuxCNC лагает без нормального OpenGL.

chjohn ()

Все драйвера устаревших видеокарт (т. е. те, которые поддерживали DRI1 и не были переписаны на DRI2) были выкинуты в Mesa 8. Можешь сам убедиться:

$ dpkg -L libgl1-mesa-dri:amd64 | grep -F 'dri/'
/usr/lib/x86_64-linux-gnu/dri/i915_dri.so
/usr/lib/x86_64-linux-gnu/dri/i965_dri.so
/usr/lib/x86_64-linux-gnu/dri/kms_swrast_dri.so
/usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so
/usr/lib/x86_64-linux-gnu/dri/nouveau_vieux_dri.so
/usr/lib/x86_64-linux-gnu/dri/r200_dri.so
/usr/lib/x86_64-linux-gnu/dri/r300_dri.so
/usr/lib/x86_64-linux-gnu/dri/r600_dri.so
/usr/lib/x86_64-linux-gnu/dri/radeon_dri.so
/usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
/usr/lib/x86_64-linux-gnu/dri/virtio_gpu_dri.so
/usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so

Поэтому последняя версия Mesa, поддерживающая аппаратное ускорение для savage, mga и всяких там tdfx – это 7.12 (с ней вместе нужен X-сервер версии ниже 1.15, т. е. выпущенный до декабря 2013).

Источник: https://docs.mesa3d.org/relnotes/8.0.html#changes

Разница очень хорошо заметна при загрузке Knoppix 6.x и 7.x (Knoppix в качестве основы использует как раз Debian).

Соответственно, тебе нужен Debian 6 (Squeeze) – в нём Mesa версии 7.7.1.

X-сервер в Squeeze версии 1.7, в Wheezy1.12.

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

[по мотивам сообщения Bass] может быть стоит просто запустить без установки какой-нибудь debian-live-6.0.10-i386-lxde-desktop.iso ? Вдруг там ещё какие подводные камни всплывут и окажется, что игра не стоит свеч вообще

anonymous ()

А просто modesetting не работает?

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

Можно просто последний Knoppix из ветки 6.x.

На официальном сайте таких древних версий уже нет, но я могу выложить.

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

У меня уже тоже есть. И даже третий =)

Но я целенаправленно их искал. Не то, чтобы сейчас их «днём с огнём», но хочется сэкономить человеку время.

Bass ★★★★★ ()

Так что не охота терять 1-2% от цвета

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

Большое спасибо за ответ.

Да, действительно на squeeze все стартует и glxgears показывает 50 fps в fullscreen.

Может вопрос не для этой ветки, но все же, а можно ли доставить на Debian buster xorg из старой ветки (squeeze).

Я пробовал поставить buster на минималке, и добавив source.list архивный репозиторий c squeeze, установить xorg. Однако эта зараза по зависимостям хочет плоть до ядра откатить на старую версию.

Ручками каждый пакет ставить ? Старый xorg вообще запустится или там «привязка» на ядро ?

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

Не могу ответить исчерпывающе, но, чисто теоретически, можно попробовать.

Но в результате из Buster в системе, скорее всего, будут лишь libc, gcc, ядро и серверные компоненты (условно).

Всё, что зависит от libX11 (включая GTK+, Qt) и, тем более, libgl, вряд ли будет бинарно совместимо с версиями семилетний давности.

Можно,конечно,пересобрать «мир» вручную, но, кажется, дешевле купить за 400 р. умеренно старый GeForce или Radeon с доставкой из Казани Почтой России, а карту S3 загнать за бешеные деньги коллекционерам.

Если таки хочешь сделать адскую солянку из двух версий Debian, советую почитать про APT pinning.

Bass ★★★★★ ()
Последнее исправление: Bass (всего исправлений: 1)
Ответ на: комментарий от Bass

S3 интегрированная, а весь моноблок я купил с avito за 2т.р. :)

После небольшого тестирования, оказалось что система на Debian 6 с аппаратном ускорением имеет тенденцию виснуть намертво при включенном приложение с GL.

Честно сказать я даже логи не полез смотреть, решил пойти иным путем.

Считаю тему закрытой.

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

Возможно, проблема аппаратная.

Стоит проверить пирометром температуру микросхемы S3 и, при необходимости, заменить термопасту/радиатор/вентилятор.

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

Debian 6 с аппаратном ускорением имеет тенденцию виснуть намертво

Это стандартная проблема при использовании открытых дров с аппараткой. Все старые карточки виснут либо сразу либо через некоторое время - тестировать, заводить баги некому, да и чинить такое тоже некому.

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