virtio-gpu: add support to enable/disable command processing
So we can stop rendering for a while in case we have to. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
3eb769fd1c
commit
0c55a1cfd3
@ -554,7 +554,8 @@ static void virtio_gpu_fence_poll(void *opaque)
|
||||
VirtIOGPU *g = opaque;
|
||||
|
||||
virgl_renderer_poll();
|
||||
if (g->inflight) {
|
||||
virtio_gpu_process_cmdq(g);
|
||||
if (!QTAILQ_EMPTY(&g->cmdq) || !QTAILQ_EMPTY(&g->fenceq)) {
|
||||
timer_mod(g->fence_poll, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + 10);
|
||||
}
|
||||
}
|
||||
|
@ -755,7 +755,7 @@ static void virtio_gpu_handle_cursor_cb(VirtIODevice *vdev, VirtQueue *vq)
|
||||
qemu_bh_schedule(g->cursor_bh);
|
||||
}
|
||||
|
||||
static void virtio_gpu_process_cmdq(VirtIOGPU *g)
|
||||
void virtio_gpu_process_cmdq(VirtIOGPU *g)
|
||||
{
|
||||
struct virtio_gpu_ctrl_command *cmd;
|
||||
|
||||
@ -765,6 +765,9 @@ static void virtio_gpu_process_cmdq(VirtIOGPU *g)
|
||||
/* process command */
|
||||
VIRGL(g, virtio_gpu_virgl_process_cmd, virtio_gpu_simple_process_cmd,
|
||||
g, cmd);
|
||||
if (cmd->waiting) {
|
||||
break;
|
||||
}
|
||||
QTAILQ_REMOVE(&g->cmdq, cmd, next);
|
||||
if (virtio_gpu_stats_enabled(g->conf)) {
|
||||
g->stats.requests++;
|
||||
|
@ -76,6 +76,7 @@ struct virtio_gpu_ctrl_command {
|
||||
VirtQueue *vq;
|
||||
struct virtio_gpu_ctrl_hdr cmd_hdr;
|
||||
uint32_t error;
|
||||
bool waiting;
|
||||
bool finished;
|
||||
QTAILQ_ENTRY(virtio_gpu_ctrl_command) next;
|
||||
};
|
||||
@ -152,6 +153,7 @@ int virtio_gpu_create_mapping_iov(struct virtio_gpu_resource_attach_backing *ab,
|
||||
struct virtio_gpu_ctrl_command *cmd,
|
||||
struct iovec **iov);
|
||||
void virtio_gpu_cleanup_mapping_iov(struct iovec *iov, uint32_t count);
|
||||
void virtio_gpu_process_cmdq(VirtIOGPU *g);
|
||||
|
||||
/* virtio-gpu-3d.c */
|
||||
void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
|
||||
|
Loading…
Reference in New Issue
Block a user