nir: only uniforms with dynamically_uniform offset are dynamically_uniform

Previously all nir_intrinsic_load_uniform that were used as sources were
considered to be dynamically_uniform but when offsets of load_uniform
are indirect it can not be determined.

This fixes artefacts in Google Maps 3D view in V3D.

Fixes: 886d46b089 ("nir: Add a function to determine if a source is dynamically uniform")
Reviewed-by: Neil Roberts <nroberts@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5587>
This commit is contained in:
Jose Maria Casanova Crespo 2020-06-17 02:30:23 +02:00 committed by Marge Bot
parent 2a61a8d95a
commit ba15bb383f

View file

@ -1349,8 +1349,8 @@ nir_src_is_dynamically_uniform(nir_src src)
/* As are uniform variables */
if (src.ssa->parent_instr->type == nir_instr_type_intrinsic) {
nir_intrinsic_instr *intr = nir_instr_as_intrinsic(src.ssa->parent_instr);
if (intr->intrinsic == nir_intrinsic_load_uniform)
if (intr->intrinsic == nir_intrinsic_load_uniform &&
nir_src_is_dynamically_uniform(intr->src[0]))
return true;
}