xref: /aosp_15_r20/external/virglrenderer/src/venus/venus-protocol/vn_protocol_renderer_image_view.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_IMAGE_VIEW_H
9 #define VN_PROTOCOL_RENDERER_IMAGE_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 VkImageViewUsageCreateInfo chain */
18 
19 static inline void *
vn_decode_VkImageViewUsageCreateInfo_pnext_temp(struct vn_cs_decoder * dec)20 vn_decode_VkImageViewUsageCreateInfo_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_VkImageViewUsageCreateInfo_self_temp(struct vn_cs_decoder * dec,VkImageViewUsageCreateInfo * val)29 vn_decode_VkImageViewUsageCreateInfo_self_temp(struct vn_cs_decoder *dec, VkImageViewUsageCreateInfo *val)
30 {
31     /* skip val->{sType,pNext} */
32     vn_decode_VkFlags(dec, &val->usage);
33 }
34 
35 static inline void
vn_decode_VkImageViewUsageCreateInfo_temp(struct vn_cs_decoder * dec,VkImageViewUsageCreateInfo * val)36 vn_decode_VkImageViewUsageCreateInfo_temp(struct vn_cs_decoder *dec, VkImageViewUsageCreateInfo *val)
37 {
38     VkStructureType stype;
39     vn_decode_VkStructureType(dec, &stype);
40     if (stype != VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO)
41         vn_cs_decoder_set_fatal(dec);
42 
43     val->sType = stype;
44     val->pNext = vn_decode_VkImageViewUsageCreateInfo_pnext_temp(dec);
45     vn_decode_VkImageViewUsageCreateInfo_self_temp(dec, val);
46 }
47 
48 static inline void
vn_replace_VkImageViewUsageCreateInfo_handle_self(VkImageViewUsageCreateInfo * val)49 vn_replace_VkImageViewUsageCreateInfo_handle_self(VkImageViewUsageCreateInfo *val)
50 {
51     /* skip val->sType */
52     /* skip val->pNext */
53     /* skip val->usage */
54 }
55 
56 static inline void
vn_replace_VkImageViewUsageCreateInfo_handle(VkImageViewUsageCreateInfo * val)57 vn_replace_VkImageViewUsageCreateInfo_handle(VkImageViewUsageCreateInfo *val)
58 {
59     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
60 
61     do {
62         switch ((int32_t)pnext->sType) {
63         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
64             vn_replace_VkImageViewUsageCreateInfo_handle_self((VkImageViewUsageCreateInfo *)pnext);
65             break;
66         default:
67             /* ignore unknown/unsupported struct */
68             break;
69         }
70         pnext = pnext->pNext;
71     } while (pnext);
72 }
73 
74 /* struct VkImageViewMinLodCreateInfoEXT chain */
75 
76 static inline void *
vn_decode_VkImageViewMinLodCreateInfoEXT_pnext_temp(struct vn_cs_decoder * dec)77 vn_decode_VkImageViewMinLodCreateInfoEXT_pnext_temp(struct vn_cs_decoder *dec)
78 {
79     /* no known/supported struct */
80     if (vn_decode_simple_pointer(dec))
81         vn_cs_decoder_set_fatal(dec);
82     return NULL;
83 }
84 
85 static inline void
vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(struct vn_cs_decoder * dec,VkImageViewMinLodCreateInfoEXT * val)86 vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(struct vn_cs_decoder *dec, VkImageViewMinLodCreateInfoEXT *val)
87 {
88     /* skip val->{sType,pNext} */
89     vn_decode_float(dec, &val->minLod);
90 }
91 
92 static inline void
vn_decode_VkImageViewMinLodCreateInfoEXT_temp(struct vn_cs_decoder * dec,VkImageViewMinLodCreateInfoEXT * val)93 vn_decode_VkImageViewMinLodCreateInfoEXT_temp(struct vn_cs_decoder *dec, VkImageViewMinLodCreateInfoEXT *val)
94 {
95     VkStructureType stype;
96     vn_decode_VkStructureType(dec, &stype);
97     if (stype != VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT)
98         vn_cs_decoder_set_fatal(dec);
99 
100     val->sType = stype;
101     val->pNext = vn_decode_VkImageViewMinLodCreateInfoEXT_pnext_temp(dec);
102     vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(dec, val);
103 }
104 
105 static inline void
vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self(VkImageViewMinLodCreateInfoEXT * val)106 vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self(VkImageViewMinLodCreateInfoEXT *val)
107 {
108     /* skip val->sType */
109     /* skip val->pNext */
110     /* skip val->minLod */
111 }
112 
113 static inline void
vn_replace_VkImageViewMinLodCreateInfoEXT_handle(VkImageViewMinLodCreateInfoEXT * val)114 vn_replace_VkImageViewMinLodCreateInfoEXT_handle(VkImageViewMinLodCreateInfoEXT *val)
115 {
116     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
117 
118     do {
119         switch ((int32_t)pnext->sType) {
120         case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT:
121             vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self((VkImageViewMinLodCreateInfoEXT *)pnext);
122             break;
123         default:
124             /* ignore unknown/unsupported struct */
125             break;
126         }
127         pnext = pnext->pNext;
128     } while (pnext);
129 }
130 
131 /* struct VkImageViewCreateInfo chain */
132 
133 static inline void *
vn_decode_VkImageViewCreateInfo_pnext_temp(struct vn_cs_decoder * dec)134 vn_decode_VkImageViewCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
135 {
136     VkBaseOutStructure *pnext;
137     VkStructureType stype;
138 
139     if (!vn_decode_simple_pointer(dec))
140         return NULL;
141 
142     vn_decode_VkStructureType(dec, &stype);
143     switch ((int32_t)stype) {
144     case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
145         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkImageViewUsageCreateInfo));
146         if (pnext) {
147             pnext->sType = stype;
148             pnext->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
149             vn_decode_VkImageViewUsageCreateInfo_self_temp(dec, (VkImageViewUsageCreateInfo *)pnext);
150         }
151         break;
152     case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
153         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkSamplerYcbcrConversionInfo));
154         if (pnext) {
155             pnext->sType = stype;
156             pnext->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
157             vn_decode_VkSamplerYcbcrConversionInfo_self_temp(dec, (VkSamplerYcbcrConversionInfo *)pnext);
158         }
159         break;
160     case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT:
161         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkImageViewMinLodCreateInfoEXT));
162         if (pnext) {
163             pnext->sType = stype;
164             pnext->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
165             vn_decode_VkImageViewMinLodCreateInfoEXT_self_temp(dec, (VkImageViewMinLodCreateInfoEXT *)pnext);
166         }
167         break;
168     default:
169         /* unexpected struct */
170         pnext = NULL;
171         vn_cs_decoder_set_fatal(dec);
172         break;
173     }
174 
175     return pnext;
176 }
177 
178 static inline void
vn_decode_VkImageViewCreateInfo_self_temp(struct vn_cs_decoder * dec,VkImageViewCreateInfo * val)179 vn_decode_VkImageViewCreateInfo_self_temp(struct vn_cs_decoder *dec, VkImageViewCreateInfo *val)
180 {
181     /* skip val->{sType,pNext} */
182     vn_decode_VkFlags(dec, &val->flags);
183     vn_decode_VkImage_lookup(dec, &val->image);
184     vn_decode_VkImageViewType(dec, &val->viewType);
185     vn_decode_VkFormat(dec, &val->format);
186     vn_decode_VkComponentMapping_temp(dec, &val->components);
187     vn_decode_VkImageSubresourceRange_temp(dec, &val->subresourceRange);
188 }
189 
190 static inline void
vn_decode_VkImageViewCreateInfo_temp(struct vn_cs_decoder * dec,VkImageViewCreateInfo * val)191 vn_decode_VkImageViewCreateInfo_temp(struct vn_cs_decoder *dec, VkImageViewCreateInfo *val)
192 {
193     VkStructureType stype;
194     vn_decode_VkStructureType(dec, &stype);
195     if (stype != VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
196         vn_cs_decoder_set_fatal(dec);
197 
198     val->sType = stype;
199     val->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
200     vn_decode_VkImageViewCreateInfo_self_temp(dec, val);
201 }
202 
203 static inline void
vn_replace_VkImageViewCreateInfo_handle_self(VkImageViewCreateInfo * val)204 vn_replace_VkImageViewCreateInfo_handle_self(VkImageViewCreateInfo *val)
205 {
206     /* skip val->sType */
207     /* skip val->pNext */
208     /* skip val->flags */
209     vn_replace_VkImage_handle(&val->image);
210     /* skip val->viewType */
211     /* skip val->format */
212     vn_replace_VkComponentMapping_handle(&val->components);
213     vn_replace_VkImageSubresourceRange_handle(&val->subresourceRange);
214 }
215 
216 static inline void
vn_replace_VkImageViewCreateInfo_handle(VkImageViewCreateInfo * val)217 vn_replace_VkImageViewCreateInfo_handle(VkImageViewCreateInfo *val)
218 {
219     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
220 
221     do {
222         switch ((int32_t)pnext->sType) {
223         case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:
224             vn_replace_VkImageViewCreateInfo_handle_self((VkImageViewCreateInfo *)pnext);
225             break;
226         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
227             vn_replace_VkImageViewUsageCreateInfo_handle_self((VkImageViewUsageCreateInfo *)pnext);
228             break;
229         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
230             vn_replace_VkSamplerYcbcrConversionInfo_handle_self((VkSamplerYcbcrConversionInfo *)pnext);
231             break;
232         case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT:
233             vn_replace_VkImageViewMinLodCreateInfoEXT_handle_self((VkImageViewMinLodCreateInfoEXT *)pnext);
234             break;
235         default:
236             /* ignore unknown/unsupported struct */
237             break;
238         }
239         pnext = pnext->pNext;
240     } while (pnext);
241 }
242 
vn_decode_vkCreateImageView_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateImageView * args)243 static inline void vn_decode_vkCreateImageView_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateImageView *args)
244 {
245     vn_decode_VkDevice_lookup(dec, &args->device);
246     if (vn_decode_simple_pointer(dec)) {
247         args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
248         if (!args->pCreateInfo) return;
249         vn_decode_VkImageViewCreateInfo_temp(dec, (VkImageViewCreateInfo *)args->pCreateInfo);
250     } else {
251         args->pCreateInfo = NULL;
252         vn_cs_decoder_set_fatal(dec);
253     }
254     if (vn_decode_simple_pointer(dec)) {
255         vn_cs_decoder_set_fatal(dec);
256     } else {
257         args->pAllocator = NULL;
258     }
259     if (vn_decode_simple_pointer(dec)) {
260         args->pView = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pView));
261         if (!args->pView) return;
262         vn_decode_VkImageView(dec, args->pView);
263     } else {
264         args->pView = NULL;
265         vn_cs_decoder_set_fatal(dec);
266     }
267 }
268 
vn_replace_vkCreateImageView_args_handle(struct vn_command_vkCreateImageView * args)269 static inline void vn_replace_vkCreateImageView_args_handle(struct vn_command_vkCreateImageView *args)
270 {
271     vn_replace_VkDevice_handle(&args->device);
272     if (args->pCreateInfo)
273         vn_replace_VkImageViewCreateInfo_handle((VkImageViewCreateInfo *)args->pCreateInfo);
274     /* skip args->pAllocator */
275     /* skip args->pView */
276 }
277 
vn_encode_vkCreateImageView_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateImageView * args)278 static inline void vn_encode_vkCreateImageView_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateImageView *args)
279 {
280     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateImageView_EXT});
281 
282     vn_encode_VkResult(enc, &args->ret);
283     /* skip args->device */
284     /* skip args->pCreateInfo */
285     /* skip args->pAllocator */
286     if (vn_encode_simple_pointer(enc, args->pView))
287         vn_encode_VkImageView(enc, args->pView);
288 }
289 
vn_decode_vkDestroyImageView_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyImageView * args)290 static inline void vn_decode_vkDestroyImageView_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyImageView *args)
291 {
292     vn_decode_VkDevice_lookup(dec, &args->device);
293     vn_decode_VkImageView_lookup(dec, &args->imageView);
294     if (vn_decode_simple_pointer(dec)) {
295         vn_cs_decoder_set_fatal(dec);
296     } else {
297         args->pAllocator = NULL;
298     }
299 }
300 
vn_replace_vkDestroyImageView_args_handle(struct vn_command_vkDestroyImageView * args)301 static inline void vn_replace_vkDestroyImageView_args_handle(struct vn_command_vkDestroyImageView *args)
302 {
303     vn_replace_VkDevice_handle(&args->device);
304     vn_replace_VkImageView_handle(&args->imageView);
305     /* skip args->pAllocator */
306 }
307 
vn_encode_vkDestroyImageView_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyImageView * args)308 static inline void vn_encode_vkDestroyImageView_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyImageView *args)
309 {
310     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyImageView_EXT});
311 
312     /* skip args->device */
313     /* skip args->imageView */
314     /* skip args->pAllocator */
315 }
316 
vn_dispatch_vkCreateImageView(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)317 static inline void vn_dispatch_vkCreateImageView(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
318 {
319     struct vn_command_vkCreateImageView args;
320 
321     if (!ctx->dispatch_vkCreateImageView) {
322         vn_cs_decoder_set_fatal(ctx->decoder);
323         return;
324     }
325 
326     vn_decode_vkCreateImageView_args_temp(ctx->decoder, &args);
327     if (!args.device) {
328         vn_cs_decoder_set_fatal(ctx->decoder);
329         return;
330     }
331 
332     if (!vn_cs_decoder_get_fatal(ctx->decoder))
333         ctx->dispatch_vkCreateImageView(ctx, &args);
334 
335 #ifdef DEBUG
336     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
337         vn_dispatch_debug_log(ctx, "vkCreateImageView returned %d", args.ret);
338 #endif
339 
340     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
341        vn_encode_vkCreateImageView_reply(ctx->encoder, &args);
342 
343     vn_cs_decoder_reset_temp_pool(ctx->decoder);
344 }
345 
vn_dispatch_vkDestroyImageView(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)346 static inline void vn_dispatch_vkDestroyImageView(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
347 {
348     struct vn_command_vkDestroyImageView args;
349 
350     if (!ctx->dispatch_vkDestroyImageView) {
351         vn_cs_decoder_set_fatal(ctx->decoder);
352         return;
353     }
354 
355     vn_decode_vkDestroyImageView_args_temp(ctx->decoder, &args);
356     if (!args.device) {
357         vn_cs_decoder_set_fatal(ctx->decoder);
358         return;
359     }
360 
361     if (!vn_cs_decoder_get_fatal(ctx->decoder))
362         ctx->dispatch_vkDestroyImageView(ctx, &args);
363 
364 
365     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
366        vn_encode_vkDestroyImageView_reply(ctx->encoder, &args);
367 
368     vn_cs_decoder_reset_temp_pool(ctx->decoder);
369 }
370 
371 #pragma GCC diagnostic pop
372 
373 #endif /* VN_PROTOCOL_RENDERER_IMAGE_VIEW_H */
374