doitsujin / dxvk

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

Stream Output not supported #135

Closed doitsujin closed 5 years ago

doitsujin commented 6 years ago

As of now, Stream Output is not supported. This may have a variety of consequences, such as incorrect rendering or crashes, in case a game relies on this feature.

Please do not open new bug reports for a specific game if you see any of the following messages in your log files. Instead, use this thread to report games which need this feature.

err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented

Games that are known to require Stream Output:

soredake commented 6 years ago

Life is Strange: Before the Storm, maybe https://bugs.winehq.org/show_bug.cgi?id=43314

whizse commented 6 years ago

Outcast Second Contact and Life Is Strange Before the Storm (both Unity games):

err:   D3D11: Unsupported format: 4294967295
err:   D3D11Device: CheckFeatureSupport: Unknown feature: 10
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   DxbcCompiler: Invalid sampled type: DxbcResourceReturnType::Mixed
err:   D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented
turtlewit commented 6 years ago

Overwatch seems to require this. From the d3d11.log:

info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
warn:  DxbcOptions: Growing coordinate vector for Dref operations
warn:  DxbcOptions: Using FMin/FMax/FClamp instead of NMin/NMax/NClamp
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
AccountOneOff commented 6 years ago

Mafia III requires this as well. Just hangs on a black screen currently.

info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_1
info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
err:   D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented
shmerl commented 6 years ago

Just for the reference, I opened this, may be someone from Khronos can comment about their plans for transform feedback / stream output like support in Vulkan.

shmerl commented 6 years ago

@doitsujin: Can you please comment here, with some details about why it's hard to implement stream output with current Vulkan options? That feedback can be directed to the Vulkan working group and would be valuable. Thanks!

tonix64 commented 6 years ago

It should be noted that most Unity5 games are using stream output for gpu skinning (as noted here), some can be worked around on wined3d by using d3d9 or opengl mode, but many just support d3d11.

dumpsters commented 6 years ago

F1 2015 needs it as well

info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
err:   D3D11: Cannot create texture:
  Format:  VK_FORMAT_R8G8B8A8_SRGB
  Extent:  1600x1200x1
  Samples: 1
  Layers:  1
  Levels:  1
  Usage:   1f
err:   D3D11CreateDeviceAndSwapChain: Failed to create swap chain
info:  D3D11CreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
Nukem9 commented 6 years ago

Metro: Last Light Redux also needs it

info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CoreCreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_0
info:  D3D11CoreCreateDevice: Using feature level D3D_FEATURE_LEVEL_11_0
...
err:   D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented
DebugString: "Error: D3D Runtime: CreateGeometryShaderWithStreamOutput errorUnknown error\n"
DebugString: "Error: D3D Runtime: (1,1): error X3000: syntax error: unexpected token '@'\nAttempted to create a device with the debug layer enabled and the layer is not installed.\n"
pingubot commented 6 years ago

Cod Ghosts needs that feature as well.

Zeioth commented 6 years ago

+1 To prioritize this feature.

shmerl commented 6 years ago

@Zeioth: This requires some help from the Vulkan working group to implement transform feedback like feature. Do you have any detailed examples of how it's used in D3D11 games in practice? If yes, please comment here to help the working group to come to some practical conclusion.

cookiEoverdose commented 6 years ago

I did an apitrace for BattleTech (Steam version). The Unity game is mostly missing objects and textures. Besides a lot of warnings BattleTech_d3d11.log contained the following errors:

err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11: Unsupported format: 4294967295
err:   D3D11Device: CheckFeatureSupport: Unknown feature: 10
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented
SveSop commented 6 years ago

I wonder if the STREAM_OUTPUT might have something to do with menus not being displayed correctly when launching Unigine Superposition (The launcher itself)? Moving the mouse around the different menu selections and stuff generates:

warn:  DXGI: Present parameters not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
warn:  DXGI: Present parameters not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
warn:  DXGI: Present parameters not supported
warn:  DXGI: Present parameters not supported

Might not be "game breaking", as you can use the menuselections if you know where they are. It must be said that the Superposition launcher works even worse with wined3d tho.

doitsujin commented 6 years ago

@SveSop the launcher doesn't render correctly because it requires some sort of GDI <> DXGI interop, which I do not and will not support. Not sure what Superposition wants Stream Output form

AccountOneOff commented 6 years ago

Uno also requires this feature. Doesn't work when faking Stream Output either.

UNO_d3d11.log UNO_dxgi.log

metalight commented 6 years ago

More details, regarding Quake Champions..: The crashes happen 100% of the time on these 3 specific occations:

  1. After loading the map "Lockbox"
  2. After loading the map "Vale of pnath"
  3. When the character/champion named "Sorlag" uses his ability: Acid spit.
pppbb commented 6 years ago

@metalight Could you test if using cutting wheel for example on some surface like a wall is triggers a crush?

metalight commented 6 years ago

@ptrb78 The pummel doesn't cause crashes here regardless how it's used. :)

spddqd commented 6 years ago

In addition to Quake Champions. For me, it hangs the system right at the menu, when character is spawning. I can hear Ranger sounds, but on the screen the last thing I see is blue lightning and fog. R9 290, Mesa 18.1.3, LLVM 6.0, DRM 3.25.0. Might try this with mesa-git later.

doitsujin commented 6 years ago

@spddqd you should also try LLVM-svn, since LLVM 6 is notoriously broken.

spddqd commented 6 years ago

@doitsujin yes, it worked indeed. I was able to get past the main menu and load into the training map, but then I was greeted with a crash. Oh well, at least it didn't lock up my system altogether.

metalight commented 6 years ago

