On 7/25/26 10:12, Akihiko Odaki wrote:
Discriminating blobs by checking whether blob_size is nonzero fails for empty blobs. Identify 2D resources by their non-NULL image instead.Fixes: bdd53f739273 ("virtio-gpu: Update cursor data using blob") Fixes: f66767f75c9c ("virtio-gpu: add virtio-gpu/blob vmstate subsection") Signed-off-by: Akihiko Odaki <[email protected]> --- hw/display/virtio-gpu.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
Is this a qemu-stable material? I've no idea from the description about the implication of the previous behavior. Thanks, /mjt
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 718ba3039290..6413df029b8e 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -56,18 +56,18 @@ void virtio_gpu_update_cursor_data(VirtIOGPU *g, return; }- if (res->blob_size) {- if (res->blob_size < (s->current_cursor->width * - s->current_cursor->height * 4)) { - return; - } - data = res->blob; - } else { + if (res->image) { if (pixman_image_get_width(res->image) != s->current_cursor->width || pixman_image_get_height(res->image) != s->current_cursor->height) { return; } data = pixman_image_get_data(res->image); + } else { + if (res->blob_size < (s->current_cursor->width * + s->current_cursor->height * 4)) { + return; + } + data = res->blob; }pixels = s->current_cursor->width * s->current_cursor->height;@@ -1279,7 +1279,7 @@ static int virtio_gpu_save(QEMUFile *f, void *opaque, size_t size, assert(QTAILQ_EMPTY(&g->cmdq));QTAILQ_FOREACH(res, &g->reslist, next) {- if (res->blob_size) { + if (!res->image) { continue; } qemu_put_be32(f, res->resource_id); @@ -1430,7 +1430,7 @@ static int virtio_gpu_blob_save(QEMUFile *f, void *opaque, size_t size, assert(QTAILQ_EMPTY(&g->cmdq));QTAILQ_FOREACH(res, &g->reslist, next) {- if (!res->blob_size) { + if (res->image) { continue; } assert(!res->image); --- base-commit: 006a22cb26998998385b104db1ff9466ef2f3153 change-id: 20260725-image-6c8566fb1253 Best regards, -- Akihiko Odaki <[email protected]>
