Steam Proton - Guia e Feedback

Arucard1983

Power Member
alguem aqui podia era criar um topico proprio para ensinar/tirar duvidas focado no steam proton do linux.

Conforme pedido pelo utilizador supra-citado, eu concordo que é necessário ter um thread dedicado para esta funcionalidade.

No próximo post devo colocar um Guia Rápido para usar o Steam Proton convenientemente, bem como alertar alugumas falhas que em certos casos eram plenamente evitáveis...
 
Steam Proton:
Lançado nos finais de Agosto de 2018, o cliente Linux do Steam agregou o projecto Wine para permitir a execução de jogos exclusivos do Windows em sistemas Linux.
Para este efeito criou-se um fork do Wine (Proton) com patches específicos para optimizar a execução detes jogos, como o esync para optimizar a emulação do DirectX 9 a 11 via OpenGL, e comunicação entre threads.
Foi integrado (na versão 3.16) alguns patches do Wine Staging para que certos jogos com determinados DRM como o Denuvo funcionassem correctamente.
Outras das modificações de relevo foi a integração do suporte ao Vulkan API (wine-vulkan), bem como o DXVK que é uma biblioteca de emulação do DirectX 10/11 via Vulkan, substituindo o código de emulação padrão do Wine que se baseia do OpenGL.
A grande vantagem do DXVK em relação ao WineD3D (OpenGL) é que o Vulkan é uma API que perite multi-threading ao nível das pipelines da GPU, permitindo uma implementação mais natural do Direct3D 11 (que já era multi-threading, enquanto o OpenGL o não era).
Existem ainda outras melhorias que podem ser consultadas a partir do site oficial:
https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561

Para configurar o Proton (Steam Play):

É necessário activar o Steam Beta primeiro, e para isso, a partir do menu do cliente Steam, deve-se escolher "Settings", e escolher em "Account", a opção de participar em betas. Isto fará reiniciar o Steam e instalar os componentes extra.

Ao reiniciar o Steam, deverá aparecer a secção "Steam Play", permitindo definir a versão padrão do Proton, que actualmente é o Wine 3.16.3. Clique em "OK", e permita que o Steam seja reiniciado as vezes necessárias.

Terminado todo o processo deve instalar as drivers gráficas mais recentes (NVidia 396.x.x, ou AMD RAVD), conforme indicado aqui:
https://github.com/doitsujin/dxvk/wiki/Driver-support

Mesmo com drivers beta, pode existir algum atraso na implementação das últimas funcionalidades.
A versão mais recente do Vulkan (1.1.88) suporta os Output Streams, permitindo que o NVidia Hairworks funcionasse pela primeira vez via DXVK (0.90).
O Proton 3.16.3 já incluiu os patches necessários, mas alguns drivers beta podem demorar vários dias ou semanas para implementar correctamente as últimas novidades.

A regra de ouro nestre casos é que se deve ter algum critério na pressa em ter as últimas versões e patches, arriscando a ter um sistema instável, em vez de deixar assentar a poeira primeiro.

Ultrapassado estes obstáculos, basta abrir o Steam, comprar ou instalar um jogo qualquer, que este será instalado sem mais problemas.

Vantagens do Steam Play versus Windows Steam on Wine:

A integração do Wine no Steam Client permite evitar ter que criar um ou mais WINEPREFIX com a versão Windows do Steam (exigindo autenticar cada um deles :002:), para instalar jogos que são exclusivos do Windows em sistemas Linux...
Assim, basta um cliente instalado, com uma única chave de activação, que este trata de criar um WINEPREFIX exclusivo para cada título (fica dentro da pasta ~/.steam/steamapps/common/<title>/pfx), e integra os wrappers sem mais intervenção adicional. OS ficheiros do jogos ficam nas directorias habituais, enquanto a subdirectoria /pfx contêm o "drive C:" com as bibliotecas adicionais que o título necessita, pois ainda em certos casos é necessário instalar componentes extra para os jogos correrem.

