Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Tracked by #78497
darksylinc opened this issue Aug 27, 2023 · 9 comments
Open
Tracked by #78497

Comments

@darksylinc
Copy link
Contributor

darksylinc commented Aug 27, 2023

Godot version

4.2.x master [16a9356]

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:

  • Changing layouts. e.g. a Texture that was just used for rendering (VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) now wants to be used for sampling (VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL). Godot gets this right. The default layers will scream at you if you get this wrong, and rendering will often be very corrupt.
    • If you want to know the details of why layout changes are needed; textures have a lot of meta stuff under the hood. For example DCC (Delta Color Compression) may be enabled for rendering. But for sampling the HW needs to decompress the texture before it can be sampled.
  • Ordering commands. If Compute Shader B (VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT) depends on the rendering done by Pixel Shader A (VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT or VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT depending on the case), then a barrier must be issued to ensure the Compute Shader doesn't start before rendering is done. Godot gets this more or less right since often a layout change is involved; but at other times it doesn't.
  • Flushing caches. If Pixel Shader A wrote to a Render Target (VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT), then caches need to be flushed to VRAM before the Compute Shader B can read them (VK_ACCESS_COLOR_ATTACHMENT_READ_BIT). Godot takes the brute force path of almost always asking READ_BIT|WRITE_BIT, but sometimes forgets to do this.

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:

  • VkAttachmentDescription::initialLayout Vulkan asks us in what layout the texture currently is before starting the rendering pass. Validation will scream at us if we get it wrong.
  • VkAttachmentReference::layout. In which layout the rendering should be done. Unless we're doing subpasses in Mobile, this is almost always VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL because we want to render into it.
  • VkAttachmentDescription::finalLayout in what layout do we wish to leave the textures in.

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
Copy link
Contributor

jsjtxietian commented Aug 28, 2023

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
Copy link
Contributor Author

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
Copy link
Contributor

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
Copy link
Member

Calinou commented Aug 28, 2023

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 🙂

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
Copy link
Contributor Author

darksylinc commented Aug 28, 2023

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
Copy link
Contributor Author

darksylinc commented Oct 4, 2023

This issue affects:

#73697
#61415
#67204

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

@jsjtxietian
Copy link
Contributor

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

@darksylinc
Copy link
Contributor Author

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

@darksylinc
Copy link
Contributor Author

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants