nvc0: treat all draws without color0 broadcast as MRT
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 12 Jan 2020 05:07:05 +0000 (00:07 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sun, 12 Jan 2020 17:11:16 +0000 (12:11 -0500)
Per the semi-recently-released NVIDIA docs, when this bit is not
enabled, then the result for RT[0] will be used. So if e.g. only a
single RT is drawn to and it's not RT[2], the results will not be
visible. Fixes
GTF-GL45.gtf33.GL3Tests.explicit_attrib_location.explicit_attrib_location_pipeline
which was failing due to a frag shader outputting only to location=2.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/nvc0/nvc0_program.c

index 2f235805436539860f7cbf7cd5fa25e0f1d6562b..128b94e1da51a3980e805cfd3c047fb109592975 100644 (file)
@@ -440,7 +440,7 @@ nvc0_fp_gen_header(struct nvc0_program *fp, struct nv50_ir_prog_info *info)
 
    if (info->prop.fp.usesDiscard)
       fp->hdr[0] |= 0x8000;
-   if (info->prop.fp.numColourResults > 1)
+   if (!info->prop.fp.separateFragData)
       fp->hdr[0] |= 0x4000;
    if (info->io.sampleMask < PIPE_MAX_SHADER_OUTPUTS)
       fp->hdr[19] |= 0x1;