mirror of https://github.com/xemu-project/xemu.git
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_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);
|
||||
}
|
||||
|
||||
|
|
|
@ -106,8 +106,24 @@ static void virgl_cmd_context_create(VirtIOGPU *g,
|
|||
trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
|
||||
cc.debug_name);
|
||||
|
||||
virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen,
|
||||
cc.debug_name);
|
||||
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);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen, cc.debug_name);
|
||||
}
|
||||
|
||||
static void virgl_cmd_context_destroy(VirtIOGPU *g,
|
||||
|
|
Loading…
Reference in New Issue