v3d: we always have at least one output segment
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 8 Oct 2019 11:48:00 +0000 (13:48 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Mon, 16 Dec 2019 07:42:37 +0000 (08:42 +0100)
If we program an output size of 0 the simulator asserts. This was
not a problem until now because our VS would always have to
emit fixed function outputs, however, now that it can be paired
with a GS we can end up with a VS shader that no longer emits
any outputs.

Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/broadcom/compiler/v3d_nir_lower_io.c

index 3c9279a2fee72f6e782a946919a82a895ad4071b..9b7db65db7e22561a8ea237ccee0125c97894519 100644 (file)
@@ -378,7 +378,7 @@ v3d_nir_setup_vpm_layout_vs(struct v3d_compile *c,
 
         state->varyings_vpm_offset = vpm_offset;
 
-        c->vpm_output_size = vpm_offset + c->vs_key->num_used_outputs;
+        c->vpm_output_size = MAX2(1, vpm_offset + c->vs_key->num_used_outputs);
 }
 
 static void