Stefan Schake <stschake@xxxxxxxxx> writes: > The HVS supports mixing fixed alpha with per-pixel alpha or > setting a fixed plane alpha in case there is no per-pixel information. > This allows us to support the generic DRM plane alpha property. > > Signed-off-by: Stefan Schake <stschake@xxxxxxxxx> Applied to drm-misc-next. Thanks! > @@ -565,6 +567,13 @@ static int vc4_plane_mode_set(struct drm_plane *plane, > SCALER_POS1_SCL_HEIGHT)); > } > > + /* Don't waste cycles mixing with plane alpha if the set alpha > + * is opaque or there is no per-pixel alpha information. > + * In any case we use the alpha property value as the fixed alpha. > + */ > + mix_plane_alpha = state->alpha != DRM_BLEND_ALPHA_OPAQUE && > + fb->format->has_alpha; > + > /* Position Word 2: Source Image Size, Alpha */ > vc4_state->pos2_offset = vc4_state->dlist_count; > vc4_dlist_write(vc4_state, > @@ -572,6 +581,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane, > SCALER_POS2_ALPHA_MODE_PIPELINE : > SCALER_POS2_ALPHA_MODE_FIXED, > SCALER_POS2_ALPHA_MODE) | > + (mix_plane_alpha ? SCALER_POS2_ALPHA_MIX : 0) | > (fb->format->has_alpha ? SCALER_POS2_ALPHA_PREMULT : 0) | > VC4_SET_FIELD(vc4_state->src_w[0], SCALER_POS2_WIDTH) | > VC4_SET_FIELD(vc4_state->src_h[0], SCALER_POS2_HEIGHT)); In an interesting note from the docs, if you'd set SCALER_POS2_ALPHA_MIX with SCALER_POS2_ALPHA_MODE_FIXED, you'd get the fixed alpha squared!
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel