freedreno/ir3: Skip tess epilogue if the program is missing stores.
authorEric Anholt <eric@anholt.net>
Tue, 21 Apr 2020 22:30:49 +0000 (15:30 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 1 May 2020 16:26:32 +0000 (16:26 +0000)
Some of the negative API tests make shaders for tess stages that don't do
all the stores they need to.  Once we start precompiling (or doing
shader-db of tess), we need to at least not segfault when generating them.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4562>

src/freedreno/ir3/ir3_nir_lower_tess.c

index 7a30ef09d9760114228d7fe438c78325523eaf12..4d8798c285fd436104cf2dbf1f6bf4c6857f83c1 100644 (file)
@@ -524,6 +524,9 @@ emit_tess_epilouge(nir_builder *b, struct state *state)
        nir_ssa_def *tessfactor_address = nir_load_tess_factor_base_ir3(b);
        nir_ssa_def *levels[2];
 
+       if (!state->outer_levels[0])
+               return;
+
        /* Then emit the epilogue that actually writes out the tessellation levels
         * to the BOs.
         */