Outra da grandes vantagens, é que os frameworks do Steam DRM, do Steam VR e SteamWorks nativamente compilados para Linux, podem comunicar com o título Windows em execução via Proton, reduzindo as componentes não-nativas apenas ao mínimo necessário. Isto poderia não ser possível obter o mesmo suporte correndo o Steam Client for Windows puro sobre o Wine padrão.

Títulos Whitelisted.

Trata-se de uma lista testada de jogos pela Valve e pela comunidade que garantem que os títulos Windows-only são compatíveis pelo Steam Play. Nestes casos, basta esclher o jogo, que este é instalado e executado como se fosse um título nativo, sem que ocorra complicações. :D

Dois jogos como exemplo, de que certos jogos exigem configurações especiais :joker:

São os jogos Assassin's Creed Director Cut, e o Assassin's Creed Odyssey 8|

Depois de jogar o primeiro via Wine, do qual já vai algum tempo, como uma performance um pouco má (só suportava o DirectX 9, via OpenGL), decidi tentar jogar no modo DirectX 10 (que foi mais experimental, já que no AC II só suportava o DX9!), uma vez que queria usar o DXVK.

O DXVK emula o DirectX 10, fazendo o callback para o DirectX11, e depois aplica a implementação via Vulkan ao nível dos drivers da GPU.

A instalação é feita sem problemas, e corre até os Regdists sem falhas (mesmo que não dé em nada, devido à protecção de ficheiros do WINEPREFIX). O título é activado, e mostra a janela de registo, que pode ser ignorada ("Never":lol:).
O jogo corre (!) até ao final do vídeo que fica com um ecrã preto... :facepalm:
Deve-se fazer Alt+Tab ou Ctrl+Alt+F1/F7 para tentar mudar a janela e matar o jogo.

O problema está explicado na página do DXVK. O componente d3d_compiler43.dll do Wine contêm falhas e necessita de ser overrided:
https://github.com/doitsujin/dxvk/issues/551

Pode usar o winetricks e o protontricks para instalar o dll em falta (o argumento 15100 é o SteamID do jogo AC Director Cut):
$ python3 protontricks 15100 d3dcompiler_43

Editando o launcher do jogo pode-se acrescentar o argumento:
DXVK_HUD=1 %command%
Para ter alguma informação sobre o framerate, e as versões do Vulkan activas. (perfeito para saber resolver eventuais problemas!)

Ainda assim possui um bug estranho que acontece com o menu de saída (até indicado na página acima), do qual o último terço do ecrã está cortado, exigindo alguma tentativa e erro para acertar o botão "Exit"), do qual é um problema da NVidia... :lol:
[NVidia 970 GTX é a minha placa de vídeo.]

Reiniciando o Steam, o jogo está jogável, tendo em atenção ao bug do menu de saída.
A diferença é que antes jogava a 40 fps (DX9, emulado por OpenGL) nas situações favoráveis, caindo para menos de metade no meio da confusão.
Agora... Atinge os 200 fps :002::002::002:, e somente os casos críticos poderia cair para menos de 100 fps !!

E o Assassin's Creed Odyssey ?


Neste jogo exige que tenha o computador com os drivers Vulkan, ou não terá DXVK, muito menos um jogo fluído, se é que corra mesmo !!!
Muitos títulos Direct3D 11 via Proton, ou mesmo via Wine, não funcionam com a emulação via OpenGL.
A falta de multithreading no pipeline gráfico acaba por crashar o jogo, ou ter uma performance horrível.

Este jogo usa o UPlay, e após várias tentativas, descobrou-se que muitos títulos da Ubisoft não funcionavam por causa das bibliotecas criptográficas do Steam estarem desactualizadas :002:

