godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.34k stars 21.06k forks source link

Lots of Synchronization Validation Errors (specially with MSAA enabled) #81060

Open darksylinc opened 1 year ago

darksylinc commented 1 year ago

Godot version

4.2.x master [16a93563bfd3b02ca0a8f6df2026f3a3217f5571]

System information

Linux - GCC g++ 9.4.0 - Ubuntu 20.04 LTS

Issue description

Ticket #78497 tracks a good number of validation number and this ticket addresses all of them that start with "READ_AFTER_WRITE" or "WRITE_AFTER READ". This affects #61415

First, I need to explain what these are. Because I see this is a systemic problem.

Vulkan Synchronization isn't easy. Good reads are this/this and this.

We can basically split Vulkan Barriers in 3 things they do:

Normally, the 3 things happen at the same time: We change layouts because we need to do something else to a Resource, that means we must wait for a previously issued command and thus enforce command order, and while we are at it we flush the caches.

But unfortunately in Godot, that's not always the case.

Godot asks Render Passes to automatically change layouts

A VkRenderPass requests 3 parameters we care about:

Godot "for simplicity" (in quotes because IMHO as things get more complex this adds a lot of problems) almost always assumes the following:

VkAttachmentDescription::initialLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
VkAttachmentReference::layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
VkAttachmentDescription::finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL

That is, assume the texture was being used for sampling, then temporarily change it to Render Texture, and then resume sampling again. For most simple effects this make sense.

For more complex Compute Shaders, this is counterproductive because if the CS wants to write to it; it needs to change from VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL to VK_IMAGE_LAYOUT_GENERAL and when it's done back to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL.

I talk about this behavior in godotengine/godot-proposals/issues#7366 see "Gaussian Glow performs inefficient pipeline barriers & lack of barrier solver".

However that is not the problem here.

The problem is that VkRenderPass performs the layout change but does not enforce order (and honestly I don't know if it flushes the caches...).

VkRenderPass are guaranteed to be ordered against other VkRenderPass, but not against compute shader dispatches.

Frankly VkRenderPass "conveniently" leaving the layout in the one you want is a disservice that makes more harm than good which is why I hate subpasses with a passion.

If we run a VkRenderPass and then a Compute Shader that uses the RenderTarget(s) from that pass; we must use a barrier. Otherwise it's a data hazard. The CS may start before rendering is done writing to it.

In OgreNext I prefer to leave finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL so that validation will always scream at me if I try to use the texture again. In very few cases this is slightly less efficient, but once you start doing anything more advanced (literally anything with Compute Shaders) it becomes a blessing.

MSAA

If we create an empty a project and turn on MSAA + SSAO and leave everything else off (e.g. SSR, SDFGI) the following happens:

  1. Render Depth Pre-Pass
    • This is a regular VkRenderPass that writes to various MSAA buffers
  2. Resolve Depth Pre-Pass (MSAA)
    • This is a Compute Shader
  3. Render Opaque Pass

Unfortunately, Step 2 can start before Step 1 finishes. Regular validation doesn't complain because the layout is in the correct state. There is code that doesn't get to be called

if (needs_pre_resolve) {
    RD::get_singleton()->barrier(RD::BARRIER_MASK_RASTER, RD::BARRIER_MASK_COMPUTE);
}

which inserts a global barrier. However even if I force the call by commenting out the if(), synchronization validation still complains and rendering on AMD Polaris is still messed up. I haven't yet figured out why though.

Though a simple possibility is that the barrier explicitly needs us to submit the textures involved.

Steps to reproduce

  1. Enable Synchronization profile validation in vkconfig
  2. Start Godot with --gpu-validation
  3. Open a new project
  4. Ensure MSAA is enabled
  5. Enable SSAO
  6. See the log getting spammed

Messages like the following:

SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x172a5790, name = radiance base cubemap View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDispatch: Hazard READ_AFTER_WRITE for VkImageView 0x172a5790[radiance base cubemap View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0xe45a510[RID:2688649527451], VkDescriptorSet 0x2a7cf910[RID:578506324967799], type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #0, index 0. Access info (usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1561, reset_no: 209).
    Objects: 1
        [0] 0x172a5790, type: 14, name: radiance base cubemap View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x172a5790, name = radiance base cubemap View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDispatch: Hazard READ_AFTER_WRITE for VkImageView 0x172a5790[radiance base cubemap View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0xe45a510[RID:2688649527451], VkDescriptorSet 0x2a7cf910[RID:578506324967799], type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #0, index 0. Access info (usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1561, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 388650896, Name "radiance base cubemap View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a77fb50, name = RenderBuffer forward_clustered/normal_roughnesss_msaa View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDispatch: Hazard READ_AFTER_WRITE for VkImageView 0x2a77fb50[RenderBuffer forward_clustered/normal_roughnesss_msaa View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0xd1dd850[RID:1408749273123], VkDescriptorSet 0x2a87db60[RID:579172044898796], type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #1, index 0. Access info (usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1795, reset_no: 209).
    Objects: 1
        [0] 0x2a77fb50, type: 14, name: RenderBuffer forward_clustered/normal_roughnesss_msaa View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a77fb50, name = RenderBuffer forward_clustered/normal_roughnesss_msaa View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDispatch: Hazard READ_AFTER_WRITE for VkImageView 0x2a77fb50[RenderBuffer forward_clustered/normal_roughnesss_msaa View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0xd1dd850[RID:1408749273123], VkDescriptorSet 0x2a87db60[RID:579172044898796], type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #1, index 0. Access info (usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1795, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 712506192, Name "RenderBuffer forward_clustered/normal_roughnesss_msaa View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a653bf0, name = RenderBuffer render_buffers/depth_msaa View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDispatch: Hazard READ_AFTER_WRITE for VkImageView 0x2a653bf0[RenderBuffer render_buffers/depth_msaa View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0xd1dd850[RID:1408749273123], VkDescriptorSet 0x2a87db60[RID:579172044898796], type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #0, index 0. Access info (usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1795, reset_no: 209).
    Objects: 1
        [0] 0x2a653bf0, type: 14, name: RenderBuffer render_buffers/depth_msaa View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a653bf0, name = RenderBuffer render_buffers/depth_msaa View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDispatch: Hazard READ_AFTER_WRITE for VkImageView 0x2a653bf0[RenderBuffer render_buffers/depth_msaa View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0xd1dd850[RID:1408749273123], VkDescriptorSet 0x2a87db60[RID:579172044898796], type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #0, index 0. Access info (usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1795, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 711277552, Name "RenderBuffer render_buffers/depth_msaa View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 1798, reset_no: 209).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 1798, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-READ_AFTER_WRITE(ERROR / SPEC): msgNum: 1287084845 - Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects: 1
        [0] 0x2a806820, type: 14, name: RID:579249354317759 View
ERROR: VALIDATION - Message Id Number: 1287084845 | Message Id Name: SYNC-HAZARD-READ_AFTER_WRITE
    Validation Error: [ SYNC-HAZARD-READ_AFTER_WRITE ] Object 0: handle = 0x2a806820, name = RID:579249354317759 View, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4cb75b2d | vkCmdDrawIndexed: Hazard READ_AFTER_WRITE for VkImageView 0x2a806820[RID:579249354317759 View], in VkCommandBuffer 0xb5c9160[], and VkPipeline 0x2a915590[RID:579644491300879], VkDescriptorSet 0x9f82dc0[RID:579605836595724], type: VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, imageLayout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, binding #6, index 0. Access info (usage: SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, prior_usage: SYNC_IMAGE_LAYOUT_TRANSITION, write_barriers: 0, command: vkCmdEndRenderPass, seq_no: 1894, reset_no: 209).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_IMAGE_VIEW, Handle 713058336, Name "RID:579249354317759 View"
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 5101, reset_no: 3).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 5101, reset_no: 3).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 277, reset_no: 211).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 277, reset_no: 211).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 61, reset_no: 5).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 61, reset_no: 5).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 213).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 213).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 7).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 7).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 215).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 215).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 9).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 9).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 217).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 217).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
SYNC-HAZARD-WRITE_AFTER_READ(ERROR / SPEC): msgNum: 1261721012 - Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 11).
    Objects: 1
        [0] 0x2a904910, type: 18, name: NULL
