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_SAMPLER_H
9 #define VN_PROTOCOL_RENDERER_SAMPLER_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 VkSamplerReductionModeCreateInfo chain */
18
19 static inline void *
vn_decode_VkSamplerReductionModeCreateInfo_pnext_temp(struct vn_cs_decoder * dec)20 vn_decode_VkSamplerReductionModeCreateInfo_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_VkSamplerReductionModeCreateInfo_self_temp(struct vn_cs_decoder * dec,VkSamplerReductionModeCreateInfo * val)29 vn_decode_VkSamplerReductionModeCreateInfo_self_temp(struct vn_cs_decoder *dec, VkSamplerReductionModeCreateInfo *val)
30 {
31 /* skip val->{sType,pNext} */
32 vn_decode_VkSamplerReductionMode(dec, &val->reductionMode);
33 }
34
35 static inline void
vn_decode_VkSamplerReductionModeCreateInfo_temp(struct vn_cs_decoder * dec,VkSamplerReductionModeCreateInfo * val)36 vn_decode_VkSamplerReductionModeCreateInfo_temp(struct vn_cs_decoder *dec, VkSamplerReductionModeCreateInfo *val)
37 {
38 VkStructureType stype;
39 vn_decode_VkStructureType(dec, &stype);
40 if (stype != VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO)
41 vn_cs_decoder_set_fatal(dec);
42
43 val->sType = stype;
44 val->pNext = vn_decode_VkSamplerReductionModeCreateInfo_pnext_temp(dec);
45 vn_decode_VkSamplerReductionModeCreateInfo_self_temp(dec, val);
46 }
47
48 static inline void
vn_replace_VkSamplerReductionModeCreateInfo_handle_self(VkSamplerReductionModeCreateInfo * val)49 vn_replace_VkSamplerReductionModeCreateInfo_handle_self(VkSamplerReductionModeCreateInfo *val)
50 {
51 /* skip val->sType */
52 /* skip val->pNext */
53 /* skip val->reductionMode */
54 }
55
56 static inline void
vn_replace_VkSamplerReductionModeCreateInfo_handle(VkSamplerReductionModeCreateInfo * val)57 vn_replace_VkSamplerReductionModeCreateInfo_handle(VkSamplerReductionModeCreateInfo *val)
58 {
59 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
60
61 do {
62 switch ((int32_t)pnext->sType) {
63 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
64 vn_replace_VkSamplerReductionModeCreateInfo_handle_self((VkSamplerReductionModeCreateInfo *)pnext);
65 break;
66 default:
67 /* ignore unknown/unsupported struct */
68 break;
69 }
70 pnext = pnext->pNext;
71 } while (pnext);
72 }
73
74 /* struct VkSamplerCreateInfo chain */
75
76 static inline void *
vn_decode_VkSamplerCreateInfo_pnext_temp(struct vn_cs_decoder * dec)77 vn_decode_VkSamplerCreateInfo_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_SAMPLER_YCBCR_CONVERSION_INFO:
88 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkSamplerYcbcrConversionInfo));
89 if (pnext) {
90 pnext->sType = stype;
91 pnext->pNext = vn_decode_VkSamplerCreateInfo_pnext_temp(dec);
92 vn_decode_VkSamplerYcbcrConversionInfo_self_temp(dec, (VkSamplerYcbcrConversionInfo *)pnext);
93 }
94 break;
95 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
96 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkSamplerReductionModeCreateInfo));
97 if (pnext) {
98 pnext->sType = stype;
99 pnext->pNext = vn_decode_VkSamplerCreateInfo_pnext_temp(dec);
100 vn_decode_VkSamplerReductionModeCreateInfo_self_temp(dec, (VkSamplerReductionModeCreateInfo *)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_VkSamplerCreateInfo_self_temp(struct vn_cs_decoder * dec,VkSamplerCreateInfo * val)114 vn_decode_VkSamplerCreateInfo_self_temp(struct vn_cs_decoder *dec, VkSamplerCreateInfo *val)
115 {
116 /* skip val->{sType,pNext} */
117 vn_decode_VkFlags(dec, &val->flags);
118 vn_decode_VkFilter(dec, &val->magFilter);
119 vn_decode_VkFilter(dec, &val->minFilter);
120 vn_decode_VkSamplerMipmapMode(dec, &val->mipmapMode);
121 vn_decode_VkSamplerAddressMode(dec, &val->addressModeU);
122 vn_decode_VkSamplerAddressMode(dec, &val->addressModeV);
123 vn_decode_VkSamplerAddressMode(dec, &val->addressModeW);
124 vn_decode_float(dec, &val->mipLodBias);
125 vn_decode_VkBool32(dec, &val->anisotropyEnable);
126 vn_decode_float(dec, &val->maxAnisotropy);
127 vn_decode_VkBool32(dec, &val->compareEnable);
128 vn_decode_VkCompareOp(dec, &val->compareOp);
129 vn_decode_float(dec, &val->minLod);
130 vn_decode_float(dec, &val->maxLod);
131 vn_decode_VkBorderColor(dec, &val->borderColor);
132 vn_decode_VkBool32(dec, &val->unnormalizedCoordinates);
133 }
134
135 static inline void
vn_decode_VkSamplerCreateInfo_temp(struct vn_cs_decoder * dec,VkSamplerCreateInfo * val)136 vn_decode_VkSamplerCreateInfo_temp(struct vn_cs_decoder *dec, VkSamplerCreateInfo *val)
137 {
138 VkStructureType stype;
139 vn_decode_VkStructureType(dec, &stype);
140 if (stype != VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
141 vn_cs_decoder_set_fatal(dec);
142
143 val->sType = stype;
144 val->pNext = vn_decode_VkSamplerCreateInfo_pnext_temp(dec);
145 vn_decode_VkSamplerCreateInfo_self_temp(dec, val);
146 }
147
148 static inline void
vn_replace_VkSamplerCreateInfo_handle_self(VkSamplerCreateInfo * val)149 vn_replace_VkSamplerCreateInfo_handle_self(VkSamplerCreateInfo *val)
150 {
151 /* skip val->sType */
152 /* skip val->pNext */
153 /* skip val->flags */
154 /* skip val->magFilter */
155 /* skip val->minFilter */
156 /* skip val->mipmapMode */
157 /* skip val->addressModeU */
158 /* skip val->addressModeV */
159 /* skip val->addressModeW */
160 /* skip val->mipLodBias */
161 /* skip val->anisotropyEnable */
162 /* skip val->maxAnisotropy */
163 /* skip val->compareEnable */
164 /* skip val->compareOp */
165 /* skip val->minLod */
166 /* skip val->maxLod */
167 /* skip val->borderColor */
168 /* skip val->unnormalizedCoordinates */
169 }
170
171 static inline void
vn_replace_VkSamplerCreateInfo_handle(VkSamplerCreateInfo * val)172 vn_replace_VkSamplerCreateInfo_handle(VkSamplerCreateInfo *val)
173 {
174 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
175
176 do {
177 switch ((int32_t)pnext->sType) {
178 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:
179 vn_replace_VkSamplerCreateInfo_handle_self((VkSamplerCreateInfo *)pnext);
180 break;
181 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
182 vn_replace_VkSamplerYcbcrConversionInfo_handle_self((VkSamplerYcbcrConversionInfo *)pnext);
183 break;
184 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
185 vn_replace_VkSamplerReductionModeCreateInfo_handle_self((VkSamplerReductionModeCreateInfo *)pnext);
186 break;
187 default:
188 /* ignore unknown/unsupported struct */
189 break;
190 }
191 pnext = pnext->pNext;
192 } while (pnext);
193 }
194
vn_decode_vkCreateSampler_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateSampler * args)195 static inline void vn_decode_vkCreateSampler_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateSampler *args)
196 {
197 vn_decode_VkDevice_lookup(dec, &args->device);
198 if (vn_decode_simple_pointer(dec)) {
199 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
200 if (!args->pCreateInfo) return;
201 vn_decode_VkSamplerCreateInfo_temp(dec, (VkSamplerCreateInfo *)args->pCreateInfo);
202 } else {
203 args->pCreateInfo = NULL;
204 vn_cs_decoder_set_fatal(dec);
205 }
206 if (vn_decode_simple_pointer(dec)) {
207 vn_cs_decoder_set_fatal(dec);
208 } else {
209 args->pAllocator = NULL;
210 }
211 if (vn_decode_simple_pointer(dec)) {
212 args->pSampler = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pSampler));
213 if (!args->pSampler) return;
214 vn_decode_VkSampler(dec, args->pSampler);
215 } else {
216 args->pSampler = NULL;
217 vn_cs_decoder_set_fatal(dec);
218 }
219 }
220
vn_replace_vkCreateSampler_args_handle(struct vn_command_vkCreateSampler * args)221 static inline void vn_replace_vkCreateSampler_args_handle(struct vn_command_vkCreateSampler *args)
222 {
223 vn_replace_VkDevice_handle(&args->device);
224 if (args->pCreateInfo)
225 vn_replace_VkSamplerCreateInfo_handle((VkSamplerCreateInfo *)args->pCreateInfo);
226 /* skip args->pAllocator */
227 /* skip args->pSampler */
228 }
229
vn_encode_vkCreateSampler_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateSampler * args)230 static inline void vn_encode_vkCreateSampler_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateSampler *args)
231 {
232 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateSampler_EXT});
233
234 vn_encode_VkResult(enc, &args->ret);
235 /* skip args->device */
236 /* skip args->pCreateInfo */
237 /* skip args->pAllocator */
238 if (vn_encode_simple_pointer(enc, args->pSampler))
239 vn_encode_VkSampler(enc, args->pSampler);
240 }
241
vn_decode_vkDestroySampler_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroySampler * args)242 static inline void vn_decode_vkDestroySampler_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroySampler *args)
243 {
244 vn_decode_VkDevice_lookup(dec, &args->device);
245 vn_decode_VkSampler_lookup(dec, &args->sampler);
246 if (vn_decode_simple_pointer(dec)) {
247 vn_cs_decoder_set_fatal(dec);
248 } else {
249 args->pAllocator = NULL;
250 }
251 }
252
vn_replace_vkDestroySampler_args_handle(struct vn_command_vkDestroySampler * args)253 static inline void vn_replace_vkDestroySampler_args_handle(struct vn_command_vkDestroySampler *args)
254 {
255 vn_replace_VkDevice_handle(&args->device);
256 vn_replace_VkSampler_handle(&args->sampler);
257 /* skip args->pAllocator */
258 }
259
vn_encode_vkDestroySampler_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroySampler * args)260 static inline void vn_encode_vkDestroySampler_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroySampler *args)
261 {
262 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroySampler_EXT});
263
264 /* skip args->device */
265 /* skip args->sampler */
266 /* skip args->pAllocator */
267 }
268
vn_dispatch_vkCreateSampler(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)269 static inline void vn_dispatch_vkCreateSampler(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
270 {
271 struct vn_command_vkCreateSampler args;
272
273 if (!ctx->dispatch_vkCreateSampler) {
274 vn_cs_decoder_set_fatal(ctx->decoder);
275 return;
276 }
277
278 vn_decode_vkCreateSampler_args_temp(ctx->decoder, &args);
279 if (!args.device) {
280 vn_cs_decoder_set_fatal(ctx->decoder);
281 return;
282 }
283
284 if (!vn_cs_decoder_get_fatal(ctx->decoder))
285 ctx->dispatch_vkCreateSampler(ctx, &args);
286
287 #ifdef DEBUG
288 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
289 vn_dispatch_debug_log(ctx, "vkCreateSampler returned %d", args.ret);
290 #endif
291
292 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
293 vn_encode_vkCreateSampler_reply(ctx->encoder, &args);
294
295 vn_cs_decoder_reset_temp_pool(ctx->decoder);
296 }
297
vn_dispatch_vkDestroySampler(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)298 static inline void vn_dispatch_vkDestroySampler(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
299 {
300 struct vn_command_vkDestroySampler args;
301
302 if (!ctx->dispatch_vkDestroySampler) {
303 vn_cs_decoder_set_fatal(ctx->decoder);
304 return;
305 }
306
307 vn_decode_vkDestroySampler_args_temp(ctx->decoder, &args);
308 if (!args.device) {
309 vn_cs_decoder_set_fatal(ctx->decoder);
310 return;
311 }
312
313 if (!vn_cs_decoder_get_fatal(ctx->decoder))
314 ctx->dispatch_vkDestroySampler(ctx, &args);
315
316
317 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
318 vn_encode_vkDestroySampler_reply(ctx->encoder, &args);
319
320 vn_cs_decoder_reset_temp_pool(ctx->decoder);
321 }
322
323 #pragma GCC diagnostic pop
324
325 #endif /* VN_PROTOCOL_RENDERER_SAMPLER_H */
326