radv/rt: Fix VK_KHR_pipeline_executable_properties
authorDaniel Schürmann <daniel@schuermann.dev>
Fri, 24 Mar 2023 01:46:46 +0000 (02:46 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 24 Mar 2023 19:50:46 +0000 (19:50 +0000)
We don't provide executable properties for the prolog shader.

Fixes: f123d65e9f50e57b9af3de2e0e77618fcd9d2ddd ('radv/rt: use prolog for raytracing shaders')
Fixes: dEQP-VK.pipeline.monolithic.shader_module_identifier.pipeline_from_id.ray_tracing_libs.*
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22111>

src/amd/vulkan/radv_pipeline.c

index a2a3007..c5cc3a0 100644 (file)
@@ -5519,6 +5519,9 @@ radv_CreateComputePipelines(VkDevice _device, VkPipelineCache pipelineCache, uin
 static uint32_t
 radv_get_executable_count(struct radv_pipeline *pipeline)
 {
+   if (pipeline->type == RADV_PIPELINE_RAY_TRACING)
+      return 1;
+
    uint32_t ret = 0;
    for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) {
       if (!pipeline->shaders[i])
@@ -5538,6 +5541,11 @@ static struct radv_shader *
 radv_get_shader_from_executable_index(struct radv_pipeline *pipeline, int index,
                                       gl_shader_stage *stage)
 {
+   if (pipeline->type == RADV_PIPELINE_RAY_TRACING) {
+      *stage = MESA_SHADER_RAYGEN;
+      return pipeline->shaders[*stage];
+   }
+
    for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) {
       if (!pipeline->shaders[i])
          continue;