protonscr

VK_KHR_descriptor_update_template: The truth is out there

dxvkclosed
doitsujin/dxvk#185 · opened 2018-03-19 by pchome · updated 2018-03-28 · 4 comments · github
Ppchome 2018-03-19 github

It's hard to properly describe problem I had faced, but in general some prefixes stopped working after this feature was introduced.

For example I tested custom build w/ wine 3.4 and vulkan from staging 2.21 and than different builds from nightly https://haagch.frickel.club/files/dxvk/ also changing default vulkan loaders:

  1. I have cube.exe as etalon test so I believe both implementations are working
  2. I have working superposition.exe benchmark with latest nightly dll and wine 3.4
  3. The Witcher 3 fails with latest commits, only working ones is pre 0f800c6c51bec73da301ba83097ef3491b3cc602 for both 2.21 and 3.4
  4. Vulkan from 2.21 have no *DescriptorUpdateTemplate* stubs or omplementation, so I understand it CAN fail, but not sure it should
  5. #ifdefs from src/dxvk/vulkan/dxvk_vulkan_loader.h have no desired (?) effect, cause you use ./include/vulkan/ where those defined but e.g. NOT implemented in NVIDIA drivers <=378.xx (http://vulkan.gpuinfo.org/listreports.php?extension=VK_KHR_descriptor_update_template&option=not) and I believe it's ok
  6. I'm still not sure exactly this commit changed everything, cause I tried to revert this and tw3 still fails

So I have only working setup for both superposition.exe and witcher3.exe is $ git reset ebd46e41098dff8f25bb930fe07c867e71327307 and using vulkan from staging 2.21.

Logs:
tw3, nightly and wine 3.4 :

err:   ExtensionSet::addInstanceExtensions: Failed to query instance extensions
002f:err:dbghelp:pe_load_msc_debug_info -Debug info stripped, but no .DBG file in module L"d3d11"
002f:err:dbghelp:pe_load_msc_debug_info -Debug info stripped, but no .DBG file in module L"dxgi"
...
err:   ExtensionSet::addInstanceExtensions: Failed to query instance extensions

tw3, custom, wine 3.4 and vulkan from staging 2.21:

002f:fixme:vulkan:vkGetDeviceProcAddr missing function "vkCreateDescriptorUpdateTemplateKHR"
002f:fixme:vulkan:vkGetDeviceProcAddr missing function "vkDestroyDescriptorUpdateTemplateKHR"
002f:fixme:vulkan:vkGetDeviceProcAddr missing function "vkUpdateDescriptorSetWithTemplateKHR"
002f:fixme:vulkan:vkGetDeviceProcAddr missing function "vkCmdPushDescriptorSetWithTemplateKHR"
...
warn:  DxgiFactory::MakeWindowAssociation: Ignoring flags

p.s. superposition.exe and witcher3.exe (and cube.exe) the only 64bit apps I have due to non working 32bit setup for custom build, so tests are often based on those ones.

p.s.2. please stop me from implementing *DescriptorUpdateTemplate* for outdated vulkan from staging 2.21, current vulkan implementation in wine 3.4 seems still not working good in some cases.

Ddoitsujin maintainer 2018-03-19 github

That commit did indeed break compatibility with 2.21-staging, didn't know that people were still using that. The issue here is that the old 2.21-staging implementation does not filter out unsupported extensions, if it did, you'd be getting an error message.

I'd recommend moving on to 3.4-staging if 3.4-mainline doesn't work. That's what I'm currently using for development as well.

Ppchome 2018-03-19 github

I am on 3.4-staging, but using switcher for old implementation for testing purposes.

I even adjusted staging winecfg for quick change this like:
st-3 4
Both are working via DllRedirect feature (vulkan*-st.dll and d*-vk.dll).

Ppchome 2018-03-19 github

https://github.com/pchome/wine-playground/tree/master/patches - here the patches I used for 3.4-staging.

DXVK I compiled have dll-redirect support (maybe cause I linked to dxgi-vk.dll and paired with dxgi.dll redirect ... not completely sure about this).

edit: in vulkan implementation the only changes are WINE_CONFIG_DLL to WINE_CONFIG_MAKEFILE in 3001 and than 3010 for redirects and not interfere with original vulkan

Ppchome 2018-03-28 github

Current release v0.40 + wine-staging-3.4 patched w/ pending upstream vulkan-1 patches works for both superposition and TW3, so closing.

Launch options

DLLs