protonscr

(Windows 10) NVidia HLSL Instancing Demo - Does not load DXVK

dxvkclosed
doitsujin/dxvk#1285 · opened 2019-12-17 by FiftyTifty · updated 2019-12-17 · 4 comments · github
3 matching comments, n / p to jump
FFiftyTifty 2019-12-17 github

### Software information
NVidia HLSL Instancing Demo (Direct3D 9)

To test draw call performance, you must use an AMD GPU as NVidia's driver has a useless (in actual games) optimization, which makes the driver's draw call performance seem splendid. The reason why it's useless, is that it requires the exact same draw call be made throughout the entire scene. If the following draw call is different in any way to the previous one, the optimization isn't applicable.

Set the rocks to 16000 (max), and the spaceships to 1 (min). Untick the Use instancing? checkbox. There is a notable increase in performance when switching from windowed mode, to exclusive full-screen.

This draw call benchmark was recommended by the creator of ENB Series. I had a large number of users run the benchmark on their systems, to gauge draw call performance by CPU architecture and clock speed: https://forums.anandtech.com/threads/part-2-measuring-cpu-draw-call-performance.2499609/

I wanted to see if DXVK would offer a performance improvement in draw call bottlenecked scenarios, but the d3d9.dll is completely ignored by the application.

### System information

  • GPU: AMD RX Vega 56
  • Driver: 19.12.2
  • Wine version: N/A, Running on Windows 10 2019 LTSC (Windows build 1809)
  • DXVK version: 1.5

### Apitrace file(s)
APITrace also fails to to wrap the game, with no .trace file being created on the desktop, nor the folder of the application. The d3d9.dll is not loaded, just like DXVK.

### Log files

  • d3d9.log: Log is not created.
  • dxgi.log: Log file is created, but is completely blank
Ddoitsujin maintainer 2019-12-17 github

This demo does not work on my Windows 10 install since it can't find MSVCR71.dll.

Anyway, if it doesn't load `d3d9.dll´, then that's because the demo is programmed in such a way that it only loads DLLs from system32 by default. See https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-redirection for a way to work around that.

Mmisyltoad 2019-12-17 github

The application always loads d3d9.dll from System32 (or SYSWOW64 if you're on x64).

It works and loads completely fine if you replace your Windows' d3d9.dll with DXVK's:
image

FFiftyTifty 2019-12-17 github

Ooh, didn't know about the redirection. I thought that it would maybe be on some early version of Direct3D 9 like 9.0a, with DXVK only supporting 9.0c. Thanks for the quick replies.

Ddoitsujin maintainer 2019-12-17 github

Also please note that this demo isn't really representative of... anything you'll encounter in the real world, kind of like the 3DMark API overhead test (although that thing is at least somewhat useful).

This demo apparently really only benchmrarks how bad it is at generating instanced vertex data rather than draw call throughput. It runs at like 5 FPS with Instancing enabled despite only pushing ca. 30 draw calls per frame.

DLLs