protonscr

Marker interface for the D3D9 implementation

dxvkclosed d3d9
doitsujin/dxvk#1798 · opened 2020-10-17 by CookiePLMonster · updated 2024-07-07 · 3 comments · github
CCookiePLMonster 2020-10-17 github

For DXGI implementations, DXVK currently provides interop interfaces which can be used by applications in order to "detect" DXVK. With D3D9, there seems to be nothing - it is impossible to query for an interface which unambiguously differentiates real D3D9 from the one provided by DXVK.

All that's needed from DXVK is an extra interface implemented by D3D9InterfaceEx which can be queried for - could even be empty, given it would not be used to interoperate but just to "detect" DXVK. A failure to obtain it from IDirect3D9::QueryInterface would indicate DXVK is not used.

This will come in handy for D3D9 applications which intend to be DXVK aware - which is especially important lately with all the D3D9 regressions with recent AMD drivers.

Mmisyltoad 2020-10-18 github

Ideally applications should not be dxvk aware... Is there a practical use case for you here?

There is always the manifest info which mentions dxvk though

CCookiePLMonster 2020-10-18 github

The practical use case for this is working around a possible issue with recent D3D9 AMD drivers:
https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/6a70a08c592af8d4259104a50a750ff95068e72b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp#L1636

DXVK renders this hack useless, so it could just be skipped.

That said, you're right - obtaining manifest data via VerQueryValue from a d3d9.dll loaded in the process might do the trick too!

Mmisyltoad 2023-06-20 github

There is a DXVK interop interface now so... Closing.

DLLs