Mesa (main): venus: move vn_renderer_sync_ops to vn_renderer

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jun 11 23:54:30 UTC 2021


Module: Mesa
Branch: main
Commit: 517828784c45d251c29ab30b7e839e0886753369
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=517828784c45d251c29ab30b7e839e0886753369

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Tue Jun  8 11:18:04 2021 -0700

venus: move vn_renderer_sync_ops to vn_renderer

To follow vn_renderer_{shmem,bo}_ops.

Signed-off-by: Chia-I Wu <olvaffe at gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11253>

---

 src/virtio/vulkan/vn_renderer.h         | 143 +++++++++++++++++++-------------
 src/virtio/vulkan/vn_renderer_virtgpu.c |  71 +++++++++-------
 src/virtio/vulkan/vn_renderer_vtest.c   |  58 +++++++------
 3 files changed, 154 insertions(+), 118 deletions(-)

diff --git a/src/virtio/vulkan/vn_renderer.h b/src/virtio/vulkan/vn_renderer.h
index 6f5ef659605..223e8796dfb 100644
--- a/src/virtio/vulkan/vn_renderer.h
+++ b/src/virtio/vulkan/vn_renderer.h
@@ -23,35 +23,6 @@ struct vn_renderer_bo {
    void *mmap_ptr;
 };
 
