diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 53534de041b..2f567e96d8a 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -4209,7 +4209,7 @@ panfrost_create_blend_state(struct pipe_context *pipe, const bool supports_2src = pan_blend_supports_2src(PAN_ARCH); so->info[c] = (struct pan_blend_info){ .enabled = (equation.color_mask != 0), - .opaque = pan_blend_is_opaque(equation), + .opaque = !blend->logicop_enable && pan_blend_is_opaque(equation), .constant_mask = constant_mask, /* TODO: check the dest for the logicop */ diff --git a/src/panfrost/lib/pan_blend.c b/src/panfrost/lib/pan_blend.c index 768f49f720e..abd3aad9efa 100644 --- a/src/panfrost/lib/pan_blend.c +++ b/src/panfrost/lib/pan_blend.c @@ -796,7 +796,8 @@ GENX(pan_blend_get_shader_locked)(const struct panfrost_device *dev, }; /* Blend shaders should only be used for blending on Bifrost onwards */ - assert(dev->arch <= 5 || !pan_blend_is_opaque(state->rts[rt].equation)); + assert(dev->arch <= 5 || state->logicop_enable || + !pan_blend_is_opaque(state->rts[rt].equation)); assert(state->rts[rt].equation.color_mask != 0); struct hash_entry *he =