1 /* This file is generated by venus-protocol. See vn_protocol_renderer.h. */
2
3 /*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8 #ifndef VN_PROTOCOL_RENDERER_BUFFER_VIEW_H
9 #define VN_PROTOCOL_RENDERER_BUFFER_VIEW_H
10
11 #include "vn_protocol_renderer_structs.h"
12
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wpointer-arith"
15 #pragma GCC diagnostic ignored "-Wunused-parameter"
16
17 /* struct VkBufferViewCreateInfo chain */
18
19 static inline void *
vn_decode_VkBufferViewCreateInfo_pnext_temp(struct vn_cs_decoder * dec)20 vn_decode_VkBufferViewCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
21 {
22 /* no known/supported struct */
23 if (vn_decode_simple_pointer(dec))
24 vn_cs_decoder_set_fatal(dec);
25 return NULL;
26 }
27
28 static inline void
vn_decode_VkBufferViewCreateInfo_self_temp(struct vn_cs_decoder * dec,VkBufferViewCreateInfo * val)29 vn_decode_VkBufferViewCreateInfo_self_temp(struct vn_cs_decoder *dec, VkBufferViewCreateInfo *val)
30 {
31 /* skip val->{sType,pNext} */
32 vn_decode_VkFlags(dec, &val->flags);
33 vn_decode_VkBuffer_lookup(dec, &val->buffer);
34 vn_decode_VkFormat(dec, &val->format);
35 vn_decode_VkDeviceSize(dec, &val->offset);
36 vn_decode_VkDeviceSize(dec, &val->range);
37 }
38
39 static inline void
vn_decode_VkBufferViewCreateInfo_temp(struct vn_cs_decoder * dec,VkBufferViewCreateInfo * val)40 vn_decode_VkBufferViewCreateInfo_temp(struct vn_cs_decoder *dec, VkBufferViewCreateInfo *val)
41 {
42 VkStructureType stype;
43 vn_decode_VkStructureType(dec, &stype);
44 if (stype != VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
45 vn_cs_decoder_set_fatal(dec);
46
47 val->sType = stype;
48 val->pNext = vn_decode_VkBufferViewCreateInfo_pnext_temp(dec);
49 vn_decode_VkBufferViewCreateInfo_self_temp(dec, val);
50 }
51
52 static inline void
vn_replace_VkBufferViewCreateInfo_handle_self(VkBufferViewCreateInfo * val)53 vn_replace_VkBufferViewCreateInfo_handle_self(VkBufferViewCreateInfo *val)
54 {
55 /* skip val->sType */
56 /* skip val->pNext */
57 /* skip val->flags */
58 vn_replace_VkBuffer_handle(&val->buffer);
59 /* skip val->format */
60 /* skip val->offset */
61 /* skip val->range */
62 }
63
64 static inline void
vn_replace_VkBufferViewCreateInfo_handle(VkBufferViewCreateInfo * val)65 vn_replace_VkBufferViewCreateInfo_handle(VkBufferViewCreateInfo *val)
66 {
67 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
68
69 do {
70 switch ((int32_t)pnext->sType) {
71 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:
72 vn_replace_VkBufferViewCreateInfo_handle_self((VkBufferViewCreateInfo *)pnext);
73 break;
74 default:
75 /* ignore unknown/unsupported struct */
76 break;
77 }
78 pnext = pnext->pNext;
79 } while (pnext);
80 }
81
vn_decode_vkCreateBufferView_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateBufferView * args)82 static inline void vn_decode_vkCreateBufferView_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateBufferView *args)
83 {
84 vn_decode_VkDevice_lookup(dec, &args->device);
85 if (vn_decode_simple_pointer(dec)) {
86 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
87 if (!args->pCreateInfo) return;
88 vn_decode_VkBufferViewCreateInfo_temp(dec, (VkBufferViewCreateInfo *)args->pCreateInfo);
89 } else {
90 args->pCreateInfo = NULL;
91 vn_cs_decoder_set_fatal(dec);
92 }
93 if (vn_decode_simple_pointer(dec)) {
94 vn_cs_decoder_set_fatal(dec);
95 } else {
96 args->pAllocator = NULL;
97 }
98 if (vn_decode_simple_pointer(dec)) {
99 args->pView = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pView));
100 if (!args->pView) return;
101 vn_decode_VkBufferView(dec, args->pView);
102 } else {
103 args->pView = NULL;
104 vn_cs_decoder_set_fatal(dec);
105 }
106 }
107
vn_replace_vkCreateBufferView_args_handle(struct vn_command_vkCreateBufferView * args)108 static inline void vn_replace_vkCreateBufferView_args_handle(struct vn_command_vkCreateBufferView *args)
109 {
110 vn_replace_VkDevice_handle(&args->device);
111 if (args->pCreateInfo)
112 vn_replace_VkBufferViewCreateInfo_handle((VkBufferViewCreateInfo *)args->pCreateInfo);
113 /* skip args->pAllocator */
114 /* skip args->pView */
115 }
116
vn_encode_vkCreateBufferView_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateBufferView * args)117 static inline void vn_encode_vkCreateBufferView_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateBufferView *args)
118 {
119 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateBufferView_EXT});
120
121 vn_encode_VkResult(enc, &args->ret);
122 /* skip args->device */
123 /* skip args->pCreateInfo */
124 /* skip args->pAllocator */
125 if (vn_encode_simple_pointer(enc, args->pView))
126 vn_encode_VkBufferView(enc, args->pView);
127 }
128
vn_decode_vkDestroyBufferView_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyBufferView * args)129 static inline void vn_decode_vkDestroyBufferView_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyBufferView *args)
130 {
131 vn_decode_VkDevice_lookup(dec, &args->device);
132 vn_decode_VkBufferView_lookup(dec, &args->bufferView);
133 if (vn_decode_simple_pointer(dec)) {
134 vn_cs_decoder_set_fatal(dec);
135 } else {
136 args->pAllocator = NULL;
137 }
138 }
139
vn_replace_vkDestroyBufferView_args_handle(struct vn_command_vkDestroyBufferView * args)140 static inline void vn_replace_vkDestroyBufferView_args_handle(struct vn_command_vkDestroyBufferView *args)
141 {
142 vn_replace_VkDevice_handle(&args->device);
143 vn_replace_VkBufferView_handle(&args->bufferView);
144 /* skip args->pAllocator */
145 }
146
vn_encode_vkDestroyBufferView_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyBufferView * args)147 static inline void vn_encode_vkDestroyBufferView_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyBufferView *args)
148 {
149 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyBufferView_EXT});
150
151 /* skip args->device */
152 /* skip args->bufferView */
153 /* skip args->pAllocator */
154 }
155
vn_dispatch_vkCreateBufferView(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)156 static inline void vn_dispatch_vkCreateBufferView(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
157 {
158 struct vn_command_vkCreateBufferView args;
159
160 if (!ctx->dispatch_vkCreateBufferView) {
161 vn_cs_decoder_set_fatal(ctx->decoder);
162 return;
163 }
164
165 vn_decode_vkCreateBufferView_args_temp(ctx->decoder, &args);
166 if (!args.device) {
167 vn_cs_decoder_set_fatal(ctx->decoder);
168 return;
169 }
170
171 if (!vn_cs_decoder_get_fatal(ctx->decoder))
172 ctx->dispatch_vkCreateBufferView(ctx, &args);
173
174 #ifdef DEBUG
175 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
176 vn_dispatch_debug_log(ctx, "vkCreateBufferView returned %d", args.ret);
177 #endif
178
179 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
180 vn_encode_vkCreateBufferView_reply(ctx->encoder, &args);
181
182 vn_cs_decoder_reset_temp_pool(ctx->decoder);
183 }
184
vn_dispatch_vkDestroyBufferView(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)185 static inline void vn_dispatch_vkDestroyBufferView(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
186 {
187 struct vn_command_vkDestroyBufferView args;
188
189 if (!ctx->dispatch_vkDestroyBufferView) {
190 vn_cs_decoder_set_fatal(ctx->decoder);
191 return;
192 }
193
194 vn_decode_vkDestroyBufferView_args_temp(ctx->decoder, &args);
195 if (!args.device) {
196 vn_cs_decoder_set_fatal(ctx->decoder);
197 return;
198 }
199
200 if (!vn_cs_decoder_get_fatal(ctx->decoder))
201 ctx->dispatch_vkDestroyBufferView(ctx, &args);
202
203
204 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
205 vn_encode_vkDestroyBufferView_reply(ctx->encoder, &args);
206
207 vn_cs_decoder_reset_temp_pool(ctx->decoder);
208 }
209
210 #pragma GCC diagnostic pop
211
212 #endif /* VN_PROTOCOL_RENDERER_BUFFER_VIEW_H */
213