broadcom/vc5: Don't emit updated blend factors/funcs while disabled.
authorEric Anholt <eric@anholt.net>
Wed, 1 Nov 2017 20:56:25 +0000 (13:56 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 7 Nov 2017 17:19:48 +0000 (09:19 -0800)
The dirty bit will be flagged again when re-enbaled.  Keeps us from
emitting blend state in CLs that never do blending.

src/gallium/drivers/vc5/vc5_emit.c

index 9df4c1ee3eb5980478a192e8bedf348b01294dc0..51709176a2ca4cdda540724a2689a40ab92a5b5d 100644 (file)
@@ -325,7 +325,7 @@ vc5_emit_state(struct pipe_context *pctx)
                 }
         }
 
-        if (vc5->dirty & VC5_DIRTY_BLEND) {
+        if (vc5->dirty & VC5_DIRTY_BLEND && vc5->blend->rt[0].blend_enable) {
                 struct pipe_blend_state *blend = vc5->blend;
 
                 cl_emit(&job->bcl, BLEND_CONFIG, config) {
@@ -347,6 +347,10 @@ vc5_emit_state(struct pipe_context *pctx)
                                 vc5_factor(rtblend->alpha_src_factor,
                                            vc5->blend_dst_alpha_one);
                 }
+        }
+
+        if (vc5->dirty & VC5_DIRTY_BLEND) {
+                struct pipe_blend_state *blend = vc5->blend;
 
                 cl_emit(&job->bcl, COLOUR_WRITE_MASKS, mask) {
                         if (blend->independent_blend_enable) {