freedreno/ir3: add missing track_ubo_use()
authorRob Clark <robdclark@chromium.org>
Wed, 29 Jul 2020 15:37:29 +0000 (08:37 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 29 Jul 2020 20:22:05 +0000 (20:22 +0000)
We could lower *some* accesses to a UBO but not others.  In this case,
we would have a valid range, but would have skipped tracking that the
UBO is accessed as a UBO rather than push constants.

Fixes one issue with asphalt9, that was a result of having `ldc` without
having emit UBO state.

See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3067
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6117>

src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c

index 5e631e31d59bd932d8bc18d626f6c166e5e6a102..900768edb036433a12d915f85e7367677b9374fb 100644 (file)
@@ -249,8 +249,10 @@ lower_ubo_load_to_uniform(nir_intrinsic_instr *instr, nir_builder *b,
        /* We don't have a good way of determining the range of the dynamic
         * access in general, so for now just fall back to pulling.
         */
-       if (!nir_src_is_const(instr->src[1]) && !ubo_is_gl_uniforms(&range->ubo))
+       if (!nir_src_is_const(instr->src[1]) && !ubo_is_gl_uniforms(&range->ubo)) {
+               track_ubo_use(instr, b, num_ubos);
                return false;
+       }
 
        /* After gathering the UBO access ranges, we limit the total
         * upload. Don't lower if this load is outside the range.