@ptrb78 Update: The pummel/gauntlet does indeed cause the same (stream output) crash unless "Details" is on "Low", as with everything else leaving a mark on walls/floor.. And even with Details on Low, "Acid spit" always leaves a mark = cause a crash.

pppbb commented 6 years ago

@metalight

The crashes happen 100% of the time on these 3 specific occations: After loading the map "Lockbox" After loading the map "Vale of pnath" When the character/champion named "Sorlag" uses his ability: Acid spit.

The same on my system.

Zeioth commented 6 years ago

@metalight @ptrb78 Please to discuss about bugs related to Quake Champions, use #377. Thanks.

addeps3 commented 6 years ago

I get this with Space Engineers as well. Game boots to "Send crash log"-window. d3d11.log: (last line) err: D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented

7oxicshadow commented 6 years ago

Gauntlet Slayer Edition also fails with this streamoutput problems.

I know nothing about DX stuff so I apologise for the stupid question but Is there any way we can fake this? i.e. if a request is made you just return a black texture of the size it requests? Sure the game would look bad in places but it wouldn't crash?

tournierjc commented 6 years ago

Hello @doitsujin,

Thanks for the great work.

I was wondering, since stream output is supported since Wine 3.0, if there was any way to redirect the calls to Wine d3d11 library ?

From what I've seen on KhronosGroup repos, vulkan support of stream output isn't planned for tomorrow.

I would have been glad to help more, but I gave a look to the dxvk source code and it's far beyond my skills.

doitsujin commented 6 years ago

if there was any way to redirect the calls to Wine d3d11

No.

hitman249 commented 6 years ago

WWE 2K15 (x64)

warn:  DXGI: MakeWindowAssociation: Ignoring flags
err:   D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented
err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported
farribeiro commented 6 years ago

https://github.com/KhronosGroup/Vulkan-Ecosystem/issues/26

shmerl commented 6 years ago

@farribeiro: linked above.

farribeiro commented 6 years ago

I think with named origin repo and issue number is greater than a single link

asoltesz commented 6 years ago

Hi @doitsujin

Thanks for the great work on DXVK, you made it possible for me to play The Witcher 3 on Linux.

I am wondering if you could give a nudge to the Khronos / Vulkan Stream Output issue. They seem to be waiting for input from DXVK and similar translator projects.

Maybe it starts moving ahead after some input and this roadblock gets cleared.

shmerl commented 6 years ago

@asoltesz : If you know any actual game developers who can describe how they used stream output in games, that would be great too. Feel free to direct them to that issue for feedback.

mtrp12 commented 6 years ago

@doitsujin I want to add something regarding quake champions. It crashes for me when shooting this gun. It crashed every time but I could shoot a few more time after I enabled debug log, which dropped the fps to 10. QuakeChampions_d3d11.log QuakeChampions_dxgi.log System: Ubuntu 18.04.1 nvidia-396.51, gtx 1080ti dxvk v0.65

Hope it helps.

Zeioth commented 6 years ago

@mtrp12 You can fix that crash using low settings. And please, as I commented before, use this thread for Quake Champions related issues

ghost commented 6 years ago

@doitsujin Grow Up requires this as well if you want to add it to your list.

doitsujin commented 6 years ago

It's a Unity Engine game, so it's pretty much on the list already.

ghost commented 6 years ago

Ahh, gotcha. Thanks

lieff commented 6 years ago

I have crazy idea how to try make SO implementation efficient with current extensions: Utilize both, Vulkan and OpenGL. Use extensions like https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_external_objects.txt to share data between Vulkan<>OpenGL, use transform feedback on OpenGL side, get result from Vulkan side. Can this work?

shmerl commented 6 years ago

use transform feedback on OpenGL side

@doitsujin mentioned before, that mixing OpenGL with Vulkan for this is a bad idea. Better wait until Khronos will finish drafting transform feedback spec for Vulkan and drivers will implement it.

KWottrich commented 6 years ago

It looks like this might be addressed soon! From the Vulkan-Ecosystem github:

Some members of the Vulkan working group are developing a multi-vendor EXT extension for transform feedback with the primary goal of satisfying the needs of the DXVK, vkd3d and ANGLE translation layers. The Vulkan working group does not plan to promote this functionality as a KHR extension or as core functionality because it believes there are better, more forward-looking ways of processing and capturing vertex data with the GPU. The multi-vendor EXT extension should be available soon and is likely to be implemented on those platforms where DXVK, vkd3d and ANGLE translation is required.

Naliwe commented 5 years ago

Hello,

I've been enjoying World of Warcraft on Arch through wine and dxvk for a while now, but since today, this is the result:

err:   D3D11Device::CreateBuffer: D3D11_BIND_STREAM_OUTPUT not supported

So I guess you can add Wow to the list, sadly.


nvidia-dkms 396.54-6 dxvk-bin 0.80-1 wine-esync-staging-pba 3.16

doitsujin commented 5 years ago

Only that message or stuff about CreateGeometryShaderWithStreamOutput as well? Because if the latter is missing, the game doesn't need it.

SveSop commented 5 years ago

@Naliwe What do you mean by "this is the result"? Is that line just something logged in the logs, and everything works as expected, or are you unable to log in to WoW?

7oxicshadow commented 5 years ago

I have just tried WoW and was able to log in and play without issues BUT..... I do not have a paid subscription so I can not get into the later parts of the game.

I suspect that the later expansions are a lot more graphically enhanced and that @Naliwe will probably be playing the Battle For Azeroth expansion.

SveSop commented 5 years ago

@7oxicshadow I just asked cos i do not get that error message when playing. I have BfA xpac. If it is something that is logged, but still works then i have not checked for that :)

7oxicshadow commented 5 years ago

@svesop out of interest do you play on Ultra graphics settings?

SveSop commented 5 years ago

Nope. "7" on the setting (Guess the recommended).