ERROR: VALIDATION - Message Id Number: 1261721012 | Message Id Name: SYNC-HAZARD-WRITE_AFTER_READ
    Validation Error: [ SYNC-HAZARD-WRITE_AFTER_READ ] Object 0: handle = 0x2a904910, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x4b3455b4 | vkCmdBeginRenderPass: Hazard WRITE_AFTER_READ in subpass 0 for attachment 1 image layout transition (old_layout: VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, new_layout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL). Access info (usage: SYNC_IMAGE_LAYOUT_TRANSITION, prior_usage: SYNC_COMPUTE_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR|VK_PIPELINE_STAGE_2_BLIT_BIT_KHR|VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, command: vkCmdDispatch, seq_no: 43, reset_no: 11).
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_RENDER_PASS, Handle 714098960
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)

Minimal reproduction project

Any

jsjtxietian commented 1 year ago

Maybe use vulkan's VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT can also help finding this kind of issue too ? https://registry.khronos.org/VulkanSC/specs/1.0-extensions/html/vkspec.html#VkValidationFeatureEnableEXT

darksylinc commented 1 year ago

Hi!

Maybe use vulkan's VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT can also help finding this kind of issue too ?

Yes, the validation messages I posted were using that extension (but I used vkconfig to force it, rather than modifying Godot to set that bit).

However this flag is often disabled because it has a severe performance impact, so it's only enabled on demand and off by default.

Btw I forgot to mention on the ticket, I will be handling this bug.

I wrote this ticket to explain the problem, order my thoughts, and allow anyone to offer feedback.

jsjtxietian commented 1 year ago

Btw I forgot to mention on the ticket, I will be handling this bug.

Vulkan Synchronization is hard, I'm looking forward to learn from your PR :)

Calinou commented 1 year ago

Yes, the validation messages I posted were using that extension (but I used vkconfig to force it, rather than modifying Godot to set that bit).

This should be documented on Validation layers :slightly_smiling_face:

I'm not sure if we should add one more CLI argument (we have a lot of them already, and --gpu-validation doesn't accept a parameter unless we break compatibility). Is it possible to enable additional extensions using only an environment variable, so you don't need to go through vkconfig?

darksylinc commented 1 year ago

I actually find vkconfig more convenient, since I can control what does and doesn't get reported; in order to better focus on specific problems.

Otherwise I have to understand Godot's source code to see what is exactly being enabled with each CLI flag.

darksylinc commented 1 year ago

This issue affects:

73697

61415

67204

After long discussions with the team, it won't be fixed until acyclic render graphs are implemented.

jsjtxietian commented 1 year ago

May I ask is acyclic graph some kind of render graph ?

darksylinc commented 1 year ago

Yes. I just edited the comment to avoid the confusion.

darksylinc commented 1 year ago

After some discussion with @clayjohn , the impact of this bug is too large to be depending on acycl. render graphs being completed.

I will wrap up what I'm doing now and then focus on fixing this bug even if that means sacrificing performance (since fixing this bug right now means placing inefficient barriers).

clayjohn commented 1 day ago

I suspect that this is fixed as of 4.3. It would be good to check again