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 VkImageViewCreateInfo chain */
75
76 static inline void *
vn_decode_VkImageViewCreateInfo_pnext_temp(struct vn_cs_decoder * dec)77 vn_decode_VkImageViewCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
78 {
79 VkBaseOutStructure *pnext;
80 VkStructureType stype;
81
82 if (!vn_decode_simple_pointer(dec))
83 return NULL;
84
85 vn_decode_VkStructureType(dec, &stype);
86 switch ((int32_t)stype) {
87 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
88 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkImageViewUsageCreateInfo));
89 if (pnext) {
90 pnext->sType = stype;
91 pnext->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
92 vn_decode_VkImageViewUsageCreateInfo_self_temp(dec, (VkImageViewUsageCreateInfo *)pnext);
93 }
94 break;
95 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
96 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkSamplerYcbcrConversionInfo));
97 if (pnext) {
98 pnext->sType = stype;
99 pnext->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
100 vn_decode_VkSamplerYcbcrConversionInfo_self_temp(dec, (VkSamplerYcbcrConversionInfo *)pnext);
101 }
102 break;
103 default:
104 /* unexpected struct */
105 pnext = NULL;
106 vn_cs_decoder_set_fatal(dec);
107 break;
108 }
109
110 return pnext;
111 }
112
113 static inline void
vn_decode_VkImageViewCreateInfo_self_temp(struct vn_cs_decoder * dec,VkImageViewCreateInfo * val)114 vn_decode_VkImageViewCreateInfo_self_temp(struct vn_cs_decoder *dec, VkImageViewCreateInfo *val)
115 {
116 /* skip val->{sType,pNext} */
117 vn_decode_VkFlags(dec, &val->flags);
118 vn_decode_VkImage_lookup(dec, &val->image);
119 vn_decode_VkImageViewType(dec, &val->viewType);
120 vn_decode_VkFormat(dec, &val->format);
121 vn_decode_VkComponentMapping_temp(dec, &val->components);
122 vn_decode_VkImageSubresourceRange_temp(dec, &val->subresourceRange);
123 }
124
125 static inline void
vn_decode_VkImageViewCreateInfo_temp(struct vn_cs_decoder * dec,VkImageViewCreateInfo * val)126 vn_decode_VkImageViewCreateInfo_temp(struct vn_cs_decoder *dec, VkImageViewCreateInfo *val)
127 {
128 VkStructureType stype;
129 vn_decode_VkStructureType(dec, &stype);
130 if (stype != VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
131 vn_cs_decoder_set_fatal(dec);
132
133 val->sType = stype;
134 val->pNext = vn_decode_VkImageViewCreateInfo_pnext_temp(dec);
135 vn_decode_VkImageViewCreateInfo_self_temp(dec, val);
136 }
137
138 static inline void
vn_replace_VkImageViewCreateInfo_handle_self(VkImageViewCreateInfo * val)139 vn_replace_VkImageViewCreateInfo_handle_self(VkImageViewCreateInfo *val)
140 {
141 /* skip val->sType */
142 /* skip val->pNext */
143 /* skip val->flags */
144 vn_replace_VkImage_handle(&val->image);
145 /* skip val->viewType */
146 /* skip val->format */
147 vn_replace_VkComponentMapping_handle(&val->components);
148 vn_replace_VkImageSubresourceRange_handle(&val->subresourceRange);
149 }
150
151 static inline void
vn_replace_VkImageViewCreateInfo_handle(VkImageViewCreateInfo * val)152 vn_replace_VkImageViewCreateInfo_handle(VkImageViewCreateInfo *val)
153 {
154 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
155
156 do {
157 switch ((int32_t)pnext->sType) {
158 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:
159 vn_replace_VkImageViewCreateInfo_handle_self((VkImageViewCreateInfo *)pnext);
160 break;
161 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
162 vn_replace_VkImageViewUsageCreateInfo_handle_self((VkImageViewUsageCreateInfo *)pnext);
163 break;
164 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
165 vn_replace_VkSamplerYcbcrConversionInfo_handle_self((VkSamplerYcbcrConversionInfo *)pnext);
166 break;
167 default:
168 /* ignore unknown/unsupported struct */
169 break;
170 }
171 pnext = pnext->pNext;
172 } while (pnext);
173 }
174
vn_decode_vkCreateImageView_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateImageView * args)175 static inline void vn_decode_vkCreateImageView_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateImageView *args)
176 {
177 vn_decode_VkDevice_lookup(dec, &args->device);
178 if (vn_decode_simple_pointer(dec)) {
179 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
180 if (!args->pCreateInfo) return;
181 vn_decode_VkImageViewCreateInfo_temp(dec, (VkImageViewCreateInfo *)args->pCreateInfo);
182 } else {
183 args->pCreateInfo = NULL;
184 vn_cs_decoder_set_fatal(dec);
185 }
186 if (vn_decode_simple_pointer(dec)) {
187 vn_cs_decoder_set_fatal(dec);
188 } else {
189 args->pAllocator = NULL;
190 }
191 if (vn_decode_simple_pointer(dec)) {
192 args->pView = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pView));
193 if (!args->pView) return;
194 vn_decode_VkImageView(dec, args->pView);
195 } else {
196 args->pView = NULL;
197 vn_cs_decoder_set_fatal(dec);
198 }
199 }
200
vn_replace_vkCreateImageView_args_handle(struct vn_command_vkCreateImageView * args)201 static inline void vn_replace_vkCreateImageView_args_handle(struct vn_command_vkCreateImageView *args)
202 {
203 vn_replace_VkDevice_handle(&args->device);
204 if (args->pCreateInfo)
205 vn_replace_VkImageViewCreateInfo_handle((VkImageViewCreateInfo *)args->pCreateInfo);
206 /* skip args->pAllocator */
207 /* skip args->pView */
208 }
209
vn_encode_vkCreateImageView_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateImageView * args)210 static inline void vn_encode_vkCreateImageView_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateImageView *args)
211 {
212 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateImageView_EXT});
213
214 vn_encode_VkResult(enc, &args->ret);
215 /* skip args->device */
216 /* skip args->pCreateInfo */
217 /* skip args->pAllocator */
218 if (vn_encode_simple_pointer(enc, args->pView))
219 vn_encode_VkImageView(enc, args->pView);
220 }
221
vn_decode_vkDestroyImageView_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyImageView * args)222 static inline void vn_decode_vkDestroyImageView_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyImageView *args)
223 {
224 vn_decode_VkDevice_lookup(dec, &args->device);
225 vn_decode_VkImageView_lookup(dec, &args->imageView);
226 if (vn_decode_simple_pointer(dec)) {
227 vn_cs_decoder_set_fatal(dec);
228 } else {
229 args->pAllocator = NULL;
230 }
231 }
232
vn_replace_vkDestroyImageView_args_handle(struct vn_command_vkDestroyImageView * args)233 static inline void vn_replace_vkDestroyImageView_args_handle(struct vn_command_vkDestroyImageView *args)
234 {
235 vn_replace_VkDevice_handle(&args->device);
236 vn_replace_VkImageView_handle(&args->imageView);
237 /* skip args->pAllocator */
238 }
239
vn_encode_vkDestroyImageView_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyImageView * args)240 static inline void vn_encode_vkDestroyImageView_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyImageView *args)
241 {
242 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyImageView_EXT});
243
244 /* skip args->device */
245 /* skip args->imageView */
246 /* skip args->pAllocator */
247 }
248
vn_dispatch_vkCreateImageView(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)249 static inline void vn_dispatch_vkCreateImageView(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
250 {
251 struct vn_command_vkCreateImageView args;
252
253 if (!ctx->dispatch_vkCreateImageView) {
254 vn_cs_decoder_set_fatal(ctx->decoder);
255 return;
256 }
257
258 vn_decode_vkCreateImageView_args_temp(ctx->decoder, &args);
259 if (!args.device) {
260 vn_cs_decoder_set_fatal(ctx->decoder);
261 return;
262 }
263
264 if (!vn_cs_decoder_get_fatal(ctx->decoder))
265 ctx->dispatch_vkCreateImageView(ctx, &args);
266
267 #ifdef DEBUG
268 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
269 vn_dispatch_debug_log(ctx, "vkCreateImageView returned %d", args.ret);
270 #endif
271
272 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
273 vn_encode_vkCreateImageView_reply(ctx->encoder, &args);
274
275 vn_cs_decoder_reset_temp_pool(ctx->decoder);
276 }
277
vn_dispatch_vkDestroyImageView(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)278 static inline void vn_dispatch_vkDestroyImageView(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
279 {
280 struct vn_command_vkDestroyImageView args;
281
282 if (!ctx->dispatch_vkDestroyImageView) {
283 vn_cs_decoder_set_fatal(ctx->decoder);
284 return;
285 }
286
287 vn_decode_vkDestroyImageView_args_temp(ctx->decoder, &args);
288 if (!args.device) {
289 vn_cs_decoder_set_fatal(ctx->decoder);
290 return;
291 }
292
293 if (!vn_cs_decoder_get_fatal(ctx->decoder))
294 ctx->dispatch_vkDestroyImageView(ctx, &args);
295
296
297 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
298 vn_encode_vkDestroyImageView_reply(ctx->encoder, &args);
299
300 vn_cs_decoder_reset_temp_pool(ctx->decoder);
301 }
302
303 #pragma GCC diagnostic pop
304
305 #endif /* VN_PROTOCOL_RENDERER_IMAGE_VIEW_H */
306