All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qinyun Tan <qinyuntan@linux.alibaba.com>
To: dri-devel@lists.freedesktop.org
Cc: tzimmermann@suse.de, airlied@redhat.com, jfalempe@redhat.com,
	kraxel@redhat.com, dmitry.osipenko@collabora.com,
	hansg@kernel.org, maarten.lankhorst@linux.intel.com,
	mripard@kernel.org, simona@ffwll.ch,
	leandro.ribeiro@collabora.com, daniels@collabora.com,
	pekka.paalanen@collabora.com, virtualization@lists.linux.dev,
	spice-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Qinyun Tan <qinyuntan@linux.alibaba.com>
Subject: [PATCH v2 0/4] drm: create blend mode property on alpha-capable planes of simple drivers
Date: Tue,  1 Sep 2026 16:32:30 +0800	[thread overview]
Message-ID: <20260901083234.1828755-1-qinyuntan@linux.alibaba.com> (raw)

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 does not create the "pixel
blend mode" property. Several simple/virtual drivers trip this on
driver load. I hit the ast one on an ASPEED AST2600 BMC:

  [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

These four drivers share the same gap; this series covers ast, qxl,
virtio-gpu and vboxvideo. Each patch creates the "pixel blend mode"
property advertising the single blend mode the device actually
implements, based on the following:

  - ast: the hardware cursor blends with straight alpha per the
    ASPEED documentation (thanks Thomas), i.e. COVERAGE.
  - qxl: the SPICE protocol explicitly defines the ALPHA cursor type
    as a "pre-multiplied ARGB8888 pixmap" [1], i.e. PREMULTI.
  - virtio-gpu: the virtio spec does not define cursor alpha
    semantics; the host forwards the pixels verbatim and the remote
    cursor protocols among its frontends (SPICE alpha cursors, the
    VNC "Cursor With Alpha" encoding) define pre-multiplied alpha,
    i.e. PREMULTI.
  - vboxvideo: the host frontend loads the pointer shape verbatim
    into an unpremultiplied ARGB image (QImage::Format_ARGB32) before
    handing it to the host cursor APIs, i.e. COVERAGE.

This follows the same approach as the already-merged i915 and nouveau
fixes:

  67e955e073c6 ("drm/i915/display: expose blend mode on alpha-capable planes")
  df0311845915 ("drm/nouveau/kms/nv50-: Unconditionally create blend_mode prop for wndws")

The ast patch is verified on AST2600 hardware: the warning is gone
and the cursor plane exposes the "pixel blend mode" property. The
qxl, virtio and vboxvideo patches follow the identical pattern and
are compile-tested.

[1] https://www.spice-space.org/spice-protocol.html
    ("Cursor channel definition" section)

v2:
  - ast: advertise DRM_MODE_BLEND_COVERAGE instead of PREMULTI, per
    Thomas Zimmermann's review and the ASPEED documentation.
  - vboxvideo: advertise DRM_MODE_BLEND_COVERAGE instead of PREMULTI
    after checking how the VirtualBox host composites the pointer
    shape.
  - qxl, virtio: code unchanged; commit messages now cite the
    protocol-level justification for PREMULTI.

Qinyun Tan (4):
  drm/ast: create blend mode property on cursor plane
  drm/qxl: create blend mode property on primary and cursor planes
  drm/virtio: create blend mode property on cursor plane
  drm/vboxvideo: create blend mode property on planes

 drivers/gpu/drm/ast/ast_cursor.c       | 3 +++
 drivers/gpu/drm/qxl/qxl_display.c      | 4 ++++
 drivers/gpu/drm/vboxvideo/vbox_mode.c  | 4 ++++
 drivers/gpu/drm/virtio/virtgpu_plane.c | 4 ++++
 4 files changed, 15 insertions(+)

-- 
2.43.7


             reply	other threads:[~2026-09-01  8:32 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-01  8:32 Qinyun Tan [this message]
2026-09-01  8:32 ` [PATCH v2 1/4] drm/ast: create blend mode property on cursor plane Qinyun Tan
2026-09-01  8:46   ` sashiko-bot
2026-09-01 11:54   ` Thomas Zimmermann
2026-09-01 12:30     ` Thomas Zimmermann
2026-09-01 12:51       ` Qinyun Tan
2026-09-03  7:05         ` Thomas Zimmermann
2026-09-04  5:31           ` Qinyun Tan
2026-09-03  7:01   ` Thomas Zimmermann
2026-09-01  8:32 ` [PATCH v2 2/4] drm/qxl: create blend mode property on primary and cursor planes Qinyun Tan
2026-09-01 11:45   ` Thomas Zimmermann
2026-09-01  8:32 ` [PATCH v2 3/4] drm/virtio: create blend mode property on cursor plane Qinyun Tan
2026-09-01 11:46   ` Thomas Zimmermann
2026-09-01  8:32 ` [PATCH v2 4/4] drm/vboxvideo: create blend mode property on planes Qinyun Tan
2026-09-01  8:46   ` sashiko-bot
2026-09-03  7:00   ` Thomas Zimmermann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260901083234.1828755-1-qinyuntan@linux.alibaba.com \
    --to=qinyuntan@linux.alibaba.com \
    --cc=airlied@redhat.com \
    --cc=daniels@collabora.com \
    --cc=dmitry.osipenko@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hansg@kernel.org \
    --cc=jfalempe@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=leandro.ribeiro@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=pekka.paalanen@collabora.com \
    --cc=simona@ffwll.ch \
    --cc=spice-devel@lists.freedesktop.org \
    --cc=tzimmermann@suse.de \
    --cc=virtualization@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.