xref: /aosp_15_r20/external/mesa3d/src/virtio/venus-protocol/vn_protocol_driver_sampler.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /* This file is generated by venus-protocol.  See vn_protocol_driver.h. */
2 
3 /*
4  * Copyright 2020 Google LLC
5  * SPDX-License-Identifier: MIT
6  */
7 
8 #ifndef VN_PROTOCOL_DRIVER_SAMPLER_H
9 #define VN_PROTOCOL_DRIVER_SAMPLER_H
10 
11 #include "vn_ring.h"
12 #include "vn_protocol_driver_structs.h"
13 
14 /* struct VkSamplerReductionModeCreateInfo chain */
15 
16 static inline size_t
vn_sizeof_VkSamplerReductionModeCreateInfo_pnext(const void * val)17 vn_sizeof_VkSamplerReductionModeCreateInfo_pnext(const void *val)
18 {
19     /* no known/supported struct */
20     return vn_sizeof_simple_pointer(NULL);
21 }
22 
23 static inline size_t
vn_sizeof_VkSamplerReductionModeCreateInfo_self(const VkSamplerReductionModeCreateInfo * val)24 vn_sizeof_VkSamplerReductionModeCreateInfo_self(const VkSamplerReductionModeCreateInfo *val)
25 {
26     size_t size = 0;
27     /* skip val->{sType,pNext} */
28     size += vn_sizeof_VkSamplerReductionMode(&val->reductionMode);
29     return size;
30 }
31 
32 static inline size_t
vn_sizeof_VkSamplerReductionModeCreateInfo(const VkSamplerReductionModeCreateInfo * val)33 vn_sizeof_VkSamplerReductionModeCreateInfo(const VkSamplerReductionModeCreateInfo *val)
34 {
35     size_t size = 0;
36 
37     size += vn_sizeof_VkStructureType(&val->sType);
38     size += vn_sizeof_VkSamplerReductionModeCreateInfo_pnext(val->pNext);
39     size += vn_sizeof_VkSamplerReductionModeCreateInfo_self(val);
40 
41     return size;
42 }
43 
44 static inline void
vn_encode_VkSamplerReductionModeCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)45 vn_encode_VkSamplerReductionModeCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
46 {
47     /* no known/supported struct */
48     vn_encode_simple_pointer(enc, NULL);
49 }
50 
51 static inline void
vn_encode_VkSamplerReductionModeCreateInfo_self(struct vn_cs_encoder * enc,const VkSamplerReductionModeCreateInfo * val)52 vn_encode_VkSamplerReductionModeCreateInfo_self(struct vn_cs_encoder *enc, const VkSamplerReductionModeCreateInfo *val)
53 {
54     /* skip val->{sType,pNext} */
55     vn_encode_VkSamplerReductionMode(enc, &val->reductionMode);
56 }
57 
58 static inline void
vn_encode_VkSamplerReductionModeCreateInfo(struct vn_cs_encoder * enc,const VkSamplerReductionModeCreateInfo * val)59 vn_encode_VkSamplerReductionModeCreateInfo(struct vn_cs_encoder *enc, const VkSamplerReductionModeCreateInfo *val)
60 {
61     assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO);
62     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO });
63     vn_encode_VkSamplerReductionModeCreateInfo_pnext(enc, val->pNext);
64     vn_encode_VkSamplerReductionModeCreateInfo_self(enc, val);
65 }
66 
67 /* struct VkSamplerCustomBorderColorCreateInfoEXT chain */
68 
69 static inline size_t
vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_pnext(const void * val)70 vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_pnext(const void *val)
71 {
72     /* no known/supported struct */
73     return vn_sizeof_simple_pointer(NULL);
74 }
75 
76 static inline size_t
vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self(const VkSamplerCustomBorderColorCreateInfoEXT * val)77 vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self(const VkSamplerCustomBorderColorCreateInfoEXT *val)
78 {
79     size_t size = 0;
80     /* skip val->{sType,pNext} */
81     size += vn_sizeof_VkClearColorValue(&val->customBorderColor);
82     size += vn_sizeof_VkFormat(&val->format);
83     return size;
84 }
85 
86 static inline size_t
vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT(const VkSamplerCustomBorderColorCreateInfoEXT * val)87 vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT(const VkSamplerCustomBorderColorCreateInfoEXT *val)
88 {
89     size_t size = 0;
90 
91     size += vn_sizeof_VkStructureType(&val->sType);
92     size += vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_pnext(val->pNext);
93     size += vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self(val);
94 
95     return size;
96 }
97 
98 static inline void
vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_pnext(struct vn_cs_encoder * enc,const void * val)99 vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val)
100 {
101     /* no known/supported struct */
102     vn_encode_simple_pointer(enc, NULL);
103 }
104 
105 static inline void
vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(struct vn_cs_encoder * enc,const VkSamplerCustomBorderColorCreateInfoEXT * val)106 vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkSamplerCustomBorderColorCreateInfoEXT *val)
107 {
108     /* skip val->{sType,pNext} */
109     vn_encode_VkClearColorValue(enc, &val->customBorderColor);
110     vn_encode_VkFormat(enc, &val->format);
111 }
112 
113 static inline void
vn_encode_VkSamplerCustomBorderColorCreateInfoEXT(struct vn_cs_encoder * enc,const VkSamplerCustomBorderColorCreateInfoEXT * val)114 vn_encode_VkSamplerCustomBorderColorCreateInfoEXT(struct vn_cs_encoder *enc, const VkSamplerCustomBorderColorCreateInfoEXT *val)
115 {
116     assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT);
117     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT });
118     vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_pnext(enc, val->pNext);
119     vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(enc, val);
120 }
121 
122 /* struct VkSamplerBorderColorComponentMappingCreateInfoEXT chain */
123 
124 static inline size_t
vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_pnext(const void * val)125 vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_pnext(const void *val)
126 {
127     /* no known/supported struct */
128     return vn_sizeof_simple_pointer(NULL);
129 }
130 
131 static inline size_t
vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(const VkSamplerBorderColorComponentMappingCreateInfoEXT * val)132 vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(const VkSamplerBorderColorComponentMappingCreateInfoEXT *val)
133 {
134     size_t size = 0;
135     /* skip val->{sType,pNext} */
136     size += vn_sizeof_VkComponentMapping(&val->components);
137     size += vn_sizeof_VkBool32(&val->srgb);
138     return size;
139 }
140 
141 static inline size_t
vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT(const VkSamplerBorderColorComponentMappingCreateInfoEXT * val)142 vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT(const VkSamplerBorderColorComponentMappingCreateInfoEXT *val)
143 {
144     size_t size = 0;
145 
146     size += vn_sizeof_VkStructureType(&val->sType);
147     size += vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_pnext(val->pNext);
148     size += vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(val);
149 
150     return size;
151 }
152 
153 static inline void
vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_pnext(struct vn_cs_encoder * enc,const void * val)154 vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val)
155 {
156     /* no known/supported struct */
157     vn_encode_simple_pointer(enc, NULL);
158 }
159 
160 static inline void
vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(struct vn_cs_encoder * enc,const VkSamplerBorderColorComponentMappingCreateInfoEXT * val)161 vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkSamplerBorderColorComponentMappingCreateInfoEXT *val)
162 {
163     /* skip val->{sType,pNext} */
164     vn_encode_VkComponentMapping(enc, &val->components);
165     vn_encode_VkBool32(enc, &val->srgb);
166 }
167 
168 static inline void
vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT(struct vn_cs_encoder * enc,const VkSamplerBorderColorComponentMappingCreateInfoEXT * val)169 vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT(struct vn_cs_encoder *enc, const VkSamplerBorderColorComponentMappingCreateInfoEXT *val)
170 {
171     assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT);
172     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT });
173     vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_pnext(enc, val->pNext);
174     vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(enc, val);
175 }
176 
177 /* struct VkSamplerCreateInfo chain */
178 
179 static inline size_t
vn_sizeof_VkSamplerCreateInfo_pnext(const void * val)180 vn_sizeof_VkSamplerCreateInfo_pnext(const void *val)
181 {
182     const VkBaseInStructure *pnext = val;
183     size_t size = 0;
184 
185     while (pnext) {
186         switch ((int32_t)pnext->sType) {
187         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
188             size += vn_sizeof_simple_pointer(pnext);
189             size += vn_sizeof_VkStructureType(&pnext->sType);
190             size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);
191             size += vn_sizeof_VkSamplerYcbcrConversionInfo_self((const VkSamplerYcbcrConversionInfo *)pnext);
192             return size;
193         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
194             size += vn_sizeof_simple_pointer(pnext);
195             size += vn_sizeof_VkStructureType(&pnext->sType);
196             size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);
197             size += vn_sizeof_VkSamplerReductionModeCreateInfo_self((const VkSamplerReductionModeCreateInfo *)pnext);
198             return size;
199         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
200             if (!vn_cs_renderer_protocol_has_extension(288 /* VK_EXT_custom_border_color */))
201                 break;
202             size += vn_sizeof_simple_pointer(pnext);
203             size += vn_sizeof_VkStructureType(&pnext->sType);
204             size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);
205             size += vn_sizeof_VkSamplerCustomBorderColorCreateInfoEXT_self((const VkSamplerCustomBorderColorCreateInfoEXT *)pnext);
206             return size;
207         case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT:
208             if (!vn_cs_renderer_protocol_has_extension(412 /* VK_EXT_border_color_swizzle */))
209                 break;
210             size += vn_sizeof_simple_pointer(pnext);
211             size += vn_sizeof_VkStructureType(&pnext->sType);
212             size += vn_sizeof_VkSamplerCreateInfo_pnext(pnext->pNext);
213             size += vn_sizeof_VkSamplerBorderColorComponentMappingCreateInfoEXT_self((const VkSamplerBorderColorComponentMappingCreateInfoEXT *)pnext);
214             return size;
215         default:
216             /* ignore unknown/unsupported struct */
217             break;
218         }
219         pnext = pnext->pNext;
220     }
221 
222     return vn_sizeof_simple_pointer(NULL);
223 }
224 
225 static inline size_t
vn_sizeof_VkSamplerCreateInfo_self(const VkSamplerCreateInfo * val)226 vn_sizeof_VkSamplerCreateInfo_self(const VkSamplerCreateInfo *val)
227 {
228     size_t size = 0;
229     /* skip val->{sType,pNext} */
230     size += vn_sizeof_VkFlags(&val->flags);
231     size += vn_sizeof_VkFilter(&val->magFilter);
232     size += vn_sizeof_VkFilter(&val->minFilter);
233     size += vn_sizeof_VkSamplerMipmapMode(&val->mipmapMode);
234     size += vn_sizeof_VkSamplerAddressMode(&val->addressModeU);
235     size += vn_sizeof_VkSamplerAddressMode(&val->addressModeV);
236     size += vn_sizeof_VkSamplerAddressMode(&val->addressModeW);
237     size += vn_sizeof_float(&val->mipLodBias);
238     size += vn_sizeof_VkBool32(&val->anisotropyEnable);
239     size += vn_sizeof_float(&val->maxAnisotropy);
240     size += vn_sizeof_VkBool32(&val->compareEnable);
241     size += vn_sizeof_VkCompareOp(&val->compareOp);
242     size += vn_sizeof_float(&val->minLod);
243     size += vn_sizeof_float(&val->maxLod);
244     size += vn_sizeof_VkBorderColor(&val->borderColor);
245     size += vn_sizeof_VkBool32(&val->unnormalizedCoordinates);
246     return size;
247 }
248 
249 static inline size_t
vn_sizeof_VkSamplerCreateInfo(const VkSamplerCreateInfo * val)250 vn_sizeof_VkSamplerCreateInfo(const VkSamplerCreateInfo *val)
251 {
252     size_t size = 0;
253 
254     size += vn_sizeof_VkStructureType(&val->sType);
255     size += vn_sizeof_VkSamplerCreateInfo_pnext(val->pNext);
256     size += vn_sizeof_VkSamplerCreateInfo_self(val);
257 
258     return size;
259 }
260 
261 static inline void
vn_encode_VkSamplerCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)262 vn_encode_VkSamplerCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
263 {
264     const VkBaseInStructure *pnext = val;
265 
266     while (pnext) {
267         switch ((int32_t)pnext->sType) {
268         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
269             vn_encode_simple_pointer(enc, pnext);
270             vn_encode_VkStructureType(enc, &pnext->sType);
271             vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);
272             vn_encode_VkSamplerYcbcrConversionInfo_self(enc, (const VkSamplerYcbcrConversionInfo *)pnext);
273             return;
274         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
275             vn_encode_simple_pointer(enc, pnext);
276             vn_encode_VkStructureType(enc, &pnext->sType);
277             vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);
278             vn_encode_VkSamplerReductionModeCreateInfo_self(enc, (const VkSamplerReductionModeCreateInfo *)pnext);
279             return;
280         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
281             if (!vn_cs_renderer_protocol_has_extension(288 /* VK_EXT_custom_border_color */))
282                 break;
283             vn_encode_simple_pointer(enc, pnext);
284             vn_encode_VkStructureType(enc, &pnext->sType);
285             vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);
286             vn_encode_VkSamplerCustomBorderColorCreateInfoEXT_self(enc, (const VkSamplerCustomBorderColorCreateInfoEXT *)pnext);
287             return;
288         case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT:
289             if (!vn_cs_renderer_protocol_has_extension(412 /* VK_EXT_border_color_swizzle */))
290                 break;
291             vn_encode_simple_pointer(enc, pnext);
292             vn_encode_VkStructureType(enc, &pnext->sType);
293             vn_encode_VkSamplerCreateInfo_pnext(enc, pnext->pNext);
294             vn_encode_VkSamplerBorderColorComponentMappingCreateInfoEXT_self(enc, (const VkSamplerBorderColorComponentMappingCreateInfoEXT *)pnext);
295             return;
296         default:
297             /* ignore unknown/unsupported struct */
298             break;
299         }
300         pnext = pnext->pNext;
301     }
302 
303     vn_encode_simple_pointer(enc, NULL);
304 }
305 
306 static inline void
vn_encode_VkSamplerCreateInfo_self(struct vn_cs_encoder * enc,const VkSamplerCreateInfo * val)307 vn_encode_VkSamplerCreateInfo_self(struct vn_cs_encoder *enc, const VkSamplerCreateInfo *val)
308 {
309     /* skip val->{sType,pNext} */
310     vn_encode_VkFlags(enc, &val->flags);
311     vn_encode_VkFilter(enc, &val->magFilter);
312     vn_encode_VkFilter(enc, &val->minFilter);
313     vn_encode_VkSamplerMipmapMode(enc, &val->mipmapMode);
314     vn_encode_VkSamplerAddressMode(enc, &val->addressModeU);
315     vn_encode_VkSamplerAddressMode(enc, &val->addressModeV);
316     vn_encode_VkSamplerAddressMode(enc, &val->addressModeW);
317     vn_encode_float(enc, &val->mipLodBias);
318     vn_encode_VkBool32(enc, &val->anisotropyEnable);
319     vn_encode_float(enc, &val->maxAnisotropy);
320     vn_encode_VkBool32(enc, &val->compareEnable);
321     vn_encode_VkCompareOp(enc, &val->compareOp);
322     vn_encode_float(enc, &val->minLod);
323     vn_encode_float(enc, &val->maxLod);
324     vn_encode_VkBorderColor(enc, &val->borderColor);
325     vn_encode_VkBool32(enc, &val->unnormalizedCoordinates);
326 }
327 
328 static inline void
vn_encode_VkSamplerCreateInfo(struct vn_cs_encoder * enc,const VkSamplerCreateInfo * val)329 vn_encode_VkSamplerCreateInfo(struct vn_cs_encoder *enc, const VkSamplerCreateInfo *val)
330 {
331     assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO);
332     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO });
333     vn_encode_VkSamplerCreateInfo_pnext(enc, val->pNext);
334     vn_encode_VkSamplerCreateInfo_self(enc, val);
335 }
336 
vn_sizeof_vkCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)337 static inline size_t vn_sizeof_vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
338 {
339     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSampler_EXT;
340     const VkFlags cmd_flags = 0;
341     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
342 
343     cmd_size += vn_sizeof_VkDevice(&device);
344     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
345     if (pCreateInfo)
346         cmd_size += vn_sizeof_VkSamplerCreateInfo(pCreateInfo);
347     cmd_size += vn_sizeof_simple_pointer(pAllocator);
348     if (pAllocator)
349         assert(false);
350     cmd_size += vn_sizeof_simple_pointer(pSampler);
351     if (pSampler)
352         cmd_size += vn_sizeof_VkSampler(pSampler);
353 
354     return cmd_size;
355 }
356 
vn_encode_vkCreateSampler(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)357 static inline void vn_encode_vkCreateSampler(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
358 {
359     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSampler_EXT;
360 
361     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
362     vn_encode_VkFlags(enc, &cmd_flags);
363 
364     vn_encode_VkDevice(enc, &device);
365     if (vn_encode_simple_pointer(enc, pCreateInfo))
366         vn_encode_VkSamplerCreateInfo(enc, pCreateInfo);
367     if (vn_encode_simple_pointer(enc, pAllocator))
368         assert(false);
369     if (vn_encode_simple_pointer(enc, pSampler))
370         vn_encode_VkSampler(enc, pSampler);
371 }
372 
vn_sizeof_vkCreateSampler_reply(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)373 static inline size_t vn_sizeof_vkCreateSampler_reply(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
374 {
375     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSampler_EXT;
376     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
377 
378     VkResult ret;
379     cmd_size += vn_sizeof_VkResult(&ret);
380     /* skip device */
381     /* skip pCreateInfo */
382     /* skip pAllocator */
383     cmd_size += vn_sizeof_simple_pointer(pSampler);
384     if (pSampler)
385         cmd_size += vn_sizeof_VkSampler(pSampler);
386 
387     return cmd_size;
388 }
389 
vn_decode_vkCreateSampler_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)390 static inline VkResult vn_decode_vkCreateSampler_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
391 {
392     VkCommandTypeEXT command_type;
393     vn_decode_VkCommandTypeEXT(dec, &command_type);
394     assert(command_type == VK_COMMAND_TYPE_vkCreateSampler_EXT);
395 
396     VkResult ret;
397     vn_decode_VkResult(dec, &ret);
398     /* skip device */
399     /* skip pCreateInfo */
400     /* skip pAllocator */
401     if (vn_decode_simple_pointer(dec)) {
402         vn_decode_VkSampler(dec, pSampler);
403     } else {
404         pSampler = NULL;
405     }
406 
407     return ret;
408 }
409 
vn_sizeof_vkDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)410 static inline size_t vn_sizeof_vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
411 {
412     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySampler_EXT;
413     const VkFlags cmd_flags = 0;
414     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
415 
416     cmd_size += vn_sizeof_VkDevice(&device);
417     cmd_size += vn_sizeof_VkSampler(&sampler);
418     cmd_size += vn_sizeof_simple_pointer(pAllocator);
419     if (pAllocator)
420         assert(false);
421 
422     return cmd_size;
423 }
424 
vn_encode_vkDestroySampler(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)425 static inline void vn_encode_vkDestroySampler(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
426 {
427     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySampler_EXT;
428 
429     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
430     vn_encode_VkFlags(enc, &cmd_flags);
431 
432     vn_encode_VkDevice(enc, &device);
433     vn_encode_VkSampler(enc, &sampler);
434     if (vn_encode_simple_pointer(enc, pAllocator))
435         assert(false);
436 }
437 
vn_sizeof_vkDestroySampler_reply(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)438 static inline size_t vn_sizeof_vkDestroySampler_reply(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
439 {
440     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySampler_EXT;
441     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
442 
443     /* skip device */
444     /* skip sampler */
445     /* skip pAllocator */
446 
447     return cmd_size;
448 }
449 
vn_decode_vkDestroySampler_reply(struct vn_cs_decoder * dec,VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)450 static inline void vn_decode_vkDestroySampler_reply(struct vn_cs_decoder *dec, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
451 {
452     VkCommandTypeEXT command_type;
453     vn_decode_VkCommandTypeEXT(dec, &command_type);
454     assert(command_type == VK_COMMAND_TYPE_vkDestroySampler_EXT);
455 
456     /* skip device */
457     /* skip sampler */
458     /* skip pAllocator */
459 }
460 
vn_submit_vkCreateSampler(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler,struct vn_ring_submit_command * submit)461 static inline void vn_submit_vkCreateSampler(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler, struct vn_ring_submit_command *submit)
462 {
463     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
464     void *cmd_data = local_cmd_data;
465     size_t cmd_size = vn_sizeof_vkCreateSampler(device, pCreateInfo, pAllocator, pSampler);
466     if (cmd_size > sizeof(local_cmd_data)) {
467         cmd_data = malloc(cmd_size);
468         if (!cmd_data)
469             cmd_size = 0;
470     }
471     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateSampler_reply(device, pCreateInfo, pAllocator, pSampler) : 0;
472 
473     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
474     if (cmd_size) {
475         vn_encode_vkCreateSampler(enc, cmd_flags, device, pCreateInfo, pAllocator, pSampler);
476         vn_ring_submit_command(vn_ring, submit);
477         if (cmd_data != local_cmd_data)
478             free(cmd_data);
479     }
480 }
481 
vn_submit_vkDestroySampler(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator,struct vn_ring_submit_command * submit)482 static inline void vn_submit_vkDestroySampler(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator, struct vn_ring_submit_command *submit)
483 {
484     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
485     void *cmd_data = local_cmd_data;
486     size_t cmd_size = vn_sizeof_vkDestroySampler(device, sampler, pAllocator);
487     if (cmd_size > sizeof(local_cmd_data)) {
488         cmd_data = malloc(cmd_size);
489         if (!cmd_data)
490             cmd_size = 0;
491     }
492     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroySampler_reply(device, sampler, pAllocator) : 0;
493 
494     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
495     if (cmd_size) {
496         vn_encode_vkDestroySampler(enc, cmd_flags, device, sampler, pAllocator);
497         vn_ring_submit_command(vn_ring, submit);
498         if (cmd_data != local_cmd_data)
499             free(cmd_data);
500     }
501 }
502 
vn_call_vkCreateSampler(struct vn_ring * vn_ring,VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)503 static inline VkResult vn_call_vkCreateSampler(struct vn_ring *vn_ring, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
504 {
505     VN_TRACE_FUNC();
506 
507     struct vn_ring_submit_command submit;
508     vn_submit_vkCreateSampler(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSampler, &submit);
509     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
510     if (dec) {
511         const VkResult ret = vn_decode_vkCreateSampler_reply(dec, device, pCreateInfo, pAllocator, pSampler);
512         vn_ring_free_command_reply(vn_ring, &submit);
513         return ret;
514     } else {
515         return VK_ERROR_OUT_OF_HOST_MEMORY;
516     }
517 }
518 
vn_async_vkCreateSampler(struct vn_ring * vn_ring,VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)519 static inline void vn_async_vkCreateSampler(struct vn_ring *vn_ring, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
520 {
521     struct vn_ring_submit_command submit;
522     vn_submit_vkCreateSampler(vn_ring, 0, device, pCreateInfo, pAllocator, pSampler, &submit);
523 }
524 
vn_call_vkDestroySampler(struct vn_ring * vn_ring,VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)525 static inline void vn_call_vkDestroySampler(struct vn_ring *vn_ring, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
526 {
527     VN_TRACE_FUNC();
528 
529     struct vn_ring_submit_command submit;
530     vn_submit_vkDestroySampler(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, sampler, pAllocator, &submit);
531     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
532     if (dec) {
533         vn_decode_vkDestroySampler_reply(dec, device, sampler, pAllocator);
534         vn_ring_free_command_reply(vn_ring, &submit);
535     }
536 }
537 
vn_async_vkDestroySampler(struct vn_ring * vn_ring,VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)538 static inline void vn_async_vkDestroySampler(struct vn_ring *vn_ring, VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
539 {
540     struct vn_ring_submit_command submit;
541     vn_submit_vkDestroySampler(vn_ring, 0, device, sampler, pAllocator, &submit);
542 }
543 
544 #endif /* VN_PROTOCOL_DRIVER_SAMPLER_H */
545