nir: Move new edgeflag assert into the io_lowered case
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 25 Aug 2020 00:00:33 +0000 (17:00 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 25 Aug 2020 16:43:19 +0000 (16:43 +0000)
We only need to assert this in the `io_lowered` case, which actually
uses num_outputs.  This assert also doesn't appear to hold on iris,
where num_outputs is showing up as 0 (because it's likely not yet set).

Fixes assertion failures in edgeflag related tests on iris, which
doesn't use the io_lowered path currently.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3456
Fixes: 484a60d5474 ("nir: generate lowered IO in nir_lower_passthrough_edgeflags")
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6450>

src/compiler/nir/nir_lower_passthrough_edgeflags.c

index eb142ce600ce4968c2827b3416d5fab710d5541d..c048235d6fcc244aee0aa0789705a61b89317cca 100644 (file)
@@ -37,10 +37,12 @@ lower_impl(nir_function_impl *impl)
 
    /* The edge flag is the last input in st/mesa. */
    assert(shader->num_inputs == util_bitcount64(shader->info.inputs_read));
-   assert(shader->num_outputs == util_bitcount64(shader->info.outputs_written));
 
    /* Lowered IO only uses intrinsics. It doesn't use variables. */
    if (shader->info.io_lowered) {
+      assert(shader->num_outputs ==
+             util_bitcount64(shader->info.outputs_written));
+
       /* Load an edge flag. */
       nir_intrinsic_instr *load =
          nir_intrinsic_instr_create(shader, nir_intrinsic_load_input);