Mesa (master): venus: provide accessors for vn_instance_submit_command

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 28 20:49:10 UTC 2021


Module: Mesa
Branch: master
Commit: 3c8255f602567f316b07ca62fb4c256cac6a83c3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3c8255f602567f316b07ca62fb4c256cac6a83c3

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Thu Apr 22 10:55:59 2021 -0700

venus: provide accessors for vn_instance_submit_command

This will allow us to change vn_instance_submit_command without
regenerating the headers.

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/10437>

---

 src/virtio/vulkan/vn_device.h | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/src/virtio/vulkan/vn_device.h b/src/virtio/vulkan/vn_device.h
index 9dc458c264f..5e212c3d7c3 100644
--- a/src/virtio/vulkan/vn_device.h
+++ b/src/virtio/vulkan/vn_device.h
@@ -136,6 +136,7 @@ vn_instance_ring_submit(struct vn_instance *instance,
 struct vn_instance_submit_command {
    /* empty command implies errors */
    struct vn_cs_encoder command;
+   struct vn_cs_encoder_buffer buffer;
    /* non-zero implies waiting */
    size_t reply_size;
 
@@ -144,8 +145,41 @@ struct vn_instance_submit_command {
    struct vn_cs_decoder reply;
 };
 
+static inline struct vn_cs_encoder *
+vn_instance_submit_command_init(struct vn_instance *instance,
+                                struct vn_instance_submit_command *submit,
+                                void *cmd_data,
+                                size_t cmd_size,
+                                size_t reply_size)
+{
+   submit->command = VN_CS_ENCODER_INITIALIZER(cmd_data, cmd_size);
+   /* fix submit->command.buffers to not point to a local variable */
+   submit->buffer = submit->command.buffers[0];
+   submit->command.buffers = &submit->buffer;
+
+   submit->reply_size = reply_size;
+   submit->reply_bo = NULL;
+
+   return &submit->command;
+}
+
 void
 vn_instance_submit_command(struct vn_instance *instance,
                            struct vn_instance_submit_command *submit);
 
+static inline struct vn_cs_decoder *
+vn_instance_get_command_reply(struct vn_instance *instance,
+                              struct vn_instance_submit_command *submit)
+{
+   return submit->reply_bo ? &submit->reply : NULL;
+}
+
+static inline void
+vn_instance_free_command_reply(struct vn_instance *instance,
+                               struct vn_instance_submit_command *submit)
+{
+   assert(submit->reply_bo);
+   vn_renderer_bo_unref(submit->reply_bo);
+}
+
 #endif /* VN_DEVICE_H */



More information about the mesa-commit mailing list