mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-04 13:08:15 +02:00
mesa/st: remove redundant has_hw_atomics from st_context
has_hw_atomics is set when the fragment shader stage reports non-zero max_hw_atomic_counters. Inline the same condition at each call site. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13596 Reviewed-by: Marek Olšák <maraeo@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41184>
This commit is contained in:
parent
f46aa24800
commit
e824c30460
5 changed files with 10 additions and 12 deletions
|
|
@ -70,7 +70,8 @@ st_bind_atomics(struct st_context *st, struct gl_program *prog,
|
|||
{
|
||||
unsigned i;
|
||||
|
||||
if (!prog || !st->pipe->set_shader_buffers || st->has_hw_atomics)
|
||||
if (!prog || !st->pipe->set_shader_buffers ||
|
||||
st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters != 0)
|
||||
return;
|
||||
|
||||
/* For !has_hw_atomics, the atomic counters have been rewritten to be above
|
||||
|
|
@ -141,7 +142,7 @@ st_bind_tes_atomics(struct st_context *st)
|
|||
void
|
||||
st_bind_cs_atomics(struct st_context *st)
|
||||
{
|
||||
if (st->has_hw_atomics) {
|
||||
if (st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters != 0) {
|
||||
st_bind_hw_atomic_buffers(st);
|
||||
return;
|
||||
}
|
||||
|
|
@ -176,7 +177,7 @@ st_bind_hw_atomic_buffers(struct st_context *st)
|
|||
int i;
|
||||
unsigned count;
|
||||
|
||||
if (!st->has_hw_atomics)
|
||||
if (st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters == 0)
|
||||
return;
|
||||
|
||||
count = MIN2(st->ctx->Const.MaxAtomicBufferBindings, PIPE_MAX_HW_ATOMIC_BUFFERS);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ st_bind_ssbos(struct st_context *st, struct gl_program *prog,
|
|||
|
||||
/* Clear out any stale shader buffers (or lowered atomic counters). */
|
||||
int num_ssbos = prog->info.num_ssbos;
|
||||
if (!st->has_hw_atomics)
|
||||
if (st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters == 0)
|
||||
num_ssbos += st->last_used_atomic_bindings[shader_type];
|
||||
if (st->last_num_ssbos[shader_type] > num_ssbos) {
|
||||
st->pipe->set_shader_buffers(
|
||||
|
|
|
|||
|
|
@ -377,7 +377,7 @@ st_init_driver_flags(struct st_context *st)
|
|||
struct gl_driver_flags *f = &st->ctx->DriverFlags;
|
||||
|
||||
/* Shader resources */
|
||||
if (st->has_hw_atomics)
|
||||
if (st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters != 0)
|
||||
ST_SET_STATE2(f->NewAtomicBuffer, ST_NEW_HW_ATOMICS, ST_NEW_CS_ATOMICS);
|
||||
else
|
||||
ST_SET_SHADER_STATES(f->NewAtomicBuffer, ATOMICS);
|
||||
|
|
@ -423,7 +423,8 @@ st_init_driver_flags(struct st_context *st)
|
|||
ST_SET_SHADER_STATES(f->NewSamplersWithClamp, STATE);
|
||||
}
|
||||
|
||||
if (!st->has_hw_atomics && st->ctx->Const.ShaderStorageBufferOffsetAlignment > 4)
|
||||
if (st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters == 0
|
||||
&& st->ctx->Const.ShaderStorageBufferOffsetAlignment > 4)
|
||||
ST_SET_SHADER_STATES(f->NewAtomicBuffer, CONSTANTS);
|
||||
}
|
||||
|
||||
|
|
@ -591,9 +592,6 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
|
|||
break;
|
||||
default: break;
|
||||
}
|
||||
st->has_hw_atomics =
|
||||
screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters
|
||||
? true : false;
|
||||
|
||||
util_throttle_init(&st->throttle,
|
||||
screen->caps.max_texture_upload_memory_budget);
|
||||
|
|
|
|||
|
|
@ -174,8 +174,6 @@ struct st_context
|
|||
bool alpha_border_color_is_not_w;
|
||||
|
||||
bool draw_needs_minmax_index;
|
||||
bool has_hw_atomics;
|
||||
|
||||
bool is_threaded_context;
|
||||
|
||||
/* driver supports scissored clears */
|
||||
|
|
|
|||
|
|
@ -349,7 +349,8 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct gl_program *prog,
|
|||
|
||||
nir_remove_dead_variables(nir, nir_var_function_temp, NULL);
|
||||
|
||||
if (!st->has_hw_atomics && !screen->caps.nir_atomics_as_deref) {
|
||||
if (st->screen->shader_caps[MESA_SHADER_FRAGMENT].max_hw_atomic_counters == 0
|
||||
&& !screen->caps.nir_atomics_as_deref) {
|
||||
unsigned align_offset_state = 0;
|
||||
if (st->ctx->Const.ShaderStorageBufferOffsetAlignment > 4) {
|
||||
struct gl_program_parameter_list *params = prog->Parameters;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue