• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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