mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-17 03:50:35 +01:00
nir/lower_amul: Fix ASAN error
We shouldn't assume the bindings are sparse when we allocate an array
indexed on the binding. See, for example:
dEQP-GLES31.functional.program_interface_query.buffer_variable.random.55
Fixes: 2e833b16bc ("nir/lower_amul: Use num_ubos/ssbos instead of recomputing it.")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31611>
This commit is contained in:
parent
e548f90edb
commit
7f63fa34da
1 changed files with 10 additions and 4 deletions
|
|
@ -220,15 +220,21 @@ nir_lower_amul(nir_shader *shader,
|
|||
if (is_large(&state, var)) {
|
||||
state.has_large_ubo = true;
|
||||
unsigned size = MAX2(1, glsl_array_size(var->type));
|
||||
for (unsigned i = 0; i < size; i++)
|
||||
state.large_ubos[var->data.binding + i] = true;
|
||||
for (unsigned i = 0; i < size; i++) {
|
||||
unsigned idx = var->data.driver_location + i;
|
||||
assert(idx < shader->info.num_ubos);
|
||||
state.large_ubos[idx] = true;
|
||||
}
|
||||
}
|
||||
} else if (var->data.mode == nir_var_mem_ssbo) {
|
||||
if (is_large(&state, var)) {
|
||||
state.has_large_ssbo = true;
|
||||
unsigned size = MAX2(1, glsl_array_size(var->type));
|
||||
for (unsigned i = 0; i < size; i++)
|
||||
state.large_ssbos[var->data.binding + i] = true;
|
||||
for (unsigned i = 0; i < size; i++) {
|
||||
unsigned idx = var->data.location + i;
|
||||
assert(idx < shader->info.num_ssbos);
|
||||
state.large_ssbos[idx] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue