Mesa (main): radv: remove more references to the pipeline layout during compilation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 8 07:18:36 UTC 2022


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Apr  5 10:27:28 2022 +0200

radv: remove more references to the pipeline layout during compilation

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15749>

---

 src/amd/vulkan/radv_pipeline.c    | 11 +++++------
 src/amd/vulkan/radv_pipeline_rt.c | 17 ++++++-----------
 src/amd/vulkan/radv_shader.c      | 13 +++++--------
 src/amd/vulkan/radv_shader.h      |  7 +++----
 4 files changed, 19 insertions(+), 29 deletions(-)

diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index de99b9672ed..58312861c27 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -4206,8 +4206,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
       radv_start_feedback(stage_feedbacks[i]);
 
       nir[i] = radv_shader_compile_to_nir(device, modules[i], stage ? stage->pName : "main", i,
-                                          stage ? stage->pSpecializationInfo : NULL,
-                                          pipeline_layout, pipeline_key);
+                                          stage ? stage->pSpecializationInfo : NULL, pipeline_key);
 
       radv_stop_feedback(stage_feedbacks[i], false);
    }
@@ -4444,7 +4443,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
          radv_start_feedback(stage_feedbacks[MESA_SHADER_FRAGMENT]);
 
          pipeline->shaders[MESA_SHADER_FRAGMENT] = radv_shader_compile(
-            device, modules[MESA_SHADER_FRAGMENT], &nir[MESA_SHADER_FRAGMENT], 1, pipeline_layout,
+            device, modules[MESA_SHADER_FRAGMENT], &nir[MESA_SHADER_FRAGMENT], 1,
             pipeline_key, infos + MESA_SHADER_FRAGMENT, &args[MESA_SHADER_FRAGMENT],
             keep_executable_info, keep_statistic_info, &binaries[MESA_SHADER_FRAGMENT]);
 
@@ -4459,7 +4458,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
          radv_start_feedback(stage_feedbacks[MESA_SHADER_TESS_CTRL]);
 
          pipeline->shaders[MESA_SHADER_TESS_CTRL] = radv_shader_compile(
-            device, modules[MESA_SHADER_TESS_CTRL], combined_nir, 2, pipeline_layout, pipeline_key,
+            device, modules[MESA_SHADER_TESS_CTRL], combined_nir, 2, pipeline_key,
             &infos[MESA_SHADER_TESS_CTRL], &args[MESA_SHADER_TESS_CTRL], keep_executable_info,
             keep_statistic_info, &binaries[MESA_SHADER_TESS_CTRL]);
 
@@ -4477,7 +4476,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
          radv_start_feedback(stage_feedbacks[MESA_SHADER_GEOMETRY]);
 
          pipeline->shaders[MESA_SHADER_GEOMETRY] = radv_shader_compile(
-            device, modules[MESA_SHADER_GEOMETRY], combined_nir, 2, pipeline_layout, pipeline_key,
+            device, modules[MESA_SHADER_GEOMETRY], combined_nir, 2, pipeline_key,
             &infos[MESA_SHADER_GEOMETRY], &args[MESA_SHADER_GEOMETRY], keep_executable_info,
             keep_statistic_info, &binaries[MESA_SHADER_GEOMETRY]);
 
@@ -4491,7 +4490,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
          radv_start_feedback(stage_feedbacks[i]);
 
          pipeline->shaders[i] = radv_shader_compile(
-            device, modules[i], &nir[i], 1, pipeline_layout, pipeline_key, infos + i, &args[i],
+            device, modules[i], &nir[i], 1, pipeline_key, infos + i, &args[i],
             keep_executable_info, keep_statistic_info, &binaries[i]);
 
          radv_stop_feedback(stage_feedbacks[i], false);
diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c
index 6e7d30dd625..a2ef3698174 100644
--- a/src/amd/vulkan/radv_pipeline_rt.c
+++ b/src/amd/vulkan/radv_pipeline_rt.c
@@ -810,15 +810,14 @@ convert_rt_stage(VkShaderStageFlagBits vk_stage)
 }
 
 static nir_shader *
