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 |
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);
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(+)