mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 13:47:03 +00:00
virtio-gpu: Support context-init feature with virglrenderer
Patch "virtio-gpu: CONTEXT_INIT feature" has added the context_init feature flags. Expose this feature and support creating virglrenderer context with flags using context_id if libvirglrenderer is new enough. Originally-by: Antonio Caggiano <antonio.caggiano@collabora.com> Signed-off-by: Huang Rui <ray.huang@amd.com> Reviewed-by: Antonio Caggiano <quic_acaggian@quicinc.com> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Message-Id: <20241024210311.118220-8-dmitry.osipenko@collabora.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
ffac9641ba
commit
2c868c7901
@ -147,6 +147,10 @@ static void virtio_gpu_gl_device_realize(DeviceState *qdev, Error **errp)
|
|||||||
VIRTIO_GPU_BASE(g)->virtio_config.num_capsets =
|
VIRTIO_GPU_BASE(g)->virtio_config.num_capsets =
|
||||||
virtio_gpu_virgl_get_num_capsets(g);
|
virtio_gpu_virgl_get_num_capsets(g);
|
||||||
|
|
||||||
|
#if VIRGL_VERSION_MAJOR >= 1
|
||||||
|
g->parent_obj.conf.flags |= 1 << VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED;
|
||||||
|
#endif
|
||||||
|
|
||||||
virtio_gpu_device_realize(qdev, errp);
|
virtio_gpu_device_realize(qdev, errp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,8 +106,24 @@ static void virgl_cmd_context_create(VirtIOGPU *g,
|
|||||||
trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
|
trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
|
||||||
cc.debug_name);
|
cc.debug_name);
|
||||||
|
|
||||||
virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen,
|
if (cc.context_init) {
|
||||||
|
if (!virtio_gpu_context_init_enabled(g->parent_obj.conf)) {
|
||||||
|
qemu_log_mask(LOG_GUEST_ERROR, "%s: context_init disabled",
|
||||||
|
__func__);
|
||||||
|
cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if VIRGL_VERSION_MAJOR >= 1
|
||||||
|
virgl_renderer_context_create_with_flags(cc.hdr.ctx_id,
|
||||||
|
cc.context_init,
|
||||||
|
cc.nlen,
|
||||||
cc.debug_name);
|
cc.debug_name);
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen, cc.debug_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virgl_cmd_context_destroy(VirtIOGPU *g,
|
static void virgl_cmd_context_destroy(VirtIOGPU *g,
|
||||||
|
Loading…
Reference in New Issue
Block a user