venus: fix signaled fence creation under multiple timeline
authorYiwei Zhang <zzyiwei@chromium.org>
Sat, 17 Dec 2022 07:41:52 +0000 (07:41 +0000)
committerMarge Bot <emma+marge@anholt.net>
Sat, 17 Dec 2022 18:58:58 +0000 (18:58 +0000)
Fixes: 3beb4f055e17 ("venus: allow renderer submissions on per-context virtgpu rings")

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20366>

src/virtio/vulkan/vn_renderer_virtgpu.c

index 654b42a..2c4bee5 100644 (file)
@@ -161,7 +161,11 @@ sim_syncobj_create(struct virtgpu *gpu, bool signaled)
       util_idalloc_init(&sim.ida, 32);
 
       struct drm_virtgpu_execbuffer args = {
-         .flags = VIRTGPU_EXECBUF_FENCE_FD_OUT,
+         .flags = VIRTGPU_EXECBUF_FENCE_FD_OUT |
+                  (gpu->base.info.supports_multiple_timelines
+                      ? VIRTGPU_EXECBUF_RING_IDX
+                      : 0),
+         .ring_idx = 0, /* CPU ring */
       };
       int ret = drmIoctl(gpu->fd, DRM_IOCTL_VIRTGPU_EXECBUFFER, &args);
       if (ret || args.fence_fd < 0) {