O Proton está funcionando bem com a implementação mais recente do DXVK, mas quando navego nos arquivos de log dos jogos usados pelo Proton, noto uma incompatibilidade entre a versão do driver mesa do meu sistema host e a listada lá. O que eu sei até agora é que dxvk é uma ponte, então as chamadas de D3D10/D3D11 podem ser traduzidas para Vulkan e processadas em seu sistema host, contando assim com seu driver gráfico e o driver mesa Vulkan (Amdgpu RADV no meu caso).
Estas são a versão do driver mesa e a apiversion usada pelo Vulkan listada no log do jogo carregado pelo Proton (um jogo win64):
AMD RADV POLARIS10 (LLVM 7.0.1):
Driver: 18.3.6
Vulkan: 1.1.70
A saída do vulkaninfo relata a apiversion "1.1.90" que é diferente da versão "1.1.70" usada no Proton:
Versão da instância Vulkan: 1.1.107
ID da GPU: 0
(AMD RADV POLARIS10 (LLVM 8.0.0))
apiVersion = 0x40105a (1.1.90)
driverInfo = Mesa 19.1.0 (LLVM 8.0.0)
A saída do glxinfo concorda com a versão do driver mesa e com a versão do LLVM exibida em vulkaninfo :
Cadeia de renderização OpenGL: Radeon RX 570 Series (POLARIS10, DRM 3.30.0, 5.1.14-arch1-1-ARCH, LLVM 8.0.0)
Cadeia de versão do perfil principal OpenGL: 4.5 (Perfil Core) Mesa 19.1.0
Além disso, antes que a inicialização do ambiente vulkan aconteça, as seguintes DLLs são carregadas conforme relatado pelo log do jogo:
L"C:\windows\system32\vulkan-1.dll" carregado em 0x7fa05e6e0000: embutido
Carregado L"C:\windows\system32\winevulkan.dll" em 0x7fa05e6a0000: embutido
Talvez essas DLLs sejam as causadoras de tal incompatibilidade.
EDIT : Ao abrir outro jogo no Lutris com opções personalizadas de DXVK_HUD, posso ver que a versão da API vulkan e a versão mesa correspondem às respectivas versões no meu host. Ainda não sei porque o Proton tem esse comportamento.
Resumindo
- A versão LLVM do Proton é diferente da versão encontrada no meu driver gráfico: LLVM 7.0.1 (Proton) - LLVM 8.0.0 (Host)
- A versão do driver Mesa do Proton é diferente da versão do driver mesa que fornece implementação GL e VK no meu sistema host: Mesa 18.3.6 (Proton) - Mesa 19.1.0 (Host)
- A versão da API Vulkan do Proton é diferente da versão usada pela implementação do Vulkan conforme relatado por vulkaninfo: 1.1.70 (Proton) - 1.1.90 (Host)
Estou perdendo algo aqui AFAIK Proton não fornece sua própria implementação de mesa. Alguém pode me dar uma luz e me dizer por que existe essa incompatibilidade entre essas versões?
O problema foi que minha instalação do steam veio do repositório Flathub onde o runtime é carregado em um ambiente isolado (sandbox). Portanto, o steam não pode ver longe de seu caminho raiz (/home/user/var/app.valve...). Parece que o isolamento foi a causa para exibir essa incompatibilidade entre as versões ao executar o DXVK_HUD, mas não posso confirmar como você verá no 3º parágrafo.
Provavelmente o Steam do Flathub estava lendo mal as versões do meu pacote host, relatando versões incorretas, mas usando-as também, já que nem o LLVM 7 instalado, então como DXVK_HUD pode dizer que estou usando?
A partir de agora, resolvi o problema removendo a versão Flathub do steam e instalando o pacote localizado em multilib (repositório ARCH de 32 bits). Agora as versões do Mesa, Vulkan-API e LLVM correspondem entre meu host e os exibidos por DXVK_HUD. Começo a pensar que esse problema pode existir entre usuários da versão steam do Flathub , mas quem sabe não encontrei nenhum post online discutindo meu problema.