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