broadcom/vc5: Fix handling of interp qualifiers on builtin color inputs.
[mesa.git] / src / broadcom / compiler / nir_to_vir.c
index 1c9a9a9746c7d018bae2198774bc0e64c5e77e24..acfeba4cb715edd4041cdf155ed0492c720eb099 100644 (file)
@@ -564,6 +564,21 @@ emit_fragment_varying(struct v3d_compile *c, nir_variable *var,
 
         switch (var->data.interpolation) {
         case INTERP_MODE_NONE:
+                /* If a gl_FrontColor or gl_BackColor input has no interp
+                 * qualifier, then flag it for glShadeModel() handling by the
+                 * driver.
+                 */
+                switch (var->data.location) {
+                case VARYING_SLOT_COL0:
+                case VARYING_SLOT_COL1:
+                case VARYING_SLOT_BFC0:
+                case VARYING_SLOT_BFC1:
+                        BITSET_SET(c->shade_model_flags, i);
+                        break;
+                default:
+                        break;
+                }
+                /* FALLTHROUGH */
         case INTERP_MODE_SMOOTH:
                 if (var->data.centroid) {
                         return vir_FADD(c, vir_FMUL(c, vary,
@@ -1038,6 +1053,17 @@ emit_frag_end(struct v3d_compile *c)
                                        TLB_TYPE_DEPTH |
                                        TLB_DEPTH_TYPE_PER_PIXEL |
                                        0xffffff00);
+        } else if (c->s->info.fs.uses_discard) {
+                struct qinst *inst = vir_MOV_dest(c,
+                                                  vir_reg(QFILE_TLBU, 0),
+                                                  vir_reg(QFILE_NULL, 0));
+                vir_set_cond(inst, discard_cond);
+
+                inst->src[vir_get_implicit_uniform_src(inst)] =
+                        vir_uniform_ui(c,
+                                       TLB_TYPE_DEPTH |
+                                       TLB_DEPTH_TYPE_INVARIANT |
+                                       0xffffff00);
         }
 
         /* XXX: Performance improvement: Merge Z write and color writes TLB