radv: Move radv_select_hw_stage to radv_shader_info.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24005>
This commit is contained in:
@@ -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,
|
||||
|
@@ -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 *
|
||||
|
@@ -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");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user