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