nir/inline_uniforms: Allow possibility of uni_offsets and num_offsets being NULL
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 6 Feb 2023 20:41:49 +0000 (12:41 -0800)
committerMarge Bot <emma+marge@anholt.net>
Fri, 10 Feb 2023 03:18:23 +0000 (03:18 +0000)
This is step 3 in an attempt to unify a bunch of nir_inline_uniforms.c
and lvp_inline_uniforms.c code.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21179>

src/compiler/nir/nir_inline_uniforms.c

index 4adc9f1..4c429d2 100644 (file)
@@ -113,6 +113,15 @@ src_only_uses_uniforms(const nir_src *src, int component,
           nir_src_as_uint(intr->src[1]) <= max_offset &&
           /* TODO: Can't handle other bit sizes for now. */
           intr->dest.ssa.bit_size == 32) {
+         /* num_offsets can be NULL if-and-only-if uni_offsets is NULL. */
+         assert((num_offsets == NULL) == (uni_offsets == NULL));
+
+         /* If we're just checking that it's a uniform load, don't check (or
+          * add to) the table.
+          */
+         if (uni_offsets == NULL)
+            return true;
+
          uint32_t offset = nir_src_as_uint(intr->src[1]) + component * 4;
          assert(offset < MAX_OFFSET);