-enum vn_renderer_sync_flags {
-   VN_RENDERER_SYNC_SHAREABLE = 1u << 0,
-   VN_RENDERER_SYNC_BINARY = 1u << 1,
-};
-
-struct vn_renderer_sync_ops {
-   void (*destroy)(struct vn_renderer_sync *sync);
-
-   /* a sync can be initialized/released multiple times */
-   VkResult (*init)(struct vn_renderer_sync *sync,
-                    uint64_t initial_val,
-                    uint32_t flags);
-   VkResult (*init_syncobj)(struct vn_renderer_sync *sync,
-                            int fd,
-                            bool sync_file);
-   void (*release)(struct vn_renderer_sync *sync);
-
-   int (*export_syncobj)(struct vn_renderer_sync *sync, bool sync_file);
-
-   /* reset the counter */
-   VkResult (*reset)(struct vn_renderer_sync *sync, uint64_t initial_val);
-
-   /* read the current value from the counter */
-   VkResult (*read)(struct vn_renderer_sync *sync, uint64_t *val);
-
-   /* write a new value (larger than the current one) to the counter */
-   VkResult (*write)(struct vn_renderer_sync *sync, uint64_t val);
-};
-
 /*
  * A sync consists of a uint64_t counter.  The counter can be updated by CPU
  * or by GPU.  It can also be waited on by CPU or by GPU until it reaches
@@ -62,8 +33,6 @@ struct vn_renderer_sync_ops {
  */
 struct vn_renderer_sync {
    uint32_t sync_id;
-
-   struct vn_renderer_sync_ops ops;
 };
 
 struct vn_renderer_info {
@@ -160,8 +129,6 @@ struct vn_renderer_ops {
     */
    VkResult (*wait)(struct vn_renderer *renderer,
                     const struct vn_renderer_wait *wait);
-
-   struct vn_renderer_sync *(*sync_create)(struct vn_renderer *renderer);
 };
 
 struct vn_renderer_shmem_ops {
@@ -204,10 +171,53 @@ struct vn_renderer_bo_ops {
                       VkDeviceSize size);
 };
 
+enum vn_renderer_sync_flags {
+   VN_RENDERER_SYNC_SHAREABLE = 1u << 0,
+   VN_RENDERER_SYNC_BINARY = 1u << 1,
+};
+
+struct vn_renderer_sync_ops {
+   struct vn_renderer_sync *(*create)(struct vn_renderer *renderer);
+   void (*destroy)(struct vn_renderer *renderer,
+                   struct vn_renderer_sync *sync);
+
+   /* a sync can be initialized/released multiple times */
+   VkResult (*init)(struct vn_renderer *renderer,
+                    struct vn_renderer_sync *sync,
+                    uint64_t initial_val,
+                    uint32_t flags);
+   VkResult (*init_syncobj)(struct vn_renderer *renderer,
+                            struct vn_renderer_sync *sync,
+                            int fd,
+                            bool sync_file);
+   void (*release)(struct vn_renderer *renderer,
+                   struct vn_renderer_sync *sync);
+
+   int (*export_syncobj)(struct vn_renderer *renderer,
+                         struct vn_renderer_sync *sync,
+                         bool sync_file);
+
+   /* reset the counter */
+   VkResult (*reset)(struct vn_renderer *renderer,
+                     struct vn_renderer_sync *sync,
+                     uint64_t initial_val);
+
+   /* read the current value from the counter */
+   VkResult (*read)(struct vn_renderer *renderer,
+                    struct vn_renderer_sync *sync,
+                    uint64_t *val);
+
+   /* write a new value (larger than the current one) to the counter */
+   VkResult (*write)(struct vn_renderer *renderer,
+                     struct vn_renderer_sync *sync,
+                     uint64_t val);
+};
+
 struct vn_renderer {
    struct vn_renderer_ops ops;
    struct vn_renderer_shmem_ops shmem_ops;
    struct vn_renderer_bo_ops bo_ops;
+   struct vn_renderer_sync_ops sync_ops;
 };
 
 VkResult
@@ -422,15 +432,16 @@ static inline VkResult
 vn_renderer_sync_create_cpu(struct vn_renderer *renderer,
                             struct vn_renderer_sync **_sync)
 {
-   struct vn_renderer_sync *sync = renderer->ops.sync_create(renderer);
+   struct vn_renderer_sync *sync = renderer->sync_ops.create(renderer);
    if (!sync)
       return VK_ERROR_OUT_OF_HOST_MEMORY;
 
    const uint64_t initial_val = 0;
    const uint32_t flags = 0;
-   VkResult result = sync->ops.init(sync, initial_val, flags);
+   VkResult result =
+      renderer->sync_ops.init(renderer, sync, initial_val, flags);
    if (result != VK_SUCCESS) {
-      sync->ops.destroy(sync);
+      renderer->sync_ops.destroy(renderer, sync);
       return result;
    }
 
@@ -444,16 +455,17 @@ vn_renderer_sync_create_fence(struct vn_renderer *renderer,
                               VkExternalFenceHandleTypeFlags external_handles,
                               struct vn_renderer_sync **_sync)
 {
-   struct vn_renderer_sync *sync = renderer->ops.sync_create(renderer);
+   struct vn_renderer_sync *sync = renderer->sync_ops.create(renderer);
    if (!sync)
       return VK_ERROR_OUT_OF_HOST_MEMORY;
 
    const uint64_t initial_val = signaled;
    const uint32_t flags = VN_RENDERER_SYNC_BINARY |
                           (external_handles ? VN_RENDERER_SYNC_SHAREABLE : 0);
-   VkResult result = sync->ops.init(sync, initial_val, flags);
+   VkResult result =
+      renderer->sync_ops.init(renderer, sync, initial_val, flags);
    if (result != VK_SUCCESS) {
-      sync->ops.destroy(sync);
+      renderer->sync_ops.destroy(renderer, sync);
       return result;
    }
 
@@ -469,16 +481,17 @@ vn_renderer_sync_create_semaphore(
    VkExternalSemaphoreHandleTypeFlags external_handles,
    struct vn_renderer_sync **_sync)
 {
-   struct vn_renderer_sync *sync = renderer->ops.sync_create(renderer);
+   struct vn_renderer_sync *sync = renderer->sync_ops.create(renderer);
    if (!sync)
       return VK_ERROR_OUT_OF_HOST_MEMORY;
 
    const uint32_t flags =
       (external_handles ? VN_RENDERER_SYNC_SHAREABLE : 0) |
       (type == VK_SEMAPHORE_TYPE_BINARY ? VN_RENDERER_SYNC_BINARY : 0);
-   VkResult result = sync->ops.init(sync, initial_val, flags);
+   VkResult result =
+      renderer->sync_ops.init(renderer, sync, initial_val, flags);
    if (result != VK_SUCCESS) {
-      sync->ops.destroy(sync);
+      renderer->sync_ops.destroy(renderer, sync);
       return result;
    }
 
@@ -490,7 +503,7 @@ static inline VkResult
 vn_renderer_sync_create_empty(struct vn_renderer *renderer,
                               struct vn_renderer_sync **_sync)
 {
-   struct vn_renderer_sync *sync = renderer->ops.sync_create(renderer);
+   struct vn_renderer_sync *sync = renderer->sync_ops.create(renderer);
    if (!sync)
       return VK_ERROR_OUT_OF_HOST_MEMORY;
 
@@ -501,55 +514,67 @@ vn_renderer_sync_create_empty(struct vn_renderer *renderer,
 }
 
 static inline void
-vn_renderer_sync_destroy(struct vn_renderer_sync *sync)
+vn_renderer_sync_destroy(struct vn_renderer *renderer,
+                         struct vn_renderer_sync *sync)
 {
-   sync->ops.destroy(sync);
+   renderer->sync_ops.destroy(renderer, sync);
 }
 
 static inline VkResult
-vn_renderer_sync_init_signaled(struct vn_renderer_sync *sync)
+vn_renderer_sync_init_signaled(struct vn_renderer *renderer,
+                               struct vn_renderer_sync *sync)
 {
    const uint64_t initial_val = 1;
    const uint32_t flags = VN_RENDERER_SYNC_BINARY;
-   return sync->ops.init(sync, initial_val, flags);
+   return renderer->sync_ops.init(renderer, sync, initial_val, flags);
 }
 
 static inline VkResult
-vn_renderer_sync_init_syncobj(struct vn_renderer_sync *sync,
+vn_renderer_sync_init_syncobj(struct vn_renderer *renderer,
+                              struct vn_renderer_sync *sync,
                               int fd,
                               bool sync_file)
 {
-   return sync->ops.init_syncobj(sync, fd, sync_file);
+   return renderer->sync_ops.init_syncobj(renderer, sync, fd, sync_file);
 }
 
 static inline void
-vn_renderer_sync_release(struct vn_renderer_sync *sync)
+vn_renderer_sync_release(struct vn_renderer *renderer,
+                         struct vn_renderer_sync *sync)
 {
-   sync->ops.release(sync);
+   renderer->sync_ops.release(renderer, sync);
 }
 
 static inline int
-vn_renderer_sync_export_syncobj(struct vn_renderer_sync *sync, bool sync_file)
+vn_renderer_sync_export_syncobj(struct vn_renderer *renderer,
+                                struct vn_renderer_sync *sync,
+                                bool sync_file)
 {
-   return sync->ops.export_syncobj(sync, sync_file);
+   return renderer->sync_ops.export_syncobj(renderer, sync, sync_file);
 }
 
 static inline VkResult
-vn_renderer_sync_reset(struct vn_renderer_sync *sync, uint64_t initial_val)
+vn_renderer_sync_reset(struct vn_renderer *renderer,
+                       struct vn_renderer_sync *sync,
+                       uint64_t initial_val)
 {
-   return sync->ops.reset(sync, initial_val);
+   return renderer->sync_ops.reset(renderer, sync, initial_val);
 }
 
 static inline VkResult
-vn_renderer_sync_read(struct vn_renderer_sync *sync, uint64_t *val)
+vn_renderer_sync_read(struct vn_renderer *renderer,
+                      struct vn_renderer_sync *sync,
+                      uint64_t *val)
 {
-   return sync->ops.read(sync, val);
+   return renderer->sync_ops.read(renderer, sync, val);
 }
 
 static inline VkResult
-vn_renderer_sync_write(struct vn_renderer_sync *sync, uint64_t val)
+vn_renderer_sync_write(struct vn_renderer *renderer,
+                       struct vn_renderer_sync *sync,
+                       uint64_t val)
 {
-   return sync->ops.write(sync, val);
+   return renderer->sync_ops.write(renderer, sync, val);
 }
 
 #endif /* VN_RENDERER_H */
diff --git a/src/virtio/vulkan/vn_renderer_virtgpu.c b/src/virtio/vulkan/vn_renderer_virtgpu.c
index b17f2477067..023d3a10f65 100644
--- a/src/virtio/vulkan/vn_renderer_virtgpu.c
+++ b/src/virtio/vulkan/vn_renderer_virtgpu.c
@@ -65,7 +65,6 @@ struct virtgpu_bo {
 
 struct virtgpu_sync {
    struct vn_renderer_sync base;
-   struct virtgpu *gpu;
 
    /*
     * drm_syncobj is in one of these states
@@ -895,10 +894,12 @@ virtgpu_ioctl_submit(struct virtgpu *gpu,
 }
 
 static VkResult
-virtgpu_sync_write(struct vn_renderer_sync *_sync, uint64_t val)
+virtgpu_sync_write(struct vn_renderer *renderer,
+                   struct vn_renderer_sync *_sync,
+                   uint64_t val)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    const int ret =
       virtgpu_ioctl_syncobj_timeline_signal(gpu, sync->syncobj_handle, val);
@@ -907,10 +908,12 @@ virtgpu_sync_write(struct vn_renderer_sync *_sync, uint64_t val)
 }
 
 static VkResult
-virtgpu_sync_read(struct vn_renderer_sync *_sync, uint64_t *val)
+virtgpu_sync_read(struct vn_renderer *renderer,
+                  struct vn_renderer_sync *_sync,
+                  uint64_t *val)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    const int ret =
       virtgpu_ioctl_syncobj_query(gpu, sync->syncobj_handle, val);
@@ -919,10 +922,12 @@ virtgpu_sync_read(struct vn_renderer_sync *_sync, uint64_t *val)
 }
 
 static VkResult
-virtgpu_sync_reset(struct vn_renderer_sync *_sync, uint64_t initial_val)
+virtgpu_sync_reset(struct vn_renderer *renderer,
+                   struct vn_renderer_sync *_sync,
+                   uint64_t initial_val)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    int ret = virtgpu_ioctl_syncobj_reset(gpu, sync->syncobj_handle);
    if (!ret) {
@@ -934,20 +939,23 @@ virtgpu_sync_reset(struct vn_renderer_sync *_sync, uint64_t initial_val)
 }
 
 static int
-virtgpu_sync_export_syncobj(struct vn_renderer_sync *_sync, bool sync_file)
+virtgpu_sync_export_syncobj(struct vn_renderer *renderer,
+                            struct vn_renderer_sync *_sync,
+                            bool sync_file)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    return virtgpu_ioctl_syncobj_handle_to_fd(gpu, sync->syncobj_handle,
                                              sync_file);
 }
 
 static void
-virtgpu_sync_release(struct vn_renderer_sync *_sync)
+virtgpu_sync_release(struct vn_renderer *renderer,
+                     struct vn_renderer_sync *_sync)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    virtgpu_ioctl_syncobj_destroy(gpu, sync->syncobj_handle);
 
@@ -956,12 +964,13 @@ virtgpu_sync_release(struct vn_renderer_sync *_sync)
 }
 
 static VkResult
-virtgpu_sync_init_syncobj(struct vn_renderer_sync *_sync,
+virtgpu_sync_init_syncobj(struct vn_renderer *renderer,
+                          struct vn_renderer_sync *_sync,
                           int fd,
                           bool sync_file)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    uint32_t syncobj_handle;
    if (sync_file) {
@@ -985,12 +994,13 @@ virtgpu_sync_init_syncobj(struct vn_renderer_sync *_sync,
 }
 
 static VkResult
-virtgpu_sync_init(struct vn_renderer_sync *_sync,
+virtgpu_sync_init(struct vn_renderer *renderer,
+                  struct vn_renderer_sync *_sync,
                   uint64_t initial_val,
                   uint32_t flags)
 {
+   struct virtgpu *gpu = (struct virtgpu *)renderer;
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
-   struct virtgpu *gpu = (struct virtgpu *)sync->gpu;
 
    /* TODO */
    if (flags & VN_RENDERER_SYNC_SHAREABLE)
@@ -1006,7 +1016,7 @@ virtgpu_sync_init(struct vn_renderer_sync *_sync,
    const int ret = virtgpu_ioctl_syncobj_timeline_signal(
       gpu, sync->syncobj_handle, initial_val);
    if (ret) {
-      virtgpu_sync_release(&sync->base);
+      virtgpu_sync_release(&gpu->base, &sync->base);
       return VK_ERROR_OUT_OF_DEVICE_MEMORY;
    }
 
@@ -1019,12 +1029,13 @@ virtgpu_sync_init(struct vn_renderer_sync *_sync,
 }
 
 static void
-virtgpu_sync_destroy(struct vn_renderer_sync *_sync)
+virtgpu_sync_destroy(struct vn_renderer *renderer,
+                     struct vn_renderer_sync *_sync)
 {
    struct virtgpu_sync *sync = (struct virtgpu_sync *)_sync;
 
    if (sync->syncobj_handle)
-      virtgpu_sync_release(&sync->base);
+      virtgpu_sync_release(renderer, &sync->base);
 
    free(sync);
 }
@@ -1032,23 +1043,10 @@ virtgpu_sync_destroy(struct vn_renderer_sync *_sync)
 static struct vn_renderer_sync *
 virtgpu_sync_create(struct vn_renderer *renderer)
 {
-   struct virtgpu *gpu = (struct virtgpu *)renderer;
-
    struct virtgpu_sync *sync = calloc(1, sizeof(*sync));
    if (!sync)
       return NULL;
 
-   sync->gpu = gpu;
-
-   sync->base.ops.destroy = virtgpu_sync_destroy;
-   sync->base.ops.init = virtgpu_sync_init;
-   sync->base.ops.init_syncobj = virtgpu_sync_init_syncobj;
-   sync->base.ops.release = virtgpu_sync_release;
-   sync->base.ops.export_syncobj = virtgpu_sync_export_syncobj;
-   sync->base.ops.reset = virtgpu_sync_reset;
-   sync->base.ops.read = virtgpu_sync_read;
-   sync->base.ops.write = virtgpu_sync_write;
-
    return &sync->base;
 }
 
@@ -1555,7 +1553,6 @@ virtgpu_init(struct virtgpu *gpu)
    gpu->base.ops.get_info = virtgpu_get_info;
    gpu->base.ops.submit = virtgpu_submit;
    gpu->base.ops.wait = virtgpu_wait;
-   gpu->base.ops.sync_create = virtgpu_sync_create;
 
    gpu->base.shmem_ops.create = virtgpu_shmem_create;
    gpu->base.shmem_ops.destroy = virtgpu_shmem_destroy;
@@ -1569,6 +1566,16 @@ virtgpu_init(struct virtgpu *gpu)
    gpu->base.bo_ops.flush = virtgpu_bo_flush;
    gpu->base.bo_ops.invalidate = virtgpu_bo_invalidate;
 
+   gpu->base.sync_ops.create = virtgpu_sync_create;
+   gpu->base.sync_ops.destroy = virtgpu_sync_destroy;
+   gpu->base.sync_ops.init = virtgpu_sync_init;
+   gpu->base.sync_ops.init_syncobj = virtgpu_sync_init_syncobj;
+   gpu->base.sync_ops.release = virtgpu_sync_release;
+   gpu->base.sync_ops.export_syncobj = virtgpu_sync_export_syncobj;
+   gpu->base.sync_ops.reset = virtgpu_sync_reset;
+   gpu->base.sync_ops.read = virtgpu_sync_read;
+   gpu->base.sync_ops.write = virtgpu_sync_write;
+
    return VK_SUCCESS;
 }
 
diff --git a/src/virtio/vulkan/vn_renderer_vtest.c b/src/virtio/vulkan/vn_renderer_vtest.c
index e3ff2e77edf..7fd9285719a 100644
--- a/src/virtio/vulkan/vn_renderer_vtest.c
+++ b/src/virtio/vulkan/vn_renderer_vtest.c
@@ -43,7 +43,6 @@ struct vtest_bo {
 
 struct vtest_sync {
    struct vn_renderer_sync base;
-   struct vtest *vtest;
 };
 
 struct vtest {
@@ -575,10 +574,12 @@ vtest_vcmd_submit_cmd2(struct vtest *vtest,
 }
 
 static VkResult
-vtest_sync_write(struct vn_renderer_sync *_sync, uint64_t val)
+vtest_sync_write(struct vn_renderer *renderer,
+                 struct vn_renderer_sync *_sync,
+                 uint64_t val)
 {
+   struct vtest *vtest = (struct vtest *)renderer;
    struct vtest_sync *sync = (struct vtest_sync *)_sync;
-   struct vtest *vtest = sync->vtest;
 
    mtx_lock(&vtest->sock_mutex);
    vtest_vcmd_sync_write(vtest, sync->base.sync_id, val);
@@ -588,10 +589,12 @@ vtest_sync_write(struct vn_renderer_sync *_sync, uint64_t val)
 }
 
 static VkResult
-vtest_sync_read(struct vn_renderer_sync *_sync, uint64_t *val)
+vtest_sync_read(struct vn_renderer *renderer,
+                struct vn_renderer_sync *_sync,
+                uint64_t *val)
 {
+   struct vtest *vtest = (struct vtest *)renderer;
    struct vtest_sync *sync = (struct vtest_sync *)_sync;
-   struct vtest *vtest = sync->vtest;
 
    mtx_lock(&vtest->sock_mutex);
    *val = vtest_vcmd_sync_read(vtest, sync->base.sync_id);
@@ -601,17 +604,20 @@ vtest_sync_read(struct vn_renderer_sync *_sync, uint64_t *val)
 }
 
 static VkResult
-vtest_sync_reset(struct vn_renderer_sync *sync, uint64_t initial_val)
+vtest_sync_reset(struct vn_renderer *renderer,
+                 struct vn_renderer_sync *sync,
+                 uint64_t initial_val)
 {
    /* same as write */
-   return vtest_sync_write(sync, initial_val);
+   return vtest_sync_write(renderer, sync, initial_val);
 }
 
 static void
-vtest_sync_release(struct vn_renderer_sync *_sync)
+vtest_sync_release(struct vn_renderer *renderer,
+                   struct vn_renderer_sync *_sync)
 {
+   struct vtest *vtest = (struct vtest *)renderer;
    struct vtest_sync *sync = (struct vtest_sync *)_sync;
-   struct vtest *vtest = sync->vtest;
 
    mtx_lock(&vtest->sock_mutex);
    vtest_vcmd_sync_unref(vtest, sync->base.sync_id);
@@ -621,12 +627,13 @@ vtest_sync_release(struct vn_renderer_sync *_sync)
 }
 
 static VkResult
-vtest_sync_init(struct vn_renderer_sync *_sync,
+vtest_sync_init(struct vn_renderer *renderer,
+                struct vn_renderer_sync *_sync,
                 uint64_t initial_val,
                 uint32_t flags)
 {
+   struct vtest *vtest = (struct vtest *)renderer;
    struct vtest_sync *sync = (struct vtest_sync *)_sync;
-   struct vtest *vtest = sync->vtest;
 
    mtx_lock(&vtest->sock_mutex);
    sync->base.sync_id = vtest_vcmd_sync_create(vtest, initial_val);
@@ -636,12 +643,13 @@ vtest_sync_init(struct vn_renderer_sync *_sync,
 }
 
 static void
-vtest_sync_destroy(struct vn_renderer_sync *_sync)
+vtest_sync_destroy(struct vn_renderer *renderer,
+                   struct vn_renderer_sync *_sync)
 {
    struct vtest_sync *sync = (struct vtest_sync *)_sync;
 
    if (sync->base.sync_id)
-      vtest_sync_release(&sync->base);
+      vtest_sync_release(renderer, &sync->base);
 
    free(sync);
 }
@@ -649,23 +657,10 @@ vtest_sync_destroy(struct vn_renderer_sync *_sync)
 static struct vn_renderer_sync *
 vtest_sync_create(struct vn_renderer *renderer)
 {
-   struct vtest *vtest = (struct vtest *)renderer;
-
    struct vtest_sync *sync = calloc(1, sizeof(*sync));
    if (!sync)
       return NULL;
 
-   sync->vtest = vtest;
-
-   sync->base.ops.destroy = vtest_sync_destroy;
-   sync->base.ops.init = vtest_sync_init;
-   sync->base.ops.init_syncobj = NULL;
-   sync->base.ops.release = vtest_sync_release;
-   sync->base.ops.export_syncobj = NULL;
-   sync->base.ops.reset = vtest_sync_reset;
-   sync->base.ops.read = vtest_sync_read;
-   sync->base.ops.write = vtest_sync_write;
-
    return &sync->base;
 }
 
@@ -1045,7 +1040,6 @@ vtest_init(struct vtest *vtest)
    vtest->base.ops.get_info = vtest_get_info;
    vtest->base.ops.submit = vtest_submit;
    vtest->base.ops.wait = vtest_wait;
-   vtest->base.ops.sync_create = vtest_sync_create;
 
    vtest->base.shmem_ops.create = vtest_shmem_create;
    vtest->base.shmem_ops.destroy = vtest_shmem_destroy;
@@ -1059,6 +1053,16 @@ vtest_init(struct vtest *vtest)
    vtest->base.bo_ops.flush = vtest_bo_flush;
    vtest->base.bo_ops.invalidate = vtest_bo_invalidate;
 
+   vtest->base.sync_ops.create = vtest_sync_create;
+   vtest->base.sync_ops.destroy = vtest_sync_destroy;
+   vtest->base.sync_ops.init = vtest_sync_init;
+   vtest->base.sync_ops.init_syncobj = NULL;
+   vtest->base.sync_ops.release = vtest_sync_release;
+   vtest->base.sync_ops.export_syncobj = NULL;
+   vtest->base.sync_ops.reset = vtest_sync_reset;
+   vtest->base.sync_ops.read = vtest_sync_read;
+   vtest->base.sync_ops.write = vtest_sync_write;
+
    return VK_SUCCESS;
 }
 



More information about the mesa-commit mailing list