xref: /aosp_15_r20/external/virglrenderer/src/venus/venus-protocol/vn_protocol_renderer_framebuffer.h (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
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