Добрый день. Пытаюсь запустить 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 - что этот за ерунда !?!?!
Может кто подскажет куда дальне копать ?