radv: Emit RT shader VA user SGPR
authorFriedrich Vock <friedrich.vock@gmx.de>
Tue, 7 Mar 2023 17:21:45 +0000 (18:21 +0100)
committerMarge Bot <emma+marge@anholt.net>
Thu, 16 Mar 2023 01:40:30 +0000 (01:40 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21780>

src/amd/vulkan/radv_cmd_buffer.c

index 83f4df3..b9ba19c 100644 (file)
@@ -9884,7 +9884,7 @@ radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCom
    } else
       info.va = launch_size_va;
 
-   ASSERTED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 11);
+   ASSERTED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 15);
 
    struct radv_userdata_info *desc_loc =
       radv_lookup_user_sgpr(&pipeline->base, MESA_SHADER_COMPUTE, AC_UD_CS_SBT_DESCRIPTORS);
@@ -9908,6 +9908,14 @@ radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCom
                         pipeline->base.scratch_bytes_per_wave / cs_info->wave_size);
    }
 
+   struct radv_userdata_info *shader_loc =
+      radv_lookup_user_sgpr(&pipeline->base, MESA_SHADER_COMPUTE, AC_UD_CS_TRAVERSAL_SHADER_ADDR);
+   if (shader_loc->sgpr_idx != -1) {
+      uint64_t raygen_va = pipeline->base.shaders[MESA_SHADER_RAYGEN]->va;
+      radv_emit_shader_pointer(cmd_buffer->device, cmd_buffer->cs,
+                               base_reg + shader_loc->sgpr_idx * 4, raygen_va, true);
+   }
+
    assert(cmd_buffer->cs->cdw <= cdw_max);
 
    radv_dispatch(cmd_buffer, &info, pipeline, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);