diff options
Diffstat (limited to 'src/gallium/drivers/v3d/v3dx_state.c')
-rw-r--r-- | src/gallium/drivers/v3d/v3dx_state.c | 15 |
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; |