[PATCH v2] drm/vc4: Add support for plane alpha
Eric Anholt
eric at anholt.net
Mon Apr 23 18:27:57 UTC 2018
Stefan Schake <stschake at gmail.com> 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 at gmail.com>
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!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180423/ce9fa6a7/attachment.sig>
More information about the dri-devel
mailing list