Re: [PATCH v2 1/4] drm/ast: create blend mode property on cursor plane

From: Qinyun Tan

Date: Tue Sep 01 2026 - 09:04:57 EST


Hi Thomas,

On 9/1/26 8:30 PM, Thomas Zimmermann wrote:
> Hi
>
> Am 01.09.26 um 13:54 schrieb Thomas Zimmermann:
>> Hi,
>>
>> thanks for the updated patch.
>>
>> Did you see the review from the Sashiko bot?  The default value is PRE_MULTI, but the driver only supports COVERAGE.  This needs to be changed as part of this patch. The default assignment is at [1] in __drm_atomic_helper_plane_state_init().
>>
>> The ast driver needs to override drm_plane_funcs.atomic_create_state for the cursor plane to update the value pixel_blend to COVERAGE for new plane states. Same goes for vbox.
>
> Or even better: I just sent out a patch to pick the right default value for the plane state. Let's first see what comes out of this. Patch is at [1].
>
> [1] https://lore.kernel.org/dri-devel/20260901122731.83854-1-tzimmermann@xxxxxxx/
>
> Best regards
> Thomas
>

Thanks! I did see the Sashiko bot report and had started on a v3 that
overrides drm_plane_funcs.atomic_create_state in ast and vboxvideo
(for vboxvideo on both the primary and cursor planes).

But your approach looks better to me: drm_plane_create_blend_mode_property()
already picks DRM_MODE_BLEND_COVERAGE as the property default when
PREMULTI is not supported, so initializing the plane state from the
property default fixes this for every COVERAGE-only plane without
per-driver boilerplate.

I'll hold off on v3 until your patch has settled.

Best regards,
Qinyun


>>
>> [1] https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/drivers/gpu/drm/drm_atomic_state_helper.c?ref_type=heads#L281
>>
>> Best regards
>> Thomas
>>
>>
>> Am 01.09.26 um 10:32 schrieb Qinyun Tan:
>>> Since commit 860e748bddcc ("drm: ensure blend mode supported if pixel
>>> format with alpha exposed"), drm_mode_config_validate() warns when a
>>> plane exposes an alpha pixel format but not the "pixel blend mode"
>>> property. The ast cursor plane (ARGB4444, ARGB8888) trips this on
>>> driver load:
>>>
>>>    [PLANE:37:plane-1] pixel format with alpha exposed but blend mode not setup
>>>    WARNING: drivers/gpu/drm/drm_mode_config.c:872 at drm_mode_config_validate+0x48f/0x510 [drm]
>>>    ...
>>>    Call Trace:
>>>     drm_dev_register+0x1ce/0x290 [drm]
>>>     ast_pci_probe+0x19d/0x3f0 [ast]
>>>     local_pci_probe+0x41/0x90
>>>
>>> Per Thomas Zimmermann's review, the ASPEED documentation describes the
>>> hardware cursor as blending with straight (non-pre-multiplied) alpha,
>>> which corresponds to DRM_MODE_BLEND_COVERAGE. Expose a "pixel blend
>>> mode" property advertising only DRM_MODE_BLEND_COVERAGE to make the
>>> hardware semantics explicit and silence the warning.
>>>
>>> Fixes: 860e748bddcc ("drm: ensure blend mode supported if pixel format with alpha exposed")
>>> Suggested-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
>>> Signed-off-by: Qinyun Tan <qinyuntan@xxxxxxxxxxxxxxxxx>
>>> ---
>>> v2: advertise DRM_MODE_BLEND_COVERAGE instead of PREMULTI, per Thomas
>>> Zimmermann's review and the ASPEED documentation.
>>>
>>>   drivers/gpu/drm/ast/ast_cursor.c | 3 +++
>>>   1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/ast/ast_cursor.c b/drivers/gpu/drm/ast/ast_cursor.c
>>> index fd19c45f2abe2..690d4cd1db5ee 100644
>>> --- a/drivers/gpu/drm/ast/ast_cursor.c
>>> +++ b/drivers/gpu/drm/ast/ast_cursor.c
>>> @@ -25,6 +25,7 @@
>>>   #include <linux/sizes.h>
>>>     #include <drm/drm_atomic.h>
>>> +#include <drm/drm_blend.h>
>>>   #include <drm/drm_damage_helper.h>
>>>   #include <drm/drm_format_helper.h>
>>>   #include <drm/drm_gem_atomic_helper.h>
>>> @@ -355,6 +356,8 @@ int ast_cursor_plane_init(struct ast_device *ast)
>>>       }
>>>       drm_plane_helper_add(cursor_plane, &ast_cursor_plane_helper_funcs);
>>>       drm_plane_enable_fb_damage_clips(cursor_plane);
>>> +    drm_plane_create_blend_mode_property(cursor_plane,
>>> +                         BIT(DRM_MODE_BLEND_COVERAGE));
>>>         return 0;
>>>   }
>>
>