radv/rt: create compile_rt_prolog() function
authorDaniel Schürmann <daniel@schuermann.dev>
Tue, 9 May 2023 09:15:19 +0000 (11:15 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 8 Jun 2023 00:37:03 +0000 (00:37 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22096>

src/amd/vulkan/radv_pipeline_rt.c

index ecbad8c..feb41fe 100644 (file)
@@ -595,6 +595,20 @@ postprocess_rt_config(struct ac_shader_config *config, enum amd_gfx_level gfx_le
                    S_00B8A0_SHARED_VGPR_CNT(config->num_shared_vgprs / 8);
 }
 
+static void
+compile_rt_prolog(struct radv_device *device, struct radv_ray_tracing_pipeline *pipeline)
+{
+   pipeline->base.base.shaders[MESA_SHADER_COMPUTE] = radv_create_rt_prolog(device);
+
+   /* create combined config */
+   combine_config(&pipeline->base.base.shaders[MESA_SHADER_COMPUTE]->config,
+                  &pipeline->base.base.shaders[MESA_SHADER_INTERSECTION]->config);
+
+   postprocess_rt_config(&pipeline->base.base.shaders[MESA_SHADER_COMPUTE]->config,
+                         device->physical_device->rad_info.gfx_level,
+                         device->physical_device->rt_wave_size);
+}
+
 static VkResult
 radv_rt_pipeline_create(VkDevice _device, VkPipelineCache _cache,
                         const VkRayTracingPipelineCreateInfoKHR *pCreateInfo,
@@ -654,14 +668,7 @@ radv_rt_pipeline_create(VkDevice _device, VkPipelineCache _cache,
       goto done;
 
    compute_rt_stack_size(pCreateInfo, pipeline);
-   pipeline->base.base.shaders[MESA_SHADER_COMPUTE] = radv_create_rt_prolog(device);
-
-   combine_config(&pipeline->base.base.shaders[MESA_SHADER_COMPUTE]->config,
-                  &pipeline->base.base.shaders[MESA_SHADER_INTERSECTION]->config);
-
-   postprocess_rt_config(&pipeline->base.base.shaders[MESA_SHADER_COMPUTE]->config,
-                         device->physical_device->rad_info.gfx_level,
-                         device->physical_device->rt_wave_size);
+   compile_rt_prolog(device, pipeline);
 
    radv_compute_pipeline_init(device, &pipeline->base, pipeline_layout);