Para resolver o problema deve-se instalar a versão de 32-bits do GNUTLS mais actualizada possível (as distribuições comuns fazem isso), e depois aplicar os seguintes symlinks:
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgnutls.so.30 ~/.steam/ubuntu12_32/steam-runtime/pinned_libs_64/libgnutls.so.26
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnutls.so.30 ~/.steam/ubuntu12_32/steam-runtime/pinned_libs_32/libgnutls.so.26

Atenção que deve adaptar as linhas para cada distribuição! :005:


E deve usar a versão Proton 3.16.1 ou superior, por causa dos patches necessários para usar o UPlay.


Terminado este passo, basta instalar o jogo e correr. O UPlay deve-se instalar sozinho, do qual este ainda instalar o Steam Client for Windows em muitos casos, embora não seja tão grave nesse ponto.
(deixa o UPlay instalar o que quer, uma vez que terá que fazer a activação on-line).

Ultrapassado este problema, o jogo deverá correr automaticamente, assim que clicar em "Play", sem que seja mais problemas.

A nível de performance ronda os 30 a 40 fps com as definições High, podendo ultrapassar os 60 fps. Ainda existe espaço para nas versões do DxVK melhorar a performance e o framerate, mas deve-se ter em atenção que o suporte à criptografia no Wine não pode ser negligenciado, como se comprova neste exemplo.
https://github.com/ValveSoftware/Proton/issues/1757
 
Por minha parte aproveitei a promoção do Halloween para comprar o TT Isle of Man, por metade do preço... :004:

E este jogo que usa o DirectX 11 corre sem espinhas (a 60 fps sólidos a 1080p!) via Proton! :004:

Naturalmente que confirmei que usa o DXVK para emular o DX11...
 
Mesmo com o Proton existem jogos que é mais prático usar o Lutris, que este instala versões especiais do Wine, o DXVK, e a versão Windows do Steam.
O exemplo mais clássico são os jogos Assassin's Creed II, Brotherhood, Revelations e III.
Os jogos da saga Ezio entram em parafuso com o Proton e a Steam com a CD Key e o UPlay da Ubisoft. Usando o Lutris, e arrancando o runner Steam manualmente consegue-se instalar os jogos, activar as keys pelo UPlay e jogar sem problemas alguns.

Já o Assassin's Creed III que foi verdadeiramente o primeiro jogo optimizado para o DirectX 11 (Reparei que o AC Revelations suporta o DX11, e agora com o DXVK arranca neste modo.), requer que seja instalado usando o script do jogo no repositório do Lutris, e arranque directamente pelo atalho. Por algum motivo, quando se arranca pelo atalho do Lutris, o Assassin's Creed III inicia o Steam e o UPlay minimizados, acabando por arrancar o jogo correctamente (e com uma fluídez que até assusta!).
Se abrir o Steam directamente, e carregar em Play, o jogo trava com a imagem de aviso de que o jogo foi feito com uma equipa multidisciplinar, e etc... (Acabando por fechar...)
 
Usando um portátil Clevo com Debian Stretch (curiosamente o Debian é mais resiliente que o Ubuntu...), pude confirmar que os laptops com GPU híbridas entram num terreno minado. :005:

Quando temos um computador que usa uma GPU Intel e uma NVidia deve-se instalar o Bumblebee, e depois editar os launchers dos jogos com o commando:
optirun %command%
primusrun %command%
[Mesmo que use o Wine ou nativo, deve usar este comando para usar a NVidia! :D]

