mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 20:18:12 +02:00
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:
parent
d17654c1b5
commit
89dd088871
4 changed files with 14 additions and 18 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue