protonscr

DrawAuto() displays nothing

dxvkclosed d3d11
doitsujin/dxvk#3634 · opened 2023-08-23 by thegreenshark · updated 2023-08-23 · 4 comments · github
Tthegreenshark 2023-08-23 github

In Renga software some geometry is missing, which I believe is caused by ID3D11DeviceContext::DrawAuto() not working correctly when used to draw contents of the stream output buffer.

I also have a simple app which illustrates the issue. It is using a geometry shader with stream output. If DrawAuto() is used to draw contents of the stream output buffer, it works fine in windows (without dxvk), but displays nothing in wine with dxvk.
The app and its source code can be found here https://drive.google.com/drive/folders/1yKoMOdrFBShPo359q5zXtH0TjoS3kJ8N?usp=drive_link

Importanlty, I found out that everything works fine in DXVK 1.4.3, but doesn't work in any version starting from 1.4.4. Changelog for 1.4.4 states "Minor optimizations for Stream Output", so maybe the issue is streamoutput-related

Software information

Renga software
My test app (link above)

System information

  • GPU: AMD Radeon Vega 7
  • Driver: mesa 22.3.7
  • Wine version: 8.10
  • DXVK version: 1.4.4 and newer

Apitrace file

For the test app (recorded on windows)
https://drive.google.com/file/d/1bri9trKi9kCUwOmxHG8Uyz5b1n30WVQt/view?usp=drive_link

Wine log file

For the test app
https://drive.google.com/file/d/16HB7qVvZDWETr1UWUpDW2zMftpIlW_4A/view?usp=drive_link

Ddoitsujin maintainer 2023-08-23 github

Not really surprised that this is broken, there are literally zero applications in the wild that use this function so we had no test cases at all until now.

Horrible and inefficient feature anyway, I wish people moved on from Stream Output already.

Ddoitsujin maintainer 2023-08-23 github

What exactly is this supposed to render anyway? With the trace I see a spinning cube with 2.2 but 1.4.3 does not render anything, but the DrawAuto call indeed gets a vertex count of zero.

Tthegreenshark 2023-08-23 github

What exactly is this supposed to render anyway?

There must be a spinning cube with a red outline. The cube itself is drawn via Draw() and the outline via DrawAuto(), so for me the outline is missing in DXVK 2.2

DXVK 1.4.3

dxvk143

DXVK 2.2

dxvk22

Ddoitsujin maintainer 2023-08-23 github

Should be fixed as of c2cd129b89670c185f53dbb1cec319bc1ff07efe.

Thanks for providing the simple trace, really helped with figuring this out quickly.

Nothing extracted yet.