Mas infelizmente o Vulkan API não combina bem com o Bumblebee e exige compilar uma biblioteca para que os jogos que usam o Vulkan API (mesmo nativos!), ou o DXVK. :(

A partir do seguinte repositório:
https://github.com/felixdoerre/primus_vk

Compile e instale a biblioteca conforme as instruções, e depois o comando no launcher deverá ser:
ENABLE_PRIMUS_LAYER=1 optirun %command%

Em certos casos raros poderá arrancar o DXVK na GPU Intel (somente as séries HD 6xx suportam Vulkan, mas a performance é baixa...), ou o jogo fechar sem aviso.
Como exemplo, o jogo Yu-Gi-Oh Links só funciona no Proton com a Intel HD em sistemas Bumblebee, mas felizmente a Intel HD 630 dá conta do recado.

Como não testei esta hipótese, terão que conformar com Vulkan em Intel HD, ou OpenGL na NVidia...

Mesmo nos jogos do Witcher, acabei por comprar a versão GOG.com, mas é preciso um script para correr a versão DirectX 11 (usando o Wine-Staging com CSMT, sem Vulkan) com a GPU NVidia com o Bumblebee.
 
Recentemente tem surgido no Youtube (quer para o Steam Proton, ou para o Lutris) uma série de vídeos do qual experimentaram combinar o dgVoodoo (que é freeware, mas closed-source) com o DXVK.
Este wrapper (dgVoodoo) que originalmente emulava a API 3dfx Glide para DirectX 11, acabou por emular o DirectX 1 a 7 para o DX11:n1qshok: numa primeira fase, e posteriormente chegou ao ponto de emular o DirectX 9 para o 11 (!)

Em sistemas Linux, o dgVoodoo funciona no Wine, e como é uma aplicação que utiliza o DirectX 11, o DXVK aparece na equação para usar os drivers Vulkan.

Embora o Wine já tenha implementado o DirectX 3 a 7 via OpenGL, e o DirectX 8 e 9 partilhem o mesmo pipeline para o OpenGL, isto não impede de usar o combo dgVoodoo + DXVK que faz bypass aos drivers OpenGL e usem os drivers Vulkan.
Existe um fork do DXVK para que o DirectX 9 seja emulado directamente via Vulkan, ou acabe por ser um wrapper para a implementação do DX11 do DXVK (D9VK), que eventualmente poderá evitar o uso de software proprietário na equação. (Já existem wrappers DirectDraw para DX9 open-source, mas não tão avançados como o dgVoodoo).

Ainda que num jogo antigo passe do seguinte pipeline:
Jogo.exe - > DirectX 3~7~9 -> WineD3D (Wine OpenGL) -> OpenGL GPU
Para o seguinte:
Jogo.exe -> DirectX 3~7~9 -> DirectX 11 (vgVoodoo Virtual GPU) - > DXVK (Wine Vulkan)-> Vulkan GPU

Em certas circuntâncias, pode valer a pena apostar nesta configuração, pois somente com esta união foi possível jogar The Sims 1 e 2 8| pela primeira vez em Linux :002: (Salvo algumas excepções), e depois foram criados os scrips no Lutris para automatizar a instalação.
(Atenção que nos Sims 1 deve-se usar o Complete Edition, e pode ser necessário um patch no-CD... :()
Quanto aos The Sims 2, deve-se usar a versão Ultimate Edition do Origin.

Noutras circunstâncias, é facultativo para quem jogou usando o Wine padrão. Ainda assim observa-se que o framerate é mais consistente, e beneficia-se de melhorias gráficas (mais devido ao dgVoodoo), especialmente em jogos DirectX 9.

Por agora, fica alguns exemplos de jogos a correrem via dxVoodoo + DXVK:


 
Nem que seja para jogar a versão Diablo do GOG...


Do qual eu experimentei pessoalmente, e pelo menos em sistemas Ubuntu/Debian, a versão 4.3 do Wine tende a ter o menu inicial corrupto ou ter um ecrã preto. Se premir algumas vezes (desde que já tenha um save) a tecla Enter, acabará por carregar o jogo, e tudo fica normal.
O Lutris usa o wrapper do GOG para jogar o Diablo (pode ser necessário para configurar o jogo pela primeira vez), mas pode-se trocar pelo dgVoodoo + DXVK para beneficiar de funcionalidades mais avançadas, como o upscale para 4K, ou filtros anisotrópicos a 16x ou upscale de texturas.

Actualmente podem usar o Proton da Valve para associar jogos que não são da Steam, como o Diablo do GOG, e podiam usar este wrapper (dgVoodoo2) da mesma maneira.
 
Última edição:
Para quem usa laptops Nvidia Optimus este guia é importante, porque já saiu a versão estável do plug-in do optimus/primus que permite usar a API Vulkan na GPU NVidia. :002:

Para esse fim, deverá instalar primeiro o Bumblebee e os drivers proprietário da NVidia. (Em sistemas Debian é necessário instalar tudo: bumblebee-nvidia, nvidia-driver, libgl1-nvidia-glx, libvulkan1 e associados. Depois deve-se definir o parâmetro ACPI adequado no kernel (Uma versão do Windows fictícia, como Windows 2009...)

Assim que verificar que digitar:
Código:
optirun %command%
primusrun %command%

no atalho do jogo na Biblioteca da Steam, ou em qualquer programa que usa, funcionar e mostrar que usa a NVidia em vez da Intel HD está pronto para avançar.
Isto permite usar programas OpenGL usando a NVidia em vez da GPU Intel integrada na CPU, enquanto o resto usa a Intel GPU sem problemas de maior.


Para usar o Vulkan na NVidia, e consequentemente 90% da biblioteca da Steam num laptop NVidia Optimus, deverá ir para o site:

https://github.com/felixdoerre/primus_vk/releases

E transferir a versão estável 1.0

Uma vez descompactada e instalado as bibliotecas Vulkan (vulkan-dev), basta entrar no directório da bilbioteca e compilar:

Código:
make libprimus_vk.so libnv_vulkan_wrapper.so

Como as instruções são um pouco esdrúxulas, pelo menos no Debian 9 bastava fazer:

1. Uma vez compilado copia-se os ficheiros:

Código:
su
# cp libprimus_vk.so /usr/lib/x86_64-linux-gnu/
# cp libnv_vulkan_wrapper.so /usr/lib/x86_64-linux-gnu/nvidia/
# cp nv_vulkan_wrapper.json /usr/share/vulkan/icd.d/
# cp primus_vk.json /usr/share/vulkan/implicit_layer.d/
# cp pvkrun.in.sh /usr/bin/pvkrun

2. Isto significa que a biblioteca do wrapper fica na directoria padrão das bibliotecas de sistema, enquanto o driver da NVidia switcher fica na directoria da NVidia, a mesma que ficam as bibliotecas OpenGL.
Depois são dois ficheiros de configuração que partilham as restantes do sistema.
O último é um script que implementa o comando pvkrun, que evita estar a escrever variáveis de sistema antes do primusrun.

3. Para usar o novo wrapper na Steam, basta editar o atalho e escrever:
Código:
pvkrun %command%
DXVK_HUD=1 pvkrun %command%

Embora a última seja válida em jogos Windows usando o DXVK, do qual agora já comuta para a NVidia.
 
Última edição:
Após vários testes com o primus, e com a descoberta (infeliz) de ter cuidado com os jogos de 32-bits, fiz uma breve revisão das instruções de instalação.

As instruções aplicam-se para o Debian 9. Noutros sistemas como o Arch já têm os pacotes oficiais para instalar.
1. Por norma o Debian instala o suporte de 32 e 64-bit para o OpenGL para a GPU integrada Intel, pelo que não é necessário preocupar com o resto.

2. Instale o bumblebe-nvidia e as bibliotecas Vulkan de 32 e 64 bits para a Intel e Nvidia.
$ apt -t stretch-backports bumblebee-nvidia nvidia-driver nvidia-kernel-dkms bbswitch-dkms mesa-vulkan-drivers libgl1-nvidia-glx libvulkan1 libgl1-nvidia-glx:i386 libvulkan1:i386 primus primus-libs:i386
(E mais uns quantos que possa ter esquecido... O Debian é picuínhas para obrigar a definir tudo explicitamente! :005:)

A regra é que os drivers são sempre de 64-bits, mas as bibliotecas de suporte das aplicações necessitam de ter as versões de 32 e 64-bit!

3. Para evitar que o sistema não arranque (a não ser no modo terminal...) abra o nano:
$ su
# nano /etc/default/grub

E modifique o seguinte comando:
GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi='Windows 2009' <o resto fica igual...> "

Actualize a configuração:
update-grub

E reinicie o computador.

4. Como nos laptops com GPU híbridas o Debian usa sempre a Intel HD (e regra geral, tudo o que é renderizado pela NVidia passa para o Intel HD e segue para o ecrã), é necessário usar os comandos optirun ou primusrun antes do resto para que o programa use a Nvidia, contando que as bibliotecas OpenGL estejam instaladas.

Teste com jogos ou outros programas se funciona:
$ firefox
$ primusrun firefox
(Use qualquer coisa que necessita do OpenGL)

Caso tudo esteja funcional, pode passar ao passo seguinte.

5. O primus_vk implementa o stream entre a GPU Nvidia via Vulkan com a GPU Intel.
Para o sistema funcionar correctamente, é necessário que as duas GPU usem Vulkan (se bem que Vulkan numa Intel GPU não seja muito eficiente, mas a Intel 630 HD suporta Vulkan 1.0.x nativamente por hardware!).
O trabalho pesado é feito pela NVidia e depois copia a renderização para a Intel que faz o trabalho de combinar com os processos renderizados pela GPU integrada e mostrar no ecrã.

Para instalar o switcher deve transferir uma cópia do código-fonte em:
https://github.com/felixdoerre/primus_vk/releases/tag/v1.0

E instalar as bilbiotecas de suporte para compilar:
# apt -t stretch-backports install libvulkan-dev libvulkan-dev:i386

6. Primeiro copia-se os ficheiros de configuração para os locais respectivos:
Código:
su
# cp nv_vulkan_wrapper.json /usr/share/vulkan/icd.d/
# cp primus_vk.json /usr/share/vulkan/implicit_layer.d/
# cp pvkrun.in.sh /usr/bin/pvkrun

7. Compila-se primeiro as bibliotecas nativas de 64-bits:
$ make libprimus_vk.so libnv_vulkan_wrapper.so

E depois copia-se para as directorias de sistema:
Código:
su
# cp libprimus_vk.so /usr/lib/x86_64-linux-gnu/
# cp libnv_vulkan_wrapper.so /usr/lib/x86_64-linux-gnu/nvidia/

8. Agora compila-se as versões de 32-bit, caso exista um programa de 32-bit que necessite do Vulkan, o que em 99.9% é um jogo do Windows de 32 bits que usa o DirectX 11. :002:

Abra o ficheiro nv_vulkan_wrapper.cpp e modifique a linha:
NV_DRIVER_PATH "/usr/lib/x86_64-linux-gnu/nvidia/current/libGL.so.1"
para:
NV_DRIVER_PATH "/usr/lib/i386-linux-gnu/nvidia/current/libGL.so.1"

Depois disso é só compilar:
$ rm *.so
$ CXXFLAGS=-m32 make libprimus_vk.so libnv_vulkan_wrapper.so

E copiar:
Código:
su
# cp libprimus_vk.so /usr/lib/i386-linux-gnu/
# cp libnv_vulkan_wrapper.so /usr/lib/i386-linux-gnu/nvidia/

9. Terminado a instalação do wrapper, só falta tornar o script pvkrun executável:
$su
# chmod +x /usr/bin/pvkrun

10. Para testar se tudo está a funcionar como deve ser, verique se:
pvkrun <programa>

Ou no Steam Client:
pvkrun %command%

O jogo está a usar Vulkan com a Nvidia. :001:
Se estiver a funcionar, parabéns, já resolveu o problema das GPU híbridas com Vulkan usando o Bumblebee!
 
Com surpresa minha (e confirmado por outros relatórios no protondb) com o lançamento do proton 4.11.1 o jogo Assassin Creed Origins funciona (finalmente!), ainda que exiga que desactiva o Uplay Overlay.
Aparentemente o VMProtect tornou-se compatível com a nova versão do Proton, embora não seja claro se foi devido a compilação das bibliotecas do Wine como executáveis PE, ou alguma API obscura que foi implementada e fez o jogo funcionar...
 
O Debian 10 lançou no canal backports os drivers da NVidia 430 tornando o pacote primus (não o primus-libs) obsoleto, devido ao facto dos novos drivers serem GLVND, obrigando a recompilar o primusvk para a nova plataforma.

Para isso é só repetir os passos da compilação usando a versão 1.1 e a instalação indicados no post #11, mas com as seguintes alterações:

No ficheiro nv_vulkan_wrapper.cpp, a linha para a biblioteca OpenGL da NVidia torna-se:
NV_DRIVER_PATH "/usr/lib/x86_64-linux-gnu/nvidia/current/libGLX_nvidia.so.0"
E no passo de 32-bits, ficará:
NV_DRIVER_PATH "/usr/lib/i386-linux-gnu/nvidia/current/libGLX_nvidia.so.0"

O script pvkrun torna-se compatível para programas OpenGL e NVidia, e desta forma o primusrun desaparece por obsolescênica:
Porém o código deve ser re-escrito na seguinte forma:
Código:
#!/bin/sh
export ENABLE_PRIMUS_LAYER=1
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json:/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json:/usr/share/vulkan/icd.d/intel_icd.i686.json:/usr/share/vulkan/icd.d/intel_icd.x86_64.json
old_ldpreload="$LD_PRELOAD"
export LD_PRELOAD=
exec optirun -- env PRIMUS_libGLa=/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:/usr/lib/i386-linux-gnu/libGLX_nvidia.so.0 LD_PRELOAD="$old_ldpreload" "$@"

E guarda-se como um script executável em /usr/bin/pvkrun

Atenção que nas versões beta do Debian 11, o primusvk já foi homologado como um programa oficial nos repositórios do Debian. O problema é que nas versões 1.2 e 1.3 requer o Vulkan 1.1.106 ou superior (o código foi refeito para usar novas interfaces). Caso ocorra um upgrade do Vulkan para backports, no futuro bastara fazer:
apt install primusvk
E terá tudo instalado sem complicações.
 
Aproveitando as promoções da Steam, peguei a trilogia do Crysis de uma assentada... :004:

Usando o Proton sem mais alterações, pelo menos o Crysis, Crysis: Warhead e Crysis 2 funcionam logo sem acrescentar uma vírgula. Basta clicar para instalar (pelo menos com a versão 5.0.8) e siga para bingo. O único acerto foi mudar para a resolução 1920*1080 do monitor.

Agora o Crysis 3 exige a instalação do Origin Launcher (mais uma conta... Mal por mal ainda crio uma na Epic Store, do qual é só usar o Lutris e o resto é loiça...), mas ainda não funciona bem no Proton, pois chega a uma parte em que o Origin crasha ou fecha devido a um erro a criar uma directoria qualquer.

De resto após consultar algumas fontes, consegui usar o Lutris e alguns hacks para colocar o Crysis 3 a funcionar...

O Lutris contêm um script de instalação do Crysis 3 do qual não é mais que uma instalação do Origin Launcher genérico. Mas devido a uma regressão bizarra, o jogo só funciona com a versão do wine-tgk-4.0 ou similar. As versões 5.x somente serve para instalar, mas acabará por crashar o jogo.

Em suma, com o script do Lutris para o Crysis 3, deixe correr até ao fim e prossiga com a criação ou log-in da conta no Origin. Entretanto aproveite para transferir o Steam versão Windows, e instale com o Lutris usando a opção de correr programas dentro do Wineprefix do Crysis 3. (Felizmente é só seguir as instruções, e o resto é trivial.)
Com o Origin aberto clique o ícone do jogo que activará a instalação via Steam (para Windows) o que levará o seu tempo. Quando termine execute-o (tanto faz pelo cliente do Origin ou da Steam, que vai dar ao mesmo), de modo a completar a routina de instalação das bibliotecas.
Na parte do executar o jogo, irá falhar devido a um erro obscuro.

Agora feche o Origin e a Steam (use o botão kill all wineprefix processes), e nas configurações do Lutris, altere a versão do Wine para wine-4.0-tgk e o DXVK para 1.6 (tudo o que seja 1.7 ou modificados vai falhar). Depois clique no botão winetricks na interface do Lutris para instalar o d3dcomplier_43 e d3dcompiler_47.
Sem este passo teríamos um ecrã preto, mas com cursor e som funcional... :joker:

Finalmente, abra o jogo no Lutris do qual fará abrir o Origin Launcher, e clique no ícone do jogo. Isso fará abrir a Steam para autenticar a conta, e deverá carregar o jogo. O único senão é que demora um minuto a inicializar, e findo esse processo arranca o jogo logo em FullHD e com as definições no máximo.

Dentro do jogo, a execução está fluída muito graças ao DXVK.
 
Ao fim de uma semana conseguiram contornar o bug no Proton relativo ao Origin...
Embora o cliente Origin tende a queixar-se da directoria inválida (que bastará clicar em Cancel para resolver), o único hack necessário é mudar o nome do ficheiro kernel32.dll situado em home/YOURNAME/steam/steamapps/compatdata/1282690/pfx/drive_c/windows/syswow64/kernel32.dll

E mude para kernel32.dll.bak

Com isso o Origin executa correctamente no modo embebido com a Steam com o Proton 5.0.8 e o jogo é executado correctamente (agora arranca tudo em menos de um minuto...).
 
Com o lançamento do Proton 5.0.9 foi introduzido no código um hack para que os componentes do Origin que misturam processos de 32 e 64 bits pudessem funcionar no Proton. Agora jogar Crysis 3 funciona sem qualquer configuração especial...

Entretanto foi lançado um fork do Proton para o Red Dead Redemption 2, jogo que mistura código DirectX 12 com Vulkan e um DRM que exigiu implementar mais código do kernel mode do Windows em Linux...
Como ainda é uma versão experimental, deverão seguir à risca as instruções dadas pelo seguinte link:
https://www.gamingonlinux.com/2020/06/proton-build-for-running-red-dead-redemption-2-on-linux
 
@Arucard1983 como anda a cena das libs 32 bits ?
Tenho mantido o Windows 10 para desenvolver para o garmin porque depois de 16.04 o simulador deles deixou de correr ( as versoes novas de libpng, libjpeg e libwebkitgtk dao barraca - garmin demora em actualiza-las ).
Agora que ja terminei esse projecto e gosto bastante o 20.04 no laptop, quero po-lo na torre, mas nao tenho paciencia para andar a correr atras de lib antigas para ter steam/jogos a funcionar.
 
A Canonical quer manter as libs de 32-bits nos mínimos e reservar para certos programs (O Wine é o exemplo maior). Por aqui os jogos de 32-bit funcionam por enquanto na Steam no Ubuntu 20.04.
Agora para quem queira usar um sistema que mantenha as libs de 64 e 32 bits em pleno opte pelo Debian.
 
Embora usei a versão GOG com o Gog Galaxy via Lutris, o jogo CyberPunk 2077 até corre bem em hardware Nvidia.
Isto porque os patches do Proton 5.13.4 foram integrados na versão Lutris do Wine 6.0-rc1 e DXVK 1.7.3 (a última git que incorpora o d3dvk que implementa o DirectX 12 via Vulkan).
 
Back
Topo