mesa/st: glsl_to_nir: don't lower atomics to SSBOs if driver supports HW atomics

At least on r600 HW atomic operations are way less expensive than SSBO atomic
operations.

v2: use st->has_hw_atomics (Erik Anholt)

v3: remove second invocation of atomic to ssbo lowering (Erik Anholt)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3286>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3286>
This commit is contained in:
Gert Wollny 2019-12-28 16:07:30 +01:00 committed by Gert Wollny
parent b119f8b4a0
commit 9162e2f03f
1 changed files with 3 additions and 2 deletions

View File

@ -504,8 +504,9 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct gl_program *prog,
(nir_var_shader_in | nir_var_shader_out | nir_var_function_temp );
nir_remove_dead_variables(nir, mask);
NIR_PASS_V(nir, nir_lower_atomics_to_ssbo,
st->ctx->Const.Program[nir->info.stage].MaxAtomicBuffers);
if (!st->has_hw_atomics)
NIR_PASS_V(nir, nir_lower_atomics_to_ssbo,
st->ctx->Const.Program[nir->info.stage].MaxAtomicBuffers);
st_finalize_nir_before_variants(nir);