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_FRAMEBUFFER_H
9 #define VN_PROTOCOL_RENDERER_FRAMEBUFFER_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 VkFramebufferAttachmentImageInfo chain */
18
19 static inline void *
vn_decode_VkFramebufferAttachmentImageInfo_pnext_temp(struct vn_cs_decoder * dec)20 vn_decode_VkFramebufferAttachmentImageInfo_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_VkFramebufferAttachmentImageInfo_self_temp(struct vn_cs_decoder * dec,VkFramebufferAttachmentImageInfo * val)29 vn_decode_VkFramebufferAttachmentImageInfo_self_temp(struct vn_cs_decoder *dec, VkFramebufferAttachmentImageInfo *val)
30 {
31 /* skip val->{sType,pNext} */
32 vn_decode_VkFlags(dec, &val->flags);
33 vn_decode_VkFlags(dec, &val->usage);
34 vn_decode_uint32_t(dec, &val->width);
35 vn_decode_uint32_t(dec, &val->height);
36 vn_decode_uint32_t(dec, &val->layerCount);
37 vn_decode_uint32_t(dec, &val->viewFormatCount);
38 if (vn_peek_array_size(dec)) {
39 const size_t array_size = vn_decode_array_size(dec, val->viewFormatCount);
40 val->pViewFormats = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pViewFormats) * array_size);
41 if (!val->pViewFormats) return;
42 vn_decode_VkFormat_array(dec, (VkFormat *)val->pViewFormats, array_size);
43 } else {
44 vn_decode_array_size(dec, val->viewFormatCount);
45 val->pViewFormats = NULL;
46 }
47 }
48
49 static inline void
vn_decode_VkFramebufferAttachmentImageInfo_temp(struct vn_cs_decoder * dec,VkFramebufferAttachmentImageInfo * val)50 vn_decode_VkFramebufferAttachmentImageInfo_temp(struct vn_cs_decoder *dec, VkFramebufferAttachmentImageInfo *val)
51 {
52 VkStructureType stype;
53 vn_decode_VkStructureType(dec, &stype);
54 if (stype != VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO)
55 vn_cs_decoder_set_fatal(dec);
56
57 val->sType = stype;
58 val->pNext = vn_decode_VkFramebufferAttachmentImageInfo_pnext_temp(dec);
59 vn_decode_VkFramebufferAttachmentImageInfo_self_temp(dec, val);
60 }
61
62 static inline void
vn_replace_VkFramebufferAttachmentImageInfo_handle_self(VkFramebufferAttachmentImageInfo * val)63 vn_replace_VkFramebufferAttachmentImageInfo_handle_self(VkFramebufferAttachmentImageInfo *val)
64 {
65 /* skip val->sType */
66 /* skip val->pNext */
67 /* skip val->flags */
68 /* skip val->usage */
69 /* skip val->width */
70 /* skip val->height */
71 /* skip val->layerCount */
72 /* skip val->viewFormatCount */
73 /* skip val->pViewFormats */
74 }
75
76 static inline void
vn_replace_VkFramebufferAttachmentImageInfo_handle(VkFramebufferAttachmentImageInfo * val)77 vn_replace_VkFramebufferAttachmentImageInfo_handle(VkFramebufferAttachmentImageInfo *val)
78 {
79 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
80
81 do {
82 switch ((int32_t)pnext->sType) {
83 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO:
84 vn_replace_VkFramebufferAttachmentImageInfo_handle_self((VkFramebufferAttachmentImageInfo *)pnext);
85 break;
86 default:
87 /* ignore unknown/unsupported struct */
88 break;
89 }
90 pnext = pnext->pNext;
91 } while (pnext);
92 }
93
94 /* struct VkFramebufferAttachmentsCreateInfo chain */
95
96 static inline void *
vn_decode_VkFramebufferAttachmentsCreateInfo_pnext_temp(struct vn_cs_decoder * dec)97 vn_decode_VkFramebufferAttachmentsCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
98 {
99 /* no known/supported struct */
100 if (vn_decode_simple_pointer(dec))
101 vn_cs_decoder_set_fatal(dec);
102 return NULL;
103 }
104
105 static inline void
vn_decode_VkFramebufferAttachmentsCreateInfo_self_temp(struct vn_cs_decoder * dec,VkFramebufferAttachmentsCreateInfo * val)106 vn_decode_VkFramebufferAttachmentsCreateInfo_self_temp(struct vn_cs_decoder *dec, VkFramebufferAttachmentsCreateInfo *val)
107 {
108 /* skip val->{sType,pNext} */
109 vn_decode_uint32_t(dec, &val->attachmentImageInfoCount);
110 if (vn_peek_array_size(dec)) {
111 const uint32_t iter_count = vn_decode_array_size(dec, val->attachmentImageInfoCount);
112 val->pAttachmentImageInfos = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pAttachmentImageInfos) * iter_count);
113 if (!val->pAttachmentImageInfos) return;
114 for (uint32_t i = 0; i < iter_count; i++)
115 vn_decode_VkFramebufferAttachmentImageInfo_temp(dec, &((VkFramebufferAttachmentImageInfo *)val->pAttachmentImageInfos)[i]);
116 } else {
117 vn_decode_array_size(dec, val->attachmentImageInfoCount);
118 val->pAttachmentImageInfos = NULL;
119 }
120 }
121
122 static inline void
vn_decode_VkFramebufferAttachmentsCreateInfo_temp(struct vn_cs_decoder * dec,VkFramebufferAttachmentsCreateInfo * val)123 vn_decode_VkFramebufferAttachmentsCreateInfo_temp(struct vn_cs_decoder *dec, VkFramebufferAttachmentsCreateInfo *val)
124 {
125 VkStructureType stype;
126 vn_decode_VkStructureType(dec, &stype);
127 if (stype != VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO)
128 vn_cs_decoder_set_fatal(dec);
129
130 val->sType = stype;
131 val->pNext = vn_decode_VkFramebufferAttachmentsCreateInfo_pnext_temp(dec);
132 vn_decode_VkFramebufferAttachmentsCreateInfo_self_temp(dec, val);
133 }
134
135 static inline void
vn_replace_VkFramebufferAttachmentsCreateInfo_handle_self(VkFramebufferAttachmentsCreateInfo * val)136 vn_replace_VkFramebufferAttachmentsCreateInfo_handle_self(VkFramebufferAttachmentsCreateInfo *val)
137 {
138 /* skip val->sType */
139 /* skip val->pNext */
140 /* skip val->attachmentImageInfoCount */
141 if (val->pAttachmentImageInfos) {
142 for (uint32_t i = 0; i < val->attachmentImageInfoCount; i++)
143 vn_replace_VkFramebufferAttachmentImageInfo_handle(&((VkFramebufferAttachmentImageInfo *)val->pAttachmentImageInfos)[i]);
144 }
145 }
146
147 static inline void
vn_replace_VkFramebufferAttachmentsCreateInfo_handle(VkFramebufferAttachmentsCreateInfo * val)148 vn_replace_VkFramebufferAttachmentsCreateInfo_handle(VkFramebufferAttachmentsCreateInfo *val)
149 {
150 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
151
152 do {
153 switch ((int32_t)pnext->sType) {
154 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:
155 vn_replace_VkFramebufferAttachmentsCreateInfo_handle_self((VkFramebufferAttachmentsCreateInfo *)pnext);
156 break;
157 default:
158 /* ignore unknown/unsupported struct */
159 break;
160 }
161 pnext = pnext->pNext;
162 } while (pnext);
163 }
164
165 /* struct VkFramebufferCreateInfo chain */
166
167 static inline void *
vn_decode_VkFramebufferCreateInfo_pnext_temp(struct vn_cs_decoder * dec)168 vn_decode_VkFramebufferCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
169 {
170 VkBaseOutStructure *pnext;
171 VkStructureType stype;
172
173 if (!vn_decode_simple_pointer(dec))
174 return NULL;
175
176 vn_decode_VkStructureType(dec, &stype);
177 switch ((int32_t)stype) {
178 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:
179 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkFramebufferAttachmentsCreateInfo));
180 if (pnext) {
181 pnext->sType = stype;
182 pnext->pNext = vn_decode_VkFramebufferCreateInfo_pnext_temp(dec);
183 vn_decode_VkFramebufferAttachmentsCreateInfo_self_temp(dec, (VkFramebufferAttachmentsCreateInfo *)pnext);
184 }
185 break;
186 default:
187 /* unexpected struct */
188 pnext = NULL;
189 vn_cs_decoder_set_fatal(dec);
190 break;
191 }
192
193 return pnext;
194 }
195
196 static inline void
vn_decode_VkFramebufferCreateInfo_self_temp(struct vn_cs_decoder * dec,VkFramebufferCreateInfo * val)197 vn_decode_VkFramebufferCreateInfo_self_temp(struct vn_cs_decoder *dec, VkFramebufferCreateInfo *val)
198 {
199 /* skip val->{sType,pNext} */
200 vn_decode_VkFlags(dec, &val->flags);
201 vn_decode_VkRenderPass_lookup(dec, &val->renderPass);
202 vn_decode_uint32_t(dec, &val->attachmentCount);
203 if (vn_peek_array_size(dec)) {
204 const uint32_t iter_count = vn_decode_array_size(dec, val->attachmentCount);
205 val->pAttachments = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pAttachments) * iter_count);
206 if (!val->pAttachments) return;
207 for (uint32_t i = 0; i < iter_count; i++)
208 vn_decode_VkImageView_lookup(dec, &((VkImageView *)val->pAttachments)[i]);
209 } else {
210 vn_decode_array_size_unchecked(dec);
211 val->pAttachments = NULL;
212 }
213 vn_decode_uint32_t(dec, &val->width);
214 vn_decode_uint32_t(dec, &val->height);
215 vn_decode_uint32_t(dec, &val->layers);
216 }
217
218 static inline void
vn_decode_VkFramebufferCreateInfo_temp(struct vn_cs_decoder * dec,VkFramebufferCreateInfo * val)219 vn_decode_VkFramebufferCreateInfo_temp(struct vn_cs_decoder *dec, VkFramebufferCreateInfo *val)
220 {
221 VkStructureType stype;
222 vn_decode_VkStructureType(dec, &stype);
223 if (stype != VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
224 vn_cs_decoder_set_fatal(dec);
225
226 val->sType = stype;
227 val->pNext = vn_decode_VkFramebufferCreateInfo_pnext_temp(dec);
228 vn_decode_VkFramebufferCreateInfo_self_temp(dec, val);
229 }
230
231 static inline void
vn_replace_VkFramebufferCreateInfo_handle_self(VkFramebufferCreateInfo * val)232 vn_replace_VkFramebufferCreateInfo_handle_self(VkFramebufferCreateInfo *val)
233 {
234 /* skip val->sType */
235 /* skip val->pNext */
236 /* skip val->flags */
237 vn_replace_VkRenderPass_handle(&val->renderPass);
238 /* skip val->attachmentCount */
239 if (val->pAttachments) {
240 for (uint32_t i = 0; i < val->attachmentCount; i++)
241 vn_replace_VkImageView_handle(&((VkImageView *)val->pAttachments)[i]);
242 }
243 /* skip val->width */
244 /* skip val->height */
245 /* skip val->layers */
246 }
247
248 static inline void
vn_replace_VkFramebufferCreateInfo_handle(VkFramebufferCreateInfo * val)249 vn_replace_VkFramebufferCreateInfo_handle(VkFramebufferCreateInfo *val)
250 {
251 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
252
253 do {
254 switch ((int32_t)pnext->sType) {
255 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:
256 vn_replace_VkFramebufferCreateInfo_handle_self((VkFramebufferCreateInfo *)pnext);
257 break;
258 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:
259 vn_replace_VkFramebufferAttachmentsCreateInfo_handle_self((VkFramebufferAttachmentsCreateInfo *)pnext);
260 break;
261 default:
262 /* ignore unknown/unsupported struct */
263 break;
264 }
265 pnext = pnext->pNext;
266 } while (pnext);
267 }
268
vn_decode_vkCreateFramebuffer_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateFramebuffer * args)269 static inline void vn_decode_vkCreateFramebuffer_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateFramebuffer *args)
270 {
271 vn_decode_VkDevice_lookup(dec, &args->device);
272 if (vn_decode_simple_pointer(dec)) {
273 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
274 if (!args->pCreateInfo) return;
275 vn_decode_VkFramebufferCreateInfo_temp(dec, (VkFramebufferCreateInfo *)args->pCreateInfo);
276 } else {
277 args->pCreateInfo = NULL;
278 vn_cs_decoder_set_fatal(dec);
279 }
280 if (vn_decode_simple_pointer(dec)) {
281 vn_cs_decoder_set_fatal(dec);
282 } else {
283 args->pAllocator = NULL;
284 }
285 if (vn_decode_simple_pointer(dec)) {
286 args->pFramebuffer = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pFramebuffer));
287 if (!args->pFramebuffer) return;
288 vn_decode_VkFramebuffer(dec, args->pFramebuffer);
289 } else {
290 args->pFramebuffer = NULL;
291 vn_cs_decoder_set_fatal(dec);
292 }
293 }
294
vn_replace_vkCreateFramebuffer_args_handle(struct vn_command_vkCreateFramebuffer * args)295 static inline void vn_replace_vkCreateFramebuffer_args_handle(struct vn_command_vkCreateFramebuffer *args)
296 {
297 vn_replace_VkDevice_handle(&args->device);
298 if (args->pCreateInfo)
299 vn_replace_VkFramebufferCreateInfo_handle((VkFramebufferCreateInfo *)args->pCreateInfo);
300 /* skip args->pAllocator */
301 /* skip args->pFramebuffer */
302 }
303
vn_encode_vkCreateFramebuffer_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateFramebuffer * args)304 static inline void vn_encode_vkCreateFramebuffer_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateFramebuffer *args)
305 {
306 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateFramebuffer_EXT});
307
308 vn_encode_VkResult(enc, &args->ret);
309 /* skip args->device */
310 /* skip args->pCreateInfo */
311 /* skip args->pAllocator */
312 if (vn_encode_simple_pointer(enc, args->pFramebuffer))
313 vn_encode_VkFramebuffer(enc, args->pFramebuffer);
314 }
315
vn_decode_vkDestroyFramebuffer_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyFramebuffer * args)316 static inline void vn_decode_vkDestroyFramebuffer_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyFramebuffer *args)
317 {
318 vn_decode_VkDevice_lookup(dec, &args->device);
319 vn_decode_VkFramebuffer_lookup(dec, &args->framebuffer);
320 if (vn_decode_simple_pointer(dec)) {
321 vn_cs_decoder_set_fatal(dec);
322 } else {
323 args->pAllocator = NULL;
324 }
325 }
326
vn_replace_vkDestroyFramebuffer_args_handle(struct vn_command_vkDestroyFramebuffer * args)327 static inline void vn_replace_vkDestroyFramebuffer_args_handle(struct vn_command_vkDestroyFramebuffer *args)
328 {
329 vn_replace_VkDevice_handle(&args->device);
330 vn_replace_VkFramebuffer_handle(&args->framebuffer);
331 /* skip args->pAllocator */
332 }
333
vn_encode_vkDestroyFramebuffer_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyFramebuffer * args)334 static inline void vn_encode_vkDestroyFramebuffer_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyFramebuffer *args)
335 {
336 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyFramebuffer_EXT});
337
338 /* skip args->device */
339 /* skip args->framebuffer */
340 /* skip args->pAllocator */
341 }
342
vn_dispatch_vkCreateFramebuffer(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)343 static inline void vn_dispatch_vkCreateFramebuffer(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
344 {
345 struct vn_command_vkCreateFramebuffer args;
346
347 if (!ctx->dispatch_vkCreateFramebuffer) {
348 vn_cs_decoder_set_fatal(ctx->decoder);
349 return;
350 }
351
352 vn_decode_vkCreateFramebuffer_args_temp(ctx->decoder, &args);
353 if (!args.device) {
354 vn_cs_decoder_set_fatal(ctx->decoder);
355 return;
356 }
357
358 if (!vn_cs_decoder_get_fatal(ctx->decoder))
359 ctx->dispatch_vkCreateFramebuffer(ctx, &args);
360
361 #ifdef DEBUG
362 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
363 vn_dispatch_debug_log(ctx, "vkCreateFramebuffer returned %d", args.ret);
364 #endif
365
366 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
367 vn_encode_vkCreateFramebuffer_reply(ctx->encoder, &args);
368
369 vn_cs_decoder_reset_temp_pool(ctx->decoder);
370 }
371
vn_dispatch_vkDestroyFramebuffer(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)372 static inline void vn_dispatch_vkDestroyFramebuffer(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
373 {
374 struct vn_command_vkDestroyFramebuffer args;
375
376 if (!ctx->dispatch_vkDestroyFramebuffer) {
377 vn_cs_decoder_set_fatal(ctx->decoder);
378 return;
379 }
380
381 vn_decode_vkDestroyFramebuffer_args_temp(ctx->decoder, &args);
382 if (!args.device) {
383 vn_cs_decoder_set_fatal(ctx->decoder);
384 return;
385 }
386
387 if (!vn_cs_decoder_get_fatal(ctx->decoder))
388 ctx->dispatch_vkDestroyFramebuffer(ctx, &args);
389
390
391 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
392 vn_encode_vkDestroyFramebuffer_reply(ctx->encoder, &args);
393
394 vn_cs_decoder_reset_temp_pool(ctx->decoder);
395 }
396
397 #pragma GCC diagnostic pop
398
399 #endif /* VN_PROTOCOL_RENDERER_FRAMEBUFFER_H */
400