Re: Unable to completely replace vkd3d with vkd3d-proton?

Giovanni Mascellani <[email protected]>
Newsgroups gmane.comp.emulators.wine.devel
Message-ID <[email protected]>
Hi,

Il 26/11/24 14:18, zhengxianwei ha scritto:
> I tried replacing Wine’s built-in DLLs with the d3d12.dll compiled from 
> vkd3d-proton and the dxgi.dll compiled from dxvk.
> 
> However, I noticed that Wine’s built-in D3DCompile2 still calls 
> vkd3d_shader_compiler(https://gitlab.winehq.org/wine/wine/-/blob/master/ 
> dlls/d3dcompiler_43/compiler.c?ref_type=heads#L573 <https:// 
> gitlab.winehq.org/wine/wine/-/blob/master/dlls/d3dcompiler_43/ 
> compiler.c?ref_type=heads#L573>), which belongs to vkd3d, not vkd3d-proton.

That's right, vkd3d-proton doesn't ship an HLSL shader compiler, so 
there's no way it can be used to implement D3DCompile2().

> Does this mean that even in Proton, vkd3d and vkd3d-proton coexist, and 
> it’s not possible to completely replace vkd3d?

Yes, Proton ships both vkd3d and vkd3d-proton; by default it uses vkd3d 
for the HLSL shader compiler and vkd3d-proton as the D3D12 
implementation. By setting environment variable PROTON_USE_WINED3D=1 you 
can use vkd3d for D3D12, but you can't use vkd3d-proton for the HLSL 
shader compiler because, as I said, it's not a feature implemented in 
vkd3d-proton. At any rate, if you're using Proton the Proton script 
itself will care about copying DLLs and setting whatever has to be set 
so that you're using vkd3d or vkd3d-proton depending on the environment 
variables.

> So if there’s a bug in it, I would still need to fix the issue in vkd3d 
> rather than being able to replace it with functions from vkd3d-proton. 
> Is that correct?

Yes, any bug in vkd3d must be fixed in vkd3d and any bug in vkd3d-proton 
must be fixed in vkd3d-proton.

However, the fact that vkd3d is the only possible implementation for the 
HLSL shader compiler shouldn't prevent you from using vkd3d-proton as a 
D3D12 implementation, if that's what you want to do. You just have to 
install it properly. I cannot help you with that because I never tried, 
you should look for the vkd3d-proton documentation.

And to answer your question in another email: on the wiki[1] there is 
some documentation on how to build vkd3d from sources and use it in 
Wine, without relying on Wine's convenience copy.

  [1] 
https://gitlab.winehq.org/wine/vkd3d/-/wikis/Building-a-MinGW-WoW64-Wine-with-a-custom-vkd3d-build

HTH, Gio.
OpenPGP_signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSpO7VGf+9dH7iic+7pbX5hj2wLgwUCZ0XUsQAKCRDpbX5hj2wL
g4xYAP9FxE67UJs/Ce/XfNCvrne8k+ehQsomGO5VN61gGyB2CAD+JohXkBJijKdz
FBajKZE/jdS2eTTwkPGlSf6utzDAUws=
=RhQ4
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.