r600: refactor eg_setup_buffer_constants

Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39650>
This commit is contained in:
Patrick Lerda 2026-02-02 13:33:38 +01:00 committed by Marge Bot
parent d17654c1b5
commit 89dd088871
4 changed files with 14 additions and 18 deletions

View file

@ -346,7 +346,7 @@ static void compute_emit_cs(struct r600_context *rctx,
r600_need_cs_space(rctx, 0, true, global_atomic_count);
if (need_buf_const) {
eg_setup_buffer_constants(rctx, MESA_SHADER_COMPUTE);
rctx->setup_buffer_constants(rctx, MESA_SHADER_COMPUTE);
}
r600_update_driver_const_buffers(rctx, true);

View file

@ -181,6 +181,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen,
rctx->b.family == CHIP_RV710);
rctx->b.r600_pre_eg_cbzs = CALLOC_STRUCT(r600_pre_eg_cbzs);
rctx->setup_buffer_constants = r600_setup_buffer_constants;
break;
case EVERGREEN:
case CAYMAN:
@ -201,6 +202,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen,
rctx->append_fence = pipe_buffer_create(rctx->b.b.screen, PIPE_BIND_CUSTOM,
PIPE_USAGE_DEFAULT, 32);
rctx->setup_buffer_constants = r600_palm_to_aruba_setup_buffer_constants;
break;
default:
R600_ERR("Unsupported gfx level %d.\n", rctx->b.gfx_level);

View file

@ -612,6 +612,8 @@ struct r600_context {
struct r600_scratch_buffer scratch_buffers[MAX2(R600_NUM_HW_STAGES, EG_NUM_HW_STAGES)];
void (*setup_buffer_constants)(struct r600_context *rctx, int shader_type);
/* Debug state. */
bool is_debug;
struct radeon_saved_cs last_gfx;
@ -1121,6 +1123,7 @@ void evergreen_emit_atomic_buffer_save(struct r600_context *rctx,
const unsigned global_atomic_count);
void r600_update_compressed_resource_state(struct r600_context *rctx, bool compute_only);
void eg_setup_buffer_constants(struct r600_context *rctx, int shader_type);
void r600_palm_to_aruba_setup_buffer_constants(struct r600_context *rctx, int shader_type);
void r600_setup_buffer_constants(struct r600_context *rctx, int shader_type);
void r600_update_driver_const_buffers(struct r600_context *rctx, bool compute_only);
#endif

View file

@ -1429,7 +1429,7 @@ static void *r600_alloc_buf_consts(struct r600_context *rctx, int shader_type,
* We use a 6th constant to store the txq buffer size in
* we use 7th slot for number of cube layers in a cube map array.
*/
static void r600_setup_buffer_constants(struct r600_context *rctx, int shader_type)
void r600_setup_buffer_constants(struct r600_context *rctx, int shader_type)
{
struct r600_textures_info *samplers = &rctx->samplers[shader_type];
int bits;
@ -1480,7 +1480,7 @@ static void r600_setup_buffer_constants(struct r600_context *rctx, int shader_ty
/* On evergreen we store one value
* 1. number of cube layers in a cube map array.
*/
void eg_setup_buffer_constants(struct r600_context *rctx, int shader_type)
void r600_palm_to_aruba_setup_buffer_constants(struct r600_context *rctx, int shader_type)
{
struct r600_textures_info *samplers = &rctx->samplers[shader_type];
struct r600_image_state *images = NULL;
@ -1994,30 +1994,21 @@ static bool r600_update_derived_state(struct r600_context *rctx)
if (rctx->ps_shader) {
need_buf_const = rctx->ps_shader->current->shader.uses_tex_buffers || rctx->ps_shader->current->shader.has_txq_cube_array_z_comp;
if (need_buf_const) {
if (rctx->b.gfx_level < EVERGREEN)
r600_setup_buffer_constants(rctx, MESA_SHADER_FRAGMENT);
else
eg_setup_buffer_constants(rctx, MESA_SHADER_FRAGMENT);
rctx->setup_buffer_constants(rctx, MESA_SHADER_FRAGMENT);
}
}
if (rctx->vs_shader) {
need_buf_const = rctx->vs_shader->current->shader.uses_tex_buffers || rctx->vs_shader->current->shader.has_txq_cube_array_z_comp;
if (need_buf_const) {
if (rctx->b.gfx_level < EVERGREEN)
r600_setup_buffer_constants(rctx, MESA_SHADER_VERTEX);
else
eg_setup_buffer_constants(rctx, MESA_SHADER_VERTEX);
rctx->setup_buffer_constants(rctx, MESA_SHADER_VERTEX);
}
}
if (rctx->gs_shader) {
need_buf_const = rctx->gs_shader->current->shader.uses_tex_buffers || rctx->gs_shader->current->shader.has_txq_cube_array_z_comp;
if (need_buf_const) {
if (rctx->b.gfx_level < EVERGREEN)
r600_setup_buffer_constants(rctx, MESA_SHADER_GEOMETRY);
else
eg_setup_buffer_constants(rctx, MESA_SHADER_GEOMETRY);
rctx->setup_buffer_constants(rctx, MESA_SHADER_GEOMETRY);
}
}
@ -2026,13 +2017,13 @@ static bool r600_update_derived_state(struct r600_context *rctx)
need_buf_const = rctx->tes_shader->current->shader.uses_tex_buffers ||
rctx->tes_shader->current->shader.has_txq_cube_array_z_comp;
if (need_buf_const) {
eg_setup_buffer_constants(rctx, MESA_SHADER_TESS_EVAL);
rctx->setup_buffer_constants(rctx, MESA_SHADER_TESS_EVAL);
}
if (rctx->tcs_shader) {
need_buf_const = rctx->tcs_shader->current->shader.uses_tex_buffers ||
rctx->tcs_shader->current->shader.has_txq_cube_array_z_comp;
if (need_buf_const) {
eg_setup_buffer_constants(rctx, MESA_SHADER_TESS_CTRL);
rctx->setup_buffer_constants(rctx, MESA_SHADER_TESS_CTRL);
}
}
}