protonscr

Path of Exile and Async shader compiling

dxvkclosed wontfix
doitsujin/dxvk#1609 · opened 2020-05-02 by cg666 · updated 2020-05-02 · 1 comments · github
Ccg666 2020-05-02 github

Hi,

Sorry about reopening such discussion, but I'm playing Path of exile using DXVK and it's working fine except massive stuttering.

I undestand your previous comment about asynchrous shader compilation (sorry for wrong terms but I'm not a Vulkan programmer but only embeded software programmer), but the game is completly unplayable at a certain level as you cannot react due to massive game freezing.

Here what I have done :

  • I used version 1.6.X (not on an tag and not a big issue)
  • I patched the code (quick and dirty as a proof of concept for me only)
  • I created a dedicated worker thread and add message queue
  • The thread compiles shader/pipeline by calling DxvkGraphicsPipelineInstance::createInstance and DxvkGraphicsPipelineInstance::writePipelineStateToCache as requested by DxvkGraphicsPipelineInstance::compilePipeline() and DxvkGraphicsPipelineInstance::getPipelineHandle() respectively
  • I have checked object owership and object copy to avoid dangling pointer ...
  • Move m_mutex lock/unlock to improve performance without breaking thread safety

Results : Path of exile runs perfectly at more than 60 fps without any lag spike.
Drawback : There are graphical glitches and I understand why this happens and why you remove this from previous versions

So why don't you set this behavoir as optional or only enabled for specific game as already done for other games (see config.cpp)

Thank you for your answer.

Ddoitsujin maintainer 2020-05-02 github

There's an inofficial patch set floating around which does exactly that. It's not supported in DXVK because it breaks the vast majority of games in nasty ways (to the point where you're essentially providing a wallhack in some cases) and due to the maintenance burden, and I have no interest whatsoever in bringing this back.

I know PoE is unplayable, but there is no proper solution to that problem other than using Windows.

Nothing extracted yet.