Ativação do DRI3 em placa Radeon

Iniciado por Pedru, 01 de Setembro de 2015, 23:04

tópico anterior - próximo tópico

Pedru

Fala, pessoal! Já faz um tempo que não posto aqui.

Bem, ultimamente eu tenho tido problemas com o sistema operacional da Microsoft, e eu dependo dele um pouco para jogos, mas acabei descobrindo que conseguia rodar meu jogo favorito *cof*League of Legends*cof* usando o PlayOnLinux e alguns atalhos e patches diferentes do Wine dentro do meu querido Ubuntu 14.04.2 LTS.

Nessa minha jornada pra fazer o jogo funcionar bem, acabei descobrindo que era melhor utilizar os drivers open source da Radeon, que possuem módulos do Gallium, e descobri um Patch do Wine que possuía suporte especial ao Gallium, um patch conhecido como Gallium-Nine (https://wiki.ixit.cz/d3d9) ou como wine-d3dadapter. Esse patch possui uma funcionalidade especial que permite uma interação muito mais fluida do Wine com o Direct3D, e que tem ligação direta com o driver Gallium. Assim, os jogos conseguem rodar com FPS mais alto e mais próximos do que rodariam no Windows.

Isso é extremamente animador, e eu segui todas as instruções possíveis para poder executar o Wine-Gallium-Nine com sucesso. (https://launchpad.net/~commendsarnex/+archive/ubuntu/winedri3) Até instalei o ppa e os drivers mais novos xserver-xorg-video-ati e xserver-xorg-video-radeon como dizem os ppas do Oibaf (https://launchpad.net/~oibaf/+archive/ubuntu/gallium-nine).

Entretanto existe um pequeno problema. Existe um framework nesses drivers conhecido como DRI3 (https://en.wikipedia.org/wiki/Direct_Rendering_Infrastructure), que dá um suporte muito melhor ao Direct3D, e ele precisa ser ativado nos drivers. Eu percebi através do depurador do PlayOnLinux que ele procura pelo DRI3 ativado, mas quando não acha, volta ao DRI2:
err:x11drv:DRI3CheckExtension DRI3 advertised, but not working
err:d3dadapter:has_d3dadapter Unable to query DRI3. Trying DRI2 fallback (slower performance).


Os ppas sugerem que eu tente colocar a seguinte configuração no meu /etc/X11/xorg.conf (arquivo que não existe por padrão no meu Ubuntu):

Section "Device"
   Identifier "radeon"
   Driver "radeon"
   Option "DRI3"
EndSection


Entretanto, ao fazer isso e reiniciar o meu computador, a tela do PC buga, fica toda preta, ou às vezes até toda embaralhada e é impossível usar o sistema. Eu tive de deletar o arquivo que criei com apenas essas informações para poder voltar a utilizar o sistema.

Abri o xorg.0.log que achei em /var/log e vi que ele inicializava o DRI3:
[    24.204] Initializing built-in extension DRI3

E também carregava varios outros drivers:
[    24.204] (II) LoadModule: "glx"
[    24.268] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    24.648] (II) Module glx: vendor="X.Org Foundation"
[    24.648] compiled for 1.15.1, module version = 1.0.0
[    24.648] ABI class: X.Org Server Extension, version 8.0
[    24.648] (==) AIGLX enabled
[    24.648] Loading extension GLX
[    24.648] (==) Matched fglrx as autoconfigured driver 0
[    24.648] (==) Matched ati as autoconfigured driver 1
[    24.648] (==) Matched fglrx as autoconfigured driver 2
[    24.648] (==) Matched ati as autoconfigured driver 3
[    24.648] (==) Matched modesetting as autoconfigured driver 4
[    24.648] (==) Matched fbdev as autoconfigured driver 5
[    24.648] (==) Matched vesa as autoconfigured driver 6
[    24.648] (==) Assigned the driver to the xf86ConfigLayout
[    24.648] (II) LoadModule: "fglrx"
[    24.649] (WW) Warning, couldn't open module fglrx
[    24.649] (II) UnloadModule: "fglrx"
[    24.649] (II) Unloading fglrx
[    24.649] (EE) Failed to load module "fglrx" (module does not exist, 0)
[    24.649] (II) LoadModule: "ati"
[    24.649] (II) Loading /usr/lib/xorg/modules/drivers/ati_drv.so
[    24.666] (II) Module ati: vendor="X.Org Foundation"
[    24.666] compiled for 1.15.1, module version = 7.5.99
[    24.666] Module class: X.Org Video Driver
[    24.666] ABI class: X.Org Video Driver, version 15.0
[    24.666] (II) LoadModule: "radeon"
[    24.667] (II) Loading /usr/lib/xorg/modules/drivers/radeon_drv.so
[    24.749] (II) Module radeon: vendor="X.Org Foundation"
[    24.749] compiled for 1.15.1, module version = 7.5.99
[    24.749] Module class: X.Org Video Driver
[    24.749] ABI class: X.Org Video Driver, version 15.0


E pra ter certeza, vi que ele não rodava o fglrx (driver proprietário da ati):
[    24.790] (II) LoadModule: "fglrx"
[    24.790] (WW) Warning, couldn't open module fglrx
[    24.790] (II) UnloadModule: "fglrx"
[    24.790] (II) Unloading fglrx
[    24.790] (EE) Failed to load module "fglrx" (module does not exist, 0)
[    24.790] (II) LoadModule: "ati"
[    24.790] (II) Loading /usr/lib/xorg/modules/drivers/ati_drv.so
[    24.790] (II) Module ati: vendor="X.Org Foundation"
[    24.790] compiled for 1.15.1, module version = 7.5.99
[    24.790] Module class: X.Org Video Driver
[    24.790] ABI class: X.Org Video Driver, version 15.0


E em um certo ponto, ele desabilita o DRI3:
[    25.054] (II) RADEON(0): [DRI2] Setup complete
[    25.054] (II) RADEON(0): [DRI2]   DRI driver: r600
[    25.054] (II) RADEON(0): [DRI2]   VDPAU driver: r600
[    25.054] (II) RADEON(0): Front buffer size: 4224K
[    25.054] (II) RADEON(0): VRAM usage limit set to 935856K
[    25.054] (==) RADEON(0): DRI3 disabled


Acredito que haja alguma opção, alguma forma de habilitar o DRI3. Se alguém souber mexer com isso, me ajude. Não quero ter que compilar todo o driver do MESA novamente só para habilitar do DRI3 (ou acabar descobrindo que eu não consegui habilitá-lo mesmo assim).

Um abraço!

OBS.: Ah, sim, também estou ciente que existe um patch do Wine conhecido como Wine-staging que possui a opção de ativar CSMT e melhorar performance em jogos. O problema é que o CSMT causa travamentos no League of Legends, e não melhora tanto a performance como o Wine-Gallium.

Minhas configurações:
Ubuntu 14.04 (trusty) 3.13.0-63-generic (#103-Ubuntu SMP Fri Aug 14 21:42:59 UTC 2015)
Xorg version 1.15.1 (12 February 2015  02:49:29PM)
Intel Core 2 Duo E7400 @ 2.80 GHz
4 GB RAM
ATI Radeon HD 4650
Mecanismo de renderização: Gallium 0.4 on AMD RV730 (DRM 2.36.0, LLVM 3.6.2)
wine1.7.49-gallium-nine instalado do PPA, utilizado no PlayOnLinux 4.2.2 como versão do Sistema (não é um gallium-nine instalado do PlayOnLinux)