nir/lower_io: don't reduce range if parent length is zero
When handling arrays, range is increased based on the array size minus one. But if such is zero, it has the effect of reducing the range. Handle that case by returning the unknown range value. v2: * Add missing braces. * Return unknown range in this case, instead of keeping the initial range. v3: Simplify code, using existing "fail" label. (Jason) Fixes the following using v3dv: dEQP-VK.graphicsfuzz.cov-simplify-clamp-max-itself Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6737>
This commit is contained in:
@@ -982,10 +982,13 @@ nir_get_explicit_deref_range(nir_deref_instr *deref,
|
||||
goto fail;
|
||||
|
||||
if (deref->deref_type != nir_deref_type_array_wildcard &&
|
||||
nir_src_is_const(deref->arr.index))
|
||||
nir_src_is_const(deref->arr.index)) {
|
||||
base += stride * nir_src_as_uint(deref->arr.index);
|
||||
else
|
||||
} else {
|
||||
if (glsl_get_length(parent->type) == 0)
|
||||
goto fail;
|
||||
range += stride * (glsl_get_length(parent->type) - 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user