Module: Mesa
Branch: main
Commit: 4608de6645e55d7cb4f309ecf6ef837ddaf43c39
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4608de6645e55d7cb4f309ecf6ef837ddaf43c39

Author: Lionel Landwerlin <[email protected]>
Date:   Mon Oct 23 10:51:37 2023 +0300

anv: add missing push descriptor flush on ray tracing pipelines

Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Rohan Garg <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25897>

---

 src/intel/vulkan/genX_cmd_buffer.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
b/src/intel/vulkan/genX_cmd_buffer.c
index 13d5b280a5e..fd8bfb2e7a8 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -2352,6 +2352,8 @@ flush_push_descriptor_set(struct anv_cmd_buffer 
*cmd_buffer,
                                     set->desc_addr,
                                     layout->descriptor_buffer_size, 1);
    }
+
+   state->push_descriptor.set_used_on_gpu = true;
 }
 
 static void
@@ -6458,6 +6460,16 @@ cmd_buffer_trace_rays(struct anv_cmd_buffer *cmd_buffer,
 
    genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
 
+   const VkShaderStageFlags push_descriptor_dirty =
+      cmd_buffer->state.push_descriptors_dirty &
+      pipeline->base.use_push_descriptor;
+   if (push_descriptor_dirty) {
+      flush_push_descriptor_set(cmd_buffer,
+                                &cmd_buffer->state.rt.base,
+                                &pipeline->base);
+      cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
+   }
+
    /* Add these to the reloc list as they're internal buffers that don't
     * actually have relocs to pick them up manually.
     *

Reply via email to