protonscr

Async Compute

dxvkclosed
doitsujin/dxvk#912 · opened 2019-02-13 by artivision · updated 2019-02-14 · 8 comments · github
Aartivision 2019-02-13 github

Hello. Is Primitive Culling via Async Compute a valid option? Also is there an option for as users to add general advice for novice users inside the DXVK webpage?

Mmisyltoad 2019-02-13 github

Also is there an option for as users to add general advice for novice users inside the DXVK webpage?

What does this even mean? The documentation is fine on the README -- it's very straightforward.

SSveSop 2019-02-13 github

@artivision https://github.com/doitsujin/dxvk/wiki
Lots of useful information there. Some might be a wee bit outdated, but should be able to get you going when USING dxvk (if that was what you meant).

Ddoitsujin maintainer 2019-02-13 github

Hello. Is Primitive Culling via Async Compute a valid option?

I assume you are referring to the new primitive culling feature in RadeonSI. While it's technically not impossible to implement this in DXVK, the RadeonSI implementation is highly complex and has to cover a lot of use cases, and when translating that to Vulkan, there are limitations:

  • Using async compute for anything is basically not an option right now due to strict synchronization requirements. Doing all the necessary state tracking would increase CPU overhead.
  • Primitive ordering cannot be guaranteed since Vulkan does not expose GDS, or any other form of globally ordered atomics.
  • RadeonSI patches the command buffer, whereas DXVK would have to resort to indirect draws. Not an issue per se, but this would increase complexity rather significantly.

And more importantly, it hasn't been shown to have any impact on games yet. I can imagine that some would benefit, but your typical game is significantly heavier on fragment shading than on geometry processing, so the impact will be limited.

Also is there an option for as users to add general advice for novice users inside the DXVK webpage?

If you're asking me to open up the wiki to everyone, then no, won't happen. If there's anything specific you would like to have added, open an issue about it.

Aartivision 2019-02-13 github

Hm OK, but it's not impossible to ask the Vulkan group for changes (i think). Anyway thank you.

Aartivision 2019-02-13 github

Also back the the thinking was to compile pert of that that Vertex Program to "Async" Compute Shaders (automatically). Did this change somehow and now this is a core future?

KK0bin maintainer 2019-02-13 github

Hm OK, but it's not impossible to ask the Vulkan group for changes (i think). Anyway thank you.

Please don't annoy Khronos when you have absolutely no idea what you're talking about.

Also back the the thinking was to compile pert of that that Vertex Program to "Async" Compute Shaders (automatically). Did this change somehow and now this is a core future?

None of that makes sense.

Ddoitsujin maintainer 2019-02-13 github

None of that makes sense.

Vertex shaders are translated to compute shaders to perform culling, but not "automatically" and it is also not a "core future" (i guess the word of choice there is "feature").

Ddoitsujin maintainer 2019-02-14 github

According to this tweet from Michael Larabel, primitive culling doesn't seem to have any impact on games.

Nothing extracted yet.