vkconfig layer directory wrong for 32-bit programs with 64-bit windows
I am very new to Vulkan, so my apologies if I am missing something.
When testing I noticed that Vulkan configurator creates C:\Users\MyName\AppData\Local\LunarG\vkconfig\override\VkLayer_override.json which contains the override_paths section.
By default it seems to point on to the \VulkanSDK\1.2.162.1\Bin directory, which does not work if I have a 32bit Vulkan program.
I can use the Custom Layer Paths setting and change the path to Bin32, but of course then it won't work for 64bit binaries.
Am I missing some way to make both work?
Hi,
it's true that I didn't even considered 32 bits Vulkan applications with Vulkan Configurator...
I am guessing that yes currently you need to add the custom path when you are using 32 bit Vulkan applications and remove it when you are using 64 bit Vulkan applications. Sure, it's clunky... 32 bits applications are quite a corner case these days so we are trying to evaluate how to prioritize this.
In understand. I am "porting" an application from 32 bit world, so this sort of came up.
The custom path workaround exists, and my final target will most probably end up to be 64 bit. The only real problem for me was understanding the issue originally.
My current favorite idea for fixing this would be having optional "overrider_paths32", which would be used for 32 bit apps in case it exists.
Hi,
32 bit layers still don't work with vkconfig. It would be nice to have it when debugging DXVK or similar projects. Could you at least fix it in a way that SDK 32-bit layers work?
Right now I do it manually:
Tested with SDK 1.3.250 today on Windows, and vkconfig creates Following Regeys:
Under: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\ImplicitLayers
DWORD C:\Users\USER\AppData\Local\LunarG\vkconfig\override\VkLayer_override.json
Under Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Settings
DWORD C:\Users\USER\AppData\Local\LunarG\vkconfig\override\vk_layer_settings.txt
To make it work with 32bit layers optionally installed by SDK, I had to
- Copy those two keys to corresponding
WOW6432Nodesubkey - In
WOW6432Node\Khronos\Vulkan\ImplicitLayersrenameVkLayer_override.jsontoVkLayer_override32.json - Copy
AppData\Local\LunarG\vkconfig\override\VkLayer_override.jsonfile toAppData\Local\LunarG\vkconfig\override\VkLayer_override32.json - Append
32tooverride_pathsinsideVkLayer_override32.json
Unfortunately, to disable layers added this way, you have to rename added regkey (the one pointing to VkLayer_override32.json in WOW6432Node\Khronos\Vulkan\ImplicitLayers) to point it to non-existing file.
Any change to enabled layers in vkconfig means you also have to copy VkLayer_override.json to VkLayer_override32.json and change path in it again.
Above steps seems to be easily implementable in vkconfig.
Custom layers working may be a little bit trickier to implement without filename or folder structure convention. Example:
- Renderdoc uses: RenderDoc_v1.26.0_64\renderdoc.json RenderDoc_v1.26.0_64\x86\renderdoc.json
- Steam Overlay/Fossilize: C:\Program Files (x86)\Steam\SteamOverlayVulkanLayer64.json C:\Program Files (x86)\Steam\SteamOverlayVulkanLayer.json
32 bit is officially not supported anymore by the Vulkan SDK so closing.