DiligentGraphics/DiligentCore

Vulkan: use proper access flag for acceleration structures

Closed this issue · 1 comments

Currently, Diligent uses VK_ACCESS_SHADER_READ_BIT flag for acceleration structure read. On AMD hardware this is not supported and produces the following errros:

 Validation Error: [ VUID-vkCmdPipelineBarrier-dstAccessMask-02816 ] Object 0: handle = 0x5565564848c0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x69c8467d | vkCmdPipelineBarrier(): INVALID_EMPTYpMemoryBarriers[0].dstAccessMask bit VK_ACCESS_SHADER_READ_BIT is not supported by stage mask (VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR). The Vulkan spec states: The dstAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types (https://vulkan.lunarg.com/doc/view/1.3.261.0/linux/1.3-extensions/vkspec.html#VUID-vkCmdPipelineBarrier-dstAccessMask-02816)
                 Object[0] (cmd buffer): Handle 0x5565564848c0

Apparently, correct access flag is VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR

@MikhailGorobets Can this issue be closed?