diff mbox series

[RFC,2/6] hw/display/virtio-gpu.c: reverse alpha pre-multiplication

Message ID 20250123191536.142753-3-berrange@redhat.com (mailing list archive)
State New
Headers show
Series RFC: hw/display/virtio-gpu: problems with coloured cursors | expand

Commit Message

Daniel P. Berrangé Jan. 23, 2025, 7:15 p.m. UTC
The cursor data we receive from the guest has had the alpha channel
pre-multiplied into the RGB components. Reverse this before passing
the cursor onto the backends.

Without doing this, areas of the cursor with alpha are much less
saturated than they are intended to be. This effect is visible with
the SDL and GTK backends, but was masked with the VNC backend since
that forget to apply pre-multiplication with its alpha cursor
encoding thus cancelling out the virtio-gpu problem.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 hw/display/virtio-gpu.c | 1 +
 1 file changed, 1 insertion(+)
diff mbox series

Patch

diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 11a7a85750..156d4e0b9b 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -102,6 +102,7 @@  static void update_cursor(VirtIOGPU *g, struct virtio_gpu_update_cursor *cursor)
 
         if (cursor->resource_id > 0) {
             vgc->update_cursor_data(g, s, cursor->resource_id);
+            cursor_unmultiply_alpha(s->current_cursor);
         }
         dpy_cursor_define(s->con, s->current_cursor);