nir: Drop the ssbo_offset to atomic lowering.

The arguments passed in were:
- prog->info.num_ssbos
- prog->nir->info.num_ssbos
- arbitrary values for standalone compilers

The num_ssbos should match between the prog's info and prog->nir's info
until this lowering happens.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3240>
This commit is contained in:
Eric Anholt
2019-12-20 13:52:06 -08:00
parent d5a3971457
commit d0975bfc4a
6 changed files with 9 additions and 8 deletions

View File

@@ -4100,7 +4100,7 @@ typedef struct nir_lower_bitmap_options {
void nir_lower_bitmap(nir_shader *shader, const nir_lower_bitmap_options *options); void nir_lower_bitmap(nir_shader *shader, const nir_lower_bitmap_options *options);
bool nir_lower_atomics_to_ssbo(nir_shader *shader, unsigned ssbo_offset); bool nir_lower_atomics_to_ssbo(nir_shader *shader);
typedef enum { typedef enum {
nir_lower_int_source_mods = 1 << 0, nir_lower_int_source_mods = 1 << 0,

View File

@@ -32,7 +32,8 @@
#endif #endif
/* /*
* Remap atomic counters to SSBOs, starting from the passed in ssbo_offset. * Remap atomic counters to SSBOs, starting from the shader's next SSBO slot
* (info.num_ssbos).
*/ */
static bool static bool
@@ -161,8 +162,9 @@ is_atomic_uint(const struct glsl_type *type)
} }
bool bool
nir_lower_atomics_to_ssbo(nir_shader *shader, unsigned ssbo_offset) nir_lower_atomics_to_ssbo(nir_shader *shader)
{ {
unsigned ssbo_offset = shader->info.num_ssbos;
bool progress = false; bool progress = false;
nir_foreach_function(function, shader) { nir_foreach_function(function, shader) {

View File

@@ -142,7 +142,7 @@ load_glsl(unsigned num_files, char* const* files, gl_shader_stage stage)
NIR_PASS_V(nir, nir_lower_var_copies); NIR_PASS_V(nir, nir_lower_var_copies);
nir_print_shader(nir, stdout); nir_print_shader(nir, stdout);
NIR_PASS_V(nir, gl_nir_lower_atomics, prog, true); NIR_PASS_V(nir, gl_nir_lower_atomics, prog, true);
NIR_PASS_V(nir, nir_lower_atomics_to_ssbo, 8); NIR_PASS_V(nir, nir_lower_atomics_to_ssbo);
nir_print_shader(nir, stdout); nir_print_shader(nir, stdout);
switch (stage) { switch (stage) {

View File

@@ -135,7 +135,7 @@ load_glsl(unsigned num_files, char* const* files, gl_shader_stage stage)
NIR_PASS_V(nir, nir_lower_var_copies); NIR_PASS_V(nir, nir_lower_var_copies);
nir_print_shader(nir, stdout); nir_print_shader(nir, stdout);
NIR_PASS_V(nir, gl_nir_lower_atomics, prog, true); NIR_PASS_V(nir, gl_nir_lower_atomics, prog, true);
NIR_PASS_V(nir, nir_lower_atomics_to_ssbo, 8); NIR_PASS_V(nir, nir_lower_atomics_to_ssbo);
nir_print_shader(nir, stdout); nir_print_shader(nir, stdout);
switch (stage) { switch (stage) {

View File

@@ -332,8 +332,7 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
brw_shader_gather_info(prog->nir, prog); brw_shader_gather_info(prog->nir, prog);
NIR_PASS_V(prog->nir, gl_nir_lower_atomics, shProg, false); NIR_PASS_V(prog->nir, gl_nir_lower_atomics, shProg, false);
NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo, NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo);
prog->nir->info.num_ssbos);
nir_sweep(prog->nir); nir_sweep(prog->nir);

View File

@@ -504,7 +504,7 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct gl_program *prog,
nir_remove_dead_variables(nir, mask); nir_remove_dead_variables(nir, mask);
if (!st->has_hw_atomics) if (!st->has_hw_atomics)
NIR_PASS_V(nir, nir_lower_atomics_to_ssbo, prog->info.num_ssbos); NIR_PASS_V(nir, nir_lower_atomics_to_ssbo);
st_finalize_nir_before_variants(nir); st_finalize_nir_before_variants(nir);