-parse_rt_stage(struct radv_device *device, struct radv_pipeline_layout *layout,
-               const VkPipelineShaderStageCreateInfo *stage)
+parse_rt_stage(struct radv_device *device, const VkPipelineShaderStageCreateInfo *stage)
 {
    struct radv_pipeline_key key;
    memset(&key, 0, sizeof(key));
 
    nir_shader *shader = radv_shader_compile_to_nir(
       device, vk_shader_module_from_handle(stage->module), stage->pName,
-      convert_rt_stage(stage->stage), stage->pSpecializationInfo, layout, &key);
+      convert_rt_stage(stage->stage), stage->pSpecializationInfo, &key);
 
    if (shader->info.stage == MESA_SHADER_RAYGEN || shader->info.stage == MESA_SHADER_CLOSEST_HIT ||
        shader->info.stage == MESA_SHADER_CALLABLE || shader->info.stage == MESA_SHADER_MISS) {
@@ -1087,7 +1086,6 @@ visit_any_hit_shaders(struct radv_device *device,
                       const VkRayTracingPipelineCreateInfoKHR *pCreateInfo, nir_builder *b,
                       struct rt_variables *vars)
 {
-   RADV_FROM_HANDLE(radv_pipeline_layout, layout, pCreateInfo->layout);
    nir_ssa_def *sbt_idx = nir_load_var(b, vars->idx);
 
    nir_push_if(b, nir_ine(b, sbt_idx, nir_imm_int(b, 0)));
@@ -1106,7 +1104,7 @@ visit_any_hit_shaders(struct radv_device *device,
          continue;
 
       const VkPipelineShaderStageCreateInfo *stage = &pCreateInfo->pStages[shader_id];
-      nir_shader *nir_stage = parse_rt_stage(device, layout, stage);
+      nir_shader *nir_stage = parse_rt_stage(device, stage);
 
       vars->group_idx = i;
       insert_rt_case(b, nir_stage, vars, sbt_idx, 0, i + 2);
@@ -1265,8 +1263,6 @@ insert_traversal_aabb_case(struct radv_device *device,
                            const struct rt_variables *vars,
                            const struct rt_traversal_vars *trav_vars, nir_ssa_def *bvh_node)
 {
-   RADV_FROM_HANDLE(radv_pipeline_layout, layout, pCreateInfo->layout);
-
    nir_ssa_def *node_addr = build_node_to_addr(device, b, bvh_node);
    nir_ssa_def *triangle_info =
       nir_build_load_global(b, 2, 32, nir_iadd(b, node_addr, nir_imm_int64(b, 24)));
@@ -1331,12 +1327,12 @@ insert_traversal_aabb_case(struct radv_device *device,
             continue;
 
          const VkPipelineShaderStageCreateInfo *stage = &pCreateInfo->pStages[shader_id];
-         nir_shader *nir_stage = parse_rt_stage(device, layout, stage);
+         nir_shader *nir_stage = parse_rt_stage(device, stage);
 
          nir_shader *any_hit_stage = NULL;
          if (any_hit_shader_id != VK_SHADER_UNUSED_KHR) {
             stage = &pCreateInfo->pStages[any_hit_shader_id];
-            any_hit_stage = parse_rt_stage(device, layout, stage);
+            any_hit_stage = parse_rt_stage(device, stage);
 
             nir_lower_intersection_shader(nir_stage, any_hit_stage);
             ralloc_free(any_hit_stage);
@@ -1711,7 +1707,6 @@ static nir_shader *
 create_rt_shader(struct radv_device *device, const VkRayTracingPipelineCreateInfoKHR *pCreateInfo,
                  struct radv_pipeline_shader_stack_size *stack_sizes)
 {
-   RADV_FROM_HANDLE(radv_pipeline_layout, layout, pCreateInfo->layout);
    struct radv_pipeline_key key;
    memset(&key, 0, sizeof(key));
 
@@ -1768,7 +1763,7 @@ create_rt_shader(struct radv_device *device, const VkRayTracingPipelineCreateInf
          continue;
 
       const VkPipelineShaderStageCreateInfo *stage = &pCreateInfo->pStages[shader_id];
-      nir_shader *nir_stage = parse_rt_stage(device, layout, stage);
+      nir_shader *nir_stage = parse_rt_stage(device, stage);
 
       b.shader->options = nir_stage->options;
 
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index bdf7108820a..542f7321304 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -292,8 +292,7 @@ radv_compiler_debug(void *private_data, enum radv_compiler_debug_level level, co
 }
 
 static bool
-lower_intrinsics(nir_shader *nir, const struct radv_pipeline_key *key,
-                 const struct radv_pipeline_layout *layout, const struct radv_physical_device *pdev)
+lower_intrinsics(nir_shader *nir, const struct radv_pipeline_key *key)
 {
    nir_function_impl *entry = nir_shader_get_entrypoint(nir);
    bool progress = false;
@@ -556,7 +555,6 @@ nir_shader *
 radv_shader_compile_to_nir(struct radv_device *device, struct vk_shader_module *module,
                            const char *entrypoint_name, gl_shader_stage stage,
                            const VkSpecializationInfo *spec_info,
-                           const struct radv_pipeline_layout *layout,
                            const struct radv_pipeline_key *key)
 {
    unsigned subgroup_size = 64, ballot_bit_size = 64;
@@ -868,7 +866,7 @@ radv_shader_compile_to_nir(struct radv_device *device, struct vk_shader_module *
    NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_mem_ubo | nir_var_mem_ssbo,
               nir_address_format_vec2_index_32bit_offset);
 
-   NIR_PASS_V(nir, lower_intrinsics, key, layout, device->physical_device);
+   NIR_PASS_V(nir, lower_intrinsics, key);
 
    /* Lower deref operations for compute shared memory. */
    if (nir->info.stage == MESA_SHADER_COMPUTE ||
@@ -2025,10 +2023,9 @@ shader_compile(struct radv_device *device, struct vk_shader_module *module,
 struct radv_shader *
 radv_shader_compile(struct radv_device *device, struct vk_shader_module *module,
                     struct nir_shader *const *shaders, int shader_count,
-                    struct radv_pipeline_layout *layout, const struct radv_pipeline_key *key,
-                    struct radv_shader_info *info, const struct radv_shader_args *args,
-                    bool keep_shader_info, bool keep_statistic_info,
-                    struct radv_shader_binary **binary_out)
+                    const struct radv_pipeline_key *key, struct radv_shader_info *info,
+                    const struct radv_shader_args *args, bool keep_shader_info,
+                    bool keep_statistic_info, struct radv_shader_binary **binary_out)
 {
    gl_shader_stage stage = shaders[shader_count - 1]->info.stage;
    struct radv_nir_compiler_options options = {0};
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
index 212bc0eb2c9..f1e16874ad3 100644
--- a/src/amd/vulkan/radv_shader.h
+++ b/src/amd/vulkan/radv_shader.h
@@ -516,7 +516,6 @@ void radv_nir_apply_pipeline_layout(nir_shader *shader, struct radv_device *devi
 nir_shader *radv_shader_compile_to_nir(struct radv_device *device, struct vk_shader_module *module,
                                        const char *entrypoint_name, gl_shader_stage stage,
                                        const VkSpecializationInfo *spec_info,
-                                       const struct radv_pipeline_layout *layout,
                                        const struct radv_pipeline_key *key);
 
 void radv_init_shader_arenas(struct radv_device *device);
@@ -539,9 +538,9 @@ struct radv_shader *radv_shader_create(struct radv_device *device,
                                        const struct radv_shader_args *args);
 struct radv_shader *radv_shader_compile(
    struct radv_device *device, struct vk_shader_module *module, struct nir_shader *const *shaders,
-   int shader_count, struct radv_pipeline_layout *layout, const struct radv_pipeline_key *key,
-   struct radv_shader_info *info, const struct radv_shader_args *args, bool keep_shader_info,
-   bool keep_statistic_info, struct radv_shader_binary **binary_out);
+   int shader_count, const struct radv_pipeline_key *key, struct radv_shader_info *info,
+   const struct radv_shader_args *args, bool keep_shader_info, bool keep_statistic_info,
+   struct radv_shader_binary **binary_out);
 
 bool radv_shader_binary_upload(struct radv_device *device, const struct radv_shader_binary *binary,
                                struct radv_shader *shader, void *dest_ptr);



More information about the mesa-commit mailing list