You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Experiencing a program crash/system freeze when trying to run a shader where a buffer device address is copied from a uniform buffer to a member in a local struct variable.
Originally discovered in a much larger shader. But looks like similar problem is also reproducible if modifying shader in simple VK_KHR_buffer_device_address sample found in Sascha Willems' Vulkan example repository.
Willems' example uses vkQueueWaitIdle(), and if I remember correctly, assert gets triggered in VulkanExampleBase::submitFrame(). Program where problem was originally discovered does not use vkQueueWaitIdle(). There program just crashes and sometimes it even causes system to freeze and a hard reset is required. Also, in own more complicated shader, buffer device address is copied from a uniform buffer and stored in a local struct variable that gets passed thorough functions to eventually be de-referenced. If shader is modified to just use address directly from uniform buffer, there is no crash.
Can not reproduce this problem on Nvidia nor Intel GPU:s available to test with. Neither in own more complicated shader nor with diff from above applied to simple VK_KHR_buffer_device_address example.
The text was updated successfully, but these errors were encountered:
martin-ejdestig
changed the title
Driver crash/system freeze when copying buffer reference to struct
Driver crash/system freeze when copying buffer device address to struct
Nov 28, 2024
GPU: AMD Radeon RX 6700 XT
Driver Version: 24.10.1
OS: Windows 10 (Build 19045)
Vulkan SDK: 1.3.296.0
Experiencing a program crash/system freeze when trying to run a shader where a buffer device address is copied from a uniform buffer to a member in a local struct variable.
Originally discovered in a much larger shader. But looks like similar problem is also reproducible if modifying shader in simple VK_KHR_buffer_device_address sample found in Sascha Willems' Vulkan example repository.
To get program to crash, modify https://github.com/SaschaWillems/Vulkan/blob/master/shaders/glsl/bufferdeviceaddress/cube.vert by applying the following diff (and recompile the shader, there is a separate python script for this in
shaders/glsl
):If
AMD_CRASH
is defined to0
, there is no crash.Willems' example uses
vkQueueWaitIdle()
, and if I remember correctly, assert gets triggered inVulkanExampleBase::submitFrame()
. Program where problem was originally discovered does not usevkQueueWaitIdle()
. There program just crashes and sometimes it even causes system to freeze and a hard reset is required. Also, in own more complicated shader, buffer device address is copied from a uniform buffer and stored in a local struct variable that gets passed thorough functions to eventually be de-referenced. If shader is modified to just use address directly from uniform buffer, there is no crash.Can not reproduce this problem on Nvidia nor Intel GPU:s available to test with. Neither in own more complicated shader nor with diff from above applied to simple VK_KHR_buffer_device_address example.
The text was updated successfully, but these errors were encountered: