diff options
| author | Huang Rui <ray.huang@amd.com> | 2024-10-25 00:03:05 +0300 |
|---|---|---|
| committer | Alex Bennée <alex.bennee@linaro.org> | 2024-10-28 16:56:35 +0000 |
| commit | 2c868c7901590ae2cbc726c339325119ef0647cb (patch) | |
| tree | d78c177de043116439042ad568c249dff416d9fe /hw/display/virtio-gpu-virgl.c | |
| parent | ffac9641baafde399a2ef08b0573b7e15b0a8a3b (diff) | |
| download | focaccia-qemu-2c868c7901590ae2cbc726c339325119ef0647cb.tar.gz focaccia-qemu-2c868c7901590ae2cbc726c339325119ef0647cb.zip | |
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>
Diffstat (limited to 'hw/display/virtio-gpu-virgl.c')
| -rw-r--r-- | hw/display/virtio-gpu-virgl.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index ca6f4d6cbb..b3aa444bcf 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -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, |