From 6551be9c6e5a802cfe39dddfd04c38f1e941a245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Mon, 10 Jul 2023 10:36:20 +0200 Subject: [PATCH] radv: Move radv_select_hw_stage to radv_shader_info. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Timur Kristóf Reviewed-by: Rhys Perry Part-of: --- src/amd/vulkan/radv_aco_shader_info.h | 46 --------------------------- src/amd/vulkan/radv_shader.h | 2 ++ src/amd/vulkan/radv_shader_info.c | 46 +++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/amd/vulkan/radv_aco_shader_info.h b/src/amd/vulkan/radv_aco_shader_info.h index 8f54ccf6c48..ec7ef65034b 100644 --- a/src/amd/vulkan/radv_aco_shader_info.h +++ b/src/amd/vulkan/radv_aco_shader_info.h @@ -39,52 +39,6 @@ static inline void radv_aco_convert_ps_epilog_key(struct aco_ps_epilog_info *aco const struct radv_ps_epilog_key *radv, const struct radv_shader_args *radv_args); -static enum ac_hw_stage -radv_select_hw_stage(const struct radv_shader_info *const info, const enum amd_gfx_level gfx_level) -{ - switch (info->stage) { - case MESA_SHADER_VERTEX: - if (info->is_ngg) - return AC_HW_NEXT_GEN_GEOMETRY_SHADER; - else if (info->vs.as_es) - return gfx_level >= GFX9 ? AC_HW_LEGACY_GEOMETRY_SHADER : AC_HW_EXPORT_SHADER; - else if (info->vs.as_ls) - return gfx_level >= GFX9 ? AC_HW_HULL_SHADER : AC_HW_LOCAL_SHADER; - else - return AC_HW_VERTEX_SHADER; - case MESA_SHADER_TESS_EVAL: - if (info->is_ngg) - return AC_HW_NEXT_GEN_GEOMETRY_SHADER; - else if (info->tes.as_es) - return gfx_level >= GFX9 ? AC_HW_LEGACY_GEOMETRY_SHADER : AC_HW_EXPORT_SHADER; - else - return AC_HW_VERTEX_SHADER; - case MESA_SHADER_TESS_CTRL: - return AC_HW_HULL_SHADER; - case MESA_SHADER_GEOMETRY: - if (info->is_ngg) - return AC_HW_NEXT_GEN_GEOMETRY_SHADER; - else - return AC_HW_LEGACY_GEOMETRY_SHADER; - case MESA_SHADER_MESH: - return AC_HW_NEXT_GEN_GEOMETRY_SHADER; - case MESA_SHADER_FRAGMENT: - return AC_HW_PIXEL_SHADER; - case MESA_SHADER_COMPUTE: - case MESA_SHADER_KERNEL: - case MESA_SHADER_TASK: - case MESA_SHADER_RAYGEN: - case MESA_SHADER_ANY_HIT: - case MESA_SHADER_CLOSEST_HIT: - case MESA_SHADER_MISS: - case MESA_SHADER_INTERSECTION: - case MESA_SHADER_CALLABLE: - return AC_HW_COMPUTE_SHADER; - default: - unreachable("Unsupported HW stage"); - } -} - static inline void radv_aco_convert_shader_info(struct aco_shader_info *aco_info, const struct radv_shader_info *radv, const struct radv_shader_args *radv_args, const struct radv_pipeline_key *radv_key, diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 4f63e7b8972..f3333ec7315 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -698,6 +698,8 @@ VkResult radv_dump_shader_stats(struct radv_device *device, struct radv_pipeline /* Returns true on success and false on failure */ bool radv_shader_reupload(struct radv_device *device, struct radv_shader *shader); +enum ac_hw_stage radv_select_hw_stage(const struct radv_shader_info *const info, const enum amd_gfx_level gfx_level); + extern const struct vk_pipeline_cache_object_ops radv_shader_ops; static inline struct radv_shader * diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index ff8c99fb02f..129997b2602 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -1660,3 +1660,49 @@ radv_nir_shader_info_link(struct radv_device *device, const struct radv_pipeline } } } + +enum ac_hw_stage +radv_select_hw_stage(const struct radv_shader_info *const info, const enum amd_gfx_level gfx_level) +{ + switch (info->stage) { + case MESA_SHADER_VERTEX: + if (info->is_ngg) + return AC_HW_NEXT_GEN_GEOMETRY_SHADER; + else if (info->vs.as_es) + return gfx_level >= GFX9 ? AC_HW_LEGACY_GEOMETRY_SHADER : AC_HW_EXPORT_SHADER; + else if (info->vs.as_ls) + return gfx_level >= GFX9 ? AC_HW_HULL_SHADER : AC_HW_LOCAL_SHADER; + else + return AC_HW_VERTEX_SHADER; + case MESA_SHADER_TESS_EVAL: + if (info->is_ngg) + return AC_HW_NEXT_GEN_GEOMETRY_SHADER; + else if (info->tes.as_es) + return gfx_level >= GFX9 ? AC_HW_LEGACY_GEOMETRY_SHADER : AC_HW_EXPORT_SHADER; + else + return AC_HW_VERTEX_SHADER; + case MESA_SHADER_TESS_CTRL: + return AC_HW_HULL_SHADER; + case MESA_SHADER_GEOMETRY: + if (info->is_ngg) + return AC_HW_NEXT_GEN_GEOMETRY_SHADER; + else + return AC_HW_LEGACY_GEOMETRY_SHADER; + case MESA_SHADER_MESH: + return AC_HW_NEXT_GEN_GEOMETRY_SHADER; + case MESA_SHADER_FRAGMENT: + return AC_HW_PIXEL_SHADER; + case MESA_SHADER_COMPUTE: + case MESA_SHADER_KERNEL: + case MESA_SHADER_TASK: + case MESA_SHADER_RAYGEN: + case MESA_SHADER_ANY_HIT: + case MESA_SHADER_CLOSEST_HIT: + case MESA_SHADER_MISS: + case MESA_SHADER_INTERSECTION: + case MESA_SHADER_CALLABLE: + return AC_HW_COMPUTE_SHADER; + default: + unreachable("Unsupported HW stage"); + } +}