doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.06k stars 838 forks source link

[Question] DXVK, Wine and Windows native libraries #4368

Closed casasfernando closed 1 day ago

casasfernando commented 1 day ago

I searched for this information in the Github repo for the project and also on the Internet but still is not clear to me when native Windows libraries like d3dcompiler_X, d3dxY_Z, etc. need to be used instead of Wine's builtin.

Right now, I only install native versions for the libraries mentioned above, when I detect a clear graphic issue, a glitch (of course some may be very subtle and go unnoticed) or when I see "errors" in Wine log that seem to be DirectX related. When this happen, I launch the game with WINEDEBUG=+loaddll to check which libraries are loaded by the game and then I start a trial/error process by installing the native versions of the libraries until the errors stop appearing in the logs or the graphics issue goes away.

Does DXVK has any requirement or a general rule of thumb to follow like "Always install native d3dcompiler_X or d3dxY_Z if the game loads it" regardless of any noticeable problem or error in the log or I'm right in only installing the ones that seem to be needed?

Thanks

Blisto91 commented 1 day ago

dxvk itself doesn't have any requirements of using them. It is the games/applications that can use them alongside the main d3d dlls. I think it is fine to only use native when you encounter an issue. The goal with time is for the Wine builtin ones to work just as well as the native ones, but while there is a lot of progress going on currently there are still issues from time to time as you pointed out.

casasfernando commented 1 day ago

So for example this statement is not correct anymore: "In order to run D3D10 games, native d3dcompiler_43.dll is required"? The issue is from 2018: https://github.com/doitsujin/dxvk/issues/551

In my experience, I found myself installing that specific library on D3D10 and D3D11 games very frequently.

Blisto91 commented 1 day ago

So for example this statement is not correct anymore:

It is not no. dxvk only have the interdependencies mentioned here https://github.com/doitsujin/dxvk#dll-dependencies

That said, d3dcompiler_47 is one that is often used by other builtin wine libraries like d3dx10 and d3dx11 i believe. A bunch of games also use it directly.

doitsujin commented 1 day ago

wine's implementation of the HLSL compiler portion of d3dcompiler is still heavily WIP so it makes sense that a lot of games still need the native one to work. Other functionality such as reflection works fine as-is nowadays.

TL;DR if a game doesn't have any obvious issues with wine's libraries then there's no reason to use the native ones.

casasfernando commented 1 day ago

Thanks for the clarifications. Moving forward I will continue in the same way and only install native libraries as needed.