summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/v3d/v3dx_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/v3d/v3dx_state.c')
-rw-r--r--src/gallium/drivers/v3d/v3dx_state.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/gallium/drivers/v3d/v3dx_state.c b/src/gallium/drivers/v3d/v3dx_state.c
index f775c531e5f..a092b1fb9e1 100644
--- a/src/gallium/drivers/v3d/v3dx_state.c
+++ b/src/gallium/drivers/v3d/v3dx_state.c
@@ -126,12 +126,17 @@ v3d_create_blend_state(struct pipe_context *pctx,
so->base = *cso;
- for (int i = 0; i < VC5_MAX_DRAW_BUFFERS; i++) {
- so->blend_enables |= cso->rt[i].blend_enable << i;
+ if (cso->independent_blend_enable) {
+ for (int i = 0; i < VC5_MAX_DRAW_BUFFERS; i++) {
+ so->blend_enables |= cso->rt[i].blend_enable << i;
- /* V3D 4.x is when we got independent blend enables. */
- assert(V3D_VERSION >= 40 ||
- cso->rt[i].blend_enable == cso->rt[0].blend_enable);
+ /* V3D 4.x is when we got independent blend enables. */
+ assert(V3D_VERSION >= 40 ||
+ cso->rt[i].blend_enable == cso->rt[0].blend_enable);
+ }
+ } else {
+ if (cso->rt[0].blend_enable)
+ so->blend_enables = (1 << VC5_MAX_DRAW_BUFFERS) - 1;
}
return so;