aboutsummaryrefslogtreecommitdiff
path: root/src/venus/venus-protocol/vn_protocol_renderer_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/venus/venus-protocol/vn_protocol_renderer_buffer.h')
-rw-r--r--src/venus/venus-protocol/vn_protocol_renderer_buffer.h198
1 files changed, 117 insertions, 81 deletions
diff --git a/src/venus/venus-protocol/vn_protocol_renderer_buffer.h b/src/venus/venus-protocol/vn_protocol_renderer_buffer.h
index 44305f39..06002418 100644
--- a/src/venus/venus-protocol/vn_protocol_renderer_buffer.h
+++ b/src/venus/venus-protocol/vn_protocol_renderer_buffer.h
@@ -239,35 +239,6 @@ vn_replace_VkBufferCreateInfo_handle(VkBufferCreateInfo *val)
/* struct VkBindBufferMemoryDeviceGroupInfo chain */
-static inline void
-vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(struct vn_cs_encoder *enc, const void *val)
-{
- /* no known/supported struct */
- vn_encode_simple_pointer(enc, NULL);
-}
-
-static inline void
-vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)
-{
- /* skip val->{sType,pNext} */
- vn_encode_uint32_t(enc, &val->deviceIndexCount);
- if (val->pDeviceIndices) {
- vn_encode_array_size(enc, val->deviceIndexCount);
- vn_encode_uint32_t_array(enc, val->pDeviceIndices, val->deviceIndexCount);
- } else {
- vn_encode_array_size(enc, 0);
- }
-}
-
-static inline void
-vn_encode_VkBindBufferMemoryDeviceGroupInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)
-{
- assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO);
- vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO });
- vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(enc, val->pNext);
- vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, val);
-}
-
static inline void *
vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(struct vn_cs_decoder *dec)
{
@@ -335,47 +306,6 @@ vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle(VkBindBufferMemoryDeviceGrou
/* struct VkBindBufferMemoryInfo chain */
-static inline void
-vn_encode_VkBindBufferMemoryInfo_pnext(struct vn_cs_encoder *enc, const void *val)
-{
- const VkBaseInStructure *pnext = val;
-
- while (pnext) {
- switch ((int32_t)pnext->sType) {
- case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
- vn_encode_simple_pointer(enc, pnext);
- vn_encode_VkStructureType(enc, &pnext->sType);
- vn_encode_VkBindBufferMemoryInfo_pnext(enc, pnext->pNext);
- vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, (const VkBindBufferMemoryDeviceGroupInfo *)pnext);
- return;
- default:
- /* ignore unknown/unsupported struct */
- break;
- }
- pnext = pnext->pNext;
- }
-
- vn_encode_simple_pointer(enc, NULL);
-}
-
-static inline void
-vn_encode_VkBindBufferMemoryInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)
-{
- /* skip val->{sType,pNext} */
- vn_encode_VkBuffer(enc, &val->buffer);
- vn_encode_VkDeviceMemory(enc, &val->memory);
- vn_encode_VkDeviceSize(enc, &val->memoryOffset);
-}
-
-static inline void
-vn_encode_VkBindBufferMemoryInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)
-{
- assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO);
- vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO });
- vn_encode_VkBindBufferMemoryInfo_pnext(enc, val->pNext);
- vn_encode_VkBindBufferMemoryInfo_self(enc, val);
-}
-
static inline void *
vn_decode_VkBindBufferMemoryInfo_pnext_temp(struct vn_cs_decoder *dec)
{
@@ -515,31 +445,73 @@ vn_replace_VkBufferMemoryRequirementsInfo2_handle(VkBufferMemoryRequirementsInfo
} while (pnext);
}
-/* struct VkBufferDeviceAddressInfo chain */
+/* struct VkDeviceBufferMemoryRequirements chain */
-static inline void
-vn_encode_VkBufferDeviceAddressInfo_pnext(struct vn_cs_encoder *enc, const void *val)
+static inline void *
+vn_decode_VkDeviceBufferMemoryRequirements_pnext_temp(struct vn_cs_decoder *dec)
{
/* no known/supported struct */
- vn_encode_simple_pointer(enc, NULL);
+ if (vn_decode_simple_pointer(dec))
+ vn_cs_decoder_set_fatal(dec);
+ return NULL;
}
static inline void
-vn_encode_VkBufferDeviceAddressInfo_self(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)
+vn_decode_VkDeviceBufferMemoryRequirements_self_temp(struct vn_cs_decoder *dec, VkDeviceBufferMemoryRequirements *val)
{
/* skip val->{sType,pNext} */
- vn_encode_VkBuffer(enc, &val->buffer);
+ if (vn_decode_simple_pointer(dec)) {
+ val->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pCreateInfo));
+ if (!val->pCreateInfo) return;
+ vn_decode_VkBufferCreateInfo_temp(dec, (VkBufferCreateInfo *)val->pCreateInfo);
+ } else {
+ val->pCreateInfo = NULL;
+ vn_cs_decoder_set_fatal(dec);
+ }
}
static inline void
-vn_encode_VkBufferDeviceAddressInfo(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)
+vn_decode_VkDeviceBufferMemoryRequirements_temp(struct vn_cs_decoder *dec, VkDeviceBufferMemoryRequirements *val)
{
- assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO);
- vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO });
- vn_encode_VkBufferDeviceAddressInfo_pnext(enc, val->pNext);
- vn_encode_VkBufferDeviceAddressInfo_self(enc, val);
+ VkStructureType stype;
+ vn_decode_VkStructureType(dec, &stype);
+ if (stype != VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS)
+ vn_cs_decoder_set_fatal(dec);
+
+ val->sType = stype;
+ val->pNext = vn_decode_VkDeviceBufferMemoryRequirements_pnext_temp(dec);
+ vn_decode_VkDeviceBufferMemoryRequirements_self_temp(dec, val);
+}
+
+static inline void
+vn_replace_VkDeviceBufferMemoryRequirements_handle_self(VkDeviceBufferMemoryRequirements *val)
+{
+ /* skip val->sType */
+ /* skip val->pNext */
+ if (val->pCreateInfo)
+ vn_replace_VkBufferCreateInfo_handle((VkBufferCreateInfo *)val->pCreateInfo);
}
+static inline void
+vn_replace_VkDeviceBufferMemoryRequirements_handle(VkDeviceBufferMemoryRequirements *val)
+{
+ struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
+
+ do {
+ switch ((int32_t)pnext->sType) {
+ case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS:
+ vn_replace_VkDeviceBufferMemoryRequirements_handle_self((VkDeviceBufferMemoryRequirements *)pnext);
+ break;
+ default:
+ /* ignore unknown/unsupported struct */
+ break;
+ }
+ pnext = pnext->pNext;
+ } while (pnext);
+}
+
+/* struct VkBufferDeviceAddressInfo chain */
+
static inline void *
vn_decode_VkBufferDeviceAddressInfo_pnext_temp(struct vn_cs_decoder *dec)
{
@@ -802,6 +774,45 @@ static inline void vn_encode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_e
vn_encode_VkMemoryRequirements2(enc, args->pMemoryRequirements);
}
+static inline void vn_decode_vkGetDeviceBufferMemoryRequirements_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetDeviceBufferMemoryRequirements *args)
+{
+ vn_decode_VkDevice_lookup(dec, &args->device);
+ if (vn_decode_simple_pointer(dec)) {
+ args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
+ if (!args->pInfo) return;
+ vn_decode_VkDeviceBufferMemoryRequirements_temp(dec, (VkDeviceBufferMemoryRequirements *)args->pInfo);
+ } else {
+ args->pInfo = NULL;
+ vn_cs_decoder_set_fatal(dec);
+ }
+ if (vn_decode_simple_pointer(dec)) {
+ args->pMemoryRequirements = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pMemoryRequirements));
+ if (!args->pMemoryRequirements) return;
+ vn_decode_VkMemoryRequirements2_partial_temp(dec, args->pMemoryRequirements);
+ } else {
+ args->pMemoryRequirements = NULL;
+ vn_cs_decoder_set_fatal(dec);
+ }
+}
+
+static inline void vn_replace_vkGetDeviceBufferMemoryRequirements_args_handle(struct vn_command_vkGetDeviceBufferMemoryRequirements *args)
+{
+ vn_replace_VkDevice_handle(&args->device);
+ if (args->pInfo)
+ vn_replace_VkDeviceBufferMemoryRequirements_handle((VkDeviceBufferMemoryRequirements *)args->pInfo);
+ /* skip args->pMemoryRequirements */
+}
+
+static inline void vn_encode_vkGetDeviceBufferMemoryRequirements_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetDeviceBufferMemoryRequirements *args)
+{
+ vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetDeviceBufferMemoryRequirements_EXT});
+
+ /* skip args->device */
+ /* skip args->pInfo */
+ if (vn_encode_simple_pointer(enc, args->pMemoryRequirements))
+ vn_encode_VkMemoryRequirements2(enc, args->pMemoryRequirements);
+}
+
static inline void vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
{
vn_decode_VkDevice_lookup(dec, &args->device);
@@ -1022,6 +1033,31 @@ static inline void vn_dispatch_vkGetBufferMemoryRequirements2(struct vn_dispatch
vn_cs_decoder_reset_temp_pool(ctx->decoder);
}
+static inline void vn_dispatch_vkGetDeviceBufferMemoryRequirements(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
+{
+ struct vn_command_vkGetDeviceBufferMemoryRequirements args;
+
+ if (!ctx->dispatch_vkGetDeviceBufferMemoryRequirements) {
+ vn_cs_decoder_set_fatal(ctx->decoder);
+ return;
+ }
+
+ vn_decode_vkGetDeviceBufferMemoryRequirements_args_temp(ctx->decoder, &args);
+ if (!args.device) {
+ vn_cs_decoder_set_fatal(ctx->decoder);
+ return;
+ }
+
+ if (!vn_cs_decoder_get_fatal(ctx->decoder))
+ ctx->dispatch_vkGetDeviceBufferMemoryRequirements(ctx, &args);
+
+
+ if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
+ vn_encode_vkGetDeviceBufferMemoryRequirements_reply(ctx->encoder, &args);
+
+ vn_cs_decoder_reset_temp_pool(ctx->decoder);
+}
+
static inline void vn_dispatch_vkGetBufferOpaqueCaptureAddress(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
{
struct vn_command_vkGetBufferOpaqueCaptureAddress args;