mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
virtio-gpu: Handle resource blob commands
Support BLOB resources creation, mapping, unmapping and set-scanout by calling the new stable virglrenderer 0.10 interface. Only enabled when available and via the blob config. E.g. -device virtio-vga-gl,blob=true Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com> Signed-off-by: Robert Beckett <bob.beckett@collabora.com> # added set_scanout_blob Signed-off-by: Xenia Ragiadakou <xenia.ragiadakou@amd.com> Signed-off-by: Huang Rui <ray.huang@amd.com> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Message-Id: <20241024210311.118220-12-dmitry.osipenko@collabora.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
640f9149c3
commit
7c092f17cc
4 changed files with 434 additions and 10 deletions
|
@ -362,7 +362,7 @@ static void virtio_gpu_resource_create_blob(VirtIOGPU *g,
|
|||
QTAILQ_INSERT_HEAD(&g->reslist, res, next);
|
||||
}
|
||||
|
||||
static void virtio_gpu_disable_scanout(VirtIOGPU *g, int scanout_id)
|
||||
void virtio_gpu_disable_scanout(VirtIOGPU *g, int scanout_id)
|
||||
{
|
||||
struct virtio_gpu_scanout *scanout = &g->parent_obj.scanout[scanout_id];
|
||||
struct virtio_gpu_simple_resource *res;
|
||||
|
@ -579,11 +579,11 @@ static void virtio_unref_resource(pixman_image_t *image, void *data)
|
|||
pixman_image_unref(data);
|
||||
}
|
||||
|
||||
static void virtio_gpu_update_scanout(VirtIOGPU *g,
|
||||
uint32_t scanout_id,
|
||||
struct virtio_gpu_simple_resource *res,
|
||||
struct virtio_gpu_framebuffer *fb,
|
||||
struct virtio_gpu_rect *r)
|
||||
void virtio_gpu_update_scanout(VirtIOGPU *g,
|
||||
uint32_t scanout_id,
|
||||
struct virtio_gpu_simple_resource *res,
|
||||
struct virtio_gpu_framebuffer *fb,
|
||||
struct virtio_gpu_rect *r)
|
||||
{
|
||||
struct virtio_gpu_simple_resource *ores;
|
||||
struct virtio_gpu_scanout *scanout;
|
||||
|
@ -1467,10 +1467,14 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef VIRGL_VERSION_MAJOR
|
||||
#if VIRGL_VERSION_MAJOR < 1
|
||||
if (virtio_gpu_virgl_enabled(g->parent_obj.conf)) {
|
||||
error_setg(errp, "blobs and virgl are not compatible (yet)");
|
||||
error_setg(errp, "old virglrenderer, blob resources unsupported");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!virtio_gpu_base_device_realize(qdev,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue