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:
@@ -4100,7 +4100,7 @@ typedef struct nir_lower_bitmap_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 {
|
||||
nir_lower_int_source_mods = 1 << 0,
|
||||
|
@@ -32,7 +32,8 @@
|
||||
#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
|
||||
@@ -161,8 +162,9 @@ is_atomic_uint(const struct glsl_type *type)
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
nir_foreach_function(function, shader) {
|
||||
|
@@ -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_print_shader(nir, stdout);
|
||||
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);
|
||||
|
||||
switch (stage) {
|
||||
|
@@ -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_print_shader(nir, stdout);
|
||||
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);
|
||||
|
||||
switch (stage) {
|
||||
|
@@ -332,8 +332,7 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
|
||||
brw_shader_gather_info(prog->nir, prog);
|
||||
|
||||
NIR_PASS_V(prog->nir, gl_nir_lower_atomics, shProg, false);
|
||||
NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo,
|
||||
prog->nir->info.num_ssbos);
|
||||
NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo);
|
||||
|
||||
nir_sweep(prog->nir);
|
||||
|
||||
|
@@ -504,7 +504,7 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct gl_program *prog,
|
||||
nir_remove_dead_variables(nir, mask);
|
||||
|
||||
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);
|
||||
|
||||
|
Reference in New Issue
Block a user