Module: Mesa Branch: main Commit: 7000cd83620f812b68c080209ce4f22c977e9559 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7000cd83620f812b68c080209ce4f22c977e9559
Author: Timur Kristóf <[email protected]> Date: Mon Jul 10 11:06:02 2023 +0200 radeonsi: Move si_select_hw_stage to si_shader_info. Signed-off-by: Timur Kristóf <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Rhys Perry <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24005> --- src/gallium/drivers/radeonsi/si_shader_aco.c | 32 ---------------------- src/gallium/drivers/radeonsi/si_shader_info.c | 33 +++++++++++++++++++++++ src/gallium/drivers/radeonsi/si_shader_internal.h | 3 +++ 3 files changed, 36 insertions(+), 32 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_aco.c b/src/gallium/drivers/radeonsi/si_shader_aco.c index 4eadb0eecfc..89965a98a03 100644 --- a/src/gallium/drivers/radeonsi/si_shader_aco.c +++ b/src/gallium/drivers/radeonsi/si_shader_aco.c @@ -58,38 +58,6 @@ si_fill_aco_options(struct si_shader *shader, struct aco_compiler_options *optio options->debug.private_data = debug; } -static enum ac_hw_stage -si_select_hw_stage(const gl_shader_stage stage, const union si_shader_key *const key, - const enum amd_gfx_level gfx_level) -{ - switch (stage) { - case MESA_SHADER_VERTEX: - case MESA_SHADER_TESS_EVAL: - if (key->ge.as_ngg) - return AC_HW_NEXT_GEN_GEOMETRY_SHADER; - else if (key->ge.as_es) - return gfx_level >= GFX9 ? AC_HW_LEGACY_GEOMETRY_SHADER : AC_HW_EXPORT_SHADER; - else if (key->ge.as_ls) - return gfx_level >= GFX9 ? AC_HW_HULL_SHADER : AC_HW_LOCAL_SHADER; - else - return AC_HW_VERTEX_SHADER; - case MESA_SHADER_TESS_CTRL: - return AC_HW_HULL_SHADER; - case MESA_SHADER_GEOMETRY: - if (key->ge.as_ngg) - return AC_HW_NEXT_GEN_GEOMETRY_SHADER; - else - return AC_HW_LEGACY_GEOMETRY_SHADER; - case MESA_SHADER_FRAGMENT: - return AC_HW_PIXEL_SHADER; - case MESA_SHADER_COMPUTE: - case MESA_SHADER_KERNEL: - return AC_HW_COMPUTE_SHADER; - default: - unreachable("Unsupported HW stage"); - } -} - static void si_fill_aco_shader_info(struct si_shader *shader, struct aco_shader_info *info) { diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index ca133d4a47c..cebb57db58e 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -5,6 +5,7 @@ */ #include "si_pipe.h" +#include "si_shader_internal.h" #include "util/mesa-sha1.h" #include "util/u_prim.h" #include "sid.h" @@ -826,3 +827,35 @@ void si_nir_scan_shader(struct si_screen *sscreen, const struct nir_shader *nir, } } } + +enum ac_hw_stage +si_select_hw_stage(const gl_shader_stage stage, const union si_shader_key *const key, + const enum amd_gfx_level gfx_level) +{ + switch (stage) { + case MESA_SHADER_VERTEX: + case MESA_SHADER_TESS_EVAL: + if (key->ge.as_ngg) + return AC_HW_NEXT_GEN_GEOMETRY_SHADER; + else if (key->ge.as_es) + return gfx_level >= GFX9 ? AC_HW_LEGACY_GEOMETRY_SHADER : AC_HW_EXPORT_SHADER; + else if (key->ge.as_ls) + return gfx_level >= GFX9 ? AC_HW_HULL_SHADER : AC_HW_LOCAL_SHADER; + else + return AC_HW_VERTEX_SHADER; + case MESA_SHADER_TESS_CTRL: + return AC_HW_HULL_SHADER; + case MESA_SHADER_GEOMETRY: + if (key->ge.as_ngg) + return AC_HW_NEXT_GEN_GEOMETRY_SHADER; + else + return AC_HW_LEGACY_GEOMETRY_SHADER; + case MESA_SHADER_FRAGMENT: + return AC_HW_PIXEL_SHADER; + case MESA_SHADER_COMPUTE: + case MESA_SHADER_KERNEL: + return AC_HW_COMPUTE_SHADER; + default: + unreachable("Unsupported HW stage"); + } +} diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h b/src/gallium/drivers/radeonsi/si_shader_internal.h index e404f46eb08..4974405c790 100644 --- a/src/gallium/drivers/radeonsi/si_shader_internal.h +++ b/src/gallium/drivers/radeonsi/si_shader_internal.h @@ -7,6 +7,7 @@ #ifndef SI_SHADER_PRIVATE_H #define SI_SHADER_PRIVATE_H +#include "ac_hw_stage.h" #include "ac_shader_abi.h" #include "ac_llvm_build.h" #include "si_shader.h" @@ -128,6 +129,8 @@ void si_get_tcs_epilog_key(struct si_shader *shader, union si_shader_part_key *k bool si_need_ps_prolog(const union si_shader_part_key *key); void si_get_ps_prolog_key(struct si_shader *shader, union si_shader_part_key *key); void si_get_ps_epilog_key(struct si_shader *shader, union si_shader_part_key *key); +enum ac_hw_stage si_select_hw_stage(const gl_shader_stage stage, const union si_shader_key *const key, + const enum amd_gfx_level gfx_level); /* gfx10_shader_ngg.c */ unsigned gfx10_ngg_get_vertices_per_prim(struct si_shader *shader);
