1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module goldfish_vk_marshaling
17 //
18 // (impl) generated by scripts/genvk.py -registry
19 // ../../../../../hardware/google/gfxstream/codegen/vulkan/vulkan-docs-next/xml/vk.xml
20 // -registryGfxstream xml/vk_gfxstream.xml cereal -o
21 // ../../../../../hardware/google/gfxstream/host/vulkan/cereal
22 //
23 // Please do not modify directly;
24 // re-run mesa3d/src/gfxstream/codegen/generate-gfxstream-vulkan.sh,
25 // or directly from Python by defining:
26 // VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
27 // VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
28 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
29 //
30 // python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o
31 // $CEREAL_OUTPUT_DIR
32 //
33 
34 #include "goldfish_vk_marshaling.h"
35 
36 #include <string.h>
37 
38 #include "goldfish_vk_extension_structs.h"
39 #include "goldfish_vk_private_defs.h"
40 
41 namespace gfxstream {
42 namespace vk {
43 
44 void marshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
45                               const void* structExtension);
46 
47 void unmarshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
48                                 void* structExtension_out);
49 
50 #ifdef VK_VERSION_1_0
marshal_VkExtent2D(VulkanStream * vkStream,VkStructureType rootType,const VkExtent2D * forMarshaling)51 void marshal_VkExtent2D(VulkanStream* vkStream, VkStructureType rootType,
52                         const VkExtent2D* forMarshaling) {
53     (void)rootType;
54     vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
55     vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
56 }
57 
unmarshal_VkExtent2D(VulkanStream * vkStream,VkStructureType rootType,VkExtent2D * forUnmarshaling)58 void unmarshal_VkExtent2D(VulkanStream* vkStream, VkStructureType rootType,
59                           VkExtent2D* forUnmarshaling) {
60     (void)rootType;
61     vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
62     vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
63 }
64 
marshal_VkExtent3D(VulkanStream * vkStream,VkStructureType rootType,const VkExtent3D * forMarshaling)65 void marshal_VkExtent3D(VulkanStream* vkStream, VkStructureType rootType,
66                         const VkExtent3D* forMarshaling) {
67     (void)rootType;
68     vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
69     vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
70     vkStream->write((uint32_t*)&forMarshaling->depth, sizeof(uint32_t));
71 }
72 
unmarshal_VkExtent3D(VulkanStream * vkStream,VkStructureType rootType,VkExtent3D * forUnmarshaling)73 void unmarshal_VkExtent3D(VulkanStream* vkStream, VkStructureType rootType,
74                           VkExtent3D* forUnmarshaling) {
75     (void)rootType;
76     vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
77     vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
78     vkStream->read((uint32_t*)&forUnmarshaling->depth, sizeof(uint32_t));
79 }
80 
marshal_VkOffset2D(VulkanStream * vkStream,VkStructureType rootType,const VkOffset2D * forMarshaling)81 void marshal_VkOffset2D(VulkanStream* vkStream, VkStructureType rootType,
82                         const VkOffset2D* forMarshaling) {
83     (void)rootType;
84     vkStream->write((int32_t*)&forMarshaling->x, sizeof(int32_t));
85     vkStream->write((int32_t*)&forMarshaling->y, sizeof(int32_t));
86 }
87 
unmarshal_VkOffset2D(VulkanStream * vkStream,VkStructureType rootType,VkOffset2D * forUnmarshaling)88 void unmarshal_VkOffset2D(VulkanStream* vkStream, VkStructureType rootType,
89                           VkOffset2D* forUnmarshaling) {
90     (void)rootType;
91     vkStream->read((int32_t*)&forUnmarshaling->x, sizeof(int32_t));
92     vkStream->read((int32_t*)&forUnmarshaling->y, sizeof(int32_t));
93 }
94 
marshal_VkOffset3D(VulkanStream * vkStream,VkStructureType rootType,const VkOffset3D * forMarshaling)95 void marshal_VkOffset3D(VulkanStream* vkStream, VkStructureType rootType,
96                         const VkOffset3D* forMarshaling) {
97     (void)rootType;
98     vkStream->write((int32_t*)&forMarshaling->x, sizeof(int32_t));
99     vkStream->write((int32_t*)&forMarshaling->y, sizeof(int32_t));
100     vkStream->write((int32_t*)&forMarshaling->z, sizeof(int32_t));
101 }
102 
unmarshal_VkOffset3D(VulkanStream * vkStream,VkStructureType rootType,VkOffset3D * forUnmarshaling)103 void unmarshal_VkOffset3D(VulkanStream* vkStream, VkStructureType rootType,
104                           VkOffset3D* forUnmarshaling) {
105     (void)rootType;
106     vkStream->read((int32_t*)&forUnmarshaling->x, sizeof(int32_t));
107     vkStream->read((int32_t*)&forUnmarshaling->y, sizeof(int32_t));
108     vkStream->read((int32_t*)&forUnmarshaling->z, sizeof(int32_t));
109 }
110 
marshal_VkRect2D(VulkanStream * vkStream,VkStructureType rootType,const VkRect2D * forMarshaling)111 void marshal_VkRect2D(VulkanStream* vkStream, VkStructureType rootType,
112                       const VkRect2D* forMarshaling) {
113     (void)rootType;
114     marshal_VkOffset2D(vkStream, rootType, (VkOffset2D*)(&forMarshaling->offset));
115     marshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forMarshaling->extent));
116 }
117 
unmarshal_VkRect2D(VulkanStream * vkStream,VkStructureType rootType,VkRect2D * forUnmarshaling)118 void unmarshal_VkRect2D(VulkanStream* vkStream, VkStructureType rootType,
119                         VkRect2D* forUnmarshaling) {
120     (void)rootType;
121     unmarshal_VkOffset2D(vkStream, rootType, (VkOffset2D*)(&forUnmarshaling->offset));
122     unmarshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->extent));
123 }
124 
marshal_VkBaseInStructure(VulkanStream * vkStream,VkStructureType rootType,const VkBaseInStructure * forMarshaling)125 void marshal_VkBaseInStructure(VulkanStream* vkStream, VkStructureType rootType,
126                                const VkBaseInStructure* forMarshaling) {
127     (void)rootType;
128     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
129     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
130         rootType = forMarshaling->sType;
131     }
132     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
133 }
134 
unmarshal_VkBaseInStructure(VulkanStream * vkStream,VkStructureType rootType,VkBaseInStructure * forUnmarshaling)135 void unmarshal_VkBaseInStructure(VulkanStream* vkStream, VkStructureType rootType,
136                                  VkBaseInStructure* forUnmarshaling) {
137     (void)rootType;
138     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
139     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
140         rootType = forUnmarshaling->sType;
141     }
142     size_t pNext_size;
143     pNext_size = vkStream->getBe32();
144     forUnmarshaling->pNext = nullptr;
145     if (pNext_size) {
146         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
147         vkStream->read((VkBaseInStructure*)forUnmarshaling->pNext, sizeof(VkStructureType));
148         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
149         vkStream->alloc((void**)&forUnmarshaling->pNext,
150                         goldfish_vk_extension_struct_size_with_stream_features(
151                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
152         *(VkStructureType*)forUnmarshaling->pNext = extType;
153         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
154     }
155 }
156 
marshal_VkBaseOutStructure(VulkanStream * vkStream,VkStructureType rootType,const VkBaseOutStructure * forMarshaling)157 void marshal_VkBaseOutStructure(VulkanStream* vkStream, VkStructureType rootType,
158                                 const VkBaseOutStructure* forMarshaling) {
159     (void)rootType;
160     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
161     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
162         rootType = forMarshaling->sType;
163     }
164     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
165 }
166 
unmarshal_VkBaseOutStructure(VulkanStream * vkStream,VkStructureType rootType,VkBaseOutStructure * forUnmarshaling)167 void unmarshal_VkBaseOutStructure(VulkanStream* vkStream, VkStructureType rootType,
168                                   VkBaseOutStructure* forUnmarshaling) {
169     (void)rootType;
170     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
171     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
172         rootType = forUnmarshaling->sType;
173     }
174     size_t pNext_size;
175     pNext_size = vkStream->getBe32();
176     forUnmarshaling->pNext = nullptr;
177     if (pNext_size) {
178         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
179         vkStream->read((VkBaseOutStructure*)forUnmarshaling->pNext, sizeof(VkStructureType));
180         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
181         vkStream->alloc((void**)&forUnmarshaling->pNext,
182                         goldfish_vk_extension_struct_size_with_stream_features(
183                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
184         *(VkStructureType*)forUnmarshaling->pNext = extType;
185         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
186     }
187 }
188 
marshal_VkBufferMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,const VkBufferMemoryBarrier * forMarshaling)189 void marshal_VkBufferMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
190                                    const VkBufferMemoryBarrier* forMarshaling) {
191     (void)rootType;
192     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
193     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
194         rootType = forMarshaling->sType;
195     }
196     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
197     vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
198     vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
199     vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
200     vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
201     uint64_t cgen_var_0;
202     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
203     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
204     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
205     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
206 }
207 
unmarshal_VkBufferMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,VkBufferMemoryBarrier * forUnmarshaling)208 void unmarshal_VkBufferMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
209                                      VkBufferMemoryBarrier* forUnmarshaling) {
210     (void)rootType;
211     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
212     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
213         rootType = forUnmarshaling->sType;
214     }
215     size_t pNext_size;
216     pNext_size = vkStream->getBe32();
217     forUnmarshaling->pNext = nullptr;
218     if (pNext_size) {
219         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
220         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
221         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
222         vkStream->alloc((void**)&forUnmarshaling->pNext,
223                         goldfish_vk_extension_struct_size_with_stream_features(
224                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
225         *(VkStructureType*)forUnmarshaling->pNext = extType;
226         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
227     }
228     vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
229     vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
230     vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
231     vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
232     uint64_t cgen_var_0;
233     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
234     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
235                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
236     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
237     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
238 }
239 
marshal_VkDispatchIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,const VkDispatchIndirectCommand * forMarshaling)240 void marshal_VkDispatchIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
241                                        const VkDispatchIndirectCommand* forMarshaling) {
242     (void)rootType;
243     vkStream->write((uint32_t*)&forMarshaling->x, sizeof(uint32_t));
244     vkStream->write((uint32_t*)&forMarshaling->y, sizeof(uint32_t));
245     vkStream->write((uint32_t*)&forMarshaling->z, sizeof(uint32_t));
246 }
247 
unmarshal_VkDispatchIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,VkDispatchIndirectCommand * forUnmarshaling)248 void unmarshal_VkDispatchIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
249                                          VkDispatchIndirectCommand* forUnmarshaling) {
250     (void)rootType;
251     vkStream->read((uint32_t*)&forUnmarshaling->x, sizeof(uint32_t));
252     vkStream->read((uint32_t*)&forUnmarshaling->y, sizeof(uint32_t));
253     vkStream->read((uint32_t*)&forUnmarshaling->z, sizeof(uint32_t));
254 }
255 
marshal_VkDrawIndexedIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,const VkDrawIndexedIndirectCommand * forMarshaling)256 void marshal_VkDrawIndexedIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
257                                           const VkDrawIndexedIndirectCommand* forMarshaling) {
258     (void)rootType;
259     vkStream->write((uint32_t*)&forMarshaling->indexCount, sizeof(uint32_t));
260     vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
261     vkStream->write((uint32_t*)&forMarshaling->firstIndex, sizeof(uint32_t));
262     vkStream->write((int32_t*)&forMarshaling->vertexOffset, sizeof(int32_t));
263     vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
264 }
265 
unmarshal_VkDrawIndexedIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,VkDrawIndexedIndirectCommand * forUnmarshaling)266 void unmarshal_VkDrawIndexedIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
267                                             VkDrawIndexedIndirectCommand* forUnmarshaling) {
268     (void)rootType;
269     vkStream->read((uint32_t*)&forUnmarshaling->indexCount, sizeof(uint32_t));
270     vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
271     vkStream->read((uint32_t*)&forUnmarshaling->firstIndex, sizeof(uint32_t));
272     vkStream->read((int32_t*)&forUnmarshaling->vertexOffset, sizeof(int32_t));
273     vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
274 }
275 
marshal_VkDrawIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,const VkDrawIndirectCommand * forMarshaling)276 void marshal_VkDrawIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
277                                    const VkDrawIndirectCommand* forMarshaling) {
278     (void)rootType;
279     vkStream->write((uint32_t*)&forMarshaling->vertexCount, sizeof(uint32_t));
280     vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
281     vkStream->write((uint32_t*)&forMarshaling->firstVertex, sizeof(uint32_t));
282     vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
283 }
284 
unmarshal_VkDrawIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,VkDrawIndirectCommand * forUnmarshaling)285 void unmarshal_VkDrawIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
286                                      VkDrawIndirectCommand* forUnmarshaling) {
287     (void)rootType;
288     vkStream->read((uint32_t*)&forUnmarshaling->vertexCount, sizeof(uint32_t));
289     vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
290     vkStream->read((uint32_t*)&forUnmarshaling->firstVertex, sizeof(uint32_t));
291     vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
292 }
293 
marshal_VkImageSubresourceRange(VulkanStream * vkStream,VkStructureType rootType,const VkImageSubresourceRange * forMarshaling)294 void marshal_VkImageSubresourceRange(VulkanStream* vkStream, VkStructureType rootType,
295                                      const VkImageSubresourceRange* forMarshaling) {
296     (void)rootType;
297     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
298     vkStream->write((uint32_t*)&forMarshaling->baseMipLevel, sizeof(uint32_t));
299     vkStream->write((uint32_t*)&forMarshaling->levelCount, sizeof(uint32_t));
300     vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
301     vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
302 }
303 
unmarshal_VkImageSubresourceRange(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresourceRange * forUnmarshaling)304 void unmarshal_VkImageSubresourceRange(VulkanStream* vkStream, VkStructureType rootType,
305                                        VkImageSubresourceRange* forUnmarshaling) {
306     (void)rootType;
307     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
308     vkStream->read((uint32_t*)&forUnmarshaling->baseMipLevel, sizeof(uint32_t));
309     vkStream->read((uint32_t*)&forUnmarshaling->levelCount, sizeof(uint32_t));
310     vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
311     vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
312 }
313 
marshal_VkImageMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,const VkImageMemoryBarrier * forMarshaling)314 void marshal_VkImageMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
315                                   const VkImageMemoryBarrier* forMarshaling) {
316     (void)rootType;
317     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
318     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
319         rootType = forMarshaling->sType;
320     }
321     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
322     vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
323     vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
324     vkStream->write((VkImageLayout*)&forMarshaling->oldLayout, sizeof(VkImageLayout));
325     vkStream->write((VkImageLayout*)&forMarshaling->newLayout, sizeof(VkImageLayout));
326     vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
327     vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
328     uint64_t cgen_var_0;
329     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
330     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
331     marshal_VkImageSubresourceRange(vkStream, rootType,
332                                     (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
333 }
334 
unmarshal_VkImageMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,VkImageMemoryBarrier * forUnmarshaling)335 void unmarshal_VkImageMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
336                                     VkImageMemoryBarrier* forUnmarshaling) {
337     (void)rootType;
338     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
339     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
340         rootType = forUnmarshaling->sType;
341     }
342     size_t pNext_size;
343     pNext_size = vkStream->getBe32();
344     forUnmarshaling->pNext = nullptr;
345     if (pNext_size) {
346         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
347         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
348         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
349         vkStream->alloc((void**)&forUnmarshaling->pNext,
350                         goldfish_vk_extension_struct_size_with_stream_features(
351                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
352         *(VkStructureType*)forUnmarshaling->pNext = extType;
353         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
354     }
355     vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
356     vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
357     vkStream->read((VkImageLayout*)&forUnmarshaling->oldLayout, sizeof(VkImageLayout));
358     vkStream->read((VkImageLayout*)&forUnmarshaling->newLayout, sizeof(VkImageLayout));
359     vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
360     vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
361     uint64_t cgen_var_0;
362     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
363     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
364                                                       (VkImage*)&forUnmarshaling->image, 1);
365     unmarshal_VkImageSubresourceRange(
366         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
367 }
368 
marshal_VkMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryBarrier * forMarshaling)369 void marshal_VkMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
370                              const VkMemoryBarrier* forMarshaling) {
371     (void)rootType;
372     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
373     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
374         rootType = forMarshaling->sType;
375     }
376     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
377     vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
378     vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
379 }
380 
unmarshal_VkMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,VkMemoryBarrier * forUnmarshaling)381 void unmarshal_VkMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
382                                VkMemoryBarrier* forUnmarshaling) {
383     (void)rootType;
384     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
385     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
386         rootType = forUnmarshaling->sType;
387     }
388     size_t pNext_size;
389     pNext_size = vkStream->getBe32();
390     forUnmarshaling->pNext = nullptr;
391     if (pNext_size) {
392         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
393         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
394         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
395         vkStream->alloc((void**)&forUnmarshaling->pNext,
396                         goldfish_vk_extension_struct_size_with_stream_features(
397                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
398         *(VkStructureType*)forUnmarshaling->pNext = extType;
399         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
400     }
401     vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
402     vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
403 }
404 
marshal_VkPipelineCacheHeaderVersionOne(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineCacheHeaderVersionOne * forMarshaling)405 void marshal_VkPipelineCacheHeaderVersionOne(VulkanStream* vkStream, VkStructureType rootType,
406                                              const VkPipelineCacheHeaderVersionOne* forMarshaling) {
407     (void)rootType;
408     vkStream->write((uint32_t*)&forMarshaling->headerSize, sizeof(uint32_t));
409     vkStream->write((VkPipelineCacheHeaderVersion*)&forMarshaling->headerVersion,
410                     sizeof(VkPipelineCacheHeaderVersion));
411     vkStream->write((uint32_t*)&forMarshaling->vendorID, sizeof(uint32_t));
412     vkStream->write((uint32_t*)&forMarshaling->deviceID, sizeof(uint32_t));
413     vkStream->write((uint8_t*)forMarshaling->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
414 }
415 
unmarshal_VkPipelineCacheHeaderVersionOne(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCacheHeaderVersionOne * forUnmarshaling)416 void unmarshal_VkPipelineCacheHeaderVersionOne(VulkanStream* vkStream, VkStructureType rootType,
417                                                VkPipelineCacheHeaderVersionOne* forUnmarshaling) {
418     (void)rootType;
419     vkStream->read((uint32_t*)&forUnmarshaling->headerSize, sizeof(uint32_t));
420     vkStream->read((VkPipelineCacheHeaderVersion*)&forUnmarshaling->headerVersion,
421                    sizeof(VkPipelineCacheHeaderVersion));
422     vkStream->read((uint32_t*)&forUnmarshaling->vendorID, sizeof(uint32_t));
423     vkStream->read((uint32_t*)&forUnmarshaling->deviceID, sizeof(uint32_t));
424     vkStream->read((uint8_t*)forUnmarshaling->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
425 }
426 
marshal_VkAllocationCallbacks(VulkanStream * vkStream,VkStructureType rootType,const VkAllocationCallbacks * forMarshaling)427 void marshal_VkAllocationCallbacks(VulkanStream* vkStream, VkStructureType rootType,
428                                    const VkAllocationCallbacks* forMarshaling) {
429     (void)rootType;
430     // WARNING PTR CHECK
431     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
432     vkStream->putBe64(cgen_var_0);
433     if (forMarshaling->pUserData) {
434         vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
435     }
436     uint64_t cgen_var_1 = (uint64_t)forMarshaling->pfnAllocation;
437     vkStream->putBe64(cgen_var_1);
438     uint64_t cgen_var_2 = (uint64_t)forMarshaling->pfnReallocation;
439     vkStream->putBe64(cgen_var_2);
440     uint64_t cgen_var_3 = (uint64_t)forMarshaling->pfnFree;
441     vkStream->putBe64(cgen_var_3);
442     uint64_t cgen_var_4 = (uint64_t)forMarshaling->pfnInternalAllocation;
443     vkStream->putBe64(cgen_var_4);
444     uint64_t cgen_var_5 = (uint64_t)forMarshaling->pfnInternalFree;
445     vkStream->putBe64(cgen_var_5);
446 }
447 
unmarshal_VkAllocationCallbacks(VulkanStream * vkStream,VkStructureType rootType,VkAllocationCallbacks * forUnmarshaling)448 void unmarshal_VkAllocationCallbacks(VulkanStream* vkStream, VkStructureType rootType,
449                                      VkAllocationCallbacks* forUnmarshaling) {
450     (void)rootType;
451     // WARNING PTR CHECK
452     forUnmarshaling->pUserData = (void*)(uintptr_t)vkStream->getBe64();
453     if (forUnmarshaling->pUserData) {
454         vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
455         vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
456     }
457     forUnmarshaling->pfnAllocation = (PFN_vkAllocationFunction)vkStream->getBe64();
458     forUnmarshaling->pfnReallocation = (PFN_vkReallocationFunction)vkStream->getBe64();
459     forUnmarshaling->pfnFree = (PFN_vkFreeFunction)vkStream->getBe64();
460     forUnmarshaling->pfnInternalAllocation =
461         (PFN_vkInternalAllocationNotification)vkStream->getBe64();
462     forUnmarshaling->pfnInternalFree = (PFN_vkInternalFreeNotification)vkStream->getBe64();
463 }
464 
marshal_VkApplicationInfo(VulkanStream * vkStream,VkStructureType rootType,const VkApplicationInfo * forMarshaling)465 void marshal_VkApplicationInfo(VulkanStream* vkStream, VkStructureType rootType,
466                                const VkApplicationInfo* forMarshaling) {
467     (void)rootType;
468     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
469     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
470         rootType = forMarshaling->sType;
471     }
472     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
473     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
474         // WARNING PTR CHECK
475         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pApplicationName;
476         vkStream->putBe64(cgen_var_0);
477         if (forMarshaling->pApplicationName) {
478             vkStream->putString(forMarshaling->pApplicationName);
479         }
480     } else {
481         vkStream->putString(forMarshaling->pApplicationName);
482     }
483     vkStream->write((uint32_t*)&forMarshaling->applicationVersion, sizeof(uint32_t));
484     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
485         // WARNING PTR CHECK
486         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pEngineName;
487         vkStream->putBe64(cgen_var_0);
488         if (forMarshaling->pEngineName) {
489             vkStream->putString(forMarshaling->pEngineName);
490         }
491     } else {
492         vkStream->putString(forMarshaling->pEngineName);
493     }
494     vkStream->write((uint32_t*)&forMarshaling->engineVersion, sizeof(uint32_t));
495     vkStream->write((uint32_t*)&forMarshaling->apiVersion, sizeof(uint32_t));
496 }
497 
unmarshal_VkApplicationInfo(VulkanStream * vkStream,VkStructureType rootType,VkApplicationInfo * forUnmarshaling)498 void unmarshal_VkApplicationInfo(VulkanStream* vkStream, VkStructureType rootType,
499                                  VkApplicationInfo* forUnmarshaling) {
500     (void)rootType;
501     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
502     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
503         rootType = forUnmarshaling->sType;
504     }
505     size_t pNext_size;
506     pNext_size = vkStream->getBe32();
507     forUnmarshaling->pNext = nullptr;
508     if (pNext_size) {
509         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
510         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
511         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
512         vkStream->alloc((void**)&forUnmarshaling->pNext,
513                         goldfish_vk_extension_struct_size_with_stream_features(
514                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
515         *(VkStructureType*)forUnmarshaling->pNext = extType;
516         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
517     }
518     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
519         // WARNING PTR CHECK
520         forUnmarshaling->pApplicationName = (const char*)(uintptr_t)vkStream->getBe64();
521         if (forUnmarshaling->pApplicationName) {
522             vkStream->loadStringInPlace((char**)&forUnmarshaling->pApplicationName);
523         }
524     } else {
525         vkStream->loadStringInPlace((char**)&forUnmarshaling->pApplicationName);
526     }
527     vkStream->read((uint32_t*)&forUnmarshaling->applicationVersion, sizeof(uint32_t));
528     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
529         // WARNING PTR CHECK
530         forUnmarshaling->pEngineName = (const char*)(uintptr_t)vkStream->getBe64();
531         if (forUnmarshaling->pEngineName) {
532             vkStream->loadStringInPlace((char**)&forUnmarshaling->pEngineName);
533         }
534     } else {
535         vkStream->loadStringInPlace((char**)&forUnmarshaling->pEngineName);
536     }
537     vkStream->read((uint32_t*)&forUnmarshaling->engineVersion, sizeof(uint32_t));
538     vkStream->read((uint32_t*)&forUnmarshaling->apiVersion, sizeof(uint32_t));
539 }
540 
marshal_VkFormatProperties(VulkanStream * vkStream,VkStructureType rootType,const VkFormatProperties * forMarshaling)541 void marshal_VkFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
542                                 const VkFormatProperties* forMarshaling) {
543     (void)rootType;
544     vkStream->write((VkFormatFeatureFlags*)&forMarshaling->linearTilingFeatures,
545                     sizeof(VkFormatFeatureFlags));
546     vkStream->write((VkFormatFeatureFlags*)&forMarshaling->optimalTilingFeatures,
547                     sizeof(VkFormatFeatureFlags));
548     vkStream->write((VkFormatFeatureFlags*)&forMarshaling->bufferFeatures,
549                     sizeof(VkFormatFeatureFlags));
550 }
551 
unmarshal_VkFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkFormatProperties * forUnmarshaling)552 void unmarshal_VkFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
553                                   VkFormatProperties* forUnmarshaling) {
554     (void)rootType;
555     vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->linearTilingFeatures,
556                    sizeof(VkFormatFeatureFlags));
557     vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->optimalTilingFeatures,
558                    sizeof(VkFormatFeatureFlags));
559     vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->bufferFeatures,
560                    sizeof(VkFormatFeatureFlags));
561 }
562 
marshal_VkImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,const VkImageFormatProperties * forMarshaling)563 void marshal_VkImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
564                                      const VkImageFormatProperties* forMarshaling) {
565     (void)rootType;
566     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->maxExtent));
567     vkStream->write((uint32_t*)&forMarshaling->maxMipLevels, sizeof(uint32_t));
568     vkStream->write((uint32_t*)&forMarshaling->maxArrayLayers, sizeof(uint32_t));
569     vkStream->write((VkSampleCountFlags*)&forMarshaling->sampleCounts, sizeof(VkSampleCountFlags));
570     vkStream->write((VkDeviceSize*)&forMarshaling->maxResourceSize, sizeof(VkDeviceSize));
571 }
572 
unmarshal_VkImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkImageFormatProperties * forUnmarshaling)573 void unmarshal_VkImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
574                                        VkImageFormatProperties* forUnmarshaling) {
575     (void)rootType;
576     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->maxExtent));
577     vkStream->read((uint32_t*)&forUnmarshaling->maxMipLevels, sizeof(uint32_t));
578     vkStream->read((uint32_t*)&forUnmarshaling->maxArrayLayers, sizeof(uint32_t));
579     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampleCounts, sizeof(VkSampleCountFlags));
580     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxResourceSize, sizeof(VkDeviceSize));
581 }
582 
marshal_VkInstanceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkInstanceCreateInfo * forMarshaling)583 void marshal_VkInstanceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
584                                   const VkInstanceCreateInfo* forMarshaling) {
585     (void)rootType;
586     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
587     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
588         rootType = forMarshaling->sType;
589     }
590     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
591     vkStream->write((VkInstanceCreateFlags*)&forMarshaling->flags, sizeof(VkInstanceCreateFlags));
592     // WARNING PTR CHECK
593     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pApplicationInfo;
594     vkStream->putBe64(cgen_var_0);
595     if (forMarshaling->pApplicationInfo) {
596         marshal_VkApplicationInfo(vkStream, rootType,
597                                   (const VkApplicationInfo*)(forMarshaling->pApplicationInfo));
598     }
599     vkStream->write((uint32_t*)&forMarshaling->enabledLayerCount, sizeof(uint32_t));
600     saveStringArray(vkStream, forMarshaling->ppEnabledLayerNames, forMarshaling->enabledLayerCount);
601     vkStream->write((uint32_t*)&forMarshaling->enabledExtensionCount, sizeof(uint32_t));
602     saveStringArray(vkStream, forMarshaling->ppEnabledExtensionNames,
603                     forMarshaling->enabledExtensionCount);
604 }
605 
unmarshal_VkInstanceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkInstanceCreateInfo * forUnmarshaling)606 void unmarshal_VkInstanceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
607                                     VkInstanceCreateInfo* forUnmarshaling) {
608     (void)rootType;
609     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
610     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
611         rootType = forUnmarshaling->sType;
612     }
613     size_t pNext_size;
614     pNext_size = vkStream->getBe32();
615     forUnmarshaling->pNext = nullptr;
616     if (pNext_size) {
617         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
618         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
619         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
620         vkStream->alloc((void**)&forUnmarshaling->pNext,
621                         goldfish_vk_extension_struct_size_with_stream_features(
622                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
623         *(VkStructureType*)forUnmarshaling->pNext = extType;
624         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
625     }
626     vkStream->read((VkInstanceCreateFlags*)&forUnmarshaling->flags, sizeof(VkInstanceCreateFlags));
627     // WARNING PTR CHECK
628     forUnmarshaling->pApplicationInfo = (const VkApplicationInfo*)(uintptr_t)vkStream->getBe64();
629     if (forUnmarshaling->pApplicationInfo) {
630         vkStream->alloc((void**)&forUnmarshaling->pApplicationInfo,
631                         sizeof(const VkApplicationInfo));
632         unmarshal_VkApplicationInfo(vkStream, rootType,
633                                     (VkApplicationInfo*)(forUnmarshaling->pApplicationInfo));
634     }
635     vkStream->read((uint32_t*)&forUnmarshaling->enabledLayerCount, sizeof(uint32_t));
636     vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledLayerNames);
637     vkStream->read((uint32_t*)&forUnmarshaling->enabledExtensionCount, sizeof(uint32_t));
638     vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledExtensionNames);
639 }
640 
marshal_VkMemoryHeap(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryHeap * forMarshaling)641 void marshal_VkMemoryHeap(VulkanStream* vkStream, VkStructureType rootType,
642                           const VkMemoryHeap* forMarshaling) {
643     (void)rootType;
644     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
645     vkStream->write((VkMemoryHeapFlags*)&forMarshaling->flags, sizeof(VkMemoryHeapFlags));
646 }
647 
unmarshal_VkMemoryHeap(VulkanStream * vkStream,VkStructureType rootType,VkMemoryHeap * forUnmarshaling)648 void unmarshal_VkMemoryHeap(VulkanStream* vkStream, VkStructureType rootType,
649                             VkMemoryHeap* forUnmarshaling) {
650     (void)rootType;
651     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
652     vkStream->read((VkMemoryHeapFlags*)&forUnmarshaling->flags, sizeof(VkMemoryHeapFlags));
653 }
654 
marshal_VkMemoryType(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryType * forMarshaling)655 void marshal_VkMemoryType(VulkanStream* vkStream, VkStructureType rootType,
656                           const VkMemoryType* forMarshaling) {
657     (void)rootType;
658     vkStream->write((VkMemoryPropertyFlags*)&forMarshaling->propertyFlags,
659                     sizeof(VkMemoryPropertyFlags));
660     vkStream->write((uint32_t*)&forMarshaling->heapIndex, sizeof(uint32_t));
661 }
662 
unmarshal_VkMemoryType(VulkanStream * vkStream,VkStructureType rootType,VkMemoryType * forUnmarshaling)663 void unmarshal_VkMemoryType(VulkanStream* vkStream, VkStructureType rootType,
664                             VkMemoryType* forUnmarshaling) {
665     (void)rootType;
666     vkStream->read((VkMemoryPropertyFlags*)&forUnmarshaling->propertyFlags,
667                    sizeof(VkMemoryPropertyFlags));
668     vkStream->read((uint32_t*)&forUnmarshaling->heapIndex, sizeof(uint32_t));
669 }
670 
marshal_VkPhysicalDeviceFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceFeatures * forMarshaling)671 void marshal_VkPhysicalDeviceFeatures(VulkanStream* vkStream, VkStructureType rootType,
672                                       const VkPhysicalDeviceFeatures* forMarshaling) {
673     (void)rootType;
674     vkStream->write((VkBool32*)&forMarshaling->robustBufferAccess, sizeof(VkBool32));
675     vkStream->write((VkBool32*)&forMarshaling->fullDrawIndexUint32, sizeof(VkBool32));
676     vkStream->write((VkBool32*)&forMarshaling->imageCubeArray, sizeof(VkBool32));
677     vkStream->write((VkBool32*)&forMarshaling->independentBlend, sizeof(VkBool32));
678     vkStream->write((VkBool32*)&forMarshaling->geometryShader, sizeof(VkBool32));
679     vkStream->write((VkBool32*)&forMarshaling->tessellationShader, sizeof(VkBool32));
680     vkStream->write((VkBool32*)&forMarshaling->sampleRateShading, sizeof(VkBool32));
681     vkStream->write((VkBool32*)&forMarshaling->dualSrcBlend, sizeof(VkBool32));
682     vkStream->write((VkBool32*)&forMarshaling->logicOp, sizeof(VkBool32));
683     vkStream->write((VkBool32*)&forMarshaling->multiDrawIndirect, sizeof(VkBool32));
684     vkStream->write((VkBool32*)&forMarshaling->drawIndirectFirstInstance, sizeof(VkBool32));
685     vkStream->write((VkBool32*)&forMarshaling->depthClamp, sizeof(VkBool32));
686     vkStream->write((VkBool32*)&forMarshaling->depthBiasClamp, sizeof(VkBool32));
687     vkStream->write((VkBool32*)&forMarshaling->fillModeNonSolid, sizeof(VkBool32));
688     vkStream->write((VkBool32*)&forMarshaling->depthBounds, sizeof(VkBool32));
689     vkStream->write((VkBool32*)&forMarshaling->wideLines, sizeof(VkBool32));
690     vkStream->write((VkBool32*)&forMarshaling->largePoints, sizeof(VkBool32));
691     vkStream->write((VkBool32*)&forMarshaling->alphaToOne, sizeof(VkBool32));
692     vkStream->write((VkBool32*)&forMarshaling->multiViewport, sizeof(VkBool32));
693     vkStream->write((VkBool32*)&forMarshaling->samplerAnisotropy, sizeof(VkBool32));
694     vkStream->write((VkBool32*)&forMarshaling->textureCompressionETC2, sizeof(VkBool32));
695     vkStream->write((VkBool32*)&forMarshaling->textureCompressionASTC_LDR, sizeof(VkBool32));
696     vkStream->write((VkBool32*)&forMarshaling->textureCompressionBC, sizeof(VkBool32));
697     vkStream->write((VkBool32*)&forMarshaling->occlusionQueryPrecise, sizeof(VkBool32));
698     vkStream->write((VkBool32*)&forMarshaling->pipelineStatisticsQuery, sizeof(VkBool32));
699     vkStream->write((VkBool32*)&forMarshaling->vertexPipelineStoresAndAtomics, sizeof(VkBool32));
700     vkStream->write((VkBool32*)&forMarshaling->fragmentStoresAndAtomics, sizeof(VkBool32));
701     vkStream->write((VkBool32*)&forMarshaling->shaderTessellationAndGeometryPointSize,
702                     sizeof(VkBool32));
703     vkStream->write((VkBool32*)&forMarshaling->shaderImageGatherExtended, sizeof(VkBool32));
704     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageExtendedFormats, sizeof(VkBool32));
705     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageMultisample, sizeof(VkBool32));
706     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageReadWithoutFormat,
707                     sizeof(VkBool32));
708     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageWriteWithoutFormat,
709                     sizeof(VkBool32));
710     vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayDynamicIndexing,
711                     sizeof(VkBool32));
712     vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayDynamicIndexing,
713                     sizeof(VkBool32));
714     vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayDynamicIndexing,
715                     sizeof(VkBool32));
716     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayDynamicIndexing,
717                     sizeof(VkBool32));
718     vkStream->write((VkBool32*)&forMarshaling->shaderClipDistance, sizeof(VkBool32));
719     vkStream->write((VkBool32*)&forMarshaling->shaderCullDistance, sizeof(VkBool32));
720     vkStream->write((VkBool32*)&forMarshaling->shaderFloat64, sizeof(VkBool32));
721     vkStream->write((VkBool32*)&forMarshaling->shaderInt64, sizeof(VkBool32));
722     vkStream->write((VkBool32*)&forMarshaling->shaderInt16, sizeof(VkBool32));
723     vkStream->write((VkBool32*)&forMarshaling->shaderResourceResidency, sizeof(VkBool32));
724     vkStream->write((VkBool32*)&forMarshaling->shaderResourceMinLod, sizeof(VkBool32));
725     vkStream->write((VkBool32*)&forMarshaling->sparseBinding, sizeof(VkBool32));
726     vkStream->write((VkBool32*)&forMarshaling->sparseResidencyBuffer, sizeof(VkBool32));
727     vkStream->write((VkBool32*)&forMarshaling->sparseResidencyImage2D, sizeof(VkBool32));
728     vkStream->write((VkBool32*)&forMarshaling->sparseResidencyImage3D, sizeof(VkBool32));
729     vkStream->write((VkBool32*)&forMarshaling->sparseResidency2Samples, sizeof(VkBool32));
730     vkStream->write((VkBool32*)&forMarshaling->sparseResidency4Samples, sizeof(VkBool32));
731     vkStream->write((VkBool32*)&forMarshaling->sparseResidency8Samples, sizeof(VkBool32));
732     vkStream->write((VkBool32*)&forMarshaling->sparseResidency16Samples, sizeof(VkBool32));
733     vkStream->write((VkBool32*)&forMarshaling->sparseResidencyAliased, sizeof(VkBool32));
734     vkStream->write((VkBool32*)&forMarshaling->variableMultisampleRate, sizeof(VkBool32));
735     vkStream->write((VkBool32*)&forMarshaling->inheritedQueries, sizeof(VkBool32));
736 }
737 
unmarshal_VkPhysicalDeviceFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFeatures * forUnmarshaling)738 void unmarshal_VkPhysicalDeviceFeatures(VulkanStream* vkStream, VkStructureType rootType,
739                                         VkPhysicalDeviceFeatures* forUnmarshaling) {
740     (void)rootType;
741     vkStream->read((VkBool32*)&forUnmarshaling->robustBufferAccess, sizeof(VkBool32));
742     vkStream->read((VkBool32*)&forUnmarshaling->fullDrawIndexUint32, sizeof(VkBool32));
743     vkStream->read((VkBool32*)&forUnmarshaling->imageCubeArray, sizeof(VkBool32));
744     vkStream->read((VkBool32*)&forUnmarshaling->independentBlend, sizeof(VkBool32));
745     vkStream->read((VkBool32*)&forUnmarshaling->geometryShader, sizeof(VkBool32));
746     vkStream->read((VkBool32*)&forUnmarshaling->tessellationShader, sizeof(VkBool32));
747     vkStream->read((VkBool32*)&forUnmarshaling->sampleRateShading, sizeof(VkBool32));
748     vkStream->read((VkBool32*)&forUnmarshaling->dualSrcBlend, sizeof(VkBool32));
749     vkStream->read((VkBool32*)&forUnmarshaling->logicOp, sizeof(VkBool32));
750     vkStream->read((VkBool32*)&forUnmarshaling->multiDrawIndirect, sizeof(VkBool32));
751     vkStream->read((VkBool32*)&forUnmarshaling->drawIndirectFirstInstance, sizeof(VkBool32));
752     vkStream->read((VkBool32*)&forUnmarshaling->depthClamp, sizeof(VkBool32));
753     vkStream->read((VkBool32*)&forUnmarshaling->depthBiasClamp, sizeof(VkBool32));
754     vkStream->read((VkBool32*)&forUnmarshaling->fillModeNonSolid, sizeof(VkBool32));
755     vkStream->read((VkBool32*)&forUnmarshaling->depthBounds, sizeof(VkBool32));
756     vkStream->read((VkBool32*)&forUnmarshaling->wideLines, sizeof(VkBool32));
757     vkStream->read((VkBool32*)&forUnmarshaling->largePoints, sizeof(VkBool32));
758     vkStream->read((VkBool32*)&forUnmarshaling->alphaToOne, sizeof(VkBool32));
759     vkStream->read((VkBool32*)&forUnmarshaling->multiViewport, sizeof(VkBool32));
760     vkStream->read((VkBool32*)&forUnmarshaling->samplerAnisotropy, sizeof(VkBool32));
761     vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionETC2, sizeof(VkBool32));
762     vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionASTC_LDR, sizeof(VkBool32));
763     vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionBC, sizeof(VkBool32));
764     vkStream->read((VkBool32*)&forUnmarshaling->occlusionQueryPrecise, sizeof(VkBool32));
765     vkStream->read((VkBool32*)&forUnmarshaling->pipelineStatisticsQuery, sizeof(VkBool32));
766     vkStream->read((VkBool32*)&forUnmarshaling->vertexPipelineStoresAndAtomics, sizeof(VkBool32));
767     vkStream->read((VkBool32*)&forUnmarshaling->fragmentStoresAndAtomics, sizeof(VkBool32));
768     vkStream->read((VkBool32*)&forUnmarshaling->shaderTessellationAndGeometryPointSize,
769                    sizeof(VkBool32));
770     vkStream->read((VkBool32*)&forUnmarshaling->shaderImageGatherExtended, sizeof(VkBool32));
771     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageExtendedFormats,
772                    sizeof(VkBool32));
773     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageMultisample, sizeof(VkBool32));
774     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageReadWithoutFormat,
775                    sizeof(VkBool32));
776     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageWriteWithoutFormat,
777                    sizeof(VkBool32));
778     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayDynamicIndexing,
779                    sizeof(VkBool32));
780     vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayDynamicIndexing,
781                    sizeof(VkBool32));
782     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayDynamicIndexing,
783                    sizeof(VkBool32));
784     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayDynamicIndexing,
785                    sizeof(VkBool32));
786     vkStream->read((VkBool32*)&forUnmarshaling->shaderClipDistance, sizeof(VkBool32));
787     vkStream->read((VkBool32*)&forUnmarshaling->shaderCullDistance, sizeof(VkBool32));
788     vkStream->read((VkBool32*)&forUnmarshaling->shaderFloat64, sizeof(VkBool32));
789     vkStream->read((VkBool32*)&forUnmarshaling->shaderInt64, sizeof(VkBool32));
790     vkStream->read((VkBool32*)&forUnmarshaling->shaderInt16, sizeof(VkBool32));
791     vkStream->read((VkBool32*)&forUnmarshaling->shaderResourceResidency, sizeof(VkBool32));
792     vkStream->read((VkBool32*)&forUnmarshaling->shaderResourceMinLod, sizeof(VkBool32));
793     vkStream->read((VkBool32*)&forUnmarshaling->sparseBinding, sizeof(VkBool32));
794     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyBuffer, sizeof(VkBool32));
795     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyImage2D, sizeof(VkBool32));
796     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyImage3D, sizeof(VkBool32));
797     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency2Samples, sizeof(VkBool32));
798     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency4Samples, sizeof(VkBool32));
799     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency8Samples, sizeof(VkBool32));
800     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency16Samples, sizeof(VkBool32));
801     vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyAliased, sizeof(VkBool32));
802     vkStream->read((VkBool32*)&forUnmarshaling->variableMultisampleRate, sizeof(VkBool32));
803     vkStream->read((VkBool32*)&forUnmarshaling->inheritedQueries, sizeof(VkBool32));
804 }
805 
marshal_VkPhysicalDeviceLimits(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceLimits * forMarshaling)806 void marshal_VkPhysicalDeviceLimits(VulkanStream* vkStream, VkStructureType rootType,
807                                     const VkPhysicalDeviceLimits* forMarshaling) {
808     (void)rootType;
809     vkStream->write((uint32_t*)&forMarshaling->maxImageDimension1D, sizeof(uint32_t));
810     vkStream->write((uint32_t*)&forMarshaling->maxImageDimension2D, sizeof(uint32_t));
811     vkStream->write((uint32_t*)&forMarshaling->maxImageDimension3D, sizeof(uint32_t));
812     vkStream->write((uint32_t*)&forMarshaling->maxImageDimensionCube, sizeof(uint32_t));
813     vkStream->write((uint32_t*)&forMarshaling->maxImageArrayLayers, sizeof(uint32_t));
814     vkStream->write((uint32_t*)&forMarshaling->maxTexelBufferElements, sizeof(uint32_t));
815     vkStream->write((uint32_t*)&forMarshaling->maxUniformBufferRange, sizeof(uint32_t));
816     vkStream->write((uint32_t*)&forMarshaling->maxStorageBufferRange, sizeof(uint32_t));
817     vkStream->write((uint32_t*)&forMarshaling->maxPushConstantsSize, sizeof(uint32_t));
818     vkStream->write((uint32_t*)&forMarshaling->maxMemoryAllocationCount, sizeof(uint32_t));
819     vkStream->write((uint32_t*)&forMarshaling->maxSamplerAllocationCount, sizeof(uint32_t));
820     vkStream->write((VkDeviceSize*)&forMarshaling->bufferImageGranularity, sizeof(VkDeviceSize));
821     vkStream->write((VkDeviceSize*)&forMarshaling->sparseAddressSpaceSize, sizeof(VkDeviceSize));
822     vkStream->write((uint32_t*)&forMarshaling->maxBoundDescriptorSets, sizeof(uint32_t));
823     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorSamplers, sizeof(uint32_t));
824     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUniformBuffers,
825                     sizeof(uint32_t));
826     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorStorageBuffers,
827                     sizeof(uint32_t));
828     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorSampledImages,
829                     sizeof(uint32_t));
830     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorStorageImages,
831                     sizeof(uint32_t));
832     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorInputAttachments,
833                     sizeof(uint32_t));
834     vkStream->write((uint32_t*)&forMarshaling->maxPerStageResources, sizeof(uint32_t));
835     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetSamplers, sizeof(uint32_t));
836     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUniformBuffers, sizeof(uint32_t));
837     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUniformBuffersDynamic,
838                     sizeof(uint32_t));
839     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetStorageBuffers, sizeof(uint32_t));
840     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetStorageBuffersDynamic,
841                     sizeof(uint32_t));
842     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetSampledImages, sizeof(uint32_t));
843     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetStorageImages, sizeof(uint32_t));
844     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetInputAttachments, sizeof(uint32_t));
845     vkStream->write((uint32_t*)&forMarshaling->maxVertexInputAttributes, sizeof(uint32_t));
846     vkStream->write((uint32_t*)&forMarshaling->maxVertexInputBindings, sizeof(uint32_t));
847     vkStream->write((uint32_t*)&forMarshaling->maxVertexInputAttributeOffset, sizeof(uint32_t));
848     vkStream->write((uint32_t*)&forMarshaling->maxVertexInputBindingStride, sizeof(uint32_t));
849     vkStream->write((uint32_t*)&forMarshaling->maxVertexOutputComponents, sizeof(uint32_t));
850     vkStream->write((uint32_t*)&forMarshaling->maxTessellationGenerationLevel, sizeof(uint32_t));
851     vkStream->write((uint32_t*)&forMarshaling->maxTessellationPatchSize, sizeof(uint32_t));
852     vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlPerVertexInputComponents,
853                     sizeof(uint32_t));
854     vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlPerVertexOutputComponents,
855                     sizeof(uint32_t));
856     vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlPerPatchOutputComponents,
857                     sizeof(uint32_t));
858     vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlTotalOutputComponents,
859                     sizeof(uint32_t));
860     vkStream->write((uint32_t*)&forMarshaling->maxTessellationEvaluationInputComponents,
861                     sizeof(uint32_t));
862     vkStream->write((uint32_t*)&forMarshaling->maxTessellationEvaluationOutputComponents,
863                     sizeof(uint32_t));
864     vkStream->write((uint32_t*)&forMarshaling->maxGeometryShaderInvocations, sizeof(uint32_t));
865     vkStream->write((uint32_t*)&forMarshaling->maxGeometryInputComponents, sizeof(uint32_t));
866     vkStream->write((uint32_t*)&forMarshaling->maxGeometryOutputComponents, sizeof(uint32_t));
867     vkStream->write((uint32_t*)&forMarshaling->maxGeometryOutputVertices, sizeof(uint32_t));
868     vkStream->write((uint32_t*)&forMarshaling->maxGeometryTotalOutputComponents, sizeof(uint32_t));
869     vkStream->write((uint32_t*)&forMarshaling->maxFragmentInputComponents, sizeof(uint32_t));
870     vkStream->write((uint32_t*)&forMarshaling->maxFragmentOutputAttachments, sizeof(uint32_t));
871     vkStream->write((uint32_t*)&forMarshaling->maxFragmentDualSrcAttachments, sizeof(uint32_t));
872     vkStream->write((uint32_t*)&forMarshaling->maxFragmentCombinedOutputResources,
873                     sizeof(uint32_t));
874     vkStream->write((uint32_t*)&forMarshaling->maxComputeSharedMemorySize, sizeof(uint32_t));
875     vkStream->write((uint32_t*)forMarshaling->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
876     vkStream->write((uint32_t*)&forMarshaling->maxComputeWorkGroupInvocations, sizeof(uint32_t));
877     vkStream->write((uint32_t*)forMarshaling->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
878     vkStream->write((uint32_t*)&forMarshaling->subPixelPrecisionBits, sizeof(uint32_t));
879     vkStream->write((uint32_t*)&forMarshaling->subTexelPrecisionBits, sizeof(uint32_t));
880     vkStream->write((uint32_t*)&forMarshaling->mipmapPrecisionBits, sizeof(uint32_t));
881     vkStream->write((uint32_t*)&forMarshaling->maxDrawIndexedIndexValue, sizeof(uint32_t));
882     vkStream->write((uint32_t*)&forMarshaling->maxDrawIndirectCount, sizeof(uint32_t));
883     vkStream->write((float*)&forMarshaling->maxSamplerLodBias, sizeof(float));
884     vkStream->write((float*)&forMarshaling->maxSamplerAnisotropy, sizeof(float));
885     vkStream->write((uint32_t*)&forMarshaling->maxViewports, sizeof(uint32_t));
886     vkStream->write((uint32_t*)forMarshaling->maxViewportDimensions, 2 * sizeof(uint32_t));
887     vkStream->write((float*)forMarshaling->viewportBoundsRange, 2 * sizeof(float));
888     vkStream->write((uint32_t*)&forMarshaling->viewportSubPixelBits, sizeof(uint32_t));
889     uint64_t cgen_var_0 = (uint64_t)forMarshaling->minMemoryMapAlignment;
890     vkStream->putBe64(cgen_var_0);
891     vkStream->write((VkDeviceSize*)&forMarshaling->minTexelBufferOffsetAlignment,
892                     sizeof(VkDeviceSize));
893     vkStream->write((VkDeviceSize*)&forMarshaling->minUniformBufferOffsetAlignment,
894                     sizeof(VkDeviceSize));
895     vkStream->write((VkDeviceSize*)&forMarshaling->minStorageBufferOffsetAlignment,
896                     sizeof(VkDeviceSize));
897     vkStream->write((int32_t*)&forMarshaling->minTexelOffset, sizeof(int32_t));
898     vkStream->write((uint32_t*)&forMarshaling->maxTexelOffset, sizeof(uint32_t));
899     vkStream->write((int32_t*)&forMarshaling->minTexelGatherOffset, sizeof(int32_t));
900     vkStream->write((uint32_t*)&forMarshaling->maxTexelGatherOffset, sizeof(uint32_t));
901     vkStream->write((float*)&forMarshaling->minInterpolationOffset, sizeof(float));
902     vkStream->write((float*)&forMarshaling->maxInterpolationOffset, sizeof(float));
903     vkStream->write((uint32_t*)&forMarshaling->subPixelInterpolationOffsetBits, sizeof(uint32_t));
904     vkStream->write((uint32_t*)&forMarshaling->maxFramebufferWidth, sizeof(uint32_t));
905     vkStream->write((uint32_t*)&forMarshaling->maxFramebufferHeight, sizeof(uint32_t));
906     vkStream->write((uint32_t*)&forMarshaling->maxFramebufferLayers, sizeof(uint32_t));
907     vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferColorSampleCounts,
908                     sizeof(VkSampleCountFlags));
909     vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferDepthSampleCounts,
910                     sizeof(VkSampleCountFlags));
911     vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferStencilSampleCounts,
912                     sizeof(VkSampleCountFlags));
913     vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferNoAttachmentsSampleCounts,
914                     sizeof(VkSampleCountFlags));
915     vkStream->write((uint32_t*)&forMarshaling->maxColorAttachments, sizeof(uint32_t));
916     vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageColorSampleCounts,
917                     sizeof(VkSampleCountFlags));
918     vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageIntegerSampleCounts,
919                     sizeof(VkSampleCountFlags));
920     vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageDepthSampleCounts,
921                     sizeof(VkSampleCountFlags));
922     vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageStencilSampleCounts,
923                     sizeof(VkSampleCountFlags));
924     vkStream->write((VkSampleCountFlags*)&forMarshaling->storageImageSampleCounts,
925                     sizeof(VkSampleCountFlags));
926     vkStream->write((uint32_t*)&forMarshaling->maxSampleMaskWords, sizeof(uint32_t));
927     vkStream->write((VkBool32*)&forMarshaling->timestampComputeAndGraphics, sizeof(VkBool32));
928     vkStream->write((float*)&forMarshaling->timestampPeriod, sizeof(float));
929     vkStream->write((uint32_t*)&forMarshaling->maxClipDistances, sizeof(uint32_t));
930     vkStream->write((uint32_t*)&forMarshaling->maxCullDistances, sizeof(uint32_t));
931     vkStream->write((uint32_t*)&forMarshaling->maxCombinedClipAndCullDistances, sizeof(uint32_t));
932     vkStream->write((uint32_t*)&forMarshaling->discreteQueuePriorities, sizeof(uint32_t));
933     vkStream->write((float*)forMarshaling->pointSizeRange, 2 * sizeof(float));
934     vkStream->write((float*)forMarshaling->lineWidthRange, 2 * sizeof(float));
935     vkStream->write((float*)&forMarshaling->pointSizeGranularity, sizeof(float));
936     vkStream->write((float*)&forMarshaling->lineWidthGranularity, sizeof(float));
937     vkStream->write((VkBool32*)&forMarshaling->strictLines, sizeof(VkBool32));
938     vkStream->write((VkBool32*)&forMarshaling->standardSampleLocations, sizeof(VkBool32));
939     vkStream->write((VkDeviceSize*)&forMarshaling->optimalBufferCopyOffsetAlignment,
940                     sizeof(VkDeviceSize));
941     vkStream->write((VkDeviceSize*)&forMarshaling->optimalBufferCopyRowPitchAlignment,
942                     sizeof(VkDeviceSize));
943     vkStream->write((VkDeviceSize*)&forMarshaling->nonCoherentAtomSize, sizeof(VkDeviceSize));
944 }
945 
unmarshal_VkPhysicalDeviceLimits(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceLimits * forUnmarshaling)946 void unmarshal_VkPhysicalDeviceLimits(VulkanStream* vkStream, VkStructureType rootType,
947                                       VkPhysicalDeviceLimits* forUnmarshaling) {
948     (void)rootType;
949     vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimension1D, sizeof(uint32_t));
950     vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimension2D, sizeof(uint32_t));
951     vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimension3D, sizeof(uint32_t));
952     vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimensionCube, sizeof(uint32_t));
953     vkStream->read((uint32_t*)&forUnmarshaling->maxImageArrayLayers, sizeof(uint32_t));
954     vkStream->read((uint32_t*)&forUnmarshaling->maxTexelBufferElements, sizeof(uint32_t));
955     vkStream->read((uint32_t*)&forUnmarshaling->maxUniformBufferRange, sizeof(uint32_t));
956     vkStream->read((uint32_t*)&forUnmarshaling->maxStorageBufferRange, sizeof(uint32_t));
957     vkStream->read((uint32_t*)&forUnmarshaling->maxPushConstantsSize, sizeof(uint32_t));
958     vkStream->read((uint32_t*)&forUnmarshaling->maxMemoryAllocationCount, sizeof(uint32_t));
959     vkStream->read((uint32_t*)&forUnmarshaling->maxSamplerAllocationCount, sizeof(uint32_t));
960     vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferImageGranularity, sizeof(VkDeviceSize));
961     vkStream->read((VkDeviceSize*)&forUnmarshaling->sparseAddressSpaceSize, sizeof(VkDeviceSize));
962     vkStream->read((uint32_t*)&forUnmarshaling->maxBoundDescriptorSets, sizeof(uint32_t));
963     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorSamplers, sizeof(uint32_t));
964     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUniformBuffers,
965                    sizeof(uint32_t));
966     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorStorageBuffers,
967                    sizeof(uint32_t));
968     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorSampledImages,
969                    sizeof(uint32_t));
970     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorStorageImages,
971                    sizeof(uint32_t));
972     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInputAttachments,
973                    sizeof(uint32_t));
974     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageResources, sizeof(uint32_t));
975     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetSamplers, sizeof(uint32_t));
976     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUniformBuffers, sizeof(uint32_t));
977     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUniformBuffersDynamic,
978                    sizeof(uint32_t));
979     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageBuffers, sizeof(uint32_t));
980     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageBuffersDynamic,
981                    sizeof(uint32_t));
982     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetSampledImages, sizeof(uint32_t));
983     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageImages, sizeof(uint32_t));
984     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetInputAttachments, sizeof(uint32_t));
985     vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputAttributes, sizeof(uint32_t));
986     vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputBindings, sizeof(uint32_t));
987     vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputAttributeOffset, sizeof(uint32_t));
988     vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputBindingStride, sizeof(uint32_t));
989     vkStream->read((uint32_t*)&forUnmarshaling->maxVertexOutputComponents, sizeof(uint32_t));
990     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationGenerationLevel, sizeof(uint32_t));
991     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationPatchSize, sizeof(uint32_t));
992     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlPerVertexInputComponents,
993                    sizeof(uint32_t));
994     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlPerVertexOutputComponents,
995                    sizeof(uint32_t));
996     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlPerPatchOutputComponents,
997                    sizeof(uint32_t));
998     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlTotalOutputComponents,
999                    sizeof(uint32_t));
1000     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationEvaluationInputComponents,
1001                    sizeof(uint32_t));
1002     vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationEvaluationOutputComponents,
1003                    sizeof(uint32_t));
1004     vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryShaderInvocations, sizeof(uint32_t));
1005     vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryInputComponents, sizeof(uint32_t));
1006     vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryOutputComponents, sizeof(uint32_t));
1007     vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryOutputVertices, sizeof(uint32_t));
1008     vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryTotalOutputComponents, sizeof(uint32_t));
1009     vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentInputComponents, sizeof(uint32_t));
1010     vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentOutputAttachments, sizeof(uint32_t));
1011     vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentDualSrcAttachments, sizeof(uint32_t));
1012     vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentCombinedOutputResources,
1013                    sizeof(uint32_t));
1014     vkStream->read((uint32_t*)&forUnmarshaling->maxComputeSharedMemorySize, sizeof(uint32_t));
1015     vkStream->read((uint32_t*)forUnmarshaling->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
1016     vkStream->read((uint32_t*)&forUnmarshaling->maxComputeWorkGroupInvocations, sizeof(uint32_t));
1017     vkStream->read((uint32_t*)forUnmarshaling->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
1018     vkStream->read((uint32_t*)&forUnmarshaling->subPixelPrecisionBits, sizeof(uint32_t));
1019     vkStream->read((uint32_t*)&forUnmarshaling->subTexelPrecisionBits, sizeof(uint32_t));
1020     vkStream->read((uint32_t*)&forUnmarshaling->mipmapPrecisionBits, sizeof(uint32_t));
1021     vkStream->read((uint32_t*)&forUnmarshaling->maxDrawIndexedIndexValue, sizeof(uint32_t));
1022     vkStream->read((uint32_t*)&forUnmarshaling->maxDrawIndirectCount, sizeof(uint32_t));
1023     vkStream->read((float*)&forUnmarshaling->maxSamplerLodBias, sizeof(float));
1024     vkStream->read((float*)&forUnmarshaling->maxSamplerAnisotropy, sizeof(float));
1025     vkStream->read((uint32_t*)&forUnmarshaling->maxViewports, sizeof(uint32_t));
1026     vkStream->read((uint32_t*)forUnmarshaling->maxViewportDimensions, 2 * sizeof(uint32_t));
1027     vkStream->read((float*)forUnmarshaling->viewportBoundsRange, 2 * sizeof(float));
1028     vkStream->read((uint32_t*)&forUnmarshaling->viewportSubPixelBits, sizeof(uint32_t));
1029     forUnmarshaling->minMemoryMapAlignment = (size_t)vkStream->getBe64();
1030     vkStream->read((VkDeviceSize*)&forUnmarshaling->minTexelBufferOffsetAlignment,
1031                    sizeof(VkDeviceSize));
1032     vkStream->read((VkDeviceSize*)&forUnmarshaling->minUniformBufferOffsetAlignment,
1033                    sizeof(VkDeviceSize));
1034     vkStream->read((VkDeviceSize*)&forUnmarshaling->minStorageBufferOffsetAlignment,
1035                    sizeof(VkDeviceSize));
1036     vkStream->read((int32_t*)&forUnmarshaling->minTexelOffset, sizeof(int32_t));
1037     vkStream->read((uint32_t*)&forUnmarshaling->maxTexelOffset, sizeof(uint32_t));
1038     vkStream->read((int32_t*)&forUnmarshaling->minTexelGatherOffset, sizeof(int32_t));
1039     vkStream->read((uint32_t*)&forUnmarshaling->maxTexelGatherOffset, sizeof(uint32_t));
1040     vkStream->read((float*)&forUnmarshaling->minInterpolationOffset, sizeof(float));
1041     vkStream->read((float*)&forUnmarshaling->maxInterpolationOffset, sizeof(float));
1042     vkStream->read((uint32_t*)&forUnmarshaling->subPixelInterpolationOffsetBits, sizeof(uint32_t));
1043     vkStream->read((uint32_t*)&forUnmarshaling->maxFramebufferWidth, sizeof(uint32_t));
1044     vkStream->read((uint32_t*)&forUnmarshaling->maxFramebufferHeight, sizeof(uint32_t));
1045     vkStream->read((uint32_t*)&forUnmarshaling->maxFramebufferLayers, sizeof(uint32_t));
1046     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferColorSampleCounts,
1047                    sizeof(VkSampleCountFlags));
1048     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferDepthSampleCounts,
1049                    sizeof(VkSampleCountFlags));
1050     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferStencilSampleCounts,
1051                    sizeof(VkSampleCountFlags));
1052     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferNoAttachmentsSampleCounts,
1053                    sizeof(VkSampleCountFlags));
1054     vkStream->read((uint32_t*)&forUnmarshaling->maxColorAttachments, sizeof(uint32_t));
1055     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageColorSampleCounts,
1056                    sizeof(VkSampleCountFlags));
1057     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageIntegerSampleCounts,
1058                    sizeof(VkSampleCountFlags));
1059     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageDepthSampleCounts,
1060                    sizeof(VkSampleCountFlags));
1061     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageStencilSampleCounts,
1062                    sizeof(VkSampleCountFlags));
1063     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->storageImageSampleCounts,
1064                    sizeof(VkSampleCountFlags));
1065     vkStream->read((uint32_t*)&forUnmarshaling->maxSampleMaskWords, sizeof(uint32_t));
1066     vkStream->read((VkBool32*)&forUnmarshaling->timestampComputeAndGraphics, sizeof(VkBool32));
1067     vkStream->read((float*)&forUnmarshaling->timestampPeriod, sizeof(float));
1068     vkStream->read((uint32_t*)&forUnmarshaling->maxClipDistances, sizeof(uint32_t));
1069     vkStream->read((uint32_t*)&forUnmarshaling->maxCullDistances, sizeof(uint32_t));
1070     vkStream->read((uint32_t*)&forUnmarshaling->maxCombinedClipAndCullDistances, sizeof(uint32_t));
1071     vkStream->read((uint32_t*)&forUnmarshaling->discreteQueuePriorities, sizeof(uint32_t));
1072     vkStream->read((float*)forUnmarshaling->pointSizeRange, 2 * sizeof(float));
1073     vkStream->read((float*)forUnmarshaling->lineWidthRange, 2 * sizeof(float));
1074     vkStream->read((float*)&forUnmarshaling->pointSizeGranularity, sizeof(float));
1075     vkStream->read((float*)&forUnmarshaling->lineWidthGranularity, sizeof(float));
1076     vkStream->read((VkBool32*)&forUnmarshaling->strictLines, sizeof(VkBool32));
1077     vkStream->read((VkBool32*)&forUnmarshaling->standardSampleLocations, sizeof(VkBool32));
1078     vkStream->read((VkDeviceSize*)&forUnmarshaling->optimalBufferCopyOffsetAlignment,
1079                    sizeof(VkDeviceSize));
1080     vkStream->read((VkDeviceSize*)&forUnmarshaling->optimalBufferCopyRowPitchAlignment,
1081                    sizeof(VkDeviceSize));
1082     vkStream->read((VkDeviceSize*)&forUnmarshaling->nonCoherentAtomSize, sizeof(VkDeviceSize));
1083 }
1084 
marshal_VkPhysicalDeviceMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMemoryProperties * forMarshaling)1085 void marshal_VkPhysicalDeviceMemoryProperties(
1086     VulkanStream* vkStream, VkStructureType rootType,
1087     const VkPhysicalDeviceMemoryProperties* forMarshaling) {
1088     (void)rootType;
1089     vkStream->write((uint32_t*)&forMarshaling->memoryTypeCount, sizeof(uint32_t));
1090     for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i) {
1091         marshal_VkMemoryType(vkStream, rootType, (VkMemoryType*)(forMarshaling->memoryTypes + i));
1092     }
1093     vkStream->write((uint32_t*)&forMarshaling->memoryHeapCount, sizeof(uint32_t));
1094     for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i) {
1095         marshal_VkMemoryHeap(vkStream, rootType, (VkMemoryHeap*)(forMarshaling->memoryHeaps + i));
1096     }
1097 }
1098 
unmarshal_VkPhysicalDeviceMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMemoryProperties * forUnmarshaling)1099 void unmarshal_VkPhysicalDeviceMemoryProperties(VulkanStream* vkStream, VkStructureType rootType,
1100                                                 VkPhysicalDeviceMemoryProperties* forUnmarshaling) {
1101     (void)rootType;
1102     vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeCount, sizeof(uint32_t));
1103     for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i) {
1104         unmarshal_VkMemoryType(vkStream, rootType,
1105                                (VkMemoryType*)(forUnmarshaling->memoryTypes + i));
1106     }
1107     vkStream->read((uint32_t*)&forUnmarshaling->memoryHeapCount, sizeof(uint32_t));
1108     for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i) {
1109         unmarshal_VkMemoryHeap(vkStream, rootType,
1110                                (VkMemoryHeap*)(forUnmarshaling->memoryHeaps + i));
1111     }
1112 }
1113 
marshal_VkPhysicalDeviceSparseProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSparseProperties * forMarshaling)1114 void marshal_VkPhysicalDeviceSparseProperties(
1115     VulkanStream* vkStream, VkStructureType rootType,
1116     const VkPhysicalDeviceSparseProperties* forMarshaling) {
1117     (void)rootType;
1118     vkStream->write((VkBool32*)&forMarshaling->residencyStandard2DBlockShape, sizeof(VkBool32));
1119     vkStream->write((VkBool32*)&forMarshaling->residencyStandard2DMultisampleBlockShape,
1120                     sizeof(VkBool32));
1121     vkStream->write((VkBool32*)&forMarshaling->residencyStandard3DBlockShape, sizeof(VkBool32));
1122     vkStream->write((VkBool32*)&forMarshaling->residencyAlignedMipSize, sizeof(VkBool32));
1123     vkStream->write((VkBool32*)&forMarshaling->residencyNonResidentStrict, sizeof(VkBool32));
1124 }
1125 
unmarshal_VkPhysicalDeviceSparseProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSparseProperties * forUnmarshaling)1126 void unmarshal_VkPhysicalDeviceSparseProperties(VulkanStream* vkStream, VkStructureType rootType,
1127                                                 VkPhysicalDeviceSparseProperties* forUnmarshaling) {
1128     (void)rootType;
1129     vkStream->read((VkBool32*)&forUnmarshaling->residencyStandard2DBlockShape, sizeof(VkBool32));
1130     vkStream->read((VkBool32*)&forUnmarshaling->residencyStandard2DMultisampleBlockShape,
1131                    sizeof(VkBool32));
1132     vkStream->read((VkBool32*)&forUnmarshaling->residencyStandard3DBlockShape, sizeof(VkBool32));
1133     vkStream->read((VkBool32*)&forUnmarshaling->residencyAlignedMipSize, sizeof(VkBool32));
1134     vkStream->read((VkBool32*)&forUnmarshaling->residencyNonResidentStrict, sizeof(VkBool32));
1135 }
1136 
marshal_VkPhysicalDeviceProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceProperties * forMarshaling)1137 void marshal_VkPhysicalDeviceProperties(VulkanStream* vkStream, VkStructureType rootType,
1138                                         const VkPhysicalDeviceProperties* forMarshaling) {
1139     (void)rootType;
1140     vkStream->write((uint32_t*)&forMarshaling->apiVersion, sizeof(uint32_t));
1141     vkStream->write((uint32_t*)&forMarshaling->driverVersion, sizeof(uint32_t));
1142     vkStream->write((uint32_t*)&forMarshaling->vendorID, sizeof(uint32_t));
1143     vkStream->write((uint32_t*)&forMarshaling->deviceID, sizeof(uint32_t));
1144     vkStream->write((VkPhysicalDeviceType*)&forMarshaling->deviceType,
1145                     sizeof(VkPhysicalDeviceType));
1146     vkStream->write((char*)forMarshaling->deviceName,
1147                     VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
1148     vkStream->write((uint8_t*)forMarshaling->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
1149     marshal_VkPhysicalDeviceLimits(vkStream, rootType,
1150                                    (VkPhysicalDeviceLimits*)(&forMarshaling->limits));
1151     marshal_VkPhysicalDeviceSparseProperties(
1152         vkStream, rootType, (VkPhysicalDeviceSparseProperties*)(&forMarshaling->sparseProperties));
1153 }
1154 
unmarshal_VkPhysicalDeviceProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProperties * forUnmarshaling)1155 void unmarshal_VkPhysicalDeviceProperties(VulkanStream* vkStream, VkStructureType rootType,
1156                                           VkPhysicalDeviceProperties* forUnmarshaling) {
1157     (void)rootType;
1158     vkStream->read((uint32_t*)&forUnmarshaling->apiVersion, sizeof(uint32_t));
1159     vkStream->read((uint32_t*)&forUnmarshaling->driverVersion, sizeof(uint32_t));
1160     vkStream->read((uint32_t*)&forUnmarshaling->vendorID, sizeof(uint32_t));
1161     vkStream->read((uint32_t*)&forUnmarshaling->deviceID, sizeof(uint32_t));
1162     vkStream->read((VkPhysicalDeviceType*)&forUnmarshaling->deviceType,
1163                    sizeof(VkPhysicalDeviceType));
1164     vkStream->read((char*)forUnmarshaling->deviceName,
1165                    VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
1166     vkStream->read((uint8_t*)forUnmarshaling->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
1167     unmarshal_VkPhysicalDeviceLimits(vkStream, rootType,
1168                                      (VkPhysicalDeviceLimits*)(&forUnmarshaling->limits));
1169     unmarshal_VkPhysicalDeviceSparseProperties(
1170         vkStream, rootType,
1171         (VkPhysicalDeviceSparseProperties*)(&forUnmarshaling->sparseProperties));
1172 }
1173 
marshal_VkQueueFamilyProperties(VulkanStream * vkStream,VkStructureType rootType,const VkQueueFamilyProperties * forMarshaling)1174 void marshal_VkQueueFamilyProperties(VulkanStream* vkStream, VkStructureType rootType,
1175                                      const VkQueueFamilyProperties* forMarshaling) {
1176     (void)rootType;
1177     vkStream->write((VkQueueFlags*)&forMarshaling->queueFlags, sizeof(VkQueueFlags));
1178     vkStream->write((uint32_t*)&forMarshaling->queueCount, sizeof(uint32_t));
1179     vkStream->write((uint32_t*)&forMarshaling->timestampValidBits, sizeof(uint32_t));
1180     marshal_VkExtent3D(vkStream, rootType,
1181                        (VkExtent3D*)(&forMarshaling->minImageTransferGranularity));
1182 }
1183 
unmarshal_VkQueueFamilyProperties(VulkanStream * vkStream,VkStructureType rootType,VkQueueFamilyProperties * forUnmarshaling)1184 void unmarshal_VkQueueFamilyProperties(VulkanStream* vkStream, VkStructureType rootType,
1185                                        VkQueueFamilyProperties* forUnmarshaling) {
1186     (void)rootType;
1187     vkStream->read((VkQueueFlags*)&forUnmarshaling->queueFlags, sizeof(VkQueueFlags));
1188     vkStream->read((uint32_t*)&forUnmarshaling->queueCount, sizeof(uint32_t));
1189     vkStream->read((uint32_t*)&forUnmarshaling->timestampValidBits, sizeof(uint32_t));
1190     unmarshal_VkExtent3D(vkStream, rootType,
1191                          (VkExtent3D*)(&forUnmarshaling->minImageTransferGranularity));
1192 }
1193 
marshal_VkDeviceQueueCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceQueueCreateInfo * forMarshaling)1194 void marshal_VkDeviceQueueCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1195                                      const VkDeviceQueueCreateInfo* forMarshaling) {
1196     (void)rootType;
1197     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1198     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1199         rootType = forMarshaling->sType;
1200     }
1201     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1202     vkStream->write((VkDeviceQueueCreateFlags*)&forMarshaling->flags,
1203                     sizeof(VkDeviceQueueCreateFlags));
1204     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
1205     vkStream->write((uint32_t*)&forMarshaling->queueCount, sizeof(uint32_t));
1206     vkStream->write((const float*)forMarshaling->pQueuePriorities,
1207                     forMarshaling->queueCount * sizeof(const float));
1208 }
1209 
unmarshal_VkDeviceQueueCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceQueueCreateInfo * forUnmarshaling)1210 void unmarshal_VkDeviceQueueCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1211                                        VkDeviceQueueCreateInfo* forUnmarshaling) {
1212     (void)rootType;
1213     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1214     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1215         rootType = forUnmarshaling->sType;
1216     }
1217     size_t pNext_size;
1218     pNext_size = vkStream->getBe32();
1219     forUnmarshaling->pNext = nullptr;
1220     if (pNext_size) {
1221         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1222         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1223         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1224         vkStream->alloc((void**)&forUnmarshaling->pNext,
1225                         goldfish_vk_extension_struct_size_with_stream_features(
1226                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1227         *(VkStructureType*)forUnmarshaling->pNext = extType;
1228         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1229     }
1230     vkStream->read((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags,
1231                    sizeof(VkDeviceQueueCreateFlags));
1232     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
1233     vkStream->read((uint32_t*)&forUnmarshaling->queueCount, sizeof(uint32_t));
1234     vkStream->alloc((void**)&forUnmarshaling->pQueuePriorities,
1235                     forUnmarshaling->queueCount * sizeof(const float));
1236     vkStream->read((float*)forUnmarshaling->pQueuePriorities,
1237                    forUnmarshaling->queueCount * sizeof(const float));
1238 }
1239 
marshal_VkDeviceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceCreateInfo * forMarshaling)1240 void marshal_VkDeviceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1241                                 const VkDeviceCreateInfo* forMarshaling) {
1242     (void)rootType;
1243     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1244     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1245         rootType = forMarshaling->sType;
1246     }
1247     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1248     vkStream->write((VkDeviceCreateFlags*)&forMarshaling->flags, sizeof(VkDeviceCreateFlags));
1249     vkStream->write((uint32_t*)&forMarshaling->queueCreateInfoCount, sizeof(uint32_t));
1250     if (forMarshaling) {
1251         for (uint32_t i = 0; i < (uint32_t)forMarshaling->queueCreateInfoCount; ++i) {
1252             marshal_VkDeviceQueueCreateInfo(
1253                 vkStream, rootType,
1254                 (const VkDeviceQueueCreateInfo*)(forMarshaling->pQueueCreateInfos + i));
1255         }
1256     }
1257     vkStream->write((uint32_t*)&forMarshaling->enabledLayerCount, sizeof(uint32_t));
1258     saveStringArray(vkStream, forMarshaling->ppEnabledLayerNames, forMarshaling->enabledLayerCount);
1259     vkStream->write((uint32_t*)&forMarshaling->enabledExtensionCount, sizeof(uint32_t));
1260     saveStringArray(vkStream, forMarshaling->ppEnabledExtensionNames,
1261                     forMarshaling->enabledExtensionCount);
1262     // WARNING PTR CHECK
1263     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pEnabledFeatures;
1264     vkStream->putBe64(cgen_var_0);
1265     if (forMarshaling->pEnabledFeatures) {
1266         marshal_VkPhysicalDeviceFeatures(
1267             vkStream, rootType, (const VkPhysicalDeviceFeatures*)(forMarshaling->pEnabledFeatures));
1268     }
1269 }
1270 
unmarshal_VkDeviceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceCreateInfo * forUnmarshaling)1271 void unmarshal_VkDeviceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1272                                   VkDeviceCreateInfo* forUnmarshaling) {
1273     (void)rootType;
1274     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1275     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1276         rootType = forUnmarshaling->sType;
1277     }
1278     size_t pNext_size;
1279     pNext_size = vkStream->getBe32();
1280     forUnmarshaling->pNext = nullptr;
1281     if (pNext_size) {
1282         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1283         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1284         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1285         vkStream->alloc((void**)&forUnmarshaling->pNext,
1286                         goldfish_vk_extension_struct_size_with_stream_features(
1287                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1288         *(VkStructureType*)forUnmarshaling->pNext = extType;
1289         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1290     }
1291     vkStream->read((VkDeviceCreateFlags*)&forUnmarshaling->flags, sizeof(VkDeviceCreateFlags));
1292     vkStream->read((uint32_t*)&forUnmarshaling->queueCreateInfoCount, sizeof(uint32_t));
1293     vkStream->alloc((void**)&forUnmarshaling->pQueueCreateInfos,
1294                     forUnmarshaling->queueCreateInfoCount * sizeof(const VkDeviceQueueCreateInfo));
1295     if (forUnmarshaling) {
1296         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->queueCreateInfoCount; ++i) {
1297             unmarshal_VkDeviceQueueCreateInfo(
1298                 vkStream, rootType,
1299                 (VkDeviceQueueCreateInfo*)(forUnmarshaling->pQueueCreateInfos + i));
1300         }
1301     }
1302     vkStream->read((uint32_t*)&forUnmarshaling->enabledLayerCount, sizeof(uint32_t));
1303     vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledLayerNames);
1304     vkStream->read((uint32_t*)&forUnmarshaling->enabledExtensionCount, sizeof(uint32_t));
1305     vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledExtensionNames);
1306     // WARNING PTR CHECK
1307     forUnmarshaling->pEnabledFeatures =
1308         (const VkPhysicalDeviceFeatures*)(uintptr_t)vkStream->getBe64();
1309     if (forUnmarshaling->pEnabledFeatures) {
1310         vkStream->alloc((void**)&forUnmarshaling->pEnabledFeatures,
1311                         sizeof(const VkPhysicalDeviceFeatures));
1312         unmarshal_VkPhysicalDeviceFeatures(
1313             vkStream, rootType, (VkPhysicalDeviceFeatures*)(forUnmarshaling->pEnabledFeatures));
1314     }
1315 }
1316 
marshal_VkExtensionProperties(VulkanStream * vkStream,VkStructureType rootType,const VkExtensionProperties * forMarshaling)1317 void marshal_VkExtensionProperties(VulkanStream* vkStream, VkStructureType rootType,
1318                                    const VkExtensionProperties* forMarshaling) {
1319     (void)rootType;
1320     vkStream->write((char*)forMarshaling->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
1321     vkStream->write((uint32_t*)&forMarshaling->specVersion, sizeof(uint32_t));
1322 }
1323 
unmarshal_VkExtensionProperties(VulkanStream * vkStream,VkStructureType rootType,VkExtensionProperties * forUnmarshaling)1324 void unmarshal_VkExtensionProperties(VulkanStream* vkStream, VkStructureType rootType,
1325                                      VkExtensionProperties* forUnmarshaling) {
1326     (void)rootType;
1327     vkStream->read((char*)forUnmarshaling->extensionName,
1328                    VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
1329     vkStream->read((uint32_t*)&forUnmarshaling->specVersion, sizeof(uint32_t));
1330 }
1331 
marshal_VkLayerProperties(VulkanStream * vkStream,VkStructureType rootType,const VkLayerProperties * forMarshaling)1332 void marshal_VkLayerProperties(VulkanStream* vkStream, VkStructureType rootType,
1333                                const VkLayerProperties* forMarshaling) {
1334     (void)rootType;
1335     vkStream->write((char*)forMarshaling->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
1336     vkStream->write((uint32_t*)&forMarshaling->specVersion, sizeof(uint32_t));
1337     vkStream->write((uint32_t*)&forMarshaling->implementationVersion, sizeof(uint32_t));
1338     vkStream->write((char*)forMarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
1339 }
1340 
unmarshal_VkLayerProperties(VulkanStream * vkStream,VkStructureType rootType,VkLayerProperties * forUnmarshaling)1341 void unmarshal_VkLayerProperties(VulkanStream* vkStream, VkStructureType rootType,
1342                                  VkLayerProperties* forUnmarshaling) {
1343     (void)rootType;
1344     vkStream->read((char*)forUnmarshaling->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
1345     vkStream->read((uint32_t*)&forUnmarshaling->specVersion, sizeof(uint32_t));
1346     vkStream->read((uint32_t*)&forUnmarshaling->implementationVersion, sizeof(uint32_t));
1347     vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
1348 }
1349 
marshal_VkSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSubmitInfo * forMarshaling)1350 void marshal_VkSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
1351                           const VkSubmitInfo* forMarshaling) {
1352     (void)rootType;
1353     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1354     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1355         rootType = forMarshaling->sType;
1356     }
1357     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1358     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
1359     if (forMarshaling->waitSemaphoreCount) {
1360         uint64_t* cgen_var_0;
1361         vkStream->alloc((void**)&cgen_var_0, forMarshaling->waitSemaphoreCount * 8);
1362         vkStream->handleMapping()->mapHandles_VkSemaphore_u64(
1363             forMarshaling->pWaitSemaphores, cgen_var_0, forMarshaling->waitSemaphoreCount);
1364         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->waitSemaphoreCount * 8);
1365     }
1366     vkStream->write((const VkPipelineStageFlags*)forMarshaling->pWaitDstStageMask,
1367                     forMarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
1368     vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
1369     if (forMarshaling->commandBufferCount) {
1370         uint64_t* cgen_var_1;
1371         vkStream->alloc((void**)&cgen_var_1, forMarshaling->commandBufferCount * 8);
1372         vkStream->handleMapping()->mapHandles_VkCommandBuffer_u64(
1373             forMarshaling->pCommandBuffers, cgen_var_1, forMarshaling->commandBufferCount);
1374         vkStream->write((uint64_t*)cgen_var_1, forMarshaling->commandBufferCount * 8);
1375     }
1376     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
1377     if (forMarshaling->signalSemaphoreCount) {
1378         uint64_t* cgen_var_2;
1379         vkStream->alloc((void**)&cgen_var_2, forMarshaling->signalSemaphoreCount * 8);
1380         vkStream->handleMapping()->mapHandles_VkSemaphore_u64(
1381             forMarshaling->pSignalSemaphores, cgen_var_2, forMarshaling->signalSemaphoreCount);
1382         vkStream->write((uint64_t*)cgen_var_2, forMarshaling->signalSemaphoreCount * 8);
1383     }
1384 }
1385 
unmarshal_VkSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkSubmitInfo * forUnmarshaling)1386 void unmarshal_VkSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
1387                             VkSubmitInfo* forUnmarshaling) {
1388     (void)rootType;
1389     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1390     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1391         rootType = forUnmarshaling->sType;
1392     }
1393     size_t pNext_size;
1394     pNext_size = vkStream->getBe32();
1395     forUnmarshaling->pNext = nullptr;
1396     if (pNext_size) {
1397         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1398         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1399         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1400         vkStream->alloc((void**)&forUnmarshaling->pNext,
1401                         goldfish_vk_extension_struct_size_with_stream_features(
1402                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1403         *(VkStructureType*)forUnmarshaling->pNext = extType;
1404         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1405     }
1406     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
1407     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores,
1408                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
1409     if (forUnmarshaling->waitSemaphoreCount) {
1410         uint64_t* cgen_var_0;
1411         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->waitSemaphoreCount * 8);
1412         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->waitSemaphoreCount * 8);
1413         vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
1414             cgen_var_0, (VkSemaphore*)forUnmarshaling->pWaitSemaphores,
1415             forUnmarshaling->waitSemaphoreCount);
1416     }
1417     vkStream->alloc((void**)&forUnmarshaling->pWaitDstStageMask,
1418                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
1419     vkStream->read((VkPipelineStageFlags*)forUnmarshaling->pWaitDstStageMask,
1420                    forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
1421     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
1422     vkStream->alloc((void**)&forUnmarshaling->pCommandBuffers,
1423                     forUnmarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
1424     if (forUnmarshaling->commandBufferCount) {
1425         uint64_t* cgen_var_1;
1426         vkStream->alloc((void**)&cgen_var_1, forUnmarshaling->commandBufferCount * 8);
1427         vkStream->read((uint64_t*)cgen_var_1, forUnmarshaling->commandBufferCount * 8);
1428         vkStream->handleMapping()->mapHandles_u64_VkCommandBuffer(
1429             cgen_var_1, (VkCommandBuffer*)forUnmarshaling->pCommandBuffers,
1430             forUnmarshaling->commandBufferCount);
1431     }
1432     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
1433     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores,
1434                     forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
1435     if (forUnmarshaling->signalSemaphoreCount) {
1436         uint64_t* cgen_var_2;
1437         vkStream->alloc((void**)&cgen_var_2, forUnmarshaling->signalSemaphoreCount * 8);
1438         vkStream->read((uint64_t*)cgen_var_2, forUnmarshaling->signalSemaphoreCount * 8);
1439         vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
1440             cgen_var_2, (VkSemaphore*)forUnmarshaling->pSignalSemaphores,
1441             forUnmarshaling->signalSemaphoreCount);
1442     }
1443 }
1444 
marshal_VkMappedMemoryRange(VulkanStream * vkStream,VkStructureType rootType,const VkMappedMemoryRange * forMarshaling)1445 void marshal_VkMappedMemoryRange(VulkanStream* vkStream, VkStructureType rootType,
1446                                  const VkMappedMemoryRange* forMarshaling) {
1447     (void)rootType;
1448     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1449     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1450         rootType = forMarshaling->sType;
1451     }
1452     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1453     uint64_t cgen_var_0;
1454     vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_0,
1455                                                              1);
1456     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
1457     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
1458     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
1459 }
1460 
unmarshal_VkMappedMemoryRange(VulkanStream * vkStream,VkStructureType rootType,VkMappedMemoryRange * forUnmarshaling)1461 void unmarshal_VkMappedMemoryRange(VulkanStream* vkStream, VkStructureType rootType,
1462                                    VkMappedMemoryRange* forUnmarshaling) {
1463     (void)rootType;
1464     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1465     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1466         rootType = forUnmarshaling->sType;
1467     }
1468     size_t pNext_size;
1469     pNext_size = vkStream->getBe32();
1470     forUnmarshaling->pNext = nullptr;
1471     if (pNext_size) {
1472         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1473         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1474         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1475         vkStream->alloc((void**)&forUnmarshaling->pNext,
1476                         goldfish_vk_extension_struct_size_with_stream_features(
1477                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1478         *(VkStructureType*)forUnmarshaling->pNext = extType;
1479         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1480     }
1481     uint64_t cgen_var_0;
1482     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
1483     vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(
1484         &cgen_var_0, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
1485     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
1486     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
1487 }
1488 
marshal_VkMemoryAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryAllocateInfo * forMarshaling)1489 void marshal_VkMemoryAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
1490                                   const VkMemoryAllocateInfo* forMarshaling) {
1491     (void)rootType;
1492     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1493     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1494         rootType = forMarshaling->sType;
1495     }
1496     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1497     vkStream->write((VkDeviceSize*)&forMarshaling->allocationSize, sizeof(VkDeviceSize));
1498     vkStream->write((uint32_t*)&forMarshaling->memoryTypeIndex, sizeof(uint32_t));
1499 }
1500 
unmarshal_VkMemoryAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryAllocateInfo * forUnmarshaling)1501 void unmarshal_VkMemoryAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
1502                                     VkMemoryAllocateInfo* forUnmarshaling) {
1503     (void)rootType;
1504     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1505     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1506         rootType = forUnmarshaling->sType;
1507     }
1508     size_t pNext_size;
1509     pNext_size = vkStream->getBe32();
1510     forUnmarshaling->pNext = nullptr;
1511     if (pNext_size) {
1512         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1513         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1514         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1515         vkStream->alloc((void**)&forUnmarshaling->pNext,
1516                         goldfish_vk_extension_struct_size_with_stream_features(
1517                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1518         *(VkStructureType*)forUnmarshaling->pNext = extType;
1519         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1520     }
1521     vkStream->read((VkDeviceSize*)&forUnmarshaling->allocationSize, sizeof(VkDeviceSize));
1522     vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeIndex, sizeof(uint32_t));
1523 }
1524 
marshal_VkMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryRequirements * forMarshaling)1525 void marshal_VkMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
1526                                   const VkMemoryRequirements* forMarshaling) {
1527     (void)rootType;
1528     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
1529     vkStream->write((VkDeviceSize*)&forMarshaling->alignment, sizeof(VkDeviceSize));
1530     vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
1531 }
1532 
unmarshal_VkMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkMemoryRequirements * forUnmarshaling)1533 void unmarshal_VkMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
1534                                     VkMemoryRequirements* forUnmarshaling) {
1535     (void)rootType;
1536     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
1537     vkStream->read((VkDeviceSize*)&forUnmarshaling->alignment, sizeof(VkDeviceSize));
1538     vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
1539 }
1540 
marshal_VkSparseMemoryBind(VulkanStream * vkStream,VkStructureType rootType,const VkSparseMemoryBind * forMarshaling)1541 void marshal_VkSparseMemoryBind(VulkanStream* vkStream, VkStructureType rootType,
1542                                 const VkSparseMemoryBind* forMarshaling) {
1543     (void)rootType;
1544     vkStream->write((VkDeviceSize*)&forMarshaling->resourceOffset, sizeof(VkDeviceSize));
1545     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
1546     uint64_t cgen_var_0;
1547     vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_0,
1548                                                              1);
1549     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
1550     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
1551     vkStream->write((VkSparseMemoryBindFlags*)&forMarshaling->flags,
1552                     sizeof(VkSparseMemoryBindFlags));
1553 }
1554 
unmarshal_VkSparseMemoryBind(VulkanStream * vkStream,VkStructureType rootType,VkSparseMemoryBind * forUnmarshaling)1555 void unmarshal_VkSparseMemoryBind(VulkanStream* vkStream, VkStructureType rootType,
1556                                   VkSparseMemoryBind* forUnmarshaling) {
1557     (void)rootType;
1558     vkStream->read((VkDeviceSize*)&forUnmarshaling->resourceOffset, sizeof(VkDeviceSize));
1559     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
1560     uint64_t cgen_var_0;
1561     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
1562     vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(
1563         &cgen_var_0, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
1564     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
1565     vkStream->read((VkSparseMemoryBindFlags*)&forUnmarshaling->flags,
1566                    sizeof(VkSparseMemoryBindFlags));
1567 }
1568 
marshal_VkSparseBufferMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSparseBufferMemoryBindInfo * forMarshaling)1569 void marshal_VkSparseBufferMemoryBindInfo(VulkanStream* vkStream, VkStructureType rootType,
1570                                           const VkSparseBufferMemoryBindInfo* forMarshaling) {
1571     (void)rootType;
1572     uint64_t cgen_var_0;
1573     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
1574     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
1575     vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
1576     if (forMarshaling) {
1577         for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i) {
1578             marshal_VkSparseMemoryBind(vkStream, rootType,
1579                                        (const VkSparseMemoryBind*)(forMarshaling->pBinds + i));
1580         }
1581     }
1582 }
1583 
unmarshal_VkSparseBufferMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,VkSparseBufferMemoryBindInfo * forUnmarshaling)1584 void unmarshal_VkSparseBufferMemoryBindInfo(VulkanStream* vkStream, VkStructureType rootType,
1585                                             VkSparseBufferMemoryBindInfo* forUnmarshaling) {
1586     (void)rootType;
1587     uint64_t cgen_var_0;
1588     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
1589     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
1590                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
1591     vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
1592     vkStream->alloc((void**)&forUnmarshaling->pBinds,
1593                     forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
1594     if (forUnmarshaling) {
1595         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i) {
1596             unmarshal_VkSparseMemoryBind(vkStream, rootType,
1597                                          (VkSparseMemoryBind*)(forUnmarshaling->pBinds + i));
1598         }
1599     }
1600 }
1601 
marshal_VkSparseImageOpaqueMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageOpaqueMemoryBindInfo * forMarshaling)1602 void marshal_VkSparseImageOpaqueMemoryBindInfo(
1603     VulkanStream* vkStream, VkStructureType rootType,
1604     const VkSparseImageOpaqueMemoryBindInfo* forMarshaling) {
1605     (void)rootType;
1606     uint64_t cgen_var_0;
1607     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
1608     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
1609     vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
1610     if (forMarshaling) {
1611         for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i) {
1612             marshal_VkSparseMemoryBind(vkStream, rootType,
1613                                        (const VkSparseMemoryBind*)(forMarshaling->pBinds + i));
1614         }
1615     }
1616 }
1617 
unmarshal_VkSparseImageOpaqueMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageOpaqueMemoryBindInfo * forUnmarshaling)1618 void unmarshal_VkSparseImageOpaqueMemoryBindInfo(
1619     VulkanStream* vkStream, VkStructureType rootType,
1620     VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling) {
1621     (void)rootType;
1622     uint64_t cgen_var_0;
1623     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
1624     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
1625                                                       (VkImage*)&forUnmarshaling->image, 1);
1626     vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
1627     vkStream->alloc((void**)&forUnmarshaling->pBinds,
1628                     forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
1629     if (forUnmarshaling) {
1630         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i) {
1631             unmarshal_VkSparseMemoryBind(vkStream, rootType,
1632                                          (VkSparseMemoryBind*)(forUnmarshaling->pBinds + i));
1633         }
1634     }
1635 }
1636 
marshal_VkImageSubresource(VulkanStream * vkStream,VkStructureType rootType,const VkImageSubresource * forMarshaling)1637 void marshal_VkImageSubresource(VulkanStream* vkStream, VkStructureType rootType,
1638                                 const VkImageSubresource* forMarshaling) {
1639     (void)rootType;
1640     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
1641     vkStream->write((uint32_t*)&forMarshaling->mipLevel, sizeof(uint32_t));
1642     vkStream->write((uint32_t*)&forMarshaling->arrayLayer, sizeof(uint32_t));
1643 }
1644 
unmarshal_VkImageSubresource(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresource * forUnmarshaling)1645 void unmarshal_VkImageSubresource(VulkanStream* vkStream, VkStructureType rootType,
1646                                   VkImageSubresource* forUnmarshaling) {
1647     (void)rootType;
1648     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
1649     vkStream->read((uint32_t*)&forUnmarshaling->mipLevel, sizeof(uint32_t));
1650     vkStream->read((uint32_t*)&forUnmarshaling->arrayLayer, sizeof(uint32_t));
1651 }
1652 
marshal_VkSparseImageMemoryBind(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageMemoryBind * forMarshaling)1653 void marshal_VkSparseImageMemoryBind(VulkanStream* vkStream, VkStructureType rootType,
1654                                      const VkSparseImageMemoryBind* forMarshaling) {
1655     (void)rootType;
1656     marshal_VkImageSubresource(vkStream, rootType,
1657                                (VkImageSubresource*)(&forMarshaling->subresource));
1658     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->offset));
1659     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->extent));
1660     uint64_t cgen_var_0;
1661     vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_0,
1662                                                              1);
1663     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
1664     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
1665     vkStream->write((VkSparseMemoryBindFlags*)&forMarshaling->flags,
1666                     sizeof(VkSparseMemoryBindFlags));
1667 }
1668 
unmarshal_VkSparseImageMemoryBind(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryBind * forUnmarshaling)1669 void unmarshal_VkSparseImageMemoryBind(VulkanStream* vkStream, VkStructureType rootType,
1670                                        VkSparseImageMemoryBind* forUnmarshaling) {
1671     (void)rootType;
1672     unmarshal_VkImageSubresource(vkStream, rootType,
1673                                  (VkImageSubresource*)(&forUnmarshaling->subresource));
1674     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->offset));
1675     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent));
1676     uint64_t cgen_var_0;
1677     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
1678     vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(
1679         &cgen_var_0, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
1680     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
1681     vkStream->read((VkSparseMemoryBindFlags*)&forUnmarshaling->flags,
1682                    sizeof(VkSparseMemoryBindFlags));
1683 }
1684 
marshal_VkSparseImageMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageMemoryBindInfo * forMarshaling)1685 void marshal_VkSparseImageMemoryBindInfo(VulkanStream* vkStream, VkStructureType rootType,
1686                                          const VkSparseImageMemoryBindInfo* forMarshaling) {
1687     (void)rootType;
1688     uint64_t cgen_var_0;
1689     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
1690     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
1691     vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
1692     if (forMarshaling) {
1693         for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i) {
1694             marshal_VkSparseImageMemoryBind(
1695                 vkStream, rootType, (const VkSparseImageMemoryBind*)(forMarshaling->pBinds + i));
1696         }
1697     }
1698 }
1699 
unmarshal_VkSparseImageMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryBindInfo * forUnmarshaling)1700 void unmarshal_VkSparseImageMemoryBindInfo(VulkanStream* vkStream, VkStructureType rootType,
1701                                            VkSparseImageMemoryBindInfo* forUnmarshaling) {
1702     (void)rootType;
1703     uint64_t cgen_var_0;
1704     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
1705     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
1706                                                       (VkImage*)&forUnmarshaling->image, 1);
1707     vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
1708     vkStream->alloc((void**)&forUnmarshaling->pBinds,
1709                     forUnmarshaling->bindCount * sizeof(const VkSparseImageMemoryBind));
1710     if (forUnmarshaling) {
1711         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i) {
1712             unmarshal_VkSparseImageMemoryBind(
1713                 vkStream, rootType, (VkSparseImageMemoryBind*)(forUnmarshaling->pBinds + i));
1714         }
1715     }
1716 }
1717 
marshal_VkBindSparseInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBindSparseInfo * forMarshaling)1718 void marshal_VkBindSparseInfo(VulkanStream* vkStream, VkStructureType rootType,
1719                               const VkBindSparseInfo* forMarshaling) {
1720     (void)rootType;
1721     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1722     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1723         rootType = forMarshaling->sType;
1724     }
1725     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1726     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
1727     if (forMarshaling->waitSemaphoreCount) {
1728         uint64_t* cgen_var_0;
1729         vkStream->alloc((void**)&cgen_var_0, forMarshaling->waitSemaphoreCount * 8);
1730         vkStream->handleMapping()->mapHandles_VkSemaphore_u64(
1731             forMarshaling->pWaitSemaphores, cgen_var_0, forMarshaling->waitSemaphoreCount);
1732         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->waitSemaphoreCount * 8);
1733     }
1734     vkStream->write((uint32_t*)&forMarshaling->bufferBindCount, sizeof(uint32_t));
1735     if (forMarshaling) {
1736         for (uint32_t i = 0; i < (uint32_t)forMarshaling->bufferBindCount; ++i) {
1737             marshal_VkSparseBufferMemoryBindInfo(
1738                 vkStream, rootType,
1739                 (const VkSparseBufferMemoryBindInfo*)(forMarshaling->pBufferBinds + i));
1740         }
1741     }
1742     vkStream->write((uint32_t*)&forMarshaling->imageOpaqueBindCount, sizeof(uint32_t));
1743     if (forMarshaling) {
1744         for (uint32_t i = 0; i < (uint32_t)forMarshaling->imageOpaqueBindCount; ++i) {
1745             marshal_VkSparseImageOpaqueMemoryBindInfo(
1746                 vkStream, rootType,
1747                 (const VkSparseImageOpaqueMemoryBindInfo*)(forMarshaling->pImageOpaqueBinds + i));
1748         }
1749     }
1750     vkStream->write((uint32_t*)&forMarshaling->imageBindCount, sizeof(uint32_t));
1751     if (forMarshaling) {
1752         for (uint32_t i = 0; i < (uint32_t)forMarshaling->imageBindCount; ++i) {
1753             marshal_VkSparseImageMemoryBindInfo(
1754                 vkStream, rootType,
1755                 (const VkSparseImageMemoryBindInfo*)(forMarshaling->pImageBinds + i));
1756         }
1757     }
1758     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
1759     if (forMarshaling->signalSemaphoreCount) {
1760         uint64_t* cgen_var_1;
1761         vkStream->alloc((void**)&cgen_var_1, forMarshaling->signalSemaphoreCount * 8);
1762         vkStream->handleMapping()->mapHandles_VkSemaphore_u64(
1763             forMarshaling->pSignalSemaphores, cgen_var_1, forMarshaling->signalSemaphoreCount);
1764         vkStream->write((uint64_t*)cgen_var_1, forMarshaling->signalSemaphoreCount * 8);
1765     }
1766 }
1767 
unmarshal_VkBindSparseInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindSparseInfo * forUnmarshaling)1768 void unmarshal_VkBindSparseInfo(VulkanStream* vkStream, VkStructureType rootType,
1769                                 VkBindSparseInfo* forUnmarshaling) {
1770     (void)rootType;
1771     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1772     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1773         rootType = forUnmarshaling->sType;
1774     }
1775     size_t pNext_size;
1776     pNext_size = vkStream->getBe32();
1777     forUnmarshaling->pNext = nullptr;
1778     if (pNext_size) {
1779         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1780         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1781         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1782         vkStream->alloc((void**)&forUnmarshaling->pNext,
1783                         goldfish_vk_extension_struct_size_with_stream_features(
1784                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1785         *(VkStructureType*)forUnmarshaling->pNext = extType;
1786         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1787     }
1788     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
1789     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores,
1790                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
1791     if (forUnmarshaling->waitSemaphoreCount) {
1792         uint64_t* cgen_var_0;
1793         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->waitSemaphoreCount * 8);
1794         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->waitSemaphoreCount * 8);
1795         vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
1796             cgen_var_0, (VkSemaphore*)forUnmarshaling->pWaitSemaphores,
1797             forUnmarshaling->waitSemaphoreCount);
1798     }
1799     vkStream->read((uint32_t*)&forUnmarshaling->bufferBindCount, sizeof(uint32_t));
1800     vkStream->alloc((void**)&forUnmarshaling->pBufferBinds,
1801                     forUnmarshaling->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
1802     if (forUnmarshaling) {
1803         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bufferBindCount; ++i) {
1804             unmarshal_VkSparseBufferMemoryBindInfo(
1805                 vkStream, rootType,
1806                 (VkSparseBufferMemoryBindInfo*)(forUnmarshaling->pBufferBinds + i));
1807         }
1808     }
1809     vkStream->read((uint32_t*)&forUnmarshaling->imageOpaqueBindCount, sizeof(uint32_t));
1810     vkStream->alloc(
1811         (void**)&forUnmarshaling->pImageOpaqueBinds,
1812         forUnmarshaling->imageOpaqueBindCount * sizeof(const VkSparseImageOpaqueMemoryBindInfo));
1813     if (forUnmarshaling) {
1814         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageOpaqueBindCount; ++i) {
1815             unmarshal_VkSparseImageOpaqueMemoryBindInfo(
1816                 vkStream, rootType,
1817                 (VkSparseImageOpaqueMemoryBindInfo*)(forUnmarshaling->pImageOpaqueBinds + i));
1818         }
1819     }
1820     vkStream->read((uint32_t*)&forUnmarshaling->imageBindCount, sizeof(uint32_t));
1821     vkStream->alloc((void**)&forUnmarshaling->pImageBinds,
1822                     forUnmarshaling->imageBindCount * sizeof(const VkSparseImageMemoryBindInfo));
1823     if (forUnmarshaling) {
1824         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageBindCount; ++i) {
1825             unmarshal_VkSparseImageMemoryBindInfo(
1826                 vkStream, rootType,
1827                 (VkSparseImageMemoryBindInfo*)(forUnmarshaling->pImageBinds + i));
1828         }
1829     }
1830     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
1831     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores,
1832                     forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
1833     if (forUnmarshaling->signalSemaphoreCount) {
1834         uint64_t* cgen_var_1;
1835         vkStream->alloc((void**)&cgen_var_1, forUnmarshaling->signalSemaphoreCount * 8);
1836         vkStream->read((uint64_t*)cgen_var_1, forUnmarshaling->signalSemaphoreCount * 8);
1837         vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
1838             cgen_var_1, (VkSemaphore*)forUnmarshaling->pSignalSemaphores,
1839             forUnmarshaling->signalSemaphoreCount);
1840     }
1841 }
1842 
marshal_VkSparseImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageFormatProperties * forMarshaling)1843 void marshal_VkSparseImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
1844                                            const VkSparseImageFormatProperties* forMarshaling) {
1845     (void)rootType;
1846     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
1847     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->imageGranularity));
1848     vkStream->write((VkSparseImageFormatFlags*)&forMarshaling->flags,
1849                     sizeof(VkSparseImageFormatFlags));
1850 }
1851 
unmarshal_VkSparseImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageFormatProperties * forUnmarshaling)1852 void unmarshal_VkSparseImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
1853                                              VkSparseImageFormatProperties* forUnmarshaling) {
1854     (void)rootType;
1855     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
1856     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageGranularity));
1857     vkStream->read((VkSparseImageFormatFlags*)&forUnmarshaling->flags,
1858                    sizeof(VkSparseImageFormatFlags));
1859 }
1860 
marshal_VkSparseImageMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageMemoryRequirements * forMarshaling)1861 void marshal_VkSparseImageMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
1862                                              const VkSparseImageMemoryRequirements* forMarshaling) {
1863     (void)rootType;
1864     marshal_VkSparseImageFormatProperties(
1865         vkStream, rootType, (VkSparseImageFormatProperties*)(&forMarshaling->formatProperties));
1866     vkStream->write((uint32_t*)&forMarshaling->imageMipTailFirstLod, sizeof(uint32_t));
1867     vkStream->write((VkDeviceSize*)&forMarshaling->imageMipTailSize, sizeof(VkDeviceSize));
1868     vkStream->write((VkDeviceSize*)&forMarshaling->imageMipTailOffset, sizeof(VkDeviceSize));
1869     vkStream->write((VkDeviceSize*)&forMarshaling->imageMipTailStride, sizeof(VkDeviceSize));
1870 }
1871 
unmarshal_VkSparseImageMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryRequirements * forUnmarshaling)1872 void unmarshal_VkSparseImageMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
1873                                                VkSparseImageMemoryRequirements* forUnmarshaling) {
1874     (void)rootType;
1875     unmarshal_VkSparseImageFormatProperties(
1876         vkStream, rootType, (VkSparseImageFormatProperties*)(&forUnmarshaling->formatProperties));
1877     vkStream->read((uint32_t*)&forUnmarshaling->imageMipTailFirstLod, sizeof(uint32_t));
1878     vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailSize, sizeof(VkDeviceSize));
1879     vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailOffset, sizeof(VkDeviceSize));
1880     vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailStride, sizeof(VkDeviceSize));
1881 }
1882 
marshal_VkFenceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkFenceCreateInfo * forMarshaling)1883 void marshal_VkFenceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1884                                const VkFenceCreateInfo* forMarshaling) {
1885     (void)rootType;
1886     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1887     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1888         rootType = forMarshaling->sType;
1889     }
1890     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1891     vkStream->write((VkFenceCreateFlags*)&forMarshaling->flags, sizeof(VkFenceCreateFlags));
1892 }
1893 
unmarshal_VkFenceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkFenceCreateInfo * forUnmarshaling)1894 void unmarshal_VkFenceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1895                                  VkFenceCreateInfo* forUnmarshaling) {
1896     (void)rootType;
1897     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1898     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1899         rootType = forUnmarshaling->sType;
1900     }
1901     size_t pNext_size;
1902     pNext_size = vkStream->getBe32();
1903     forUnmarshaling->pNext = nullptr;
1904     if (pNext_size) {
1905         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1906         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1907         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1908         vkStream->alloc((void**)&forUnmarshaling->pNext,
1909                         goldfish_vk_extension_struct_size_with_stream_features(
1910                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1911         *(VkStructureType*)forUnmarshaling->pNext = extType;
1912         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1913     }
1914     vkStream->read((VkFenceCreateFlags*)&forUnmarshaling->flags, sizeof(VkFenceCreateFlags));
1915 }
1916 
marshal_VkSemaphoreCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSemaphoreCreateInfo * forMarshaling)1917 void marshal_VkSemaphoreCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1918                                    const VkSemaphoreCreateInfo* forMarshaling) {
1919     (void)rootType;
1920     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1921     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1922         rootType = forMarshaling->sType;
1923     }
1924     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1925     vkStream->write((VkSemaphoreCreateFlags*)&forMarshaling->flags, sizeof(VkSemaphoreCreateFlags));
1926 }
1927 
unmarshal_VkSemaphoreCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreCreateInfo * forUnmarshaling)1928 void unmarshal_VkSemaphoreCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1929                                      VkSemaphoreCreateInfo* forUnmarshaling) {
1930     (void)rootType;
1931     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1932     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1933         rootType = forUnmarshaling->sType;
1934     }
1935     size_t pNext_size;
1936     pNext_size = vkStream->getBe32();
1937     forUnmarshaling->pNext = nullptr;
1938     if (pNext_size) {
1939         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1940         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1941         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1942         vkStream->alloc((void**)&forUnmarshaling->pNext,
1943                         goldfish_vk_extension_struct_size_with_stream_features(
1944                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1945         *(VkStructureType*)forUnmarshaling->pNext = extType;
1946         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1947     }
1948     vkStream->read((VkSemaphoreCreateFlags*)&forUnmarshaling->flags,
1949                    sizeof(VkSemaphoreCreateFlags));
1950 }
1951 
marshal_VkEventCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkEventCreateInfo * forMarshaling)1952 void marshal_VkEventCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1953                                const VkEventCreateInfo* forMarshaling) {
1954     (void)rootType;
1955     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1956     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1957         rootType = forMarshaling->sType;
1958     }
1959     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1960     vkStream->write((VkEventCreateFlags*)&forMarshaling->flags, sizeof(VkEventCreateFlags));
1961 }
1962 
unmarshal_VkEventCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkEventCreateInfo * forUnmarshaling)1963 void unmarshal_VkEventCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1964                                  VkEventCreateInfo* forUnmarshaling) {
1965     (void)rootType;
1966     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
1967     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1968         rootType = forUnmarshaling->sType;
1969     }
1970     size_t pNext_size;
1971     pNext_size = vkStream->getBe32();
1972     forUnmarshaling->pNext = nullptr;
1973     if (pNext_size) {
1974         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1975         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
1976         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1977         vkStream->alloc((void**)&forUnmarshaling->pNext,
1978                         goldfish_vk_extension_struct_size_with_stream_features(
1979                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1980         *(VkStructureType*)forUnmarshaling->pNext = extType;
1981         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
1982     }
1983     vkStream->read((VkEventCreateFlags*)&forUnmarshaling->flags, sizeof(VkEventCreateFlags));
1984 }
1985 
marshal_VkQueryPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkQueryPoolCreateInfo * forMarshaling)1986 void marshal_VkQueryPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1987                                    const VkQueryPoolCreateInfo* forMarshaling) {
1988     (void)rootType;
1989     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
1990     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1991         rootType = forMarshaling->sType;
1992     }
1993     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
1994     vkStream->write((VkQueryPoolCreateFlags*)&forMarshaling->flags, sizeof(VkQueryPoolCreateFlags));
1995     vkStream->write((VkQueryType*)&forMarshaling->queryType, sizeof(VkQueryType));
1996     vkStream->write((uint32_t*)&forMarshaling->queryCount, sizeof(uint32_t));
1997     vkStream->write((VkQueryPipelineStatisticFlags*)&forMarshaling->pipelineStatistics,
1998                     sizeof(VkQueryPipelineStatisticFlags));
1999 }
2000 
unmarshal_VkQueryPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkQueryPoolCreateInfo * forUnmarshaling)2001 void unmarshal_VkQueryPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2002                                      VkQueryPoolCreateInfo* forUnmarshaling) {
2003     (void)rootType;
2004     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2005     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2006         rootType = forUnmarshaling->sType;
2007     }
2008     size_t pNext_size;
2009     pNext_size = vkStream->getBe32();
2010     forUnmarshaling->pNext = nullptr;
2011     if (pNext_size) {
2012         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2013         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2014         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2015         vkStream->alloc((void**)&forUnmarshaling->pNext,
2016                         goldfish_vk_extension_struct_size_with_stream_features(
2017                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2018         *(VkStructureType*)forUnmarshaling->pNext = extType;
2019         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2020     }
2021     vkStream->read((VkQueryPoolCreateFlags*)&forUnmarshaling->flags,
2022                    sizeof(VkQueryPoolCreateFlags));
2023     vkStream->read((VkQueryType*)&forUnmarshaling->queryType, sizeof(VkQueryType));
2024     vkStream->read((uint32_t*)&forUnmarshaling->queryCount, sizeof(uint32_t));
2025     vkStream->read((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics,
2026                    sizeof(VkQueryPipelineStatisticFlags));
2027 }
2028 
marshal_VkBufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBufferCreateInfo * forMarshaling)2029 void marshal_VkBufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2030                                 const VkBufferCreateInfo* forMarshaling) {
2031     (void)rootType;
2032     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2033     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2034         rootType = forMarshaling->sType;
2035     }
2036     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2037     vkStream->write((VkBufferCreateFlags*)&forMarshaling->flags, sizeof(VkBufferCreateFlags));
2038     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
2039     vkStream->write((VkBufferUsageFlags*)&forMarshaling->usage, sizeof(VkBufferUsageFlags));
2040     vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
2041     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
2042     // WARNING PTR CHECK
2043     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
2044     vkStream->putBe64(cgen_var_0);
2045     if (forMarshaling->pQueueFamilyIndices) {
2046         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices,
2047                         forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
2048     }
2049 }
2050 
unmarshal_VkBufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferCreateInfo * forUnmarshaling)2051 void unmarshal_VkBufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2052                                   VkBufferCreateInfo* forUnmarshaling) {
2053     (void)rootType;
2054     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2055     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2056         rootType = forUnmarshaling->sType;
2057     }
2058     size_t pNext_size;
2059     pNext_size = vkStream->getBe32();
2060     forUnmarshaling->pNext = nullptr;
2061     if (pNext_size) {
2062         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2063         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2064         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2065         vkStream->alloc((void**)&forUnmarshaling->pNext,
2066                         goldfish_vk_extension_struct_size_with_stream_features(
2067                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2068         *(VkStructureType*)forUnmarshaling->pNext = extType;
2069         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2070     }
2071     vkStream->read((VkBufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferCreateFlags));
2072     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
2073     vkStream->read((VkBufferUsageFlags*)&forUnmarshaling->usage, sizeof(VkBufferUsageFlags));
2074     vkStream->read((VkSharingMode*)&forUnmarshaling->sharingMode, sizeof(VkSharingMode));
2075     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
2076     // WARNING PTR CHECK
2077     forUnmarshaling->pQueueFamilyIndices = (const uint32_t*)(uintptr_t)vkStream->getBe64();
2078     if (forUnmarshaling->pQueueFamilyIndices) {
2079         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
2080                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
2081         vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices,
2082                        forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
2083     }
2084 }
2085 
marshal_VkBufferViewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBufferViewCreateInfo * forMarshaling)2086 void marshal_VkBufferViewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2087                                     const VkBufferViewCreateInfo* forMarshaling) {
2088     (void)rootType;
2089     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2090     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2091         rootType = forMarshaling->sType;
2092     }
2093     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2094     vkStream->write((VkBufferViewCreateFlags*)&forMarshaling->flags,
2095                     sizeof(VkBufferViewCreateFlags));
2096     uint64_t cgen_var_0;
2097     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
2098     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
2099     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
2100     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
2101     vkStream->write((VkDeviceSize*)&forMarshaling->range, sizeof(VkDeviceSize));
2102 }
2103 
unmarshal_VkBufferViewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferViewCreateInfo * forUnmarshaling)2104 void unmarshal_VkBufferViewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2105                                       VkBufferViewCreateInfo* forUnmarshaling) {
2106     (void)rootType;
2107     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2108     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2109         rootType = forUnmarshaling->sType;
2110     }
2111     size_t pNext_size;
2112     pNext_size = vkStream->getBe32();
2113     forUnmarshaling->pNext = nullptr;
2114     if (pNext_size) {
2115         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2116         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2117         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2118         vkStream->alloc((void**)&forUnmarshaling->pNext,
2119                         goldfish_vk_extension_struct_size_with_stream_features(
2120                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2121         *(VkStructureType*)forUnmarshaling->pNext = extType;
2122         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2123     }
2124     vkStream->read((VkBufferViewCreateFlags*)&forUnmarshaling->flags,
2125                    sizeof(VkBufferViewCreateFlags));
2126     uint64_t cgen_var_0;
2127     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
2128     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
2129                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
2130     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
2131     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
2132     vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
2133 }
2134 
marshal_VkImageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkImageCreateInfo * forMarshaling)2135 void marshal_VkImageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2136                                const VkImageCreateInfo* forMarshaling) {
2137     (void)rootType;
2138     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2139     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2140         rootType = forMarshaling->sType;
2141     }
2142     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2143     vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
2144     vkStream->write((VkImageType*)&forMarshaling->imageType, sizeof(VkImageType));
2145     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
2146     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->extent));
2147     vkStream->write((uint32_t*)&forMarshaling->mipLevels, sizeof(uint32_t));
2148     vkStream->write((uint32_t*)&forMarshaling->arrayLayers, sizeof(uint32_t));
2149     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
2150     vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
2151     vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
2152     vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
2153     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
2154     // WARNING PTR CHECK
2155     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
2156     vkStream->putBe64(cgen_var_0);
2157     if (forMarshaling->pQueueFamilyIndices) {
2158         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices,
2159                         forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
2160     }
2161     vkStream->write((VkImageLayout*)&forMarshaling->initialLayout, sizeof(VkImageLayout));
2162 }
2163 
unmarshal_VkImageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageCreateInfo * forUnmarshaling)2164 void unmarshal_VkImageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2165                                  VkImageCreateInfo* forUnmarshaling) {
2166     (void)rootType;
2167     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2168     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2169         rootType = forUnmarshaling->sType;
2170     }
2171     size_t pNext_size;
2172     pNext_size = vkStream->getBe32();
2173     forUnmarshaling->pNext = nullptr;
2174     if (pNext_size) {
2175         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2176         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2177         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2178         vkStream->alloc((void**)&forUnmarshaling->pNext,
2179                         goldfish_vk_extension_struct_size_with_stream_features(
2180                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2181         *(VkStructureType*)forUnmarshaling->pNext = extType;
2182         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2183     }
2184     vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
2185     vkStream->read((VkImageType*)&forUnmarshaling->imageType, sizeof(VkImageType));
2186     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
2187     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent));
2188     vkStream->read((uint32_t*)&forUnmarshaling->mipLevels, sizeof(uint32_t));
2189     vkStream->read((uint32_t*)&forUnmarshaling->arrayLayers, sizeof(uint32_t));
2190     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples,
2191                    sizeof(VkSampleCountFlagBits));
2192     vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
2193     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
2194     vkStream->read((VkSharingMode*)&forUnmarshaling->sharingMode, sizeof(VkSharingMode));
2195     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
2196     // WARNING PTR CHECK
2197     forUnmarshaling->pQueueFamilyIndices = (const uint32_t*)(uintptr_t)vkStream->getBe64();
2198     if (forUnmarshaling->pQueueFamilyIndices) {
2199         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
2200                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
2201         vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices,
2202                        forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
2203     }
2204     vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
2205 }
2206 
marshal_VkSubresourceLayout(VulkanStream * vkStream,VkStructureType rootType,const VkSubresourceLayout * forMarshaling)2207 void marshal_VkSubresourceLayout(VulkanStream* vkStream, VkStructureType rootType,
2208                                  const VkSubresourceLayout* forMarshaling) {
2209     (void)rootType;
2210     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
2211     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
2212     vkStream->write((VkDeviceSize*)&forMarshaling->rowPitch, sizeof(VkDeviceSize));
2213     vkStream->write((VkDeviceSize*)&forMarshaling->arrayPitch, sizeof(VkDeviceSize));
2214     vkStream->write((VkDeviceSize*)&forMarshaling->depthPitch, sizeof(VkDeviceSize));
2215 }
2216 
unmarshal_VkSubresourceLayout(VulkanStream * vkStream,VkStructureType rootType,VkSubresourceLayout * forUnmarshaling)2217 void unmarshal_VkSubresourceLayout(VulkanStream* vkStream, VkStructureType rootType,
2218                                    VkSubresourceLayout* forUnmarshaling) {
2219     (void)rootType;
2220     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
2221     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
2222     vkStream->read((VkDeviceSize*)&forUnmarshaling->rowPitch, sizeof(VkDeviceSize));
2223     vkStream->read((VkDeviceSize*)&forUnmarshaling->arrayPitch, sizeof(VkDeviceSize));
2224     vkStream->read((VkDeviceSize*)&forUnmarshaling->depthPitch, sizeof(VkDeviceSize));
2225 }
2226 
marshal_VkComponentMapping(VulkanStream * vkStream,VkStructureType rootType,const VkComponentMapping * forMarshaling)2227 void marshal_VkComponentMapping(VulkanStream* vkStream, VkStructureType rootType,
2228                                 const VkComponentMapping* forMarshaling) {
2229     (void)rootType;
2230     vkStream->write((VkComponentSwizzle*)&forMarshaling->r, sizeof(VkComponentSwizzle));
2231     vkStream->write((VkComponentSwizzle*)&forMarshaling->g, sizeof(VkComponentSwizzle));
2232     vkStream->write((VkComponentSwizzle*)&forMarshaling->b, sizeof(VkComponentSwizzle));
2233     vkStream->write((VkComponentSwizzle*)&forMarshaling->a, sizeof(VkComponentSwizzle));
2234 }
2235 
unmarshal_VkComponentMapping(VulkanStream * vkStream,VkStructureType rootType,VkComponentMapping * forUnmarshaling)2236 void unmarshal_VkComponentMapping(VulkanStream* vkStream, VkStructureType rootType,
2237                                   VkComponentMapping* forUnmarshaling) {
2238     (void)rootType;
2239     vkStream->read((VkComponentSwizzle*)&forUnmarshaling->r, sizeof(VkComponentSwizzle));
2240     vkStream->read((VkComponentSwizzle*)&forUnmarshaling->g, sizeof(VkComponentSwizzle));
2241     vkStream->read((VkComponentSwizzle*)&forUnmarshaling->b, sizeof(VkComponentSwizzle));
2242     vkStream->read((VkComponentSwizzle*)&forUnmarshaling->a, sizeof(VkComponentSwizzle));
2243 }
2244 
marshal_VkImageViewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkImageViewCreateInfo * forMarshaling)2245 void marshal_VkImageViewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2246                                    const VkImageViewCreateInfo* forMarshaling) {
2247     (void)rootType;
2248     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2249     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2250         rootType = forMarshaling->sType;
2251     }
2252     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2253     vkStream->write((VkImageViewCreateFlags*)&forMarshaling->flags, sizeof(VkImageViewCreateFlags));
2254     uint64_t cgen_var_0;
2255     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
2256     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
2257     vkStream->write((VkImageViewType*)&forMarshaling->viewType, sizeof(VkImageViewType));
2258     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
2259     marshal_VkComponentMapping(vkStream, rootType,
2260                                (VkComponentMapping*)(&forMarshaling->components));
2261     marshal_VkImageSubresourceRange(vkStream, rootType,
2262                                     (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
2263 }
2264 
unmarshal_VkImageViewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageViewCreateInfo * forUnmarshaling)2265 void unmarshal_VkImageViewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2266                                      VkImageViewCreateInfo* forUnmarshaling) {
2267     (void)rootType;
2268     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2269     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2270         rootType = forUnmarshaling->sType;
2271     }
2272     size_t pNext_size;
2273     pNext_size = vkStream->getBe32();
2274     forUnmarshaling->pNext = nullptr;
2275     if (pNext_size) {
2276         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2277         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2278         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2279         vkStream->alloc((void**)&forUnmarshaling->pNext,
2280                         goldfish_vk_extension_struct_size_with_stream_features(
2281                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2282         *(VkStructureType*)forUnmarshaling->pNext = extType;
2283         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2284     }
2285     vkStream->read((VkImageViewCreateFlags*)&forUnmarshaling->flags,
2286                    sizeof(VkImageViewCreateFlags));
2287     uint64_t cgen_var_0;
2288     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
2289     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
2290                                                       (VkImage*)&forUnmarshaling->image, 1);
2291     vkStream->read((VkImageViewType*)&forUnmarshaling->viewType, sizeof(VkImageViewType));
2292     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
2293     unmarshal_VkComponentMapping(vkStream, rootType,
2294                                  (VkComponentMapping*)(&forUnmarshaling->components));
2295     unmarshal_VkImageSubresourceRange(
2296         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
2297 }
2298 
marshal_VkShaderModuleCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkShaderModuleCreateInfo * forMarshaling)2299 void marshal_VkShaderModuleCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2300                                       const VkShaderModuleCreateInfo* forMarshaling) {
2301     (void)rootType;
2302     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2303     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2304         rootType = forMarshaling->sType;
2305     }
2306     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2307     vkStream->write((VkShaderModuleCreateFlags*)&forMarshaling->flags,
2308                     sizeof(VkShaderModuleCreateFlags));
2309     uint64_t cgen_var_0 = (uint64_t)forMarshaling->codeSize;
2310     vkStream->putBe64(cgen_var_0);
2311     vkStream->write((const uint32_t*)forMarshaling->pCode,
2312                     (forMarshaling->codeSize / 4) * sizeof(const uint32_t));
2313 }
2314 
unmarshal_VkShaderModuleCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkShaderModuleCreateInfo * forUnmarshaling)2315 void unmarshal_VkShaderModuleCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2316                                         VkShaderModuleCreateInfo* forUnmarshaling) {
2317     (void)rootType;
2318     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2319     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2320         rootType = forUnmarshaling->sType;
2321     }
2322     size_t pNext_size;
2323     pNext_size = vkStream->getBe32();
2324     forUnmarshaling->pNext = nullptr;
2325     if (pNext_size) {
2326         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2327         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2328         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2329         vkStream->alloc((void**)&forUnmarshaling->pNext,
2330                         goldfish_vk_extension_struct_size_with_stream_features(
2331                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2332         *(VkStructureType*)forUnmarshaling->pNext = extType;
2333         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2334     }
2335     vkStream->read((VkShaderModuleCreateFlags*)&forUnmarshaling->flags,
2336                    sizeof(VkShaderModuleCreateFlags));
2337     forUnmarshaling->codeSize = (size_t)vkStream->getBe64();
2338     vkStream->alloc((void**)&forUnmarshaling->pCode,
2339                     (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
2340     vkStream->read((uint32_t*)forUnmarshaling->pCode,
2341                    (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
2342 }
2343 
marshal_VkPipelineCacheCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineCacheCreateInfo * forMarshaling)2344 void marshal_VkPipelineCacheCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2345                                        const VkPipelineCacheCreateInfo* forMarshaling) {
2346     (void)rootType;
2347     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2348     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2349         rootType = forMarshaling->sType;
2350     }
2351     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2352     vkStream->write((VkPipelineCacheCreateFlags*)&forMarshaling->flags,
2353                     sizeof(VkPipelineCacheCreateFlags));
2354     uint64_t cgen_var_0 = (uint64_t)forMarshaling->initialDataSize;
2355     vkStream->putBe64(cgen_var_0);
2356     vkStream->write((const void*)forMarshaling->pInitialData,
2357                     forMarshaling->initialDataSize * sizeof(const uint8_t));
2358 }
2359 
unmarshal_VkPipelineCacheCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCacheCreateInfo * forUnmarshaling)2360 void unmarshal_VkPipelineCacheCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2361                                          VkPipelineCacheCreateInfo* forUnmarshaling) {
2362     (void)rootType;
2363     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2364     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2365         rootType = forUnmarshaling->sType;
2366     }
2367     size_t pNext_size;
2368     pNext_size = vkStream->getBe32();
2369     forUnmarshaling->pNext = nullptr;
2370     if (pNext_size) {
2371         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2372         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2373         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2374         vkStream->alloc((void**)&forUnmarshaling->pNext,
2375                         goldfish_vk_extension_struct_size_with_stream_features(
2376                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2377         *(VkStructureType*)forUnmarshaling->pNext = extType;
2378         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2379     }
2380     vkStream->read((VkPipelineCacheCreateFlags*)&forUnmarshaling->flags,
2381                    sizeof(VkPipelineCacheCreateFlags));
2382     forUnmarshaling->initialDataSize = (size_t)vkStream->getBe64();
2383     vkStream->alloc((void**)&forUnmarshaling->pInitialData,
2384                     forUnmarshaling->initialDataSize * sizeof(const uint8_t));
2385     vkStream->read((void*)forUnmarshaling->pInitialData,
2386                    forUnmarshaling->initialDataSize * sizeof(const uint8_t));
2387 }
2388 
marshal_VkSpecializationMapEntry(VulkanStream * vkStream,VkStructureType rootType,const VkSpecializationMapEntry * forMarshaling)2389 void marshal_VkSpecializationMapEntry(VulkanStream* vkStream, VkStructureType rootType,
2390                                       const VkSpecializationMapEntry* forMarshaling) {
2391     (void)rootType;
2392     vkStream->write((uint32_t*)&forMarshaling->constantID, sizeof(uint32_t));
2393     vkStream->write((uint32_t*)&forMarshaling->offset, sizeof(uint32_t));
2394     uint64_t cgen_var_0 = (uint64_t)forMarshaling->size;
2395     vkStream->putBe64(cgen_var_0);
2396 }
2397 
unmarshal_VkSpecializationMapEntry(VulkanStream * vkStream,VkStructureType rootType,VkSpecializationMapEntry * forUnmarshaling)2398 void unmarshal_VkSpecializationMapEntry(VulkanStream* vkStream, VkStructureType rootType,
2399                                         VkSpecializationMapEntry* forUnmarshaling) {
2400     (void)rootType;
2401     vkStream->read((uint32_t*)&forUnmarshaling->constantID, sizeof(uint32_t));
2402     vkStream->read((uint32_t*)&forUnmarshaling->offset, sizeof(uint32_t));
2403     forUnmarshaling->size = (size_t)vkStream->getBe64();
2404 }
2405 
marshal_VkSpecializationInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSpecializationInfo * forMarshaling)2406 void marshal_VkSpecializationInfo(VulkanStream* vkStream, VkStructureType rootType,
2407                                   const VkSpecializationInfo* forMarshaling) {
2408     (void)rootType;
2409     vkStream->write((uint32_t*)&forMarshaling->mapEntryCount, sizeof(uint32_t));
2410     if (forMarshaling) {
2411         for (uint32_t i = 0; i < (uint32_t)forMarshaling->mapEntryCount; ++i) {
2412             marshal_VkSpecializationMapEntry(
2413                 vkStream, rootType,
2414                 (const VkSpecializationMapEntry*)(forMarshaling->pMapEntries + i));
2415         }
2416     }
2417     uint64_t cgen_var_0 = (uint64_t)forMarshaling->dataSize;
2418     vkStream->putBe64(cgen_var_0);
2419     vkStream->write((const void*)forMarshaling->pData,
2420                     forMarshaling->dataSize * sizeof(const uint8_t));
2421 }
2422 
unmarshal_VkSpecializationInfo(VulkanStream * vkStream,VkStructureType rootType,VkSpecializationInfo * forUnmarshaling)2423 void unmarshal_VkSpecializationInfo(VulkanStream* vkStream, VkStructureType rootType,
2424                                     VkSpecializationInfo* forUnmarshaling) {
2425     (void)rootType;
2426     vkStream->read((uint32_t*)&forUnmarshaling->mapEntryCount, sizeof(uint32_t));
2427     vkStream->alloc((void**)&forUnmarshaling->pMapEntries,
2428                     forUnmarshaling->mapEntryCount * sizeof(const VkSpecializationMapEntry));
2429     if (forUnmarshaling) {
2430         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->mapEntryCount; ++i) {
2431             unmarshal_VkSpecializationMapEntry(
2432                 vkStream, rootType, (VkSpecializationMapEntry*)(forUnmarshaling->pMapEntries + i));
2433         }
2434     }
2435     forUnmarshaling->dataSize = (size_t)vkStream->getBe64();
2436     vkStream->alloc((void**)&forUnmarshaling->pData,
2437                     forUnmarshaling->dataSize * sizeof(const uint8_t));
2438     vkStream->read((void*)forUnmarshaling->pData,
2439                    forUnmarshaling->dataSize * sizeof(const uint8_t));
2440 }
2441 
marshal_VkPipelineShaderStageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineShaderStageCreateInfo * forMarshaling)2442 void marshal_VkPipelineShaderStageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2443                                              const VkPipelineShaderStageCreateInfo* forMarshaling) {
2444     (void)rootType;
2445     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2446     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2447         rootType = forMarshaling->sType;
2448     }
2449     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2450     vkStream->write((VkPipelineShaderStageCreateFlags*)&forMarshaling->flags,
2451                     sizeof(VkPipelineShaderStageCreateFlags));
2452     vkStream->write((VkShaderStageFlagBits*)&forMarshaling->stage, sizeof(VkShaderStageFlagBits));
2453     uint64_t cgen_var_0;
2454     vkStream->handleMapping()->mapHandles_VkShaderModule_u64(&forMarshaling->module, &cgen_var_0,
2455                                                              1);
2456     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
2457     vkStream->putString(forMarshaling->pName);
2458     // WARNING PTR CHECK
2459     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pSpecializationInfo;
2460     vkStream->putBe64(cgen_var_1);
2461     if (forMarshaling->pSpecializationInfo) {
2462         marshal_VkSpecializationInfo(
2463             vkStream, rootType, (const VkSpecializationInfo*)(forMarshaling->pSpecializationInfo));
2464     }
2465 }
2466 
unmarshal_VkPipelineShaderStageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineShaderStageCreateInfo * forUnmarshaling)2467 void unmarshal_VkPipelineShaderStageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2468                                                VkPipelineShaderStageCreateInfo* forUnmarshaling) {
2469     (void)rootType;
2470     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2471     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2472         rootType = forUnmarshaling->sType;
2473     }
2474     size_t pNext_size;
2475     pNext_size = vkStream->getBe32();
2476     forUnmarshaling->pNext = nullptr;
2477     if (pNext_size) {
2478         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2479         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2480         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2481         vkStream->alloc((void**)&forUnmarshaling->pNext,
2482                         goldfish_vk_extension_struct_size_with_stream_features(
2483                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2484         *(VkStructureType*)forUnmarshaling->pNext = extType;
2485         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2486     }
2487     vkStream->read((VkPipelineShaderStageCreateFlags*)&forUnmarshaling->flags,
2488                    sizeof(VkPipelineShaderStageCreateFlags));
2489     vkStream->read((VkShaderStageFlagBits*)&forUnmarshaling->stage, sizeof(VkShaderStageFlagBits));
2490     uint64_t cgen_var_0;
2491     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
2492     vkStream->handleMapping()->mapHandles_u64_VkShaderModule(
2493         &cgen_var_0, (VkShaderModule*)&forUnmarshaling->module, 1);
2494     vkStream->loadStringInPlace((char**)&forUnmarshaling->pName);
2495     // WARNING PTR CHECK
2496     forUnmarshaling->pSpecializationInfo =
2497         (const VkSpecializationInfo*)(uintptr_t)vkStream->getBe64();
2498     if (forUnmarshaling->pSpecializationInfo) {
2499         vkStream->alloc((void**)&forUnmarshaling->pSpecializationInfo,
2500                         sizeof(const VkSpecializationInfo));
2501         unmarshal_VkSpecializationInfo(
2502             vkStream, rootType, (VkSpecializationInfo*)(forUnmarshaling->pSpecializationInfo));
2503     }
2504 }
2505 
marshal_VkComputePipelineCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkComputePipelineCreateInfo * forMarshaling)2506 void marshal_VkComputePipelineCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2507                                          const VkComputePipelineCreateInfo* forMarshaling) {
2508     (void)rootType;
2509     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2510     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2511         rootType = forMarshaling->sType;
2512     }
2513     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2514     vkStream->write((VkPipelineCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCreateFlags));
2515     marshal_VkPipelineShaderStageCreateInfo(
2516         vkStream, rootType, (VkPipelineShaderStageCreateInfo*)(&forMarshaling->stage));
2517     uint64_t cgen_var_0;
2518     vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->layout, &cgen_var_0,
2519                                                                1);
2520     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
2521     uint64_t cgen_var_1;
2522     vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->basePipelineHandle,
2523                                                          &cgen_var_1, 1);
2524     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
2525     vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
2526 }
2527 
unmarshal_VkComputePipelineCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkComputePipelineCreateInfo * forUnmarshaling)2528 void unmarshal_VkComputePipelineCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2529                                            VkComputePipelineCreateInfo* forUnmarshaling) {
2530     (void)rootType;
2531     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2532     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2533         rootType = forUnmarshaling->sType;
2534     }
2535     size_t pNext_size;
2536     pNext_size = vkStream->getBe32();
2537     forUnmarshaling->pNext = nullptr;
2538     if (pNext_size) {
2539         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2540         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2541         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2542         vkStream->alloc((void**)&forUnmarshaling->pNext,
2543                         goldfish_vk_extension_struct_size_with_stream_features(
2544                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2545         *(VkStructureType*)forUnmarshaling->pNext = extType;
2546         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2547     }
2548     vkStream->read((VkPipelineCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCreateFlags));
2549     unmarshal_VkPipelineShaderStageCreateInfo(
2550         vkStream, rootType, (VkPipelineShaderStageCreateInfo*)(&forUnmarshaling->stage));
2551     uint64_t cgen_var_0;
2552     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
2553     vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(
2554         &cgen_var_0, (VkPipelineLayout*)&forUnmarshaling->layout, 1);
2555     uint64_t cgen_var_1;
2556     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
2557     vkStream->handleMapping()->mapHandles_u64_VkPipeline(
2558         &cgen_var_1, (VkPipeline*)&forUnmarshaling->basePipelineHandle, 1);
2559     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
2560 }
2561 
marshal_VkVertexInputBindingDescription(VulkanStream * vkStream,VkStructureType rootType,const VkVertexInputBindingDescription * forMarshaling)2562 void marshal_VkVertexInputBindingDescription(VulkanStream* vkStream, VkStructureType rootType,
2563                                              const VkVertexInputBindingDescription* forMarshaling) {
2564     (void)rootType;
2565     vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
2566     vkStream->write((uint32_t*)&forMarshaling->stride, sizeof(uint32_t));
2567     vkStream->write((VkVertexInputRate*)&forMarshaling->inputRate, sizeof(VkVertexInputRate));
2568 }
2569 
unmarshal_VkVertexInputBindingDescription(VulkanStream * vkStream,VkStructureType rootType,VkVertexInputBindingDescription * forUnmarshaling)2570 void unmarshal_VkVertexInputBindingDescription(VulkanStream* vkStream, VkStructureType rootType,
2571                                                VkVertexInputBindingDescription* forUnmarshaling) {
2572     (void)rootType;
2573     vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
2574     vkStream->read((uint32_t*)&forUnmarshaling->stride, sizeof(uint32_t));
2575     vkStream->read((VkVertexInputRate*)&forUnmarshaling->inputRate, sizeof(VkVertexInputRate));
2576 }
2577 
marshal_VkVertexInputAttributeDescription(VulkanStream * vkStream,VkStructureType rootType,const VkVertexInputAttributeDescription * forMarshaling)2578 void marshal_VkVertexInputAttributeDescription(
2579     VulkanStream* vkStream, VkStructureType rootType,
2580     const VkVertexInputAttributeDescription* forMarshaling) {
2581     (void)rootType;
2582     vkStream->write((uint32_t*)&forMarshaling->location, sizeof(uint32_t));
2583     vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
2584     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
2585     vkStream->write((uint32_t*)&forMarshaling->offset, sizeof(uint32_t));
2586 }
2587 
unmarshal_VkVertexInputAttributeDescription(VulkanStream * vkStream,VkStructureType rootType,VkVertexInputAttributeDescription * forUnmarshaling)2588 void unmarshal_VkVertexInputAttributeDescription(
2589     VulkanStream* vkStream, VkStructureType rootType,
2590     VkVertexInputAttributeDescription* forUnmarshaling) {
2591     (void)rootType;
2592     vkStream->read((uint32_t*)&forUnmarshaling->location, sizeof(uint32_t));
2593     vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
2594     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
2595     vkStream->read((uint32_t*)&forUnmarshaling->offset, sizeof(uint32_t));
2596 }
2597 
marshal_VkPipelineVertexInputStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineVertexInputStateCreateInfo * forMarshaling)2598 void marshal_VkPipelineVertexInputStateCreateInfo(
2599     VulkanStream* vkStream, VkStructureType rootType,
2600     const VkPipelineVertexInputStateCreateInfo* forMarshaling) {
2601     (void)rootType;
2602     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2603     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2604         rootType = forMarshaling->sType;
2605     }
2606     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2607     vkStream->write((VkPipelineVertexInputStateCreateFlags*)&forMarshaling->flags,
2608                     sizeof(VkPipelineVertexInputStateCreateFlags));
2609     vkStream->write((uint32_t*)&forMarshaling->vertexBindingDescriptionCount, sizeof(uint32_t));
2610     if (forMarshaling) {
2611         for (uint32_t i = 0; i < (uint32_t)forMarshaling->vertexBindingDescriptionCount; ++i) {
2612             marshal_VkVertexInputBindingDescription(
2613                 vkStream, rootType,
2614                 (const VkVertexInputBindingDescription*)(forMarshaling->pVertexBindingDescriptions +
2615                                                          i));
2616         }
2617     }
2618     vkStream->write((uint32_t*)&forMarshaling->vertexAttributeDescriptionCount, sizeof(uint32_t));
2619     if (forMarshaling) {
2620         for (uint32_t i = 0; i < (uint32_t)forMarshaling->vertexAttributeDescriptionCount; ++i) {
2621             marshal_VkVertexInputAttributeDescription(
2622                 vkStream, rootType,
2623                 (const VkVertexInputAttributeDescription*)(forMarshaling
2624                                                                ->pVertexAttributeDescriptions +
2625                                                            i));
2626         }
2627     }
2628 }
2629 
unmarshal_VkPipelineVertexInputStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineVertexInputStateCreateInfo * forUnmarshaling)2630 void unmarshal_VkPipelineVertexInputStateCreateInfo(
2631     VulkanStream* vkStream, VkStructureType rootType,
2632     VkPipelineVertexInputStateCreateInfo* forUnmarshaling) {
2633     (void)rootType;
2634     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2635     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2636         rootType = forUnmarshaling->sType;
2637     }
2638     size_t pNext_size;
2639     pNext_size = vkStream->getBe32();
2640     forUnmarshaling->pNext = nullptr;
2641     if (pNext_size) {
2642         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2643         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2644         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2645         vkStream->alloc((void**)&forUnmarshaling->pNext,
2646                         goldfish_vk_extension_struct_size_with_stream_features(
2647                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2648         *(VkStructureType*)forUnmarshaling->pNext = extType;
2649         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2650     }
2651     vkStream->read((VkPipelineVertexInputStateCreateFlags*)&forUnmarshaling->flags,
2652                    sizeof(VkPipelineVertexInputStateCreateFlags));
2653     vkStream->read((uint32_t*)&forUnmarshaling->vertexBindingDescriptionCount, sizeof(uint32_t));
2654     vkStream->alloc((void**)&forUnmarshaling->pVertexBindingDescriptions,
2655                     forUnmarshaling->vertexBindingDescriptionCount *
2656                         sizeof(const VkVertexInputBindingDescription));
2657     if (forUnmarshaling) {
2658         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexBindingDescriptionCount; ++i) {
2659             unmarshal_VkVertexInputBindingDescription(
2660                 vkStream, rootType,
2661                 (VkVertexInputBindingDescription*)(forUnmarshaling->pVertexBindingDescriptions +
2662                                                    i));
2663         }
2664     }
2665     vkStream->read((uint32_t*)&forUnmarshaling->vertexAttributeDescriptionCount, sizeof(uint32_t));
2666     vkStream->alloc((void**)&forUnmarshaling->pVertexAttributeDescriptions,
2667                     forUnmarshaling->vertexAttributeDescriptionCount *
2668                         sizeof(const VkVertexInputAttributeDescription));
2669     if (forUnmarshaling) {
2670         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexAttributeDescriptionCount; ++i) {
2671             unmarshal_VkVertexInputAttributeDescription(
2672                 vkStream, rootType,
2673                 (VkVertexInputAttributeDescription*)(forUnmarshaling->pVertexAttributeDescriptions +
2674                                                      i));
2675         }
2676     }
2677 }
2678 
marshal_VkPipelineInputAssemblyStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineInputAssemblyStateCreateInfo * forMarshaling)2679 void marshal_VkPipelineInputAssemblyStateCreateInfo(
2680     VulkanStream* vkStream, VkStructureType rootType,
2681     const VkPipelineInputAssemblyStateCreateInfo* forMarshaling) {
2682     (void)rootType;
2683     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2684     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2685         rootType = forMarshaling->sType;
2686     }
2687     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2688     vkStream->write((VkPipelineInputAssemblyStateCreateFlags*)&forMarshaling->flags,
2689                     sizeof(VkPipelineInputAssemblyStateCreateFlags));
2690     vkStream->write((VkPrimitiveTopology*)&forMarshaling->topology, sizeof(VkPrimitiveTopology));
2691     vkStream->write((VkBool32*)&forMarshaling->primitiveRestartEnable, sizeof(VkBool32));
2692 }
2693 
unmarshal_VkPipelineInputAssemblyStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineInputAssemblyStateCreateInfo * forUnmarshaling)2694 void unmarshal_VkPipelineInputAssemblyStateCreateInfo(
2695     VulkanStream* vkStream, VkStructureType rootType,
2696     VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling) {
2697     (void)rootType;
2698     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2699     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2700         rootType = forUnmarshaling->sType;
2701     }
2702     size_t pNext_size;
2703     pNext_size = vkStream->getBe32();
2704     forUnmarshaling->pNext = nullptr;
2705     if (pNext_size) {
2706         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2707         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2708         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2709         vkStream->alloc((void**)&forUnmarshaling->pNext,
2710                         goldfish_vk_extension_struct_size_with_stream_features(
2711                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2712         *(VkStructureType*)forUnmarshaling->pNext = extType;
2713         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2714     }
2715     vkStream->read((VkPipelineInputAssemblyStateCreateFlags*)&forUnmarshaling->flags,
2716                    sizeof(VkPipelineInputAssemblyStateCreateFlags));
2717     vkStream->read((VkPrimitiveTopology*)&forUnmarshaling->topology, sizeof(VkPrimitiveTopology));
2718     vkStream->read((VkBool32*)&forUnmarshaling->primitiveRestartEnable, sizeof(VkBool32));
2719 }
2720 
marshal_VkPipelineTessellationStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineTessellationStateCreateInfo * forMarshaling)2721 void marshal_VkPipelineTessellationStateCreateInfo(
2722     VulkanStream* vkStream, VkStructureType rootType,
2723     const VkPipelineTessellationStateCreateInfo* forMarshaling) {
2724     (void)rootType;
2725     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2726     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2727         rootType = forMarshaling->sType;
2728     }
2729     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2730     vkStream->write((VkPipelineTessellationStateCreateFlags*)&forMarshaling->flags,
2731                     sizeof(VkPipelineTessellationStateCreateFlags));
2732     vkStream->write((uint32_t*)&forMarshaling->patchControlPoints, sizeof(uint32_t));
2733 }
2734 
unmarshal_VkPipelineTessellationStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineTessellationStateCreateInfo * forUnmarshaling)2735 void unmarshal_VkPipelineTessellationStateCreateInfo(
2736     VulkanStream* vkStream, VkStructureType rootType,
2737     VkPipelineTessellationStateCreateInfo* forUnmarshaling) {
2738     (void)rootType;
2739     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2740     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2741         rootType = forUnmarshaling->sType;
2742     }
2743     size_t pNext_size;
2744     pNext_size = vkStream->getBe32();
2745     forUnmarshaling->pNext = nullptr;
2746     if (pNext_size) {
2747         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2748         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2749         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2750         vkStream->alloc((void**)&forUnmarshaling->pNext,
2751                         goldfish_vk_extension_struct_size_with_stream_features(
2752                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2753         *(VkStructureType*)forUnmarshaling->pNext = extType;
2754         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2755     }
2756     vkStream->read((VkPipelineTessellationStateCreateFlags*)&forUnmarshaling->flags,
2757                    sizeof(VkPipelineTessellationStateCreateFlags));
2758     vkStream->read((uint32_t*)&forUnmarshaling->patchControlPoints, sizeof(uint32_t));
2759 }
2760 
marshal_VkViewport(VulkanStream * vkStream,VkStructureType rootType,const VkViewport * forMarshaling)2761 void marshal_VkViewport(VulkanStream* vkStream, VkStructureType rootType,
2762                         const VkViewport* forMarshaling) {
2763     (void)rootType;
2764     vkStream->write((float*)&forMarshaling->x, sizeof(float));
2765     vkStream->write((float*)&forMarshaling->y, sizeof(float));
2766     vkStream->write((float*)&forMarshaling->width, sizeof(float));
2767     vkStream->write((float*)&forMarshaling->height, sizeof(float));
2768     vkStream->write((float*)&forMarshaling->minDepth, sizeof(float));
2769     vkStream->write((float*)&forMarshaling->maxDepth, sizeof(float));
2770 }
2771 
unmarshal_VkViewport(VulkanStream * vkStream,VkStructureType rootType,VkViewport * forUnmarshaling)2772 void unmarshal_VkViewport(VulkanStream* vkStream, VkStructureType rootType,
2773                           VkViewport* forUnmarshaling) {
2774     (void)rootType;
2775     vkStream->read((float*)&forUnmarshaling->x, sizeof(float));
2776     vkStream->read((float*)&forUnmarshaling->y, sizeof(float));
2777     vkStream->read((float*)&forUnmarshaling->width, sizeof(float));
2778     vkStream->read((float*)&forUnmarshaling->height, sizeof(float));
2779     vkStream->read((float*)&forUnmarshaling->minDepth, sizeof(float));
2780     vkStream->read((float*)&forUnmarshaling->maxDepth, sizeof(float));
2781 }
2782 
marshal_VkPipelineViewportStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineViewportStateCreateInfo * forMarshaling)2783 void marshal_VkPipelineViewportStateCreateInfo(
2784     VulkanStream* vkStream, VkStructureType rootType,
2785     const VkPipelineViewportStateCreateInfo* forMarshaling) {
2786     (void)rootType;
2787     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2788     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2789         rootType = forMarshaling->sType;
2790     }
2791     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2792     vkStream->write((VkPipelineViewportStateCreateFlags*)&forMarshaling->flags,
2793                     sizeof(VkPipelineViewportStateCreateFlags));
2794     vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
2795     // WARNING PTR CHECK
2796     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pViewports;
2797     vkStream->putBe64(cgen_var_0);
2798     if (forMarshaling->pViewports) {
2799         if (forMarshaling) {
2800             for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i) {
2801                 marshal_VkViewport(vkStream, rootType,
2802                                    (const VkViewport*)(forMarshaling->pViewports + i));
2803             }
2804         }
2805     }
2806     vkStream->write((uint32_t*)&forMarshaling->scissorCount, sizeof(uint32_t));
2807     // WARNING PTR CHECK
2808     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pScissors;
2809     vkStream->putBe64(cgen_var_1);
2810     if (forMarshaling->pScissors) {
2811         if (forMarshaling) {
2812             for (uint32_t i = 0; i < (uint32_t)forMarshaling->scissorCount; ++i) {
2813                 marshal_VkRect2D(vkStream, rootType,
2814                                  (const VkRect2D*)(forMarshaling->pScissors + i));
2815             }
2816         }
2817     }
2818 }
2819 
unmarshal_VkPipelineViewportStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineViewportStateCreateInfo * forUnmarshaling)2820 void unmarshal_VkPipelineViewportStateCreateInfo(
2821     VulkanStream* vkStream, VkStructureType rootType,
2822     VkPipelineViewportStateCreateInfo* forUnmarshaling) {
2823     (void)rootType;
2824     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2825     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2826         rootType = forUnmarshaling->sType;
2827     }
2828     size_t pNext_size;
2829     pNext_size = vkStream->getBe32();
2830     forUnmarshaling->pNext = nullptr;
2831     if (pNext_size) {
2832         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2833         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2834         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2835         vkStream->alloc((void**)&forUnmarshaling->pNext,
2836                         goldfish_vk_extension_struct_size_with_stream_features(
2837                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2838         *(VkStructureType*)forUnmarshaling->pNext = extType;
2839         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2840     }
2841     vkStream->read((VkPipelineViewportStateCreateFlags*)&forUnmarshaling->flags,
2842                    sizeof(VkPipelineViewportStateCreateFlags));
2843     vkStream->read((uint32_t*)&forUnmarshaling->viewportCount, sizeof(uint32_t));
2844     // WARNING PTR CHECK
2845     forUnmarshaling->pViewports = (const VkViewport*)(uintptr_t)vkStream->getBe64();
2846     if (forUnmarshaling->pViewports) {
2847         vkStream->alloc((void**)&forUnmarshaling->pViewports,
2848                         forUnmarshaling->viewportCount * sizeof(const VkViewport));
2849         if (forUnmarshaling) {
2850             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->viewportCount; ++i) {
2851                 unmarshal_VkViewport(vkStream, rootType,
2852                                      (VkViewport*)(forUnmarshaling->pViewports + i));
2853             }
2854         }
2855     }
2856     vkStream->read((uint32_t*)&forUnmarshaling->scissorCount, sizeof(uint32_t));
2857     // WARNING PTR CHECK
2858     forUnmarshaling->pScissors = (const VkRect2D*)(uintptr_t)vkStream->getBe64();
2859     if (forUnmarshaling->pScissors) {
2860         vkStream->alloc((void**)&forUnmarshaling->pScissors,
2861                         forUnmarshaling->scissorCount * sizeof(const VkRect2D));
2862         if (forUnmarshaling) {
2863             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->scissorCount; ++i) {
2864                 unmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(forUnmarshaling->pScissors + i));
2865             }
2866         }
2867     }
2868 }
2869 
marshal_VkPipelineRasterizationStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineRasterizationStateCreateInfo * forMarshaling)2870 void marshal_VkPipelineRasterizationStateCreateInfo(
2871     VulkanStream* vkStream, VkStructureType rootType,
2872     const VkPipelineRasterizationStateCreateInfo* forMarshaling) {
2873     (void)rootType;
2874     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2875     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2876         rootType = forMarshaling->sType;
2877     }
2878     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2879     vkStream->write((VkPipelineRasterizationStateCreateFlags*)&forMarshaling->flags,
2880                     sizeof(VkPipelineRasterizationStateCreateFlags));
2881     vkStream->write((VkBool32*)&forMarshaling->depthClampEnable, sizeof(VkBool32));
2882     vkStream->write((VkBool32*)&forMarshaling->rasterizerDiscardEnable, sizeof(VkBool32));
2883     vkStream->write((VkPolygonMode*)&forMarshaling->polygonMode, sizeof(VkPolygonMode));
2884     vkStream->write((VkCullModeFlags*)&forMarshaling->cullMode, sizeof(VkCullModeFlags));
2885     vkStream->write((VkFrontFace*)&forMarshaling->frontFace, sizeof(VkFrontFace));
2886     vkStream->write((VkBool32*)&forMarshaling->depthBiasEnable, sizeof(VkBool32));
2887     vkStream->write((float*)&forMarshaling->depthBiasConstantFactor, sizeof(float));
2888     vkStream->write((float*)&forMarshaling->depthBiasClamp, sizeof(float));
2889     vkStream->write((float*)&forMarshaling->depthBiasSlopeFactor, sizeof(float));
2890     vkStream->write((float*)&forMarshaling->lineWidth, sizeof(float));
2891 }
2892 
unmarshal_VkPipelineRasterizationStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationStateCreateInfo * forUnmarshaling)2893 void unmarshal_VkPipelineRasterizationStateCreateInfo(
2894     VulkanStream* vkStream, VkStructureType rootType,
2895     VkPipelineRasterizationStateCreateInfo* forUnmarshaling) {
2896     (void)rootType;
2897     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2898     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2899         rootType = forUnmarshaling->sType;
2900     }
2901     size_t pNext_size;
2902     pNext_size = vkStream->getBe32();
2903     forUnmarshaling->pNext = nullptr;
2904     if (pNext_size) {
2905         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2906         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2907         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2908         vkStream->alloc((void**)&forUnmarshaling->pNext,
2909                         goldfish_vk_extension_struct_size_with_stream_features(
2910                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2911         *(VkStructureType*)forUnmarshaling->pNext = extType;
2912         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2913     }
2914     vkStream->read((VkPipelineRasterizationStateCreateFlags*)&forUnmarshaling->flags,
2915                    sizeof(VkPipelineRasterizationStateCreateFlags));
2916     vkStream->read((VkBool32*)&forUnmarshaling->depthClampEnable, sizeof(VkBool32));
2917     vkStream->read((VkBool32*)&forUnmarshaling->rasterizerDiscardEnable, sizeof(VkBool32));
2918     vkStream->read((VkPolygonMode*)&forUnmarshaling->polygonMode, sizeof(VkPolygonMode));
2919     vkStream->read((VkCullModeFlags*)&forUnmarshaling->cullMode, sizeof(VkCullModeFlags));
2920     vkStream->read((VkFrontFace*)&forUnmarshaling->frontFace, sizeof(VkFrontFace));
2921     vkStream->read((VkBool32*)&forUnmarshaling->depthBiasEnable, sizeof(VkBool32));
2922     vkStream->read((float*)&forUnmarshaling->depthBiasConstantFactor, sizeof(float));
2923     vkStream->read((float*)&forUnmarshaling->depthBiasClamp, sizeof(float));
2924     vkStream->read((float*)&forUnmarshaling->depthBiasSlopeFactor, sizeof(float));
2925     vkStream->read((float*)&forUnmarshaling->lineWidth, sizeof(float));
2926 }
2927 
marshal_VkPipelineMultisampleStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineMultisampleStateCreateInfo * forMarshaling)2928 void marshal_VkPipelineMultisampleStateCreateInfo(
2929     VulkanStream* vkStream, VkStructureType rootType,
2930     const VkPipelineMultisampleStateCreateInfo* forMarshaling) {
2931     (void)rootType;
2932     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
2933     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2934         rootType = forMarshaling->sType;
2935     }
2936     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
2937     vkStream->write((VkPipelineMultisampleStateCreateFlags*)&forMarshaling->flags,
2938                     sizeof(VkPipelineMultisampleStateCreateFlags));
2939     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->rasterizationSamples,
2940                     sizeof(VkSampleCountFlagBits));
2941     vkStream->write((VkBool32*)&forMarshaling->sampleShadingEnable, sizeof(VkBool32));
2942     vkStream->write((float*)&forMarshaling->minSampleShading, sizeof(float));
2943     // WARNING PTR CHECK
2944     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pSampleMask;
2945     vkStream->putBe64(cgen_var_0);
2946     if (forMarshaling->pSampleMask) {
2947         vkStream->write(
2948             (const VkSampleMask*)forMarshaling->pSampleMask,
2949             (((forMarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
2950     }
2951     vkStream->write((VkBool32*)&forMarshaling->alphaToCoverageEnable, sizeof(VkBool32));
2952     vkStream->write((VkBool32*)&forMarshaling->alphaToOneEnable, sizeof(VkBool32));
2953 }
2954 
unmarshal_VkPipelineMultisampleStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineMultisampleStateCreateInfo * forUnmarshaling)2955 void unmarshal_VkPipelineMultisampleStateCreateInfo(
2956     VulkanStream* vkStream, VkStructureType rootType,
2957     VkPipelineMultisampleStateCreateInfo* forUnmarshaling) {
2958     (void)rootType;
2959     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
2960     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2961         rootType = forUnmarshaling->sType;
2962     }
2963     size_t pNext_size;
2964     pNext_size = vkStream->getBe32();
2965     forUnmarshaling->pNext = nullptr;
2966     if (pNext_size) {
2967         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2968         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
2969         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2970         vkStream->alloc((void**)&forUnmarshaling->pNext,
2971                         goldfish_vk_extension_struct_size_with_stream_features(
2972                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2973         *(VkStructureType*)forUnmarshaling->pNext = extType;
2974         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
2975     }
2976     vkStream->read((VkPipelineMultisampleStateCreateFlags*)&forUnmarshaling->flags,
2977                    sizeof(VkPipelineMultisampleStateCreateFlags));
2978     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->rasterizationSamples,
2979                    sizeof(VkSampleCountFlagBits));
2980     vkStream->read((VkBool32*)&forUnmarshaling->sampleShadingEnable, sizeof(VkBool32));
2981     vkStream->read((float*)&forUnmarshaling->minSampleShading, sizeof(float));
2982     // WARNING PTR CHECK
2983     forUnmarshaling->pSampleMask = (const VkSampleMask*)(uintptr_t)vkStream->getBe64();
2984     if (forUnmarshaling->pSampleMask) {
2985         vkStream->alloc(
2986             (void**)&forUnmarshaling->pSampleMask,
2987             (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
2988         vkStream->read(
2989             (VkSampleMask*)forUnmarshaling->pSampleMask,
2990             (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
2991     }
2992     vkStream->read((VkBool32*)&forUnmarshaling->alphaToCoverageEnable, sizeof(VkBool32));
2993     vkStream->read((VkBool32*)&forUnmarshaling->alphaToOneEnable, sizeof(VkBool32));
2994 }
2995 
marshal_VkStencilOpState(VulkanStream * vkStream,VkStructureType rootType,const VkStencilOpState * forMarshaling)2996 void marshal_VkStencilOpState(VulkanStream* vkStream, VkStructureType rootType,
2997                               const VkStencilOpState* forMarshaling) {
2998     (void)rootType;
2999     vkStream->write((VkStencilOp*)&forMarshaling->failOp, sizeof(VkStencilOp));
3000     vkStream->write((VkStencilOp*)&forMarshaling->passOp, sizeof(VkStencilOp));
3001     vkStream->write((VkStencilOp*)&forMarshaling->depthFailOp, sizeof(VkStencilOp));
3002     vkStream->write((VkCompareOp*)&forMarshaling->compareOp, sizeof(VkCompareOp));
3003     vkStream->write((uint32_t*)&forMarshaling->compareMask, sizeof(uint32_t));
3004     vkStream->write((uint32_t*)&forMarshaling->writeMask, sizeof(uint32_t));
3005     vkStream->write((uint32_t*)&forMarshaling->reference, sizeof(uint32_t));
3006 }
3007 
unmarshal_VkStencilOpState(VulkanStream * vkStream,VkStructureType rootType,VkStencilOpState * forUnmarshaling)3008 void unmarshal_VkStencilOpState(VulkanStream* vkStream, VkStructureType rootType,
3009                                 VkStencilOpState* forUnmarshaling) {
3010     (void)rootType;
3011     vkStream->read((VkStencilOp*)&forUnmarshaling->failOp, sizeof(VkStencilOp));
3012     vkStream->read((VkStencilOp*)&forUnmarshaling->passOp, sizeof(VkStencilOp));
3013     vkStream->read((VkStencilOp*)&forUnmarshaling->depthFailOp, sizeof(VkStencilOp));
3014     vkStream->read((VkCompareOp*)&forUnmarshaling->compareOp, sizeof(VkCompareOp));
3015     vkStream->read((uint32_t*)&forUnmarshaling->compareMask, sizeof(uint32_t));
3016     vkStream->read((uint32_t*)&forUnmarshaling->writeMask, sizeof(uint32_t));
3017     vkStream->read((uint32_t*)&forUnmarshaling->reference, sizeof(uint32_t));
3018 }
3019 
marshal_VkPipelineDepthStencilStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineDepthStencilStateCreateInfo * forMarshaling)3020 void marshal_VkPipelineDepthStencilStateCreateInfo(
3021     VulkanStream* vkStream, VkStructureType rootType,
3022     const VkPipelineDepthStencilStateCreateInfo* forMarshaling) {
3023     (void)rootType;
3024     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3025     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3026         rootType = forMarshaling->sType;
3027     }
3028     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3029     vkStream->write((VkPipelineDepthStencilStateCreateFlags*)&forMarshaling->flags,
3030                     sizeof(VkPipelineDepthStencilStateCreateFlags));
3031     vkStream->write((VkBool32*)&forMarshaling->depthTestEnable, sizeof(VkBool32));
3032     vkStream->write((VkBool32*)&forMarshaling->depthWriteEnable, sizeof(VkBool32));
3033     vkStream->write((VkCompareOp*)&forMarshaling->depthCompareOp, sizeof(VkCompareOp));
3034     vkStream->write((VkBool32*)&forMarshaling->depthBoundsTestEnable, sizeof(VkBool32));
3035     vkStream->write((VkBool32*)&forMarshaling->stencilTestEnable, sizeof(VkBool32));
3036     marshal_VkStencilOpState(vkStream, rootType, (VkStencilOpState*)(&forMarshaling->front));
3037     marshal_VkStencilOpState(vkStream, rootType, (VkStencilOpState*)(&forMarshaling->back));
3038     vkStream->write((float*)&forMarshaling->minDepthBounds, sizeof(float));
3039     vkStream->write((float*)&forMarshaling->maxDepthBounds, sizeof(float));
3040 }
3041 
unmarshal_VkPipelineDepthStencilStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineDepthStencilStateCreateInfo * forUnmarshaling)3042 void unmarshal_VkPipelineDepthStencilStateCreateInfo(
3043     VulkanStream* vkStream, VkStructureType rootType,
3044     VkPipelineDepthStencilStateCreateInfo* forUnmarshaling) {
3045     (void)rootType;
3046     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3047     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3048         rootType = forUnmarshaling->sType;
3049     }
3050     size_t pNext_size;
3051     pNext_size = vkStream->getBe32();
3052     forUnmarshaling->pNext = nullptr;
3053     if (pNext_size) {
3054         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3055         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3056         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3057         vkStream->alloc((void**)&forUnmarshaling->pNext,
3058                         goldfish_vk_extension_struct_size_with_stream_features(
3059                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3060         *(VkStructureType*)forUnmarshaling->pNext = extType;
3061         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3062     }
3063     vkStream->read((VkPipelineDepthStencilStateCreateFlags*)&forUnmarshaling->flags,
3064                    sizeof(VkPipelineDepthStencilStateCreateFlags));
3065     vkStream->read((VkBool32*)&forUnmarshaling->depthTestEnable, sizeof(VkBool32));
3066     vkStream->read((VkBool32*)&forUnmarshaling->depthWriteEnable, sizeof(VkBool32));
3067     vkStream->read((VkCompareOp*)&forUnmarshaling->depthCompareOp, sizeof(VkCompareOp));
3068     vkStream->read((VkBool32*)&forUnmarshaling->depthBoundsTestEnable, sizeof(VkBool32));
3069     vkStream->read((VkBool32*)&forUnmarshaling->stencilTestEnable, sizeof(VkBool32));
3070     unmarshal_VkStencilOpState(vkStream, rootType, (VkStencilOpState*)(&forUnmarshaling->front));
3071     unmarshal_VkStencilOpState(vkStream, rootType, (VkStencilOpState*)(&forUnmarshaling->back));
3072     vkStream->read((float*)&forUnmarshaling->minDepthBounds, sizeof(float));
3073     vkStream->read((float*)&forUnmarshaling->maxDepthBounds, sizeof(float));
3074 }
3075 
marshal_VkPipelineColorBlendAttachmentState(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineColorBlendAttachmentState * forMarshaling)3076 void marshal_VkPipelineColorBlendAttachmentState(
3077     VulkanStream* vkStream, VkStructureType rootType,
3078     const VkPipelineColorBlendAttachmentState* forMarshaling) {
3079     (void)rootType;
3080     vkStream->write((VkBool32*)&forMarshaling->blendEnable, sizeof(VkBool32));
3081     vkStream->write((VkBlendFactor*)&forMarshaling->srcColorBlendFactor, sizeof(VkBlendFactor));
3082     vkStream->write((VkBlendFactor*)&forMarshaling->dstColorBlendFactor, sizeof(VkBlendFactor));
3083     vkStream->write((VkBlendOp*)&forMarshaling->colorBlendOp, sizeof(VkBlendOp));
3084     vkStream->write((VkBlendFactor*)&forMarshaling->srcAlphaBlendFactor, sizeof(VkBlendFactor));
3085     vkStream->write((VkBlendFactor*)&forMarshaling->dstAlphaBlendFactor, sizeof(VkBlendFactor));
3086     vkStream->write((VkBlendOp*)&forMarshaling->alphaBlendOp, sizeof(VkBlendOp));
3087     vkStream->write((VkColorComponentFlags*)&forMarshaling->colorWriteMask,
3088                     sizeof(VkColorComponentFlags));
3089 }
3090 
unmarshal_VkPipelineColorBlendAttachmentState(VulkanStream * vkStream,VkStructureType rootType,VkPipelineColorBlendAttachmentState * forUnmarshaling)3091 void unmarshal_VkPipelineColorBlendAttachmentState(
3092     VulkanStream* vkStream, VkStructureType rootType,
3093     VkPipelineColorBlendAttachmentState* forUnmarshaling) {
3094     (void)rootType;
3095     vkStream->read((VkBool32*)&forUnmarshaling->blendEnable, sizeof(VkBool32));
3096     vkStream->read((VkBlendFactor*)&forUnmarshaling->srcColorBlendFactor, sizeof(VkBlendFactor));
3097     vkStream->read((VkBlendFactor*)&forUnmarshaling->dstColorBlendFactor, sizeof(VkBlendFactor));
3098     vkStream->read((VkBlendOp*)&forUnmarshaling->colorBlendOp, sizeof(VkBlendOp));
3099     vkStream->read((VkBlendFactor*)&forUnmarshaling->srcAlphaBlendFactor, sizeof(VkBlendFactor));
3100     vkStream->read((VkBlendFactor*)&forUnmarshaling->dstAlphaBlendFactor, sizeof(VkBlendFactor));
3101     vkStream->read((VkBlendOp*)&forUnmarshaling->alphaBlendOp, sizeof(VkBlendOp));
3102     vkStream->read((VkColorComponentFlags*)&forUnmarshaling->colorWriteMask,
3103                    sizeof(VkColorComponentFlags));
3104 }
3105 
marshal_VkPipelineColorBlendStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineColorBlendStateCreateInfo * forMarshaling)3106 void marshal_VkPipelineColorBlendStateCreateInfo(
3107     VulkanStream* vkStream, VkStructureType rootType,
3108     const VkPipelineColorBlendStateCreateInfo* forMarshaling) {
3109     (void)rootType;
3110     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3111     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3112         rootType = forMarshaling->sType;
3113     }
3114     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3115     vkStream->write((VkPipelineColorBlendStateCreateFlags*)&forMarshaling->flags,
3116                     sizeof(VkPipelineColorBlendStateCreateFlags));
3117     vkStream->write((VkBool32*)&forMarshaling->logicOpEnable, sizeof(VkBool32));
3118     vkStream->write((VkLogicOp*)&forMarshaling->logicOp, sizeof(VkLogicOp));
3119     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
3120     if (forMarshaling) {
3121         for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentCount; ++i) {
3122             marshal_VkPipelineColorBlendAttachmentState(
3123                 vkStream, rootType,
3124                 (const VkPipelineColorBlendAttachmentState*)(forMarshaling->pAttachments + i));
3125         }
3126     }
3127     vkStream->write((float*)forMarshaling->blendConstants, 4 * sizeof(float));
3128 }
3129 
unmarshal_VkPipelineColorBlendStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineColorBlendStateCreateInfo * forUnmarshaling)3130 void unmarshal_VkPipelineColorBlendStateCreateInfo(
3131     VulkanStream* vkStream, VkStructureType rootType,
3132     VkPipelineColorBlendStateCreateInfo* forUnmarshaling) {
3133     (void)rootType;
3134     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3135     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3136         rootType = forUnmarshaling->sType;
3137     }
3138     size_t pNext_size;
3139     pNext_size = vkStream->getBe32();
3140     forUnmarshaling->pNext = nullptr;
3141     if (pNext_size) {
3142         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3143         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3144         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3145         vkStream->alloc((void**)&forUnmarshaling->pNext,
3146                         goldfish_vk_extension_struct_size_with_stream_features(
3147                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3148         *(VkStructureType*)forUnmarshaling->pNext = extType;
3149         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3150     }
3151     vkStream->read((VkPipelineColorBlendStateCreateFlags*)&forUnmarshaling->flags,
3152                    sizeof(VkPipelineColorBlendStateCreateFlags));
3153     vkStream->read((VkBool32*)&forUnmarshaling->logicOpEnable, sizeof(VkBool32));
3154     vkStream->read((VkLogicOp*)&forUnmarshaling->logicOp, sizeof(VkLogicOp));
3155     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
3156     vkStream->alloc(
3157         (void**)&forUnmarshaling->pAttachments,
3158         forUnmarshaling->attachmentCount * sizeof(const VkPipelineColorBlendAttachmentState));
3159     if (forUnmarshaling) {
3160         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i) {
3161             unmarshal_VkPipelineColorBlendAttachmentState(
3162                 vkStream, rootType,
3163                 (VkPipelineColorBlendAttachmentState*)(forUnmarshaling->pAttachments + i));
3164         }
3165     }
3166     vkStream->read((float*)forUnmarshaling->blendConstants, 4 * sizeof(float));
3167 }
3168 
marshal_VkPipelineDynamicStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineDynamicStateCreateInfo * forMarshaling)3169 void marshal_VkPipelineDynamicStateCreateInfo(
3170     VulkanStream* vkStream, VkStructureType rootType,
3171     const VkPipelineDynamicStateCreateInfo* forMarshaling) {
3172     (void)rootType;
3173     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3174     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3175         rootType = forMarshaling->sType;
3176     }
3177     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3178     vkStream->write((VkPipelineDynamicStateCreateFlags*)&forMarshaling->flags,
3179                     sizeof(VkPipelineDynamicStateCreateFlags));
3180     vkStream->write((uint32_t*)&forMarshaling->dynamicStateCount, sizeof(uint32_t));
3181     vkStream->write((const VkDynamicState*)forMarshaling->pDynamicStates,
3182                     forMarshaling->dynamicStateCount * sizeof(const VkDynamicState));
3183 }
3184 
unmarshal_VkPipelineDynamicStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineDynamicStateCreateInfo * forUnmarshaling)3185 void unmarshal_VkPipelineDynamicStateCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3186                                                 VkPipelineDynamicStateCreateInfo* forUnmarshaling) {
3187     (void)rootType;
3188     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3189     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3190         rootType = forUnmarshaling->sType;
3191     }
3192     size_t pNext_size;
3193     pNext_size = vkStream->getBe32();
3194     forUnmarshaling->pNext = nullptr;
3195     if (pNext_size) {
3196         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3197         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3198         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3199         vkStream->alloc((void**)&forUnmarshaling->pNext,
3200                         goldfish_vk_extension_struct_size_with_stream_features(
3201                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3202         *(VkStructureType*)forUnmarshaling->pNext = extType;
3203         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3204     }
3205     vkStream->read((VkPipelineDynamicStateCreateFlags*)&forUnmarshaling->flags,
3206                    sizeof(VkPipelineDynamicStateCreateFlags));
3207     vkStream->read((uint32_t*)&forUnmarshaling->dynamicStateCount, sizeof(uint32_t));
3208     vkStream->alloc((void**)&forUnmarshaling->pDynamicStates,
3209                     forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState));
3210     vkStream->read((VkDynamicState*)forUnmarshaling->pDynamicStates,
3211                    forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState));
3212 }
3213 
marshal_VkGraphicsPipelineCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkGraphicsPipelineCreateInfo * forMarshaling)3214 void marshal_VkGraphicsPipelineCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3215                                           const VkGraphicsPipelineCreateInfo* forMarshaling) {
3216     (void)rootType;
3217     uint32_t hasRasterization = 1;
3218     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3219         hasRasterization =
3220             ((((0 == forMarshaling->pRasterizationState))
3221                   ? (0)
3222                   : (!((*(forMarshaling->pRasterizationState)).rasterizerDiscardEnable))) ||
3223              (((0 == forMarshaling->pDynamicState))
3224                   ? (0)
3225                   : (arrayany((*(forMarshaling->pDynamicState)).pDynamicStates, 0,
3226                               (*(forMarshaling->pDynamicState)).dynamicStateCount,
3227                               [](VkDynamicState s) {
3228                                   return (s == VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE);
3229                               }))));
3230         uint32_t cgen_var_0 = (uint32_t)hasRasterization;
3231         vkStream->putBe32(cgen_var_0);
3232     }
3233     uint32_t hasTessellation = 1;
3234     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3235         hasTessellation =
3236             arrayany(forMarshaling->pStages, 0, forMarshaling->stageCount,
3237                      [](VkPipelineShaderStageCreateInfo s) {
3238                          return ((s.stage == VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) ||
3239                                  (s.stage == VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT));
3240                      });
3241         uint32_t cgen_var_0 = (uint32_t)hasTessellation;
3242         vkStream->putBe32(cgen_var_0);
3243     }
3244     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3245     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3246         rootType = forMarshaling->sType;
3247     }
3248     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3249     vkStream->write((VkPipelineCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCreateFlags));
3250     vkStream->write((uint32_t*)&forMarshaling->stageCount, sizeof(uint32_t));
3251     if (forMarshaling) {
3252         for (uint32_t i = 0; i < (uint32_t)forMarshaling->stageCount; ++i) {
3253             marshal_VkPipelineShaderStageCreateInfo(
3254                 vkStream, rootType,
3255                 (const VkPipelineShaderStageCreateInfo*)(forMarshaling->pStages + i));
3256         }
3257     }
3258     // WARNING PTR CHECK
3259     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3260         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pVertexInputState;
3261         vkStream->putBe64(cgen_var_0);
3262     }
3263     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3264          forMarshaling->pVertexInputState)) {
3265         marshal_VkPipelineVertexInputStateCreateInfo(
3266             vkStream, rootType,
3267             (const VkPipelineVertexInputStateCreateInfo*)(forMarshaling->pVertexInputState));
3268     }
3269     // WARNING PTR CHECK
3270     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3271         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pInputAssemblyState;
3272         vkStream->putBe64(cgen_var_0);
3273     }
3274     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3275          forMarshaling->pInputAssemblyState)) {
3276         marshal_VkPipelineInputAssemblyStateCreateInfo(
3277             vkStream, rootType,
3278             (const VkPipelineInputAssemblyStateCreateInfo*)(forMarshaling->pInputAssemblyState));
3279     }
3280     // WARNING PTR CHECK
3281     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pTessellationState;
3282     vkStream->putBe64(cgen_var_0);
3283     if (forMarshaling->pTessellationState) {
3284         if (hasTessellation) {
3285             marshal_VkPipelineTessellationStateCreateInfo(
3286                 vkStream, rootType,
3287                 (const VkPipelineTessellationStateCreateInfo*)(forMarshaling->pTessellationState));
3288         }
3289     }
3290     // WARNING PTR CHECK
3291     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pViewportState;
3292     vkStream->putBe64(cgen_var_1);
3293     if (forMarshaling->pViewportState) {
3294         if (hasRasterization) {
3295             marshal_VkPipelineViewportStateCreateInfo(
3296                 vkStream, rootType,
3297                 (const VkPipelineViewportStateCreateInfo*)(forMarshaling->pViewportState));
3298         }
3299     }
3300     // WARNING PTR CHECK
3301     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3302         uint64_t cgen_var_1_0 = (uint64_t)(uintptr_t)forMarshaling->pRasterizationState;
3303         vkStream->putBe64(cgen_var_1_0);
3304     }
3305     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3306          forMarshaling->pRasterizationState)) {
3307         marshal_VkPipelineRasterizationStateCreateInfo(
3308             vkStream, rootType,
3309             (const VkPipelineRasterizationStateCreateInfo*)(forMarshaling->pRasterizationState));
3310     }
3311     // WARNING PTR CHECK
3312     uint64_t cgen_var_2 = (uint64_t)(uintptr_t)forMarshaling->pMultisampleState;
3313     vkStream->putBe64(cgen_var_2);
3314     if (forMarshaling->pMultisampleState) {
3315         if (hasRasterization) {
3316             marshal_VkPipelineMultisampleStateCreateInfo(
3317                 vkStream, rootType,
3318                 (const VkPipelineMultisampleStateCreateInfo*)(forMarshaling->pMultisampleState));
3319         }
3320     }
3321     // WARNING PTR CHECK
3322     uint64_t cgen_var_3 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilState;
3323     vkStream->putBe64(cgen_var_3);
3324     if (forMarshaling->pDepthStencilState) {
3325         if (hasRasterization) {
3326             marshal_VkPipelineDepthStencilStateCreateInfo(
3327                 vkStream, rootType,
3328                 (const VkPipelineDepthStencilStateCreateInfo*)(forMarshaling->pDepthStencilState));
3329         }
3330     }
3331     // WARNING PTR CHECK
3332     uint64_t cgen_var_4 = (uint64_t)(uintptr_t)forMarshaling->pColorBlendState;
3333     vkStream->putBe64(cgen_var_4);
3334     if (forMarshaling->pColorBlendState) {
3335         if (hasRasterization) {
3336             marshal_VkPipelineColorBlendStateCreateInfo(
3337                 vkStream, rootType,
3338                 (const VkPipelineColorBlendStateCreateInfo*)(forMarshaling->pColorBlendState));
3339         }
3340     }
3341     // WARNING PTR CHECK
3342     uint64_t cgen_var_5 = (uint64_t)(uintptr_t)forMarshaling->pDynamicState;
3343     vkStream->putBe64(cgen_var_5);
3344     if (forMarshaling->pDynamicState) {
3345         marshal_VkPipelineDynamicStateCreateInfo(
3346             vkStream, rootType,
3347             (const VkPipelineDynamicStateCreateInfo*)(forMarshaling->pDynamicState));
3348     }
3349     uint64_t cgen_var_6;
3350     vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->layout, &cgen_var_6,
3351                                                                1);
3352     vkStream->write((uint64_t*)&cgen_var_6, 1 * 8);
3353     uint64_t cgen_var_7;
3354     vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_7,
3355                                                            1);
3356     vkStream->write((uint64_t*)&cgen_var_7, 1 * 8);
3357     vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
3358     uint64_t cgen_var_8;
3359     vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->basePipelineHandle,
3360                                                          &cgen_var_8, 1);
3361     vkStream->write((uint64_t*)&cgen_var_8, 1 * 8);
3362     vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
3363 }
3364 
unmarshal_VkGraphicsPipelineCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkGraphicsPipelineCreateInfo * forUnmarshaling)3365 void unmarshal_VkGraphicsPipelineCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3366                                             VkGraphicsPipelineCreateInfo* forUnmarshaling) {
3367     (void)rootType;
3368     uint32_t hasRasterization = 1;
3369     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3370         hasRasterization = (const uint32_t)vkStream->getBe32();
3371     }
3372     uint32_t hasTessellation = 1;
3373     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3374         hasTessellation = (const uint32_t)vkStream->getBe32();
3375     }
3376     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3377     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3378         rootType = forUnmarshaling->sType;
3379     }
3380     size_t pNext_size;
3381     pNext_size = vkStream->getBe32();
3382     forUnmarshaling->pNext = nullptr;
3383     if (pNext_size) {
3384         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3385         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3386         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3387         vkStream->alloc((void**)&forUnmarshaling->pNext,
3388                         goldfish_vk_extension_struct_size_with_stream_features(
3389                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3390         *(VkStructureType*)forUnmarshaling->pNext = extType;
3391         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3392     }
3393     vkStream->read((VkPipelineCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCreateFlags));
3394     vkStream->read((uint32_t*)&forUnmarshaling->stageCount, sizeof(uint32_t));
3395     vkStream->alloc((void**)&forUnmarshaling->pStages,
3396                     forUnmarshaling->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
3397     if (forUnmarshaling) {
3398         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->stageCount; ++i) {
3399             unmarshal_VkPipelineShaderStageCreateInfo(
3400                 vkStream, rootType,
3401                 (VkPipelineShaderStageCreateInfo*)(forUnmarshaling->pStages + i));
3402         }
3403     }
3404     // WARNING PTR CHECK
3405     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3406         forUnmarshaling->pVertexInputState =
3407             (const VkPipelineVertexInputStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3408     }
3409     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3410          forUnmarshaling->pVertexInputState)) {
3411         vkStream->alloc((void**)&forUnmarshaling->pVertexInputState,
3412                         sizeof(const VkPipelineVertexInputStateCreateInfo));
3413         unmarshal_VkPipelineVertexInputStateCreateInfo(
3414             vkStream, rootType,
3415             (VkPipelineVertexInputStateCreateInfo*)(forUnmarshaling->pVertexInputState));
3416     }
3417     // WARNING PTR CHECK
3418     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3419         forUnmarshaling->pInputAssemblyState =
3420             (const VkPipelineInputAssemblyStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3421     }
3422     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3423          forUnmarshaling->pInputAssemblyState)) {
3424         vkStream->alloc((void**)&forUnmarshaling->pInputAssemblyState,
3425                         sizeof(const VkPipelineInputAssemblyStateCreateInfo));
3426         unmarshal_VkPipelineInputAssemblyStateCreateInfo(
3427             vkStream, rootType,
3428             (VkPipelineInputAssemblyStateCreateInfo*)(forUnmarshaling->pInputAssemblyState));
3429     }
3430     // WARNING PTR CHECK
3431     forUnmarshaling->pTessellationState =
3432         (const VkPipelineTessellationStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3433     if (forUnmarshaling->pTessellationState) {
3434         if (hasTessellation) {
3435             vkStream->alloc((void**)&forUnmarshaling->pTessellationState,
3436                             sizeof(const VkPipelineTessellationStateCreateInfo));
3437             unmarshal_VkPipelineTessellationStateCreateInfo(
3438                 vkStream, rootType,
3439                 (VkPipelineTessellationStateCreateInfo*)(forUnmarshaling->pTessellationState));
3440         } else {
3441             forUnmarshaling->pTessellationState = 0;
3442         }
3443     }
3444     // WARNING PTR CHECK
3445     forUnmarshaling->pViewportState =
3446         (const VkPipelineViewportStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3447     if (forUnmarshaling->pViewportState) {
3448         if (hasRasterization) {
3449             vkStream->alloc((void**)&forUnmarshaling->pViewportState,
3450                             sizeof(const VkPipelineViewportStateCreateInfo));
3451             unmarshal_VkPipelineViewportStateCreateInfo(
3452                 vkStream, rootType,
3453                 (VkPipelineViewportStateCreateInfo*)(forUnmarshaling->pViewportState));
3454         } else {
3455             forUnmarshaling->pViewportState = 0;
3456         }
3457     }
3458     // WARNING PTR CHECK
3459     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
3460         forUnmarshaling->pRasterizationState =
3461             (const VkPipelineRasterizationStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3462     }
3463     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3464          forUnmarshaling->pRasterizationState)) {
3465         vkStream->alloc((void**)&forUnmarshaling->pRasterizationState,
3466                         sizeof(const VkPipelineRasterizationStateCreateInfo));
3467         unmarshal_VkPipelineRasterizationStateCreateInfo(
3468             vkStream, rootType,
3469             (VkPipelineRasterizationStateCreateInfo*)(forUnmarshaling->pRasterizationState));
3470     }
3471     // WARNING PTR CHECK
3472     forUnmarshaling->pMultisampleState =
3473         (const VkPipelineMultisampleStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3474     if (forUnmarshaling->pMultisampleState) {
3475         if (hasRasterization) {
3476             vkStream->alloc((void**)&forUnmarshaling->pMultisampleState,
3477                             sizeof(const VkPipelineMultisampleStateCreateInfo));
3478             unmarshal_VkPipelineMultisampleStateCreateInfo(
3479                 vkStream, rootType,
3480                 (VkPipelineMultisampleStateCreateInfo*)(forUnmarshaling->pMultisampleState));
3481         } else {
3482             forUnmarshaling->pMultisampleState = 0;
3483         }
3484     }
3485     // WARNING PTR CHECK
3486     forUnmarshaling->pDepthStencilState =
3487         (const VkPipelineDepthStencilStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3488     if (forUnmarshaling->pDepthStencilState) {
3489         if (hasRasterization) {
3490             vkStream->alloc((void**)&forUnmarshaling->pDepthStencilState,
3491                             sizeof(const VkPipelineDepthStencilStateCreateInfo));
3492             unmarshal_VkPipelineDepthStencilStateCreateInfo(
3493                 vkStream, rootType,
3494                 (VkPipelineDepthStencilStateCreateInfo*)(forUnmarshaling->pDepthStencilState));
3495         } else {
3496             forUnmarshaling->pDepthStencilState = 0;
3497         }
3498     }
3499     // WARNING PTR CHECK
3500     forUnmarshaling->pColorBlendState =
3501         (const VkPipelineColorBlendStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3502     if (forUnmarshaling->pColorBlendState) {
3503         if (hasRasterization) {
3504             vkStream->alloc((void**)&forUnmarshaling->pColorBlendState,
3505                             sizeof(const VkPipelineColorBlendStateCreateInfo));
3506             unmarshal_VkPipelineColorBlendStateCreateInfo(
3507                 vkStream, rootType,
3508                 (VkPipelineColorBlendStateCreateInfo*)(forUnmarshaling->pColorBlendState));
3509         } else {
3510             forUnmarshaling->pColorBlendState = 0;
3511         }
3512     }
3513     // WARNING PTR CHECK
3514     forUnmarshaling->pDynamicState =
3515         (const VkPipelineDynamicStateCreateInfo*)(uintptr_t)vkStream->getBe64();
3516     if (forUnmarshaling->pDynamicState) {
3517         vkStream->alloc((void**)&forUnmarshaling->pDynamicState,
3518                         sizeof(const VkPipelineDynamicStateCreateInfo));
3519         unmarshal_VkPipelineDynamicStateCreateInfo(
3520             vkStream, rootType,
3521             (VkPipelineDynamicStateCreateInfo*)(forUnmarshaling->pDynamicState));
3522     }
3523     uint64_t cgen_var_6;
3524     vkStream->read((uint64_t*)&cgen_var_6, 1 * 8);
3525     vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(
3526         &cgen_var_6, (VkPipelineLayout*)&forUnmarshaling->layout, 1);
3527     uint64_t cgen_var_7;
3528     vkStream->read((uint64_t*)&cgen_var_7, 1 * 8);
3529     vkStream->handleMapping()->mapHandles_u64_VkRenderPass(
3530         &cgen_var_7, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
3531     vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
3532     uint64_t cgen_var_8;
3533     vkStream->read((uint64_t*)&cgen_var_8, 1 * 8);
3534     vkStream->handleMapping()->mapHandles_u64_VkPipeline(
3535         &cgen_var_8, (VkPipeline*)&forUnmarshaling->basePipelineHandle, 1);
3536     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
3537 }
3538 
marshal_VkPushConstantRange(VulkanStream * vkStream,VkStructureType rootType,const VkPushConstantRange * forMarshaling)3539 void marshal_VkPushConstantRange(VulkanStream* vkStream, VkStructureType rootType,
3540                                  const VkPushConstantRange* forMarshaling) {
3541     (void)rootType;
3542     vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
3543     vkStream->write((uint32_t*)&forMarshaling->offset, sizeof(uint32_t));
3544     vkStream->write((uint32_t*)&forMarshaling->size, sizeof(uint32_t));
3545 }
3546 
unmarshal_VkPushConstantRange(VulkanStream * vkStream,VkStructureType rootType,VkPushConstantRange * forUnmarshaling)3547 void unmarshal_VkPushConstantRange(VulkanStream* vkStream, VkStructureType rootType,
3548                                    VkPushConstantRange* forUnmarshaling) {
3549     (void)rootType;
3550     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
3551     vkStream->read((uint32_t*)&forUnmarshaling->offset, sizeof(uint32_t));
3552     vkStream->read((uint32_t*)&forUnmarshaling->size, sizeof(uint32_t));
3553 }
3554 
marshal_VkPipelineLayoutCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineLayoutCreateInfo * forMarshaling)3555 void marshal_VkPipelineLayoutCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3556                                         const VkPipelineLayoutCreateInfo* forMarshaling) {
3557     (void)rootType;
3558     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3559     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3560         rootType = forMarshaling->sType;
3561     }
3562     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3563     vkStream->write((VkPipelineLayoutCreateFlags*)&forMarshaling->flags,
3564                     sizeof(VkPipelineLayoutCreateFlags));
3565     vkStream->write((uint32_t*)&forMarshaling->setLayoutCount, sizeof(uint32_t));
3566     if (forMarshaling->setLayoutCount) {
3567         uint64_t* cgen_var_0;
3568         vkStream->alloc((void**)&cgen_var_0, forMarshaling->setLayoutCount * 8);
3569         vkStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(
3570             forMarshaling->pSetLayouts, cgen_var_0, forMarshaling->setLayoutCount);
3571         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->setLayoutCount * 8);
3572     }
3573     vkStream->write((uint32_t*)&forMarshaling->pushConstantRangeCount, sizeof(uint32_t));
3574     if (forMarshaling) {
3575         for (uint32_t i = 0; i < (uint32_t)forMarshaling->pushConstantRangeCount; ++i) {
3576             marshal_VkPushConstantRange(
3577                 vkStream, rootType,
3578                 (const VkPushConstantRange*)(forMarshaling->pPushConstantRanges + i));
3579         }
3580     }
3581 }
3582 
unmarshal_VkPipelineLayoutCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineLayoutCreateInfo * forUnmarshaling)3583 void unmarshal_VkPipelineLayoutCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3584                                           VkPipelineLayoutCreateInfo* forUnmarshaling) {
3585     (void)rootType;
3586     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3587     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3588         rootType = forUnmarshaling->sType;
3589     }
3590     size_t pNext_size;
3591     pNext_size = vkStream->getBe32();
3592     forUnmarshaling->pNext = nullptr;
3593     if (pNext_size) {
3594         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3595         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3596         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3597         vkStream->alloc((void**)&forUnmarshaling->pNext,
3598                         goldfish_vk_extension_struct_size_with_stream_features(
3599                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3600         *(VkStructureType*)forUnmarshaling->pNext = extType;
3601         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3602     }
3603     vkStream->read((VkPipelineLayoutCreateFlags*)&forUnmarshaling->flags,
3604                    sizeof(VkPipelineLayoutCreateFlags));
3605     vkStream->read((uint32_t*)&forUnmarshaling->setLayoutCount, sizeof(uint32_t));
3606     vkStream->alloc((void**)&forUnmarshaling->pSetLayouts,
3607                     forUnmarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
3608     if (forUnmarshaling->setLayoutCount) {
3609         uint64_t* cgen_var_0;
3610         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->setLayoutCount * 8);
3611         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->setLayoutCount * 8);
3612         vkStream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(
3613             cgen_var_0, (VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts,
3614             forUnmarshaling->setLayoutCount);
3615     }
3616     vkStream->read((uint32_t*)&forUnmarshaling->pushConstantRangeCount, sizeof(uint32_t));
3617     vkStream->alloc((void**)&forUnmarshaling->pPushConstantRanges,
3618                     forUnmarshaling->pushConstantRangeCount * sizeof(const VkPushConstantRange));
3619     if (forUnmarshaling) {
3620         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->pushConstantRangeCount; ++i) {
3621             unmarshal_VkPushConstantRange(
3622                 vkStream, rootType,
3623                 (VkPushConstantRange*)(forUnmarshaling->pPushConstantRanges + i));
3624         }
3625     }
3626 }
3627 
marshal_VkSamplerCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSamplerCreateInfo * forMarshaling)3628 void marshal_VkSamplerCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3629                                  const VkSamplerCreateInfo* forMarshaling) {
3630     (void)rootType;
3631     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3632     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3633         rootType = forMarshaling->sType;
3634     }
3635     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3636     vkStream->write((VkSamplerCreateFlags*)&forMarshaling->flags, sizeof(VkSamplerCreateFlags));
3637     vkStream->write((VkFilter*)&forMarshaling->magFilter, sizeof(VkFilter));
3638     vkStream->write((VkFilter*)&forMarshaling->minFilter, sizeof(VkFilter));
3639     vkStream->write((VkSamplerMipmapMode*)&forMarshaling->mipmapMode, sizeof(VkSamplerMipmapMode));
3640     vkStream->write((VkSamplerAddressMode*)&forMarshaling->addressModeU,
3641                     sizeof(VkSamplerAddressMode));
3642     vkStream->write((VkSamplerAddressMode*)&forMarshaling->addressModeV,
3643                     sizeof(VkSamplerAddressMode));
3644     vkStream->write((VkSamplerAddressMode*)&forMarshaling->addressModeW,
3645                     sizeof(VkSamplerAddressMode));
3646     vkStream->write((float*)&forMarshaling->mipLodBias, sizeof(float));
3647     vkStream->write((VkBool32*)&forMarshaling->anisotropyEnable, sizeof(VkBool32));
3648     vkStream->write((float*)&forMarshaling->maxAnisotropy, sizeof(float));
3649     vkStream->write((VkBool32*)&forMarshaling->compareEnable, sizeof(VkBool32));
3650     vkStream->write((VkCompareOp*)&forMarshaling->compareOp, sizeof(VkCompareOp));
3651     vkStream->write((float*)&forMarshaling->minLod, sizeof(float));
3652     vkStream->write((float*)&forMarshaling->maxLod, sizeof(float));
3653     vkStream->write((VkBorderColor*)&forMarshaling->borderColor, sizeof(VkBorderColor));
3654     vkStream->write((VkBool32*)&forMarshaling->unnormalizedCoordinates, sizeof(VkBool32));
3655 }
3656 
unmarshal_VkSamplerCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerCreateInfo * forUnmarshaling)3657 void unmarshal_VkSamplerCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3658                                    VkSamplerCreateInfo* forUnmarshaling) {
3659     (void)rootType;
3660     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3661     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3662         rootType = forUnmarshaling->sType;
3663     }
3664     size_t pNext_size;
3665     pNext_size = vkStream->getBe32();
3666     forUnmarshaling->pNext = nullptr;
3667     if (pNext_size) {
3668         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3669         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3670         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3671         vkStream->alloc((void**)&forUnmarshaling->pNext,
3672                         goldfish_vk_extension_struct_size_with_stream_features(
3673                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3674         *(VkStructureType*)forUnmarshaling->pNext = extType;
3675         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3676     }
3677     vkStream->read((VkSamplerCreateFlags*)&forUnmarshaling->flags, sizeof(VkSamplerCreateFlags));
3678     vkStream->read((VkFilter*)&forUnmarshaling->magFilter, sizeof(VkFilter));
3679     vkStream->read((VkFilter*)&forUnmarshaling->minFilter, sizeof(VkFilter));
3680     vkStream->read((VkSamplerMipmapMode*)&forUnmarshaling->mipmapMode, sizeof(VkSamplerMipmapMode));
3681     vkStream->read((VkSamplerAddressMode*)&forUnmarshaling->addressModeU,
3682                    sizeof(VkSamplerAddressMode));
3683     vkStream->read((VkSamplerAddressMode*)&forUnmarshaling->addressModeV,
3684                    sizeof(VkSamplerAddressMode));
3685     vkStream->read((VkSamplerAddressMode*)&forUnmarshaling->addressModeW,
3686                    sizeof(VkSamplerAddressMode));
3687     vkStream->read((float*)&forUnmarshaling->mipLodBias, sizeof(float));
3688     vkStream->read((VkBool32*)&forUnmarshaling->anisotropyEnable, sizeof(VkBool32));
3689     vkStream->read((float*)&forUnmarshaling->maxAnisotropy, sizeof(float));
3690     vkStream->read((VkBool32*)&forUnmarshaling->compareEnable, sizeof(VkBool32));
3691     vkStream->read((VkCompareOp*)&forUnmarshaling->compareOp, sizeof(VkCompareOp));
3692     vkStream->read((float*)&forUnmarshaling->minLod, sizeof(float));
3693     vkStream->read((float*)&forUnmarshaling->maxLod, sizeof(float));
3694     vkStream->read((VkBorderColor*)&forUnmarshaling->borderColor, sizeof(VkBorderColor));
3695     vkStream->read((VkBool32*)&forUnmarshaling->unnormalizedCoordinates, sizeof(VkBool32));
3696 }
3697 
marshal_VkCopyDescriptorSet(VulkanStream * vkStream,VkStructureType rootType,const VkCopyDescriptorSet * forMarshaling)3698 void marshal_VkCopyDescriptorSet(VulkanStream* vkStream, VkStructureType rootType,
3699                                  const VkCopyDescriptorSet* forMarshaling) {
3700     (void)rootType;
3701     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3702     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3703         rootType = forMarshaling->sType;
3704     }
3705     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3706     uint64_t cgen_var_0;
3707     vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->srcSet, &cgen_var_0,
3708                                                               1);
3709     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
3710     vkStream->write((uint32_t*)&forMarshaling->srcBinding, sizeof(uint32_t));
3711     vkStream->write((uint32_t*)&forMarshaling->srcArrayElement, sizeof(uint32_t));
3712     uint64_t cgen_var_1;
3713     vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->dstSet, &cgen_var_1,
3714                                                               1);
3715     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
3716     vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
3717     vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
3718     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
3719 }
3720 
unmarshal_VkCopyDescriptorSet(VulkanStream * vkStream,VkStructureType rootType,VkCopyDescriptorSet * forUnmarshaling)3721 void unmarshal_VkCopyDescriptorSet(VulkanStream* vkStream, VkStructureType rootType,
3722                                    VkCopyDescriptorSet* forUnmarshaling) {
3723     (void)rootType;
3724     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3725     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3726         rootType = forUnmarshaling->sType;
3727     }
3728     size_t pNext_size;
3729     pNext_size = vkStream->getBe32();
3730     forUnmarshaling->pNext = nullptr;
3731     if (pNext_size) {
3732         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3733         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3734         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3735         vkStream->alloc((void**)&forUnmarshaling->pNext,
3736                         goldfish_vk_extension_struct_size_with_stream_features(
3737                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3738         *(VkStructureType*)forUnmarshaling->pNext = extType;
3739         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3740     }
3741     uint64_t cgen_var_0;
3742     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
3743     vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(
3744         &cgen_var_0, (VkDescriptorSet*)&forUnmarshaling->srcSet, 1);
3745     vkStream->read((uint32_t*)&forUnmarshaling->srcBinding, sizeof(uint32_t));
3746     vkStream->read((uint32_t*)&forUnmarshaling->srcArrayElement, sizeof(uint32_t));
3747     uint64_t cgen_var_1;
3748     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
3749     vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(
3750         &cgen_var_1, (VkDescriptorSet*)&forUnmarshaling->dstSet, 1);
3751     vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
3752     vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
3753     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
3754 }
3755 
marshal_VkDescriptorBufferInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorBufferInfo * forMarshaling)3756 void marshal_VkDescriptorBufferInfo(VulkanStream* vkStream, VkStructureType rootType,
3757                                     const VkDescriptorBufferInfo* forMarshaling) {
3758     (void)rootType;
3759     uint64_t cgen_var_0;
3760     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
3761     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
3762     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
3763     vkStream->write((VkDeviceSize*)&forMarshaling->range, sizeof(VkDeviceSize));
3764 }
3765 
unmarshal_VkDescriptorBufferInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorBufferInfo * forUnmarshaling)3766 void unmarshal_VkDescriptorBufferInfo(VulkanStream* vkStream, VkStructureType rootType,
3767                                       VkDescriptorBufferInfo* forUnmarshaling) {
3768     (void)rootType;
3769     uint64_t cgen_var_0;
3770     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
3771     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
3772                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
3773     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
3774     vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
3775 }
3776 
marshal_VkDescriptorImageInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorImageInfo * forMarshaling)3777 void marshal_VkDescriptorImageInfo(VulkanStream* vkStream, VkStructureType rootType,
3778                                    const VkDescriptorImageInfo* forMarshaling) {
3779     (void)rootType;
3780     uint64_t cgen_var_0;
3781     vkStream->handleMapping()->mapHandles_VkSampler_u64(&forMarshaling->sampler, &cgen_var_0, 1);
3782     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
3783     uint64_t cgen_var_1;
3784     vkStream->handleMapping()->mapHandles_VkImageView_u64(&forMarshaling->imageView, &cgen_var_1,
3785                                                           1);
3786     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
3787     vkStream->write((VkImageLayout*)&forMarshaling->imageLayout, sizeof(VkImageLayout));
3788 }
3789 
unmarshal_VkDescriptorImageInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorImageInfo * forUnmarshaling)3790 void unmarshal_VkDescriptorImageInfo(VulkanStream* vkStream, VkStructureType rootType,
3791                                      VkDescriptorImageInfo* forUnmarshaling) {
3792     (void)rootType;
3793     uint64_t cgen_var_0;
3794     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
3795     vkStream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_0,
3796                                                         (VkSampler*)&forUnmarshaling->sampler, 1);
3797     uint64_t cgen_var_1;
3798     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
3799     vkStream->handleMapping()->mapHandles_u64_VkImageView(
3800         &cgen_var_1, (VkImageView*)&forUnmarshaling->imageView, 1);
3801     vkStream->read((VkImageLayout*)&forUnmarshaling->imageLayout, sizeof(VkImageLayout));
3802 }
3803 
marshal_VkDescriptorPoolSize(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorPoolSize * forMarshaling)3804 void marshal_VkDescriptorPoolSize(VulkanStream* vkStream, VkStructureType rootType,
3805                                   const VkDescriptorPoolSize* forMarshaling) {
3806     (void)rootType;
3807     vkStream->write((VkDescriptorType*)&forMarshaling->type, sizeof(VkDescriptorType));
3808     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
3809 }
3810 
unmarshal_VkDescriptorPoolSize(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorPoolSize * forUnmarshaling)3811 void unmarshal_VkDescriptorPoolSize(VulkanStream* vkStream, VkStructureType rootType,
3812                                     VkDescriptorPoolSize* forUnmarshaling) {
3813     (void)rootType;
3814     vkStream->read((VkDescriptorType*)&forUnmarshaling->type, sizeof(VkDescriptorType));
3815     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
3816 }
3817 
marshal_VkDescriptorPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorPoolCreateInfo * forMarshaling)3818 void marshal_VkDescriptorPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3819                                         const VkDescriptorPoolCreateInfo* forMarshaling) {
3820     (void)rootType;
3821     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3822     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3823         rootType = forMarshaling->sType;
3824     }
3825     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3826     vkStream->write((VkDescriptorPoolCreateFlags*)&forMarshaling->flags,
3827                     sizeof(VkDescriptorPoolCreateFlags));
3828     vkStream->write((uint32_t*)&forMarshaling->maxSets, sizeof(uint32_t));
3829     vkStream->write((uint32_t*)&forMarshaling->poolSizeCount, sizeof(uint32_t));
3830     if (forMarshaling) {
3831         for (uint32_t i = 0; i < (uint32_t)forMarshaling->poolSizeCount; ++i) {
3832             marshal_VkDescriptorPoolSize(
3833                 vkStream, rootType, (const VkDescriptorPoolSize*)(forMarshaling->pPoolSizes + i));
3834         }
3835     }
3836 }
3837 
unmarshal_VkDescriptorPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorPoolCreateInfo * forUnmarshaling)3838 void unmarshal_VkDescriptorPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3839                                           VkDescriptorPoolCreateInfo* forUnmarshaling) {
3840     (void)rootType;
3841     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3842     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3843         rootType = forUnmarshaling->sType;
3844     }
3845     size_t pNext_size;
3846     pNext_size = vkStream->getBe32();
3847     forUnmarshaling->pNext = nullptr;
3848     if (pNext_size) {
3849         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3850         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3851         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3852         vkStream->alloc((void**)&forUnmarshaling->pNext,
3853                         goldfish_vk_extension_struct_size_with_stream_features(
3854                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3855         *(VkStructureType*)forUnmarshaling->pNext = extType;
3856         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3857     }
3858     vkStream->read((VkDescriptorPoolCreateFlags*)&forUnmarshaling->flags,
3859                    sizeof(VkDescriptorPoolCreateFlags));
3860     vkStream->read((uint32_t*)&forUnmarshaling->maxSets, sizeof(uint32_t));
3861     vkStream->read((uint32_t*)&forUnmarshaling->poolSizeCount, sizeof(uint32_t));
3862     vkStream->alloc((void**)&forUnmarshaling->pPoolSizes,
3863                     forUnmarshaling->poolSizeCount * sizeof(const VkDescriptorPoolSize));
3864     if (forUnmarshaling) {
3865         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->poolSizeCount; ++i) {
3866             unmarshal_VkDescriptorPoolSize(
3867                 vkStream, rootType, (VkDescriptorPoolSize*)(forUnmarshaling->pPoolSizes + i));
3868         }
3869     }
3870 }
3871 
marshal_VkDescriptorSetAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetAllocateInfo * forMarshaling)3872 void marshal_VkDescriptorSetAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
3873                                          const VkDescriptorSetAllocateInfo* forMarshaling) {
3874     (void)rootType;
3875     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3876     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3877         rootType = forMarshaling->sType;
3878     }
3879     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3880     uint64_t cgen_var_0;
3881     vkStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&forMarshaling->descriptorPool,
3882                                                                &cgen_var_0, 1);
3883     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
3884     vkStream->write((uint32_t*)&forMarshaling->descriptorSetCount, sizeof(uint32_t));
3885     if (forMarshaling->descriptorSetCount) {
3886         uint64_t* cgen_var_1;
3887         vkStream->alloc((void**)&cgen_var_1, forMarshaling->descriptorSetCount * 8);
3888         vkStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(
3889             forMarshaling->pSetLayouts, cgen_var_1, forMarshaling->descriptorSetCount);
3890         vkStream->write((uint64_t*)cgen_var_1, forMarshaling->descriptorSetCount * 8);
3891     }
3892 }
3893 
unmarshal_VkDescriptorSetAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetAllocateInfo * forUnmarshaling)3894 void unmarshal_VkDescriptorSetAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
3895                                            VkDescriptorSetAllocateInfo* forUnmarshaling) {
3896     (void)rootType;
3897     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3898     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3899         rootType = forUnmarshaling->sType;
3900     }
3901     size_t pNext_size;
3902     pNext_size = vkStream->getBe32();
3903     forUnmarshaling->pNext = nullptr;
3904     if (pNext_size) {
3905         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3906         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
3907         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3908         vkStream->alloc((void**)&forUnmarshaling->pNext,
3909                         goldfish_vk_extension_struct_size_with_stream_features(
3910                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3911         *(VkStructureType*)forUnmarshaling->pNext = extType;
3912         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
3913     }
3914     uint64_t cgen_var_0;
3915     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
3916     vkStream->handleMapping()->mapHandles_u64_VkDescriptorPool(
3917         &cgen_var_0, (VkDescriptorPool*)&forUnmarshaling->descriptorPool, 1);
3918     vkStream->read((uint32_t*)&forUnmarshaling->descriptorSetCount, sizeof(uint32_t));
3919     vkStream->alloc((void**)&forUnmarshaling->pSetLayouts,
3920                     forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
3921     if (forUnmarshaling->descriptorSetCount) {
3922         uint64_t* cgen_var_1;
3923         vkStream->alloc((void**)&cgen_var_1, forUnmarshaling->descriptorSetCount * 8);
3924         vkStream->read((uint64_t*)cgen_var_1, forUnmarshaling->descriptorSetCount * 8);
3925         vkStream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(
3926             cgen_var_1, (VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts,
3927             forUnmarshaling->descriptorSetCount);
3928     }
3929 }
3930 
marshal_VkDescriptorSetLayoutBinding(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetLayoutBinding * forMarshaling)3931 void marshal_VkDescriptorSetLayoutBinding(VulkanStream* vkStream, VkStructureType rootType,
3932                                           const VkDescriptorSetLayoutBinding* forMarshaling) {
3933     (void)rootType;
3934     vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
3935     vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
3936     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
3937     vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
3938     // WARNING PTR CHECK
3939     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pImmutableSamplers;
3940     vkStream->putBe64(cgen_var_0);
3941     if (forMarshaling->pImmutableSamplers) {
3942         if (forMarshaling->descriptorCount) {
3943             uint64_t* cgen_var_0_0;
3944             vkStream->alloc((void**)&cgen_var_0_0, forMarshaling->descriptorCount * 8);
3945             vkStream->handleMapping()->mapHandles_VkSampler_u64(
3946                 forMarshaling->pImmutableSamplers, cgen_var_0_0, forMarshaling->descriptorCount);
3947             vkStream->write((uint64_t*)cgen_var_0_0, forMarshaling->descriptorCount * 8);
3948         }
3949     }
3950 }
3951 
unmarshal_VkDescriptorSetLayoutBinding(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutBinding * forUnmarshaling)3952 void unmarshal_VkDescriptorSetLayoutBinding(VulkanStream* vkStream, VkStructureType rootType,
3953                                             VkDescriptorSetLayoutBinding* forUnmarshaling) {
3954     (void)rootType;
3955     vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
3956     vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
3957     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
3958     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
3959     // WARNING PTR CHECK
3960     forUnmarshaling->pImmutableSamplers = (const VkSampler*)(uintptr_t)vkStream->getBe64();
3961     if (forUnmarshaling->pImmutableSamplers) {
3962         vkStream->alloc((void**)&forUnmarshaling->pImmutableSamplers,
3963                         forUnmarshaling->descriptorCount * sizeof(const VkSampler));
3964         if (forUnmarshaling->descriptorCount) {
3965             uint64_t* cgen_var_0_0;
3966             vkStream->alloc((void**)&cgen_var_0_0, forUnmarshaling->descriptorCount * 8);
3967             vkStream->read((uint64_t*)cgen_var_0_0, forUnmarshaling->descriptorCount * 8);
3968             vkStream->handleMapping()->mapHandles_u64_VkSampler(
3969                 cgen_var_0_0, (VkSampler*)forUnmarshaling->pImmutableSamplers,
3970                 forUnmarshaling->descriptorCount);
3971         }
3972     }
3973 }
3974 
marshal_VkDescriptorSetLayoutCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetLayoutCreateInfo * forMarshaling)3975 void marshal_VkDescriptorSetLayoutCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3976                                              const VkDescriptorSetLayoutCreateInfo* forMarshaling) {
3977     (void)rootType;
3978     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
3979     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3980         rootType = forMarshaling->sType;
3981     }
3982     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
3983     vkStream->write((VkDescriptorSetLayoutCreateFlags*)&forMarshaling->flags,
3984                     sizeof(VkDescriptorSetLayoutCreateFlags));
3985     vkStream->write((uint32_t*)&forMarshaling->bindingCount, sizeof(uint32_t));
3986     if (forMarshaling) {
3987         for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindingCount; ++i) {
3988             marshal_VkDescriptorSetLayoutBinding(
3989                 vkStream, rootType,
3990                 (const VkDescriptorSetLayoutBinding*)(forMarshaling->pBindings + i));
3991         }
3992     }
3993 }
3994 
unmarshal_VkDescriptorSetLayoutCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutCreateInfo * forUnmarshaling)3995 void unmarshal_VkDescriptorSetLayoutCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3996                                                VkDescriptorSetLayoutCreateInfo* forUnmarshaling) {
3997     (void)rootType;
3998     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
3999     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4000         rootType = forUnmarshaling->sType;
4001     }
4002     size_t pNext_size;
4003     pNext_size = vkStream->getBe32();
4004     forUnmarshaling->pNext = nullptr;
4005     if (pNext_size) {
4006         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4007         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4008         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4009         vkStream->alloc((void**)&forUnmarshaling->pNext,
4010                         goldfish_vk_extension_struct_size_with_stream_features(
4011                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4012         *(VkStructureType*)forUnmarshaling->pNext = extType;
4013         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4014     }
4015     vkStream->read((VkDescriptorSetLayoutCreateFlags*)&forUnmarshaling->flags,
4016                    sizeof(VkDescriptorSetLayoutCreateFlags));
4017     vkStream->read((uint32_t*)&forUnmarshaling->bindingCount, sizeof(uint32_t));
4018     vkStream->alloc((void**)&forUnmarshaling->pBindings,
4019                     forUnmarshaling->bindingCount * sizeof(const VkDescriptorSetLayoutBinding));
4020     if (forUnmarshaling) {
4021         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindingCount; ++i) {
4022             unmarshal_VkDescriptorSetLayoutBinding(
4023                 vkStream, rootType,
4024                 (VkDescriptorSetLayoutBinding*)(forUnmarshaling->pBindings + i));
4025         }
4026     }
4027 }
4028 
marshal_VkWriteDescriptorSet(VulkanStream * vkStream,VkStructureType rootType,const VkWriteDescriptorSet * forMarshaling)4029 void marshal_VkWriteDescriptorSet(VulkanStream* vkStream, VkStructureType rootType,
4030                                   const VkWriteDescriptorSet* forMarshaling) {
4031     (void)rootType;
4032     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4033     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4034         rootType = forMarshaling->sType;
4035     }
4036     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4037     uint64_t cgen_var_0;
4038     vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->dstSet, &cgen_var_0,
4039                                                               1);
4040     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
4041     vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
4042     vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
4043     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
4044     vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
4045     // WARNING PTR CHECK
4046     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pImageInfo;
4047     vkStream->putBe64(cgen_var_1);
4048     if (forMarshaling->pImageInfo) {
4049         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4050              ((VK_DESCRIPTOR_TYPE_SAMPLER == forMarshaling->descriptorType) ||
4051               (VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER == forMarshaling->descriptorType) ||
4052               (VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE == forMarshaling->descriptorType) ||
4053               (VK_DESCRIPTOR_TYPE_STORAGE_IMAGE == forMarshaling->descriptorType) ||
4054               (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT == forMarshaling->descriptorType)))) {
4055             if (forMarshaling) {
4056                 for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorCount; ++i) {
4057                     marshal_VkDescriptorImageInfo(
4058                         vkStream, rootType,
4059                         (const VkDescriptorImageInfo*)(forMarshaling->pImageInfo + i));
4060                 }
4061             }
4062         }
4063     }
4064     // WARNING PTR CHECK
4065     uint64_t cgen_var_2 = (uint64_t)(uintptr_t)forMarshaling->pBufferInfo;
4066     vkStream->putBe64(cgen_var_2);
4067     if (forMarshaling->pBufferInfo) {
4068         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4069              ((VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER == forMarshaling->descriptorType) ||
4070               (VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC == forMarshaling->descriptorType) ||
4071               (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER == forMarshaling->descriptorType) ||
4072               (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC == forMarshaling->descriptorType)))) {
4073             if (forMarshaling) {
4074                 for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorCount; ++i) {
4075                     marshal_VkDescriptorBufferInfo(
4076                         vkStream, rootType,
4077                         (const VkDescriptorBufferInfo*)(forMarshaling->pBufferInfo + i));
4078                 }
4079             }
4080         }
4081     }
4082     // WARNING PTR CHECK
4083     uint64_t cgen_var_3 = (uint64_t)(uintptr_t)forMarshaling->pTexelBufferView;
4084     vkStream->putBe64(cgen_var_3);
4085     if (forMarshaling->pTexelBufferView) {
4086         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4087              ((VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER == forMarshaling->descriptorType) ||
4088               (VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER == forMarshaling->descriptorType)))) {
4089             if (forMarshaling->descriptorCount) {
4090                 uint64_t* cgen_var_3_0;
4091                 vkStream->alloc((void**)&cgen_var_3_0, forMarshaling->descriptorCount * 8);
4092                 vkStream->handleMapping()->mapHandles_VkBufferView_u64(
4093                     forMarshaling->pTexelBufferView, cgen_var_3_0, forMarshaling->descriptorCount);
4094                 vkStream->write((uint64_t*)cgen_var_3_0, forMarshaling->descriptorCount * 8);
4095             }
4096         }
4097     }
4098 }
4099 
unmarshal_VkWriteDescriptorSet(VulkanStream * vkStream,VkStructureType rootType,VkWriteDescriptorSet * forUnmarshaling)4100 void unmarshal_VkWriteDescriptorSet(VulkanStream* vkStream, VkStructureType rootType,
4101                                     VkWriteDescriptorSet* forUnmarshaling) {
4102     (void)rootType;
4103     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4104     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4105         rootType = forUnmarshaling->sType;
4106     }
4107     size_t pNext_size;
4108     pNext_size = vkStream->getBe32();
4109     forUnmarshaling->pNext = nullptr;
4110     if (pNext_size) {
4111         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4112         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4113         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4114         vkStream->alloc((void**)&forUnmarshaling->pNext,
4115                         goldfish_vk_extension_struct_size_with_stream_features(
4116                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4117         *(VkStructureType*)forUnmarshaling->pNext = extType;
4118         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4119     }
4120     uint64_t cgen_var_0;
4121     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
4122     vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(
4123         &cgen_var_0, (VkDescriptorSet*)&forUnmarshaling->dstSet, 1);
4124     vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
4125     vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
4126     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
4127     vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
4128     // WARNING PTR CHECK
4129     forUnmarshaling->pImageInfo = (const VkDescriptorImageInfo*)(uintptr_t)vkStream->getBe64();
4130     if (forUnmarshaling->pImageInfo) {
4131         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4132              ((VK_DESCRIPTOR_TYPE_SAMPLER == forUnmarshaling->descriptorType) ||
4133               (VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER == forUnmarshaling->descriptorType) ||
4134               (VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE == forUnmarshaling->descriptorType) ||
4135               (VK_DESCRIPTOR_TYPE_STORAGE_IMAGE == forUnmarshaling->descriptorType) ||
4136               (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT == forUnmarshaling->descriptorType)))) {
4137             vkStream->alloc((void**)&forUnmarshaling->pImageInfo,
4138                             forUnmarshaling->descriptorCount * sizeof(const VkDescriptorImageInfo));
4139             if (forUnmarshaling) {
4140                 for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorCount; ++i) {
4141                     unmarshal_VkDescriptorImageInfo(
4142                         vkStream, rootType,
4143                         (VkDescriptorImageInfo*)(forUnmarshaling->pImageInfo + i));
4144                 }
4145             }
4146         } else {
4147             forUnmarshaling->pImageInfo = 0;
4148         }
4149     }
4150     // WARNING PTR CHECK
4151     forUnmarshaling->pBufferInfo = (const VkDescriptorBufferInfo*)(uintptr_t)vkStream->getBe64();
4152     if (forUnmarshaling->pBufferInfo) {
4153         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4154              ((VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER == forUnmarshaling->descriptorType) ||
4155               (VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC == forUnmarshaling->descriptorType) ||
4156               (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER == forUnmarshaling->descriptorType) ||
4157               (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC == forUnmarshaling->descriptorType)))) {
4158             vkStream->alloc(
4159                 (void**)&forUnmarshaling->pBufferInfo,
4160                 forUnmarshaling->descriptorCount * sizeof(const VkDescriptorBufferInfo));
4161             if (forUnmarshaling) {
4162                 for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorCount; ++i) {
4163                     unmarshal_VkDescriptorBufferInfo(
4164                         vkStream, rootType,
4165                         (VkDescriptorBufferInfo*)(forUnmarshaling->pBufferInfo + i));
4166                 }
4167             }
4168         } else {
4169             forUnmarshaling->pBufferInfo = 0;
4170         }
4171     }
4172     // WARNING PTR CHECK
4173     forUnmarshaling->pTexelBufferView = (const VkBufferView*)(uintptr_t)vkStream->getBe64();
4174     if (forUnmarshaling->pTexelBufferView) {
4175         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4176              ((VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER == forUnmarshaling->descriptorType) ||
4177               (VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER == forUnmarshaling->descriptorType)))) {
4178             vkStream->alloc((void**)&forUnmarshaling->pTexelBufferView,
4179                             forUnmarshaling->descriptorCount * sizeof(const VkBufferView));
4180             if (forUnmarshaling->descriptorCount) {
4181                 uint64_t* cgen_var_3_0;
4182                 vkStream->alloc((void**)&cgen_var_3_0, forUnmarshaling->descriptorCount * 8);
4183                 vkStream->read((uint64_t*)cgen_var_3_0, forUnmarshaling->descriptorCount * 8);
4184                 vkStream->handleMapping()->mapHandles_u64_VkBufferView(
4185                     cgen_var_3_0, (VkBufferView*)forUnmarshaling->pTexelBufferView,
4186                     forUnmarshaling->descriptorCount);
4187             }
4188         } else {
4189             forUnmarshaling->pTexelBufferView = 0;
4190         }
4191     }
4192 }
4193 
marshal_VkAttachmentDescription(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentDescription * forMarshaling)4194 void marshal_VkAttachmentDescription(VulkanStream* vkStream, VkStructureType rootType,
4195                                      const VkAttachmentDescription* forMarshaling) {
4196     (void)rootType;
4197     vkStream->write((VkAttachmentDescriptionFlags*)&forMarshaling->flags,
4198                     sizeof(VkAttachmentDescriptionFlags));
4199     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
4200     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
4201     vkStream->write((VkAttachmentLoadOp*)&forMarshaling->loadOp, sizeof(VkAttachmentLoadOp));
4202     vkStream->write((VkAttachmentStoreOp*)&forMarshaling->storeOp, sizeof(VkAttachmentStoreOp));
4203     vkStream->write((VkAttachmentLoadOp*)&forMarshaling->stencilLoadOp, sizeof(VkAttachmentLoadOp));
4204     vkStream->write((VkAttachmentStoreOp*)&forMarshaling->stencilStoreOp,
4205                     sizeof(VkAttachmentStoreOp));
4206     vkStream->write((VkImageLayout*)&forMarshaling->initialLayout, sizeof(VkImageLayout));
4207     vkStream->write((VkImageLayout*)&forMarshaling->finalLayout, sizeof(VkImageLayout));
4208 }
4209 
unmarshal_VkAttachmentDescription(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentDescription * forUnmarshaling)4210 void unmarshal_VkAttachmentDescription(VulkanStream* vkStream, VkStructureType rootType,
4211                                        VkAttachmentDescription* forUnmarshaling) {
4212     (void)rootType;
4213     vkStream->read((VkAttachmentDescriptionFlags*)&forUnmarshaling->flags,
4214                    sizeof(VkAttachmentDescriptionFlags));
4215     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
4216     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples,
4217                    sizeof(VkSampleCountFlagBits));
4218     vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, sizeof(VkAttachmentLoadOp));
4219     vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, sizeof(VkAttachmentStoreOp));
4220     vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->stencilLoadOp,
4221                    sizeof(VkAttachmentLoadOp));
4222     vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->stencilStoreOp,
4223                    sizeof(VkAttachmentStoreOp));
4224     vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
4225     vkStream->read((VkImageLayout*)&forUnmarshaling->finalLayout, sizeof(VkImageLayout));
4226 }
4227 
marshal_VkAttachmentReference(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentReference * forMarshaling)4228 void marshal_VkAttachmentReference(VulkanStream* vkStream, VkStructureType rootType,
4229                                    const VkAttachmentReference* forMarshaling) {
4230     (void)rootType;
4231     vkStream->write((uint32_t*)&forMarshaling->attachment, sizeof(uint32_t));
4232     vkStream->write((VkImageLayout*)&forMarshaling->layout, sizeof(VkImageLayout));
4233 }
4234 
unmarshal_VkAttachmentReference(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentReference * forUnmarshaling)4235 void unmarshal_VkAttachmentReference(VulkanStream* vkStream, VkStructureType rootType,
4236                                      VkAttachmentReference* forUnmarshaling) {
4237     (void)rootType;
4238     vkStream->read((uint32_t*)&forUnmarshaling->attachment, sizeof(uint32_t));
4239     vkStream->read((VkImageLayout*)&forUnmarshaling->layout, sizeof(VkImageLayout));
4240 }
4241 
marshal_VkFramebufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkFramebufferCreateInfo * forMarshaling)4242 void marshal_VkFramebufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4243                                      const VkFramebufferCreateInfo* forMarshaling) {
4244     (void)rootType;
4245     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4246     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4247         rootType = forMarshaling->sType;
4248     }
4249     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4250     vkStream->write((VkFramebufferCreateFlags*)&forMarshaling->flags,
4251                     sizeof(VkFramebufferCreateFlags));
4252     uint64_t cgen_var_0;
4253     vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_0,
4254                                                            1);
4255     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
4256     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
4257     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4258          (((forMarshaling->flags & VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT) == 0)))) {
4259         if (forMarshaling->attachmentCount) {
4260             uint64_t* cgen_var_0_0;
4261             vkStream->alloc((void**)&cgen_var_0_0, forMarshaling->attachmentCount * 8);
4262             vkStream->handleMapping()->mapHandles_VkImageView_u64(
4263                 forMarshaling->pAttachments, cgen_var_0_0, forMarshaling->attachmentCount);
4264             vkStream->write((uint64_t*)cgen_var_0_0, forMarshaling->attachmentCount * 8);
4265         }
4266     }
4267     vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
4268     vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
4269     vkStream->write((uint32_t*)&forMarshaling->layers, sizeof(uint32_t));
4270 }
4271 
unmarshal_VkFramebufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkFramebufferCreateInfo * forUnmarshaling)4272 void unmarshal_VkFramebufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4273                                        VkFramebufferCreateInfo* forUnmarshaling) {
4274     (void)rootType;
4275     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4276     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4277         rootType = forUnmarshaling->sType;
4278     }
4279     size_t pNext_size;
4280     pNext_size = vkStream->getBe32();
4281     forUnmarshaling->pNext = nullptr;
4282     if (pNext_size) {
4283         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4284         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4285         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4286         vkStream->alloc((void**)&forUnmarshaling->pNext,
4287                         goldfish_vk_extension_struct_size_with_stream_features(
4288                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4289         *(VkStructureType*)forUnmarshaling->pNext = extType;
4290         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4291     }
4292     vkStream->read((VkFramebufferCreateFlags*)&forUnmarshaling->flags,
4293                    sizeof(VkFramebufferCreateFlags));
4294     uint64_t cgen_var_0;
4295     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
4296     vkStream->handleMapping()->mapHandles_u64_VkRenderPass(
4297         &cgen_var_0, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
4298     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
4299     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
4300          (((forUnmarshaling->flags & VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT) == 0)))) {
4301         vkStream->alloc((void**)&forUnmarshaling->pAttachments,
4302                         forUnmarshaling->attachmentCount * sizeof(const VkImageView));
4303         if (forUnmarshaling->attachmentCount) {
4304             uint64_t* cgen_var_0_0;
4305             vkStream->alloc((void**)&cgen_var_0_0, forUnmarshaling->attachmentCount * 8);
4306             vkStream->read((uint64_t*)cgen_var_0_0, forUnmarshaling->attachmentCount * 8);
4307             vkStream->handleMapping()->mapHandles_u64_VkImageView(
4308                 cgen_var_0_0, (VkImageView*)forUnmarshaling->pAttachments,
4309                 forUnmarshaling->attachmentCount);
4310         }
4311     } else {
4312         forUnmarshaling->pAttachments = 0;
4313     }
4314     vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
4315     vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
4316     vkStream->read((uint32_t*)&forUnmarshaling->layers, sizeof(uint32_t));
4317 }
4318 
marshal_VkSubpassDescription(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassDescription * forMarshaling)4319 void marshal_VkSubpassDescription(VulkanStream* vkStream, VkStructureType rootType,
4320                                   const VkSubpassDescription* forMarshaling) {
4321     (void)rootType;
4322     vkStream->write((VkSubpassDescriptionFlags*)&forMarshaling->flags,
4323                     sizeof(VkSubpassDescriptionFlags));
4324     vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint,
4325                     sizeof(VkPipelineBindPoint));
4326     vkStream->write((uint32_t*)&forMarshaling->inputAttachmentCount, sizeof(uint32_t));
4327     if (forMarshaling) {
4328         for (uint32_t i = 0; i < (uint32_t)forMarshaling->inputAttachmentCount; ++i) {
4329             marshal_VkAttachmentReference(
4330                 vkStream, rootType,
4331                 (const VkAttachmentReference*)(forMarshaling->pInputAttachments + i));
4332         }
4333     }
4334     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
4335     if (forMarshaling) {
4336         for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i) {
4337             marshal_VkAttachmentReference(
4338                 vkStream, rootType,
4339                 (const VkAttachmentReference*)(forMarshaling->pColorAttachments + i));
4340         }
4341     }
4342     // WARNING PTR CHECK
4343     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pResolveAttachments;
4344     vkStream->putBe64(cgen_var_0);
4345     if (forMarshaling->pResolveAttachments) {
4346         if (forMarshaling) {
4347             for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i) {
4348                 marshal_VkAttachmentReference(
4349                     vkStream, rootType,
4350                     (const VkAttachmentReference*)(forMarshaling->pResolveAttachments + i));
4351             }
4352         }
4353     }
4354     // WARNING PTR CHECK
4355     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilAttachment;
4356     vkStream->putBe64(cgen_var_1);
4357     if (forMarshaling->pDepthStencilAttachment) {
4358         marshal_VkAttachmentReference(
4359             vkStream, rootType,
4360             (const VkAttachmentReference*)(forMarshaling->pDepthStencilAttachment));
4361     }
4362     vkStream->write((uint32_t*)&forMarshaling->preserveAttachmentCount, sizeof(uint32_t));
4363     vkStream->write((const uint32_t*)forMarshaling->pPreserveAttachments,
4364                     forMarshaling->preserveAttachmentCount * sizeof(const uint32_t));
4365 }
4366 
unmarshal_VkSubpassDescription(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDescription * forUnmarshaling)4367 void unmarshal_VkSubpassDescription(VulkanStream* vkStream, VkStructureType rootType,
4368                                     VkSubpassDescription* forUnmarshaling) {
4369     (void)rootType;
4370     vkStream->read((VkSubpassDescriptionFlags*)&forUnmarshaling->flags,
4371                    sizeof(VkSubpassDescriptionFlags));
4372     vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint,
4373                    sizeof(VkPipelineBindPoint));
4374     vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentCount, sizeof(uint32_t));
4375     vkStream->alloc((void**)&forUnmarshaling->pInputAttachments,
4376                     forUnmarshaling->inputAttachmentCount * sizeof(const VkAttachmentReference));
4377     if (forUnmarshaling) {
4378         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->inputAttachmentCount; ++i) {
4379             unmarshal_VkAttachmentReference(
4380                 vkStream, rootType,
4381                 (VkAttachmentReference*)(forUnmarshaling->pInputAttachments + i));
4382         }
4383     }
4384     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
4385     vkStream->alloc((void**)&forUnmarshaling->pColorAttachments,
4386                     forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference));
4387     if (forUnmarshaling) {
4388         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
4389             unmarshal_VkAttachmentReference(
4390                 vkStream, rootType,
4391                 (VkAttachmentReference*)(forUnmarshaling->pColorAttachments + i));
4392         }
4393     }
4394     // WARNING PTR CHECK
4395     forUnmarshaling->pResolveAttachments =
4396         (const VkAttachmentReference*)(uintptr_t)vkStream->getBe64();
4397     if (forUnmarshaling->pResolveAttachments) {
4398         vkStream->alloc(
4399             (void**)&forUnmarshaling->pResolveAttachments,
4400             forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference));
4401         if (forUnmarshaling) {
4402             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
4403                 unmarshal_VkAttachmentReference(
4404                     vkStream, rootType,
4405                     (VkAttachmentReference*)(forUnmarshaling->pResolveAttachments + i));
4406             }
4407         }
4408     }
4409     // WARNING PTR CHECK
4410     forUnmarshaling->pDepthStencilAttachment =
4411         (const VkAttachmentReference*)(uintptr_t)vkStream->getBe64();
4412     if (forUnmarshaling->pDepthStencilAttachment) {
4413         vkStream->alloc((void**)&forUnmarshaling->pDepthStencilAttachment,
4414                         sizeof(const VkAttachmentReference));
4415         unmarshal_VkAttachmentReference(
4416             vkStream, rootType, (VkAttachmentReference*)(forUnmarshaling->pDepthStencilAttachment));
4417     }
4418     vkStream->read((uint32_t*)&forUnmarshaling->preserveAttachmentCount, sizeof(uint32_t));
4419     vkStream->alloc((void**)&forUnmarshaling->pPreserveAttachments,
4420                     forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
4421     vkStream->read((uint32_t*)forUnmarshaling->pPreserveAttachments,
4422                    forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
4423 }
4424 
marshal_VkSubpassDependency(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassDependency * forMarshaling)4425 void marshal_VkSubpassDependency(VulkanStream* vkStream, VkStructureType rootType,
4426                                  const VkSubpassDependency* forMarshaling) {
4427     (void)rootType;
4428     vkStream->write((uint32_t*)&forMarshaling->srcSubpass, sizeof(uint32_t));
4429     vkStream->write((uint32_t*)&forMarshaling->dstSubpass, sizeof(uint32_t));
4430     vkStream->write((VkPipelineStageFlags*)&forMarshaling->srcStageMask,
4431                     sizeof(VkPipelineStageFlags));
4432     vkStream->write((VkPipelineStageFlags*)&forMarshaling->dstStageMask,
4433                     sizeof(VkPipelineStageFlags));
4434     vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
4435     vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
4436     vkStream->write((VkDependencyFlags*)&forMarshaling->dependencyFlags, sizeof(VkDependencyFlags));
4437 }
4438 
unmarshal_VkSubpassDependency(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDependency * forUnmarshaling)4439 void unmarshal_VkSubpassDependency(VulkanStream* vkStream, VkStructureType rootType,
4440                                    VkSubpassDependency* forUnmarshaling) {
4441     (void)rootType;
4442     vkStream->read((uint32_t*)&forUnmarshaling->srcSubpass, sizeof(uint32_t));
4443     vkStream->read((uint32_t*)&forUnmarshaling->dstSubpass, sizeof(uint32_t));
4444     vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->srcStageMask,
4445                    sizeof(VkPipelineStageFlags));
4446     vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->dstStageMask,
4447                    sizeof(VkPipelineStageFlags));
4448     vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
4449     vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
4450     vkStream->read((VkDependencyFlags*)&forUnmarshaling->dependencyFlags,
4451                    sizeof(VkDependencyFlags));
4452 }
4453 
marshal_VkRenderPassCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassCreateInfo * forMarshaling)4454 void marshal_VkRenderPassCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4455                                     const VkRenderPassCreateInfo* forMarshaling) {
4456     (void)rootType;
4457     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4458     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4459         rootType = forMarshaling->sType;
4460     }
4461     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4462     vkStream->write((VkRenderPassCreateFlags*)&forMarshaling->flags,
4463                     sizeof(VkRenderPassCreateFlags));
4464     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
4465     if (forMarshaling) {
4466         for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentCount; ++i) {
4467             marshal_VkAttachmentDescription(
4468                 vkStream, rootType,
4469                 (const VkAttachmentDescription*)(forMarshaling->pAttachments + i));
4470         }
4471     }
4472     vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
4473     if (forMarshaling) {
4474         for (uint32_t i = 0; i < (uint32_t)forMarshaling->subpassCount; ++i) {
4475             marshal_VkSubpassDescription(
4476                 vkStream, rootType, (const VkSubpassDescription*)(forMarshaling->pSubpasses + i));
4477         }
4478     }
4479     vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
4480     if (forMarshaling) {
4481         for (uint32_t i = 0; i < (uint32_t)forMarshaling->dependencyCount; ++i) {
4482             marshal_VkSubpassDependency(
4483                 vkStream, rootType, (const VkSubpassDependency*)(forMarshaling->pDependencies + i));
4484         }
4485     }
4486 }
4487 
unmarshal_VkRenderPassCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassCreateInfo * forUnmarshaling)4488 void unmarshal_VkRenderPassCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4489                                       VkRenderPassCreateInfo* forUnmarshaling) {
4490     (void)rootType;
4491     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4492     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4493         rootType = forUnmarshaling->sType;
4494     }
4495     size_t pNext_size;
4496     pNext_size = vkStream->getBe32();
4497     forUnmarshaling->pNext = nullptr;
4498     if (pNext_size) {
4499         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4500         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4501         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4502         vkStream->alloc((void**)&forUnmarshaling->pNext,
4503                         goldfish_vk_extension_struct_size_with_stream_features(
4504                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4505         *(VkStructureType*)forUnmarshaling->pNext = extType;
4506         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4507     }
4508     vkStream->read((VkRenderPassCreateFlags*)&forUnmarshaling->flags,
4509                    sizeof(VkRenderPassCreateFlags));
4510     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
4511     vkStream->alloc((void**)&forUnmarshaling->pAttachments,
4512                     forUnmarshaling->attachmentCount * sizeof(const VkAttachmentDescription));
4513     if (forUnmarshaling) {
4514         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i) {
4515             unmarshal_VkAttachmentDescription(
4516                 vkStream, rootType, (VkAttachmentDescription*)(forUnmarshaling->pAttachments + i));
4517         }
4518     }
4519     vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
4520     vkStream->alloc((void**)&forUnmarshaling->pSubpasses,
4521                     forUnmarshaling->subpassCount * sizeof(const VkSubpassDescription));
4522     if (forUnmarshaling) {
4523         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->subpassCount; ++i) {
4524             unmarshal_VkSubpassDescription(
4525                 vkStream, rootType, (VkSubpassDescription*)(forUnmarshaling->pSubpasses + i));
4526         }
4527     }
4528     vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
4529     vkStream->alloc((void**)&forUnmarshaling->pDependencies,
4530                     forUnmarshaling->dependencyCount * sizeof(const VkSubpassDependency));
4531     if (forUnmarshaling) {
4532         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->dependencyCount; ++i) {
4533             unmarshal_VkSubpassDependency(
4534                 vkStream, rootType, (VkSubpassDependency*)(forUnmarshaling->pDependencies + i));
4535         }
4536     }
4537 }
4538 
marshal_VkCommandPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkCommandPoolCreateInfo * forMarshaling)4539 void marshal_VkCommandPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4540                                      const VkCommandPoolCreateInfo* forMarshaling) {
4541     (void)rootType;
4542     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4543     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4544         rootType = forMarshaling->sType;
4545     }
4546     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4547     vkStream->write((VkCommandPoolCreateFlags*)&forMarshaling->flags,
4548                     sizeof(VkCommandPoolCreateFlags));
4549     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
4550 }
4551 
unmarshal_VkCommandPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandPoolCreateInfo * forUnmarshaling)4552 void unmarshal_VkCommandPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4553                                        VkCommandPoolCreateInfo* forUnmarshaling) {
4554     (void)rootType;
4555     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4556     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4557         rootType = forUnmarshaling->sType;
4558     }
4559     size_t pNext_size;
4560     pNext_size = vkStream->getBe32();
4561     forUnmarshaling->pNext = nullptr;
4562     if (pNext_size) {
4563         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4564         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4565         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4566         vkStream->alloc((void**)&forUnmarshaling->pNext,
4567                         goldfish_vk_extension_struct_size_with_stream_features(
4568                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4569         *(VkStructureType*)forUnmarshaling->pNext = extType;
4570         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4571     }
4572     vkStream->read((VkCommandPoolCreateFlags*)&forUnmarshaling->flags,
4573                    sizeof(VkCommandPoolCreateFlags));
4574     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
4575 }
4576 
marshal_VkCommandBufferAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkCommandBufferAllocateInfo * forMarshaling)4577 void marshal_VkCommandBufferAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
4578                                          const VkCommandBufferAllocateInfo* forMarshaling) {
4579     (void)rootType;
4580     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4581     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4582         rootType = forMarshaling->sType;
4583     }
4584     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4585     uint64_t cgen_var_0;
4586     vkStream->handleMapping()->mapHandles_VkCommandPool_u64(&forMarshaling->commandPool,
4587                                                             &cgen_var_0, 1);
4588     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
4589     vkStream->write((VkCommandBufferLevel*)&forMarshaling->level, sizeof(VkCommandBufferLevel));
4590     vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
4591 }
4592 
unmarshal_VkCommandBufferAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferAllocateInfo * forUnmarshaling)4593 void unmarshal_VkCommandBufferAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
4594                                            VkCommandBufferAllocateInfo* forUnmarshaling) {
4595     (void)rootType;
4596     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4597     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4598         rootType = forUnmarshaling->sType;
4599     }
4600     size_t pNext_size;
4601     pNext_size = vkStream->getBe32();
4602     forUnmarshaling->pNext = nullptr;
4603     if (pNext_size) {
4604         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4605         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4606         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4607         vkStream->alloc((void**)&forUnmarshaling->pNext,
4608                         goldfish_vk_extension_struct_size_with_stream_features(
4609                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4610         *(VkStructureType*)forUnmarshaling->pNext = extType;
4611         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4612     }
4613     uint64_t cgen_var_0;
4614     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
4615     vkStream->handleMapping()->mapHandles_u64_VkCommandPool(
4616         &cgen_var_0, (VkCommandPool*)&forUnmarshaling->commandPool, 1);
4617     vkStream->read((VkCommandBufferLevel*)&forUnmarshaling->level, sizeof(VkCommandBufferLevel));
4618     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
4619 }
4620 
marshal_VkCommandBufferInheritanceInfo(VulkanStream * vkStream,VkStructureType rootType,const VkCommandBufferInheritanceInfo * forMarshaling)4621 void marshal_VkCommandBufferInheritanceInfo(VulkanStream* vkStream, VkStructureType rootType,
4622                                             const VkCommandBufferInheritanceInfo* forMarshaling) {
4623     (void)rootType;
4624     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4625     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4626         rootType = forMarshaling->sType;
4627     }
4628     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4629     uint64_t cgen_var_0;
4630     vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_0,
4631                                                            1);
4632     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
4633     vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
4634     uint64_t cgen_var_1;
4635     vkStream->handleMapping()->mapHandles_VkFramebuffer_u64(&forMarshaling->framebuffer,
4636                                                             &cgen_var_1, 1);
4637     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
4638     vkStream->write((VkBool32*)&forMarshaling->occlusionQueryEnable, sizeof(VkBool32));
4639     vkStream->write((VkQueryControlFlags*)&forMarshaling->queryFlags, sizeof(VkQueryControlFlags));
4640     vkStream->write((VkQueryPipelineStatisticFlags*)&forMarshaling->pipelineStatistics,
4641                     sizeof(VkQueryPipelineStatisticFlags));
4642 }
4643 
unmarshal_VkCommandBufferInheritanceInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferInheritanceInfo * forUnmarshaling)4644 void unmarshal_VkCommandBufferInheritanceInfo(VulkanStream* vkStream, VkStructureType rootType,
4645                                               VkCommandBufferInheritanceInfo* forUnmarshaling) {
4646     (void)rootType;
4647     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4648     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4649         rootType = forUnmarshaling->sType;
4650     }
4651     size_t pNext_size;
4652     pNext_size = vkStream->getBe32();
4653     forUnmarshaling->pNext = nullptr;
4654     if (pNext_size) {
4655         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4656         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4657         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4658         vkStream->alloc((void**)&forUnmarshaling->pNext,
4659                         goldfish_vk_extension_struct_size_with_stream_features(
4660                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4661         *(VkStructureType*)forUnmarshaling->pNext = extType;
4662         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4663     }
4664     uint64_t cgen_var_0;
4665     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
4666     vkStream->handleMapping()->mapHandles_u64_VkRenderPass(
4667         &cgen_var_0, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
4668     vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
4669     uint64_t cgen_var_1;
4670     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
4671     vkStream->handleMapping()->mapHandles_u64_VkFramebuffer(
4672         &cgen_var_1, (VkFramebuffer*)&forUnmarshaling->framebuffer, 1);
4673     vkStream->read((VkBool32*)&forUnmarshaling->occlusionQueryEnable, sizeof(VkBool32));
4674     vkStream->read((VkQueryControlFlags*)&forUnmarshaling->queryFlags, sizeof(VkQueryControlFlags));
4675     vkStream->read((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics,
4676                    sizeof(VkQueryPipelineStatisticFlags));
4677 }
4678 
marshal_VkCommandBufferBeginInfo(VulkanStream * vkStream,VkStructureType rootType,const VkCommandBufferBeginInfo * forMarshaling)4679 void marshal_VkCommandBufferBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
4680                                       const VkCommandBufferBeginInfo* forMarshaling) {
4681     (void)rootType;
4682     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4683     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4684         rootType = forMarshaling->sType;
4685     }
4686     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4687     vkStream->write((VkCommandBufferUsageFlags*)&forMarshaling->flags,
4688                     sizeof(VkCommandBufferUsageFlags));
4689     // WARNING PTR CHECK
4690     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pInheritanceInfo;
4691     vkStream->putBe64(cgen_var_0);
4692     if (forMarshaling->pInheritanceInfo) {
4693         marshal_VkCommandBufferInheritanceInfo(
4694             vkStream, rootType,
4695             (const VkCommandBufferInheritanceInfo*)(forMarshaling->pInheritanceInfo));
4696     }
4697 }
4698 
unmarshal_VkCommandBufferBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferBeginInfo * forUnmarshaling)4699 void unmarshal_VkCommandBufferBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
4700                                         VkCommandBufferBeginInfo* forUnmarshaling) {
4701     (void)rootType;
4702     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4703     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4704         rootType = forUnmarshaling->sType;
4705     }
4706     size_t pNext_size;
4707     pNext_size = vkStream->getBe32();
4708     forUnmarshaling->pNext = nullptr;
4709     if (pNext_size) {
4710         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4711         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4712         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4713         vkStream->alloc((void**)&forUnmarshaling->pNext,
4714                         goldfish_vk_extension_struct_size_with_stream_features(
4715                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4716         *(VkStructureType*)forUnmarshaling->pNext = extType;
4717         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4718     }
4719     vkStream->read((VkCommandBufferUsageFlags*)&forUnmarshaling->flags,
4720                    sizeof(VkCommandBufferUsageFlags));
4721     // WARNING PTR CHECK
4722     forUnmarshaling->pInheritanceInfo =
4723         (const VkCommandBufferInheritanceInfo*)(uintptr_t)vkStream->getBe64();
4724     if (forUnmarshaling->pInheritanceInfo) {
4725         vkStream->alloc((void**)&forUnmarshaling->pInheritanceInfo,
4726                         sizeof(const VkCommandBufferInheritanceInfo));
4727         unmarshal_VkCommandBufferInheritanceInfo(
4728             vkStream, rootType,
4729             (VkCommandBufferInheritanceInfo*)(forUnmarshaling->pInheritanceInfo));
4730     }
4731 }
4732 
marshal_VkBufferCopy(VulkanStream * vkStream,VkStructureType rootType,const VkBufferCopy * forMarshaling)4733 void marshal_VkBufferCopy(VulkanStream* vkStream, VkStructureType rootType,
4734                           const VkBufferCopy* forMarshaling) {
4735     (void)rootType;
4736     vkStream->write((VkDeviceSize*)&forMarshaling->srcOffset, sizeof(VkDeviceSize));
4737     vkStream->write((VkDeviceSize*)&forMarshaling->dstOffset, sizeof(VkDeviceSize));
4738     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
4739 }
4740 
unmarshal_VkBufferCopy(VulkanStream * vkStream,VkStructureType rootType,VkBufferCopy * forUnmarshaling)4741 void unmarshal_VkBufferCopy(VulkanStream* vkStream, VkStructureType rootType,
4742                             VkBufferCopy* forUnmarshaling) {
4743     (void)rootType;
4744     vkStream->read((VkDeviceSize*)&forUnmarshaling->srcOffset, sizeof(VkDeviceSize));
4745     vkStream->read((VkDeviceSize*)&forUnmarshaling->dstOffset, sizeof(VkDeviceSize));
4746     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
4747 }
4748 
marshal_VkImageSubresourceLayers(VulkanStream * vkStream,VkStructureType rootType,const VkImageSubresourceLayers * forMarshaling)4749 void marshal_VkImageSubresourceLayers(VulkanStream* vkStream, VkStructureType rootType,
4750                                       const VkImageSubresourceLayers* forMarshaling) {
4751     (void)rootType;
4752     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
4753     vkStream->write((uint32_t*)&forMarshaling->mipLevel, sizeof(uint32_t));
4754     vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
4755     vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
4756 }
4757 
unmarshal_VkImageSubresourceLayers(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresourceLayers * forUnmarshaling)4758 void unmarshal_VkImageSubresourceLayers(VulkanStream* vkStream, VkStructureType rootType,
4759                                         VkImageSubresourceLayers* forUnmarshaling) {
4760     (void)rootType;
4761     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
4762     vkStream->read((uint32_t*)&forUnmarshaling->mipLevel, sizeof(uint32_t));
4763     vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
4764     vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
4765 }
4766 
marshal_VkBufferImageCopy(VulkanStream * vkStream,VkStructureType rootType,const VkBufferImageCopy * forMarshaling)4767 void marshal_VkBufferImageCopy(VulkanStream* vkStream, VkStructureType rootType,
4768                                const VkBufferImageCopy* forMarshaling) {
4769     (void)rootType;
4770     vkStream->write((VkDeviceSize*)&forMarshaling->bufferOffset, sizeof(VkDeviceSize));
4771     vkStream->write((uint32_t*)&forMarshaling->bufferRowLength, sizeof(uint32_t));
4772     vkStream->write((uint32_t*)&forMarshaling->bufferImageHeight, sizeof(uint32_t));
4773     marshal_VkImageSubresourceLayers(vkStream, rootType,
4774                                      (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
4775     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->imageOffset));
4776     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->imageExtent));
4777 }
4778 
unmarshal_VkBufferImageCopy(VulkanStream * vkStream,VkStructureType rootType,VkBufferImageCopy * forUnmarshaling)4779 void unmarshal_VkBufferImageCopy(VulkanStream* vkStream, VkStructureType rootType,
4780                                  VkBufferImageCopy* forUnmarshaling) {
4781     (void)rootType;
4782     vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferOffset, sizeof(VkDeviceSize));
4783     vkStream->read((uint32_t*)&forUnmarshaling->bufferRowLength, sizeof(uint32_t));
4784     vkStream->read((uint32_t*)&forUnmarshaling->bufferImageHeight, sizeof(uint32_t));
4785     unmarshal_VkImageSubresourceLayers(
4786         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
4787     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset));
4788     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent));
4789 }
4790 
marshal_VkClearColorValue(VulkanStream * vkStream,VkStructureType rootType,const VkClearColorValue * forMarshaling)4791 void marshal_VkClearColorValue(VulkanStream* vkStream, VkStructureType rootType,
4792                                const VkClearColorValue* forMarshaling) {
4793     (void)rootType;
4794     vkStream->write((float*)forMarshaling->float32, 4 * sizeof(float));
4795 }
4796 
unmarshal_VkClearColorValue(VulkanStream * vkStream,VkStructureType rootType,VkClearColorValue * forUnmarshaling)4797 void unmarshal_VkClearColorValue(VulkanStream* vkStream, VkStructureType rootType,
4798                                  VkClearColorValue* forUnmarshaling) {
4799     (void)rootType;
4800     vkStream->read((float*)forUnmarshaling->float32, 4 * sizeof(float));
4801 }
4802 
marshal_VkClearDepthStencilValue(VulkanStream * vkStream,VkStructureType rootType,const VkClearDepthStencilValue * forMarshaling)4803 void marshal_VkClearDepthStencilValue(VulkanStream* vkStream, VkStructureType rootType,
4804                                       const VkClearDepthStencilValue* forMarshaling) {
4805     (void)rootType;
4806     vkStream->write((float*)&forMarshaling->depth, sizeof(float));
4807     vkStream->write((uint32_t*)&forMarshaling->stencil, sizeof(uint32_t));
4808 }
4809 
unmarshal_VkClearDepthStencilValue(VulkanStream * vkStream,VkStructureType rootType,VkClearDepthStencilValue * forUnmarshaling)4810 void unmarshal_VkClearDepthStencilValue(VulkanStream* vkStream, VkStructureType rootType,
4811                                         VkClearDepthStencilValue* forUnmarshaling) {
4812     (void)rootType;
4813     vkStream->read((float*)&forUnmarshaling->depth, sizeof(float));
4814     vkStream->read((uint32_t*)&forUnmarshaling->stencil, sizeof(uint32_t));
4815 }
4816 
marshal_VkClearValue(VulkanStream * vkStream,VkStructureType rootType,const VkClearValue * forMarshaling)4817 void marshal_VkClearValue(VulkanStream* vkStream, VkStructureType rootType,
4818                           const VkClearValue* forMarshaling) {
4819     (void)rootType;
4820     marshal_VkClearColorValue(vkStream, rootType, (VkClearColorValue*)(&forMarshaling->color));
4821 }
4822 
unmarshal_VkClearValue(VulkanStream * vkStream,VkStructureType rootType,VkClearValue * forUnmarshaling)4823 void unmarshal_VkClearValue(VulkanStream* vkStream, VkStructureType rootType,
4824                             VkClearValue* forUnmarshaling) {
4825     (void)rootType;
4826     unmarshal_VkClearColorValue(vkStream, rootType, (VkClearColorValue*)(&forUnmarshaling->color));
4827 }
4828 
marshal_VkClearAttachment(VulkanStream * vkStream,VkStructureType rootType,const VkClearAttachment * forMarshaling)4829 void marshal_VkClearAttachment(VulkanStream* vkStream, VkStructureType rootType,
4830                                const VkClearAttachment* forMarshaling) {
4831     (void)rootType;
4832     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
4833     vkStream->write((uint32_t*)&forMarshaling->colorAttachment, sizeof(uint32_t));
4834     marshal_VkClearValue(vkStream, rootType, (VkClearValue*)(&forMarshaling->clearValue));
4835 }
4836 
unmarshal_VkClearAttachment(VulkanStream * vkStream,VkStructureType rootType,VkClearAttachment * forUnmarshaling)4837 void unmarshal_VkClearAttachment(VulkanStream* vkStream, VkStructureType rootType,
4838                                  VkClearAttachment* forUnmarshaling) {
4839     (void)rootType;
4840     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
4841     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachment, sizeof(uint32_t));
4842     unmarshal_VkClearValue(vkStream, rootType, (VkClearValue*)(&forUnmarshaling->clearValue));
4843 }
4844 
marshal_VkClearRect(VulkanStream * vkStream,VkStructureType rootType,const VkClearRect * forMarshaling)4845 void marshal_VkClearRect(VulkanStream* vkStream, VkStructureType rootType,
4846                          const VkClearRect* forMarshaling) {
4847     (void)rootType;
4848     marshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forMarshaling->rect));
4849     vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
4850     vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
4851 }
4852 
unmarshal_VkClearRect(VulkanStream * vkStream,VkStructureType rootType,VkClearRect * forUnmarshaling)4853 void unmarshal_VkClearRect(VulkanStream* vkStream, VkStructureType rootType,
4854                            VkClearRect* forUnmarshaling) {
4855     (void)rootType;
4856     unmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forUnmarshaling->rect));
4857     vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
4858     vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
4859 }
4860 
marshal_VkImageBlit(VulkanStream * vkStream,VkStructureType rootType,const VkImageBlit * forMarshaling)4861 void marshal_VkImageBlit(VulkanStream* vkStream, VkStructureType rootType,
4862                          const VkImageBlit* forMarshaling) {
4863     (void)rootType;
4864     marshal_VkImageSubresourceLayers(vkStream, rootType,
4865                                      (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
4866     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
4867         marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forMarshaling->srcOffsets + i));
4868     }
4869     marshal_VkImageSubresourceLayers(vkStream, rootType,
4870                                      (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
4871     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
4872         marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forMarshaling->dstOffsets + i));
4873     }
4874 }
4875 
unmarshal_VkImageBlit(VulkanStream * vkStream,VkStructureType rootType,VkImageBlit * forUnmarshaling)4876 void unmarshal_VkImageBlit(VulkanStream* vkStream, VkStructureType rootType,
4877                            VkImageBlit* forUnmarshaling) {
4878     (void)rootType;
4879     unmarshal_VkImageSubresourceLayers(
4880         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
4881     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
4882         unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forUnmarshaling->srcOffsets + i));
4883     }
4884     unmarshal_VkImageSubresourceLayers(
4885         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
4886     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
4887         unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forUnmarshaling->dstOffsets + i));
4888     }
4889 }
4890 
marshal_VkImageCopy(VulkanStream * vkStream,VkStructureType rootType,const VkImageCopy * forMarshaling)4891 void marshal_VkImageCopy(VulkanStream* vkStream, VkStructureType rootType,
4892                          const VkImageCopy* forMarshaling) {
4893     (void)rootType;
4894     marshal_VkImageSubresourceLayers(vkStream, rootType,
4895                                      (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
4896     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->srcOffset));
4897     marshal_VkImageSubresourceLayers(vkStream, rootType,
4898                                      (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
4899     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->dstOffset));
4900     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->extent));
4901 }
4902 
unmarshal_VkImageCopy(VulkanStream * vkStream,VkStructureType rootType,VkImageCopy * forUnmarshaling)4903 void unmarshal_VkImageCopy(VulkanStream* vkStream, VkStructureType rootType,
4904                            VkImageCopy* forUnmarshaling) {
4905     (void)rootType;
4906     unmarshal_VkImageSubresourceLayers(
4907         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
4908     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset));
4909     unmarshal_VkImageSubresourceLayers(
4910         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
4911     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset));
4912     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent));
4913 }
4914 
marshal_VkImageResolve(VulkanStream * vkStream,VkStructureType rootType,const VkImageResolve * forMarshaling)4915 void marshal_VkImageResolve(VulkanStream* vkStream, VkStructureType rootType,
4916                             const VkImageResolve* forMarshaling) {
4917     (void)rootType;
4918     marshal_VkImageSubresourceLayers(vkStream, rootType,
4919                                      (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
4920     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->srcOffset));
4921     marshal_VkImageSubresourceLayers(vkStream, rootType,
4922                                      (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
4923     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->dstOffset));
4924     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->extent));
4925 }
4926 
unmarshal_VkImageResolve(VulkanStream * vkStream,VkStructureType rootType,VkImageResolve * forUnmarshaling)4927 void unmarshal_VkImageResolve(VulkanStream* vkStream, VkStructureType rootType,
4928                               VkImageResolve* forUnmarshaling) {
4929     (void)rootType;
4930     unmarshal_VkImageSubresourceLayers(
4931         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
4932     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset));
4933     unmarshal_VkImageSubresourceLayers(
4934         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
4935     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset));
4936     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent));
4937 }
4938 
marshal_VkRenderPassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassBeginInfo * forMarshaling)4939 void marshal_VkRenderPassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
4940                                    const VkRenderPassBeginInfo* forMarshaling) {
4941     (void)rootType;
4942     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
4943     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4944         rootType = forMarshaling->sType;
4945     }
4946     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
4947     uint64_t cgen_var_0;
4948     vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_0,
4949                                                            1);
4950     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
4951     uint64_t cgen_var_1;
4952     vkStream->handleMapping()->mapHandles_VkFramebuffer_u64(&forMarshaling->framebuffer,
4953                                                             &cgen_var_1, 1);
4954     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
4955     marshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forMarshaling->renderArea));
4956     vkStream->write((uint32_t*)&forMarshaling->clearValueCount, sizeof(uint32_t));
4957     // WARNING PTR CHECK
4958     uint64_t cgen_var_2 = (uint64_t)(uintptr_t)forMarshaling->pClearValues;
4959     vkStream->putBe64(cgen_var_2);
4960     if (forMarshaling->pClearValues) {
4961         if (forMarshaling) {
4962             for (uint32_t i = 0; i < (uint32_t)forMarshaling->clearValueCount; ++i) {
4963                 marshal_VkClearValue(vkStream, rootType,
4964                                      (const VkClearValue*)(forMarshaling->pClearValues + i));
4965             }
4966         }
4967     }
4968 }
4969 
unmarshal_VkRenderPassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassBeginInfo * forUnmarshaling)4970 void unmarshal_VkRenderPassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
4971                                      VkRenderPassBeginInfo* forUnmarshaling) {
4972     (void)rootType;
4973     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
4974     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4975         rootType = forUnmarshaling->sType;
4976     }
4977     size_t pNext_size;
4978     pNext_size = vkStream->getBe32();
4979     forUnmarshaling->pNext = nullptr;
4980     if (pNext_size) {
4981         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4982         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
4983         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4984         vkStream->alloc((void**)&forUnmarshaling->pNext,
4985                         goldfish_vk_extension_struct_size_with_stream_features(
4986                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4987         *(VkStructureType*)forUnmarshaling->pNext = extType;
4988         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
4989     }
4990     uint64_t cgen_var_0;
4991     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
4992     vkStream->handleMapping()->mapHandles_u64_VkRenderPass(
4993         &cgen_var_0, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
4994     uint64_t cgen_var_1;
4995     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
4996     vkStream->handleMapping()->mapHandles_u64_VkFramebuffer(
4997         &cgen_var_1, (VkFramebuffer*)&forUnmarshaling->framebuffer, 1);
4998     unmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forUnmarshaling->renderArea));
4999     vkStream->read((uint32_t*)&forUnmarshaling->clearValueCount, sizeof(uint32_t));
5000     // WARNING PTR CHECK
5001     forUnmarshaling->pClearValues = (const VkClearValue*)(uintptr_t)vkStream->getBe64();
5002     if (forUnmarshaling->pClearValues) {
5003         vkStream->alloc((void**)&forUnmarshaling->pClearValues,
5004                         forUnmarshaling->clearValueCount * sizeof(const VkClearValue));
5005         if (forUnmarshaling) {
5006             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->clearValueCount; ++i) {
5007                 unmarshal_VkClearValue(vkStream, rootType,
5008                                        (VkClearValue*)(forUnmarshaling->pClearValues + i));
5009             }
5010         }
5011     }
5012 }
5013 
5014 #endif
5015 #ifdef VK_VERSION_1_1
marshal_VkPhysicalDeviceSubgroupProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSubgroupProperties * forMarshaling)5016 void marshal_VkPhysicalDeviceSubgroupProperties(
5017     VulkanStream* vkStream, VkStructureType rootType,
5018     const VkPhysicalDeviceSubgroupProperties* forMarshaling) {
5019     (void)rootType;
5020     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5021     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5022         rootType = forMarshaling->sType;
5023     }
5024     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5025     vkStream->write((uint32_t*)&forMarshaling->subgroupSize, sizeof(uint32_t));
5026     vkStream->write((VkShaderStageFlags*)&forMarshaling->supportedStages,
5027                     sizeof(VkShaderStageFlags));
5028     vkStream->write((VkSubgroupFeatureFlags*)&forMarshaling->supportedOperations,
5029                     sizeof(VkSubgroupFeatureFlags));
5030     vkStream->write((VkBool32*)&forMarshaling->quadOperationsInAllStages, sizeof(VkBool32));
5031 }
5032 
unmarshal_VkPhysicalDeviceSubgroupProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSubgroupProperties * forUnmarshaling)5033 void unmarshal_VkPhysicalDeviceSubgroupProperties(
5034     VulkanStream* vkStream, VkStructureType rootType,
5035     VkPhysicalDeviceSubgroupProperties* forUnmarshaling) {
5036     (void)rootType;
5037     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5038     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5039         rootType = forUnmarshaling->sType;
5040     }
5041     size_t pNext_size;
5042     pNext_size = vkStream->getBe32();
5043     forUnmarshaling->pNext = nullptr;
5044     if (pNext_size) {
5045         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5046         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5047         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5048         vkStream->alloc((void**)&forUnmarshaling->pNext,
5049                         goldfish_vk_extension_struct_size_with_stream_features(
5050                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5051         *(VkStructureType*)forUnmarshaling->pNext = extType;
5052         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5053     }
5054     vkStream->read((uint32_t*)&forUnmarshaling->subgroupSize, sizeof(uint32_t));
5055     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->supportedStages,
5056                    sizeof(VkShaderStageFlags));
5057     vkStream->read((VkSubgroupFeatureFlags*)&forUnmarshaling->supportedOperations,
5058                    sizeof(VkSubgroupFeatureFlags));
5059     vkStream->read((VkBool32*)&forUnmarshaling->quadOperationsInAllStages, sizeof(VkBool32));
5060 }
5061 
marshal_VkBindBufferMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBindBufferMemoryInfo * forMarshaling)5062 void marshal_VkBindBufferMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
5063                                     const VkBindBufferMemoryInfo* forMarshaling) {
5064     (void)rootType;
5065     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5066     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5067         rootType = forMarshaling->sType;
5068     }
5069     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5070     uint64_t cgen_var_0;
5071     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
5072     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
5073     uint64_t cgen_var_1;
5074     vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_1,
5075                                                              1);
5076     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
5077     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
5078 }
5079 
unmarshal_VkBindBufferMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindBufferMemoryInfo * forUnmarshaling)5080 void unmarshal_VkBindBufferMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
5081                                       VkBindBufferMemoryInfo* forUnmarshaling) {
5082     (void)rootType;
5083     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5084     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5085         rootType = forUnmarshaling->sType;
5086     }
5087     size_t pNext_size;
5088     pNext_size = vkStream->getBe32();
5089     forUnmarshaling->pNext = nullptr;
5090     if (pNext_size) {
5091         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5092         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5093         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5094         vkStream->alloc((void**)&forUnmarshaling->pNext,
5095                         goldfish_vk_extension_struct_size_with_stream_features(
5096                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5097         *(VkStructureType*)forUnmarshaling->pNext = extType;
5098         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5099     }
5100     uint64_t cgen_var_0;
5101     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
5102     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
5103                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
5104     uint64_t cgen_var_1;
5105     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
5106     vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(
5107         &cgen_var_1, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
5108     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
5109 }
5110 
marshal_VkBindImageMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBindImageMemoryInfo * forMarshaling)5111 void marshal_VkBindImageMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
5112                                    const VkBindImageMemoryInfo* forMarshaling) {
5113     (void)rootType;
5114     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5115     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5116         rootType = forMarshaling->sType;
5117     }
5118     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5119     uint64_t cgen_var_0;
5120     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
5121     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
5122     uint64_t cgen_var_1;
5123     vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_1,
5124                                                              1);
5125     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
5126     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
5127 }
5128 
unmarshal_VkBindImageMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindImageMemoryInfo * forUnmarshaling)5129 void unmarshal_VkBindImageMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
5130                                      VkBindImageMemoryInfo* forUnmarshaling) {
5131     (void)rootType;
5132     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5133     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5134         rootType = forUnmarshaling->sType;
5135     }
5136     size_t pNext_size;
5137     pNext_size = vkStream->getBe32();
5138     forUnmarshaling->pNext = nullptr;
5139     if (pNext_size) {
5140         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5141         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5142         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5143         vkStream->alloc((void**)&forUnmarshaling->pNext,
5144                         goldfish_vk_extension_struct_size_with_stream_features(
5145                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5146         *(VkStructureType*)forUnmarshaling->pNext = extType;
5147         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5148     }
5149     uint64_t cgen_var_0;
5150     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
5151     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
5152                                                       (VkImage*)&forUnmarshaling->image, 1);
5153     uint64_t cgen_var_1;
5154     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
5155     vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(
5156         &cgen_var_1, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
5157     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
5158 }
5159 
marshal_VkPhysicalDevice16BitStorageFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevice16BitStorageFeatures * forMarshaling)5160 void marshal_VkPhysicalDevice16BitStorageFeatures(
5161     VulkanStream* vkStream, VkStructureType rootType,
5162     const VkPhysicalDevice16BitStorageFeatures* forMarshaling) {
5163     (void)rootType;
5164     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5165     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5166         rootType = forMarshaling->sType;
5167     }
5168     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5169     vkStream->write((VkBool32*)&forMarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
5170     vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer16BitAccess,
5171                     sizeof(VkBool32));
5172     vkStream->write((VkBool32*)&forMarshaling->storagePushConstant16, sizeof(VkBool32));
5173     vkStream->write((VkBool32*)&forMarshaling->storageInputOutput16, sizeof(VkBool32));
5174 }
5175 
unmarshal_VkPhysicalDevice16BitStorageFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevice16BitStorageFeatures * forUnmarshaling)5176 void unmarshal_VkPhysicalDevice16BitStorageFeatures(
5177     VulkanStream* vkStream, VkStructureType rootType,
5178     VkPhysicalDevice16BitStorageFeatures* forUnmarshaling) {
5179     (void)rootType;
5180     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5181     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5182         rootType = forUnmarshaling->sType;
5183     }
5184     size_t pNext_size;
5185     pNext_size = vkStream->getBe32();
5186     forUnmarshaling->pNext = nullptr;
5187     if (pNext_size) {
5188         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5189         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5190         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5191         vkStream->alloc((void**)&forUnmarshaling->pNext,
5192                         goldfish_vk_extension_struct_size_with_stream_features(
5193                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5194         *(VkStructureType*)forUnmarshaling->pNext = extType;
5195         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5196     }
5197     vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
5198     vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess,
5199                    sizeof(VkBool32));
5200     vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant16, sizeof(VkBool32));
5201     vkStream->read((VkBool32*)&forUnmarshaling->storageInputOutput16, sizeof(VkBool32));
5202 }
5203 
marshal_VkMemoryDedicatedRequirements(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryDedicatedRequirements * forMarshaling)5204 void marshal_VkMemoryDedicatedRequirements(VulkanStream* vkStream, VkStructureType rootType,
5205                                            const VkMemoryDedicatedRequirements* forMarshaling) {
5206     (void)rootType;
5207     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5208     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5209         rootType = forMarshaling->sType;
5210     }
5211     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5212     vkStream->write((VkBool32*)&forMarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
5213     vkStream->write((VkBool32*)&forMarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
5214 }
5215 
unmarshal_VkMemoryDedicatedRequirements(VulkanStream * vkStream,VkStructureType rootType,VkMemoryDedicatedRequirements * forUnmarshaling)5216 void unmarshal_VkMemoryDedicatedRequirements(VulkanStream* vkStream, VkStructureType rootType,
5217                                              VkMemoryDedicatedRequirements* forUnmarshaling) {
5218     (void)rootType;
5219     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5220     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5221         rootType = forUnmarshaling->sType;
5222     }
5223     size_t pNext_size;
5224     pNext_size = vkStream->getBe32();
5225     forUnmarshaling->pNext = nullptr;
5226     if (pNext_size) {
5227         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5228         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5229         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5230         vkStream->alloc((void**)&forUnmarshaling->pNext,
5231                         goldfish_vk_extension_struct_size_with_stream_features(
5232                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5233         *(VkStructureType*)forUnmarshaling->pNext = extType;
5234         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5235     }
5236     vkStream->read((VkBool32*)&forUnmarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
5237     vkStream->read((VkBool32*)&forUnmarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
5238 }
5239 
marshal_VkMemoryDedicatedAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryDedicatedAllocateInfo * forMarshaling)5240 void marshal_VkMemoryDedicatedAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
5241                                            const VkMemoryDedicatedAllocateInfo* forMarshaling) {
5242     (void)rootType;
5243     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5244     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5245         rootType = forMarshaling->sType;
5246     }
5247     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5248     uint64_t cgen_var_0;
5249     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
5250     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
5251     uint64_t cgen_var_1;
5252     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_1, 1);
5253     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
5254 }
5255 
unmarshal_VkMemoryDedicatedAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryDedicatedAllocateInfo * forUnmarshaling)5256 void unmarshal_VkMemoryDedicatedAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
5257                                              VkMemoryDedicatedAllocateInfo* forUnmarshaling) {
5258     (void)rootType;
5259     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5260     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5261         rootType = forUnmarshaling->sType;
5262     }
5263     size_t pNext_size;
5264     pNext_size = vkStream->getBe32();
5265     forUnmarshaling->pNext = nullptr;
5266     if (pNext_size) {
5267         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5268         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5269         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5270         vkStream->alloc((void**)&forUnmarshaling->pNext,
5271                         goldfish_vk_extension_struct_size_with_stream_features(
5272                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5273         *(VkStructureType*)forUnmarshaling->pNext = extType;
5274         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5275     }
5276     uint64_t cgen_var_0;
5277     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
5278     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
5279                                                       (VkImage*)&forUnmarshaling->image, 1);
5280     uint64_t cgen_var_1;
5281     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
5282     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_1,
5283                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
5284 }
5285 
marshal_VkMemoryAllocateFlagsInfo(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryAllocateFlagsInfo * forMarshaling)5286 void marshal_VkMemoryAllocateFlagsInfo(VulkanStream* vkStream, VkStructureType rootType,
5287                                        const VkMemoryAllocateFlagsInfo* forMarshaling) {
5288     (void)rootType;
5289     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5290     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5291         rootType = forMarshaling->sType;
5292     }
5293     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5294     vkStream->write((VkMemoryAllocateFlags*)&forMarshaling->flags, sizeof(VkMemoryAllocateFlags));
5295     vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
5296 }
5297 
unmarshal_VkMemoryAllocateFlagsInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryAllocateFlagsInfo * forUnmarshaling)5298 void unmarshal_VkMemoryAllocateFlagsInfo(VulkanStream* vkStream, VkStructureType rootType,
5299                                          VkMemoryAllocateFlagsInfo* forUnmarshaling) {
5300     (void)rootType;
5301     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5302     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5303         rootType = forUnmarshaling->sType;
5304     }
5305     size_t pNext_size;
5306     pNext_size = vkStream->getBe32();
5307     forUnmarshaling->pNext = nullptr;
5308     if (pNext_size) {
5309         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5310         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5311         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5312         vkStream->alloc((void**)&forUnmarshaling->pNext,
5313                         goldfish_vk_extension_struct_size_with_stream_features(
5314                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5315         *(VkStructureType*)forUnmarshaling->pNext = extType;
5316         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5317     }
5318     vkStream->read((VkMemoryAllocateFlags*)&forUnmarshaling->flags, sizeof(VkMemoryAllocateFlags));
5319     vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
5320 }
5321 
marshal_VkDeviceGroupRenderPassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupRenderPassBeginInfo * forMarshaling)5322 void marshal_VkDeviceGroupRenderPassBeginInfo(
5323     VulkanStream* vkStream, VkStructureType rootType,
5324     const VkDeviceGroupRenderPassBeginInfo* forMarshaling) {
5325     (void)rootType;
5326     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5327     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5328         rootType = forMarshaling->sType;
5329     }
5330     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5331     vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
5332     vkStream->write((uint32_t*)&forMarshaling->deviceRenderAreaCount, sizeof(uint32_t));
5333     if (forMarshaling) {
5334         for (uint32_t i = 0; i < (uint32_t)forMarshaling->deviceRenderAreaCount; ++i) {
5335             marshal_VkRect2D(vkStream, rootType,
5336                              (const VkRect2D*)(forMarshaling->pDeviceRenderAreas + i));
5337         }
5338     }
5339 }
5340 
unmarshal_VkDeviceGroupRenderPassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupRenderPassBeginInfo * forUnmarshaling)5341 void unmarshal_VkDeviceGroupRenderPassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
5342                                                 VkDeviceGroupRenderPassBeginInfo* forUnmarshaling) {
5343     (void)rootType;
5344     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5345     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5346         rootType = forUnmarshaling->sType;
5347     }
5348     size_t pNext_size;
5349     pNext_size = vkStream->getBe32();
5350     forUnmarshaling->pNext = nullptr;
5351     if (pNext_size) {
5352         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5353         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5354         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5355         vkStream->alloc((void**)&forUnmarshaling->pNext,
5356                         goldfish_vk_extension_struct_size_with_stream_features(
5357                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5358         *(VkStructureType*)forUnmarshaling->pNext = extType;
5359         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5360     }
5361     vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
5362     vkStream->read((uint32_t*)&forUnmarshaling->deviceRenderAreaCount, sizeof(uint32_t));
5363     vkStream->alloc((void**)&forUnmarshaling->pDeviceRenderAreas,
5364                     forUnmarshaling->deviceRenderAreaCount * sizeof(const VkRect2D));
5365     if (forUnmarshaling) {
5366         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->deviceRenderAreaCount; ++i) {
5367             unmarshal_VkRect2D(vkStream, rootType,
5368                                (VkRect2D*)(forUnmarshaling->pDeviceRenderAreas + i));
5369         }
5370     }
5371 }
5372 
marshal_VkDeviceGroupCommandBufferBeginInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupCommandBufferBeginInfo * forMarshaling)5373 void marshal_VkDeviceGroupCommandBufferBeginInfo(
5374     VulkanStream* vkStream, VkStructureType rootType,
5375     const VkDeviceGroupCommandBufferBeginInfo* forMarshaling) {
5376     (void)rootType;
5377     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5378     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5379         rootType = forMarshaling->sType;
5380     }
5381     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5382     vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
5383 }
5384 
unmarshal_VkDeviceGroupCommandBufferBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupCommandBufferBeginInfo * forUnmarshaling)5385 void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
5386     VulkanStream* vkStream, VkStructureType rootType,
5387     VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling) {
5388     (void)rootType;
5389     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5390     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5391         rootType = forUnmarshaling->sType;
5392     }
5393     size_t pNext_size;
5394     pNext_size = vkStream->getBe32();
5395     forUnmarshaling->pNext = nullptr;
5396     if (pNext_size) {
5397         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5398         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5399         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5400         vkStream->alloc((void**)&forUnmarshaling->pNext,
5401                         goldfish_vk_extension_struct_size_with_stream_features(
5402                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5403         *(VkStructureType*)forUnmarshaling->pNext = extType;
5404         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5405     }
5406     vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
5407 }
5408 
marshal_VkDeviceGroupSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupSubmitInfo * forMarshaling)5409 void marshal_VkDeviceGroupSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
5410                                      const VkDeviceGroupSubmitInfo* forMarshaling) {
5411     (void)rootType;
5412     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5413     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5414         rootType = forMarshaling->sType;
5415     }
5416     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5417     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
5418     vkStream->write((const uint32_t*)forMarshaling->pWaitSemaphoreDeviceIndices,
5419                     forMarshaling->waitSemaphoreCount * sizeof(const uint32_t));
5420     vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
5421     vkStream->write((const uint32_t*)forMarshaling->pCommandBufferDeviceMasks,
5422                     forMarshaling->commandBufferCount * sizeof(const uint32_t));
5423     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
5424     vkStream->write((const uint32_t*)forMarshaling->pSignalSemaphoreDeviceIndices,
5425                     forMarshaling->signalSemaphoreCount * sizeof(const uint32_t));
5426 }
5427 
unmarshal_VkDeviceGroupSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupSubmitInfo * forUnmarshaling)5428 void unmarshal_VkDeviceGroupSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
5429                                        VkDeviceGroupSubmitInfo* forUnmarshaling) {
5430     (void)rootType;
5431     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5432     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5433         rootType = forUnmarshaling->sType;
5434     }
5435     size_t pNext_size;
5436     pNext_size = vkStream->getBe32();
5437     forUnmarshaling->pNext = nullptr;
5438     if (pNext_size) {
5439         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5440         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5441         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5442         vkStream->alloc((void**)&forUnmarshaling->pNext,
5443                         goldfish_vk_extension_struct_size_with_stream_features(
5444                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5445         *(VkStructureType*)forUnmarshaling->pNext = extType;
5446         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5447     }
5448     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
5449     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreDeviceIndices,
5450                     forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
5451     vkStream->read((uint32_t*)forUnmarshaling->pWaitSemaphoreDeviceIndices,
5452                    forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
5453     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
5454     vkStream->alloc((void**)&forUnmarshaling->pCommandBufferDeviceMasks,
5455                     forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
5456     vkStream->read((uint32_t*)forUnmarshaling->pCommandBufferDeviceMasks,
5457                    forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
5458     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
5459     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreDeviceIndices,
5460                     forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
5461     vkStream->read((uint32_t*)forUnmarshaling->pSignalSemaphoreDeviceIndices,
5462                    forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
5463 }
5464 
marshal_VkDeviceGroupBindSparseInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupBindSparseInfo * forMarshaling)5465 void marshal_VkDeviceGroupBindSparseInfo(VulkanStream* vkStream, VkStructureType rootType,
5466                                          const VkDeviceGroupBindSparseInfo* forMarshaling) {
5467     (void)rootType;
5468     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5469     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5470         rootType = forMarshaling->sType;
5471     }
5472     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5473     vkStream->write((uint32_t*)&forMarshaling->resourceDeviceIndex, sizeof(uint32_t));
5474     vkStream->write((uint32_t*)&forMarshaling->memoryDeviceIndex, sizeof(uint32_t));
5475 }
5476 
unmarshal_VkDeviceGroupBindSparseInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupBindSparseInfo * forUnmarshaling)5477 void unmarshal_VkDeviceGroupBindSparseInfo(VulkanStream* vkStream, VkStructureType rootType,
5478                                            VkDeviceGroupBindSparseInfo* forUnmarshaling) {
5479     (void)rootType;
5480     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5481     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5482         rootType = forUnmarshaling->sType;
5483     }
5484     size_t pNext_size;
5485     pNext_size = vkStream->getBe32();
5486     forUnmarshaling->pNext = nullptr;
5487     if (pNext_size) {
5488         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5489         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5490         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5491         vkStream->alloc((void**)&forUnmarshaling->pNext,
5492                         goldfish_vk_extension_struct_size_with_stream_features(
5493                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5494         *(VkStructureType*)forUnmarshaling->pNext = extType;
5495         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5496     }
5497     vkStream->read((uint32_t*)&forUnmarshaling->resourceDeviceIndex, sizeof(uint32_t));
5498     vkStream->read((uint32_t*)&forUnmarshaling->memoryDeviceIndex, sizeof(uint32_t));
5499 }
5500 
marshal_VkBindBufferMemoryDeviceGroupInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBindBufferMemoryDeviceGroupInfo * forMarshaling)5501 void marshal_VkBindBufferMemoryDeviceGroupInfo(
5502     VulkanStream* vkStream, VkStructureType rootType,
5503     const VkBindBufferMemoryDeviceGroupInfo* forMarshaling) {
5504     (void)rootType;
5505     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5506     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5507         rootType = forMarshaling->sType;
5508     }
5509     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5510     vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
5511     vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices,
5512                     forMarshaling->deviceIndexCount * sizeof(const uint32_t));
5513 }
5514 
unmarshal_VkBindBufferMemoryDeviceGroupInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindBufferMemoryDeviceGroupInfo * forUnmarshaling)5515 void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
5516     VulkanStream* vkStream, VkStructureType rootType,
5517     VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling) {
5518     (void)rootType;
5519     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5520     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5521         rootType = forUnmarshaling->sType;
5522     }
5523     size_t pNext_size;
5524     pNext_size = vkStream->getBe32();
5525     forUnmarshaling->pNext = nullptr;
5526     if (pNext_size) {
5527         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5528         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5529         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5530         vkStream->alloc((void**)&forUnmarshaling->pNext,
5531                         goldfish_vk_extension_struct_size_with_stream_features(
5532                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5533         *(VkStructureType*)forUnmarshaling->pNext = extType;
5534         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5535     }
5536     vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
5537     vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices,
5538                     forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
5539     vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices,
5540                    forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
5541 }
5542 
marshal_VkBindImageMemoryDeviceGroupInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBindImageMemoryDeviceGroupInfo * forMarshaling)5543 void marshal_VkBindImageMemoryDeviceGroupInfo(
5544     VulkanStream* vkStream, VkStructureType rootType,
5545     const VkBindImageMemoryDeviceGroupInfo* forMarshaling) {
5546     (void)rootType;
5547     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5548     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5549         rootType = forMarshaling->sType;
5550     }
5551     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5552     vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
5553     vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices,
5554                     forMarshaling->deviceIndexCount * sizeof(const uint32_t));
5555     vkStream->write((uint32_t*)&forMarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
5556     if (forMarshaling) {
5557         for (uint32_t i = 0; i < (uint32_t)forMarshaling->splitInstanceBindRegionCount; ++i) {
5558             marshal_VkRect2D(vkStream, rootType,
5559                              (const VkRect2D*)(forMarshaling->pSplitInstanceBindRegions + i));
5560         }
5561     }
5562 }
5563 
unmarshal_VkBindImageMemoryDeviceGroupInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindImageMemoryDeviceGroupInfo * forUnmarshaling)5564 void unmarshal_VkBindImageMemoryDeviceGroupInfo(VulkanStream* vkStream, VkStructureType rootType,
5565                                                 VkBindImageMemoryDeviceGroupInfo* forUnmarshaling) {
5566     (void)rootType;
5567     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5568     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5569         rootType = forUnmarshaling->sType;
5570     }
5571     size_t pNext_size;
5572     pNext_size = vkStream->getBe32();
5573     forUnmarshaling->pNext = nullptr;
5574     if (pNext_size) {
5575         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5576         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5577         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5578         vkStream->alloc((void**)&forUnmarshaling->pNext,
5579                         goldfish_vk_extension_struct_size_with_stream_features(
5580                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5581         *(VkStructureType*)forUnmarshaling->pNext = extType;
5582         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5583     }
5584     vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
5585     vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices,
5586                     forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
5587     vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices,
5588                    forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
5589     vkStream->read((uint32_t*)&forUnmarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
5590     vkStream->alloc((void**)&forUnmarshaling->pSplitInstanceBindRegions,
5591                     forUnmarshaling->splitInstanceBindRegionCount * sizeof(const VkRect2D));
5592     if (forUnmarshaling) {
5593         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->splitInstanceBindRegionCount; ++i) {
5594             unmarshal_VkRect2D(vkStream, rootType,
5595                                (VkRect2D*)(forUnmarshaling->pSplitInstanceBindRegions + i));
5596         }
5597     }
5598 }
5599 
marshal_VkPhysicalDeviceGroupProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceGroupProperties * forMarshaling)5600 void marshal_VkPhysicalDeviceGroupProperties(VulkanStream* vkStream, VkStructureType rootType,
5601                                              const VkPhysicalDeviceGroupProperties* forMarshaling) {
5602     (void)rootType;
5603     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5604     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5605         rootType = forMarshaling->sType;
5606     }
5607     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5608     vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
5609     vkStream->write((VkPhysicalDevice*)forMarshaling->physicalDevices,
5610                     VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
5611     vkStream->write((VkBool32*)&forMarshaling->subsetAllocation, sizeof(VkBool32));
5612 }
5613 
unmarshal_VkPhysicalDeviceGroupProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceGroupProperties * forUnmarshaling)5614 void unmarshal_VkPhysicalDeviceGroupProperties(VulkanStream* vkStream, VkStructureType rootType,
5615                                                VkPhysicalDeviceGroupProperties* forUnmarshaling) {
5616     (void)rootType;
5617     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5618     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5619         rootType = forUnmarshaling->sType;
5620     }
5621     size_t pNext_size;
5622     pNext_size = vkStream->getBe32();
5623     forUnmarshaling->pNext = nullptr;
5624     if (pNext_size) {
5625         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5626         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5627         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5628         vkStream->alloc((void**)&forUnmarshaling->pNext,
5629                         goldfish_vk_extension_struct_size_with_stream_features(
5630                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5631         *(VkStructureType*)forUnmarshaling->pNext = extType;
5632         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5633     }
5634     vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
5635     vkStream->read((VkPhysicalDevice*)forUnmarshaling->physicalDevices,
5636                    VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
5637     vkStream->read((VkBool32*)&forUnmarshaling->subsetAllocation, sizeof(VkBool32));
5638 }
5639 
marshal_VkDeviceGroupDeviceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupDeviceCreateInfo * forMarshaling)5640 void marshal_VkDeviceGroupDeviceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
5641                                            const VkDeviceGroupDeviceCreateInfo* forMarshaling) {
5642     (void)rootType;
5643     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5644     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5645         rootType = forMarshaling->sType;
5646     }
5647     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5648     vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
5649     if (forMarshaling->physicalDeviceCount) {
5650         uint64_t* cgen_var_0;
5651         vkStream->alloc((void**)&cgen_var_0, forMarshaling->physicalDeviceCount * 8);
5652         vkStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(
5653             forMarshaling->pPhysicalDevices, cgen_var_0, forMarshaling->physicalDeviceCount);
5654         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->physicalDeviceCount * 8);
5655     }
5656 }
5657 
unmarshal_VkDeviceGroupDeviceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupDeviceCreateInfo * forUnmarshaling)5658 void unmarshal_VkDeviceGroupDeviceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
5659                                              VkDeviceGroupDeviceCreateInfo* forUnmarshaling) {
5660     (void)rootType;
5661     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5662     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5663         rootType = forUnmarshaling->sType;
5664     }
5665     size_t pNext_size;
5666     pNext_size = vkStream->getBe32();
5667     forUnmarshaling->pNext = nullptr;
5668     if (pNext_size) {
5669         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5670         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5671         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5672         vkStream->alloc((void**)&forUnmarshaling->pNext,
5673                         goldfish_vk_extension_struct_size_with_stream_features(
5674                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5675         *(VkStructureType*)forUnmarshaling->pNext = extType;
5676         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5677     }
5678     vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
5679     vkStream->alloc((void**)&forUnmarshaling->pPhysicalDevices,
5680                     forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
5681     if (forUnmarshaling->physicalDeviceCount) {
5682         uint64_t* cgen_var_0;
5683         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->physicalDeviceCount * 8);
5684         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->physicalDeviceCount * 8);
5685         vkStream->handleMapping()->mapHandles_u64_VkPhysicalDevice(
5686             cgen_var_0, (VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices,
5687             forUnmarshaling->physicalDeviceCount);
5688     }
5689 }
5690 
marshal_VkBufferMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkBufferMemoryRequirementsInfo2 * forMarshaling)5691 void marshal_VkBufferMemoryRequirementsInfo2(VulkanStream* vkStream, VkStructureType rootType,
5692                                              const VkBufferMemoryRequirementsInfo2* forMarshaling) {
5693     (void)rootType;
5694     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5695     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5696         rootType = forMarshaling->sType;
5697     }
5698     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5699     uint64_t cgen_var_0;
5700     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
5701     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
5702 }
5703 
unmarshal_VkBufferMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,VkBufferMemoryRequirementsInfo2 * forUnmarshaling)5704 void unmarshal_VkBufferMemoryRequirementsInfo2(VulkanStream* vkStream, VkStructureType rootType,
5705                                                VkBufferMemoryRequirementsInfo2* forUnmarshaling) {
5706     (void)rootType;
5707     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5708     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5709         rootType = forUnmarshaling->sType;
5710     }
5711     size_t pNext_size;
5712     pNext_size = vkStream->getBe32();
5713     forUnmarshaling->pNext = nullptr;
5714     if (pNext_size) {
5715         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5716         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5717         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5718         vkStream->alloc((void**)&forUnmarshaling->pNext,
5719                         goldfish_vk_extension_struct_size_with_stream_features(
5720                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5721         *(VkStructureType*)forUnmarshaling->pNext = extType;
5722         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5723     }
5724     uint64_t cgen_var_0;
5725     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
5726     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
5727                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
5728 }
5729 
marshal_VkImageMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkImageMemoryRequirementsInfo2 * forMarshaling)5730 void marshal_VkImageMemoryRequirementsInfo2(VulkanStream* vkStream, VkStructureType rootType,
5731                                             const VkImageMemoryRequirementsInfo2* forMarshaling) {
5732     (void)rootType;
5733     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5734     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5735         rootType = forMarshaling->sType;
5736     }
5737     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5738     uint64_t cgen_var_0;
5739     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
5740     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
5741 }
5742 
unmarshal_VkImageMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,VkImageMemoryRequirementsInfo2 * forUnmarshaling)5743 void unmarshal_VkImageMemoryRequirementsInfo2(VulkanStream* vkStream, VkStructureType rootType,
5744                                               VkImageMemoryRequirementsInfo2* forUnmarshaling) {
5745     (void)rootType;
5746     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5747     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5748         rootType = forUnmarshaling->sType;
5749     }
5750     size_t pNext_size;
5751     pNext_size = vkStream->getBe32();
5752     forUnmarshaling->pNext = nullptr;
5753     if (pNext_size) {
5754         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5755         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5756         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5757         vkStream->alloc((void**)&forUnmarshaling->pNext,
5758                         goldfish_vk_extension_struct_size_with_stream_features(
5759                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5760         *(VkStructureType*)forUnmarshaling->pNext = extType;
5761         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5762     }
5763     uint64_t cgen_var_0;
5764     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
5765     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
5766                                                       (VkImage*)&forUnmarshaling->image, 1);
5767 }
5768 
marshal_VkImageSparseMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkImageSparseMemoryRequirementsInfo2 * forMarshaling)5769 void marshal_VkImageSparseMemoryRequirementsInfo2(
5770     VulkanStream* vkStream, VkStructureType rootType,
5771     const VkImageSparseMemoryRequirementsInfo2* forMarshaling) {
5772     (void)rootType;
5773     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5774     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5775         rootType = forMarshaling->sType;
5776     }
5777     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5778     uint64_t cgen_var_0;
5779     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
5780     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
5781 }
5782 
unmarshal_VkImageSparseMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,VkImageSparseMemoryRequirementsInfo2 * forUnmarshaling)5783 void unmarshal_VkImageSparseMemoryRequirementsInfo2(
5784     VulkanStream* vkStream, VkStructureType rootType,
5785     VkImageSparseMemoryRequirementsInfo2* forUnmarshaling) {
5786     (void)rootType;
5787     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5788     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5789         rootType = forUnmarshaling->sType;
5790     }
5791     size_t pNext_size;
5792     pNext_size = vkStream->getBe32();
5793     forUnmarshaling->pNext = nullptr;
5794     if (pNext_size) {
5795         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5796         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5797         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5798         vkStream->alloc((void**)&forUnmarshaling->pNext,
5799                         goldfish_vk_extension_struct_size_with_stream_features(
5800                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5801         *(VkStructureType*)forUnmarshaling->pNext = extType;
5802         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5803     }
5804     uint64_t cgen_var_0;
5805     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
5806     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
5807                                                       (VkImage*)&forUnmarshaling->image, 1);
5808 }
5809 
marshal_VkMemoryRequirements2(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryRequirements2 * forMarshaling)5810 void marshal_VkMemoryRequirements2(VulkanStream* vkStream, VkStructureType rootType,
5811                                    const VkMemoryRequirements2* forMarshaling) {
5812     (void)rootType;
5813     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5814     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5815         rootType = forMarshaling->sType;
5816     }
5817     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5818     marshal_VkMemoryRequirements(vkStream, rootType,
5819                                  (VkMemoryRequirements*)(&forMarshaling->memoryRequirements));
5820 }
5821 
unmarshal_VkMemoryRequirements2(VulkanStream * vkStream,VkStructureType rootType,VkMemoryRequirements2 * forUnmarshaling)5822 void unmarshal_VkMemoryRequirements2(VulkanStream* vkStream, VkStructureType rootType,
5823                                      VkMemoryRequirements2* forUnmarshaling) {
5824     (void)rootType;
5825     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5826     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5827         rootType = forUnmarshaling->sType;
5828     }
5829     size_t pNext_size;
5830     pNext_size = vkStream->getBe32();
5831     forUnmarshaling->pNext = nullptr;
5832     if (pNext_size) {
5833         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5834         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5835         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5836         vkStream->alloc((void**)&forUnmarshaling->pNext,
5837                         goldfish_vk_extension_struct_size_with_stream_features(
5838                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5839         *(VkStructureType*)forUnmarshaling->pNext = extType;
5840         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5841     }
5842     unmarshal_VkMemoryRequirements(vkStream, rootType,
5843                                    (VkMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
5844 }
5845 
marshal_VkSparseImageMemoryRequirements2(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageMemoryRequirements2 * forMarshaling)5846 void marshal_VkSparseImageMemoryRequirements2(
5847     VulkanStream* vkStream, VkStructureType rootType,
5848     const VkSparseImageMemoryRequirements2* forMarshaling) {
5849     (void)rootType;
5850     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5851     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5852         rootType = forMarshaling->sType;
5853     }
5854     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5855     marshal_VkSparseImageMemoryRequirements(
5856         vkStream, rootType, (VkSparseImageMemoryRequirements*)(&forMarshaling->memoryRequirements));
5857 }
5858 
unmarshal_VkSparseImageMemoryRequirements2(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryRequirements2 * forUnmarshaling)5859 void unmarshal_VkSparseImageMemoryRequirements2(VulkanStream* vkStream, VkStructureType rootType,
5860                                                 VkSparseImageMemoryRequirements2* forUnmarshaling) {
5861     (void)rootType;
5862     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5863     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5864         rootType = forUnmarshaling->sType;
5865     }
5866     size_t pNext_size;
5867     pNext_size = vkStream->getBe32();
5868     forUnmarshaling->pNext = nullptr;
5869     if (pNext_size) {
5870         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5871         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5872         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5873         vkStream->alloc((void**)&forUnmarshaling->pNext,
5874                         goldfish_vk_extension_struct_size_with_stream_features(
5875                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5876         *(VkStructureType*)forUnmarshaling->pNext = extType;
5877         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5878     }
5879     unmarshal_VkSparseImageMemoryRequirements(
5880         vkStream, rootType,
5881         (VkSparseImageMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
5882 }
5883 
marshal_VkPhysicalDeviceFeatures2(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceFeatures2 * forMarshaling)5884 void marshal_VkPhysicalDeviceFeatures2(VulkanStream* vkStream, VkStructureType rootType,
5885                                        const VkPhysicalDeviceFeatures2* forMarshaling) {
5886     (void)rootType;
5887     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5888     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5889         rootType = forMarshaling->sType;
5890     }
5891     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5892     marshal_VkPhysicalDeviceFeatures(vkStream, rootType,
5893                                      (VkPhysicalDeviceFeatures*)(&forMarshaling->features));
5894 }
5895 
unmarshal_VkPhysicalDeviceFeatures2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFeatures2 * forUnmarshaling)5896 void unmarshal_VkPhysicalDeviceFeatures2(VulkanStream* vkStream, VkStructureType rootType,
5897                                          VkPhysicalDeviceFeatures2* forUnmarshaling) {
5898     (void)rootType;
5899     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5900     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5901         rootType = forUnmarshaling->sType;
5902     }
5903     size_t pNext_size;
5904     pNext_size = vkStream->getBe32();
5905     forUnmarshaling->pNext = nullptr;
5906     if (pNext_size) {
5907         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5908         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5909         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5910         vkStream->alloc((void**)&forUnmarshaling->pNext,
5911                         goldfish_vk_extension_struct_size_with_stream_features(
5912                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5913         *(VkStructureType*)forUnmarshaling->pNext = extType;
5914         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5915     }
5916     unmarshal_VkPhysicalDeviceFeatures(vkStream, rootType,
5917                                        (VkPhysicalDeviceFeatures*)(&forUnmarshaling->features));
5918 }
5919 
marshal_VkPhysicalDeviceProperties2(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceProperties2 * forMarshaling)5920 void marshal_VkPhysicalDeviceProperties2(VulkanStream* vkStream, VkStructureType rootType,
5921                                          const VkPhysicalDeviceProperties2* forMarshaling) {
5922     (void)rootType;
5923     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5924     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5925         rootType = forMarshaling->sType;
5926     }
5927     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5928     marshal_VkPhysicalDeviceProperties(vkStream, rootType,
5929                                        (VkPhysicalDeviceProperties*)(&forMarshaling->properties));
5930 }
5931 
unmarshal_VkPhysicalDeviceProperties2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProperties2 * forUnmarshaling)5932 void unmarshal_VkPhysicalDeviceProperties2(VulkanStream* vkStream, VkStructureType rootType,
5933                                            VkPhysicalDeviceProperties2* forUnmarshaling) {
5934     (void)rootType;
5935     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5936     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5937         rootType = forUnmarshaling->sType;
5938     }
5939     size_t pNext_size;
5940     pNext_size = vkStream->getBe32();
5941     forUnmarshaling->pNext = nullptr;
5942     if (pNext_size) {
5943         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5944         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5945         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5946         vkStream->alloc((void**)&forUnmarshaling->pNext,
5947                         goldfish_vk_extension_struct_size_with_stream_features(
5948                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5949         *(VkStructureType*)forUnmarshaling->pNext = extType;
5950         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5951     }
5952     unmarshal_VkPhysicalDeviceProperties(
5953         vkStream, rootType, (VkPhysicalDeviceProperties*)(&forUnmarshaling->properties));
5954 }
5955 
marshal_VkFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,const VkFormatProperties2 * forMarshaling)5956 void marshal_VkFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
5957                                  const VkFormatProperties2* forMarshaling) {
5958     (void)rootType;
5959     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5960     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5961         rootType = forMarshaling->sType;
5962     }
5963     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
5964     marshal_VkFormatProperties(vkStream, rootType,
5965                                (VkFormatProperties*)(&forMarshaling->formatProperties));
5966 }
5967 
unmarshal_VkFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,VkFormatProperties2 * forUnmarshaling)5968 void unmarshal_VkFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
5969                                    VkFormatProperties2* forUnmarshaling) {
5970     (void)rootType;
5971     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
5972     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5973         rootType = forUnmarshaling->sType;
5974     }
5975     size_t pNext_size;
5976     pNext_size = vkStream->getBe32();
5977     forUnmarshaling->pNext = nullptr;
5978     if (pNext_size) {
5979         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5980         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
5981         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5982         vkStream->alloc((void**)&forUnmarshaling->pNext,
5983                         goldfish_vk_extension_struct_size_with_stream_features(
5984                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5985         *(VkStructureType*)forUnmarshaling->pNext = extType;
5986         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
5987     }
5988     unmarshal_VkFormatProperties(vkStream, rootType,
5989                                  (VkFormatProperties*)(&forUnmarshaling->formatProperties));
5990 }
5991 
marshal_VkImageFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,const VkImageFormatProperties2 * forMarshaling)5992 void marshal_VkImageFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
5993                                       const VkImageFormatProperties2* forMarshaling) {
5994     (void)rootType;
5995     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
5996     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5997         rootType = forMarshaling->sType;
5998     }
5999     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6000     marshal_VkImageFormatProperties(
6001         vkStream, rootType, (VkImageFormatProperties*)(&forMarshaling->imageFormatProperties));
6002 }
6003 
unmarshal_VkImageFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,VkImageFormatProperties2 * forUnmarshaling)6004 void unmarshal_VkImageFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
6005                                         VkImageFormatProperties2* forUnmarshaling) {
6006     (void)rootType;
6007     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6008     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6009         rootType = forUnmarshaling->sType;
6010     }
6011     size_t pNext_size;
6012     pNext_size = vkStream->getBe32();
6013     forUnmarshaling->pNext = nullptr;
6014     if (pNext_size) {
6015         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6016         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6017         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6018         vkStream->alloc((void**)&forUnmarshaling->pNext,
6019                         goldfish_vk_extension_struct_size_with_stream_features(
6020                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6021         *(VkStructureType*)forUnmarshaling->pNext = extType;
6022         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6023     }
6024     unmarshal_VkImageFormatProperties(
6025         vkStream, rootType, (VkImageFormatProperties*)(&forUnmarshaling->imageFormatProperties));
6026 }
6027 
marshal_VkPhysicalDeviceImageFormatInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceImageFormatInfo2 * forMarshaling)6028 void marshal_VkPhysicalDeviceImageFormatInfo2(
6029     VulkanStream* vkStream, VkStructureType rootType,
6030     const VkPhysicalDeviceImageFormatInfo2* forMarshaling) {
6031     (void)rootType;
6032     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6033     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6034         rootType = forMarshaling->sType;
6035     }
6036     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6037     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
6038     vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
6039     vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
6040     vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
6041     vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
6042 }
6043 
unmarshal_VkPhysicalDeviceImageFormatInfo2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageFormatInfo2 * forUnmarshaling)6044 void unmarshal_VkPhysicalDeviceImageFormatInfo2(VulkanStream* vkStream, VkStructureType rootType,
6045                                                 VkPhysicalDeviceImageFormatInfo2* forUnmarshaling) {
6046     (void)rootType;
6047     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6048     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6049         rootType = forUnmarshaling->sType;
6050     }
6051     size_t pNext_size;
6052     pNext_size = vkStream->getBe32();
6053     forUnmarshaling->pNext = nullptr;
6054     if (pNext_size) {
6055         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6056         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6057         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6058         vkStream->alloc((void**)&forUnmarshaling->pNext,
6059                         goldfish_vk_extension_struct_size_with_stream_features(
6060                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6061         *(VkStructureType*)forUnmarshaling->pNext = extType;
6062         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6063     }
6064     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
6065     vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
6066     vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
6067     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
6068     vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
6069 }
6070 
marshal_VkQueueFamilyProperties2(VulkanStream * vkStream,VkStructureType rootType,const VkQueueFamilyProperties2 * forMarshaling)6071 void marshal_VkQueueFamilyProperties2(VulkanStream* vkStream, VkStructureType rootType,
6072                                       const VkQueueFamilyProperties2* forMarshaling) {
6073     (void)rootType;
6074     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6075     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6076         rootType = forMarshaling->sType;
6077     }
6078     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6079     marshal_VkQueueFamilyProperties(
6080         vkStream, rootType, (VkQueueFamilyProperties*)(&forMarshaling->queueFamilyProperties));
6081 }
6082 
unmarshal_VkQueueFamilyProperties2(VulkanStream * vkStream,VkStructureType rootType,VkQueueFamilyProperties2 * forUnmarshaling)6083 void unmarshal_VkQueueFamilyProperties2(VulkanStream* vkStream, VkStructureType rootType,
6084                                         VkQueueFamilyProperties2* forUnmarshaling) {
6085     (void)rootType;
6086     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6087     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6088         rootType = forUnmarshaling->sType;
6089     }
6090     size_t pNext_size;
6091     pNext_size = vkStream->getBe32();
6092     forUnmarshaling->pNext = nullptr;
6093     if (pNext_size) {
6094         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6095         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6096         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6097         vkStream->alloc((void**)&forUnmarshaling->pNext,
6098                         goldfish_vk_extension_struct_size_with_stream_features(
6099                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6100         *(VkStructureType*)forUnmarshaling->pNext = extType;
6101         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6102     }
6103     unmarshal_VkQueueFamilyProperties(
6104         vkStream, rootType, (VkQueueFamilyProperties*)(&forUnmarshaling->queueFamilyProperties));
6105 }
6106 
marshal_VkPhysicalDeviceMemoryProperties2(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMemoryProperties2 * forMarshaling)6107 void marshal_VkPhysicalDeviceMemoryProperties2(
6108     VulkanStream* vkStream, VkStructureType rootType,
6109     const VkPhysicalDeviceMemoryProperties2* forMarshaling) {
6110     (void)rootType;
6111     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6112     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6113         rootType = forMarshaling->sType;
6114     }
6115     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6116     marshal_VkPhysicalDeviceMemoryProperties(
6117         vkStream, rootType, (VkPhysicalDeviceMemoryProperties*)(&forMarshaling->memoryProperties));
6118 }
6119 
unmarshal_VkPhysicalDeviceMemoryProperties2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMemoryProperties2 * forUnmarshaling)6120 void unmarshal_VkPhysicalDeviceMemoryProperties2(
6121     VulkanStream* vkStream, VkStructureType rootType,
6122     VkPhysicalDeviceMemoryProperties2* forUnmarshaling) {
6123     (void)rootType;
6124     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6125     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6126         rootType = forUnmarshaling->sType;
6127     }
6128     size_t pNext_size;
6129     pNext_size = vkStream->getBe32();
6130     forUnmarshaling->pNext = nullptr;
6131     if (pNext_size) {
6132         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6133         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6134         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6135         vkStream->alloc((void**)&forUnmarshaling->pNext,
6136                         goldfish_vk_extension_struct_size_with_stream_features(
6137                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6138         *(VkStructureType*)forUnmarshaling->pNext = extType;
6139         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6140     }
6141     unmarshal_VkPhysicalDeviceMemoryProperties(
6142         vkStream, rootType,
6143         (VkPhysicalDeviceMemoryProperties*)(&forUnmarshaling->memoryProperties));
6144 }
6145 
marshal_VkSparseImageFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,const VkSparseImageFormatProperties2 * forMarshaling)6146 void marshal_VkSparseImageFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
6147                                             const VkSparseImageFormatProperties2* forMarshaling) {
6148     (void)rootType;
6149     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6150     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6151         rootType = forMarshaling->sType;
6152     }
6153     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6154     marshal_VkSparseImageFormatProperties(
6155         vkStream, rootType, (VkSparseImageFormatProperties*)(&forMarshaling->properties));
6156 }
6157 
unmarshal_VkSparseImageFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageFormatProperties2 * forUnmarshaling)6158 void unmarshal_VkSparseImageFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
6159                                               VkSparseImageFormatProperties2* forUnmarshaling) {
6160     (void)rootType;
6161     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6162     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6163         rootType = forUnmarshaling->sType;
6164     }
6165     size_t pNext_size;
6166     pNext_size = vkStream->getBe32();
6167     forUnmarshaling->pNext = nullptr;
6168     if (pNext_size) {
6169         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6170         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6171         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6172         vkStream->alloc((void**)&forUnmarshaling->pNext,
6173                         goldfish_vk_extension_struct_size_with_stream_features(
6174                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6175         *(VkStructureType*)forUnmarshaling->pNext = extType;
6176         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6177     }
6178     unmarshal_VkSparseImageFormatProperties(
6179         vkStream, rootType, (VkSparseImageFormatProperties*)(&forUnmarshaling->properties));
6180 }
6181 
marshal_VkPhysicalDeviceSparseImageFormatInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSparseImageFormatInfo2 * forMarshaling)6182 void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
6183     VulkanStream* vkStream, VkStructureType rootType,
6184     const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling) {
6185     (void)rootType;
6186     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6187     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6188         rootType = forMarshaling->sType;
6189     }
6190     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6191     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
6192     vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
6193     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
6194     vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
6195     vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
6196 }
6197 
unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSparseImageFormatInfo2 * forUnmarshaling)6198 void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
6199     VulkanStream* vkStream, VkStructureType rootType,
6200     VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling) {
6201     (void)rootType;
6202     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6203     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6204         rootType = forUnmarshaling->sType;
6205     }
6206     size_t pNext_size;
6207     pNext_size = vkStream->getBe32();
6208     forUnmarshaling->pNext = nullptr;
6209     if (pNext_size) {
6210         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6211         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6212         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6213         vkStream->alloc((void**)&forUnmarshaling->pNext,
6214                         goldfish_vk_extension_struct_size_with_stream_features(
6215                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6216         *(VkStructureType*)forUnmarshaling->pNext = extType;
6217         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6218     }
6219     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
6220     vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
6221     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples,
6222                    sizeof(VkSampleCountFlagBits));
6223     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
6224     vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
6225 }
6226 
marshal_VkPhysicalDevicePointClippingProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevicePointClippingProperties * forMarshaling)6227 void marshal_VkPhysicalDevicePointClippingProperties(
6228     VulkanStream* vkStream, VkStructureType rootType,
6229     const VkPhysicalDevicePointClippingProperties* forMarshaling) {
6230     (void)rootType;
6231     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6232     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6233         rootType = forMarshaling->sType;
6234     }
6235     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6236     vkStream->write((VkPointClippingBehavior*)&forMarshaling->pointClippingBehavior,
6237                     sizeof(VkPointClippingBehavior));
6238 }
6239 
unmarshal_VkPhysicalDevicePointClippingProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePointClippingProperties * forUnmarshaling)6240 void unmarshal_VkPhysicalDevicePointClippingProperties(
6241     VulkanStream* vkStream, VkStructureType rootType,
6242     VkPhysicalDevicePointClippingProperties* forUnmarshaling) {
6243     (void)rootType;
6244     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6245     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6246         rootType = forUnmarshaling->sType;
6247     }
6248     size_t pNext_size;
6249     pNext_size = vkStream->getBe32();
6250     forUnmarshaling->pNext = nullptr;
6251     if (pNext_size) {
6252         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6253         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6254         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6255         vkStream->alloc((void**)&forUnmarshaling->pNext,
6256                         goldfish_vk_extension_struct_size_with_stream_features(
6257                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6258         *(VkStructureType*)forUnmarshaling->pNext = extType;
6259         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6260     }
6261     vkStream->read((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior,
6262                    sizeof(VkPointClippingBehavior));
6263 }
6264 
marshal_VkInputAttachmentAspectReference(VulkanStream * vkStream,VkStructureType rootType,const VkInputAttachmentAspectReference * forMarshaling)6265 void marshal_VkInputAttachmentAspectReference(
6266     VulkanStream* vkStream, VkStructureType rootType,
6267     const VkInputAttachmentAspectReference* forMarshaling) {
6268     (void)rootType;
6269     vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
6270     vkStream->write((uint32_t*)&forMarshaling->inputAttachmentIndex, sizeof(uint32_t));
6271     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
6272 }
6273 
unmarshal_VkInputAttachmentAspectReference(VulkanStream * vkStream,VkStructureType rootType,VkInputAttachmentAspectReference * forUnmarshaling)6274 void unmarshal_VkInputAttachmentAspectReference(VulkanStream* vkStream, VkStructureType rootType,
6275                                                 VkInputAttachmentAspectReference* forUnmarshaling) {
6276     (void)rootType;
6277     vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
6278     vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentIndex, sizeof(uint32_t));
6279     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
6280 }
6281 
marshal_VkRenderPassInputAttachmentAspectCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassInputAttachmentAspectCreateInfo * forMarshaling)6282 void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
6283     VulkanStream* vkStream, VkStructureType rootType,
6284     const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling) {
6285     (void)rootType;
6286     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6287     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6288         rootType = forMarshaling->sType;
6289     }
6290     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6291     vkStream->write((uint32_t*)&forMarshaling->aspectReferenceCount, sizeof(uint32_t));
6292     if (forMarshaling) {
6293         for (uint32_t i = 0; i < (uint32_t)forMarshaling->aspectReferenceCount; ++i) {
6294             marshal_VkInputAttachmentAspectReference(
6295                 vkStream, rootType,
6296                 (const VkInputAttachmentAspectReference*)(forMarshaling->pAspectReferences + i));
6297         }
6298     }
6299 }
6300 
unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassInputAttachmentAspectCreateInfo * forUnmarshaling)6301 void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
6302     VulkanStream* vkStream, VkStructureType rootType,
6303     VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling) {
6304     (void)rootType;
6305     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6306     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6307         rootType = forUnmarshaling->sType;
6308     }
6309     size_t pNext_size;
6310     pNext_size = vkStream->getBe32();
6311     forUnmarshaling->pNext = nullptr;
6312     if (pNext_size) {
6313         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6314         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6315         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6316         vkStream->alloc((void**)&forUnmarshaling->pNext,
6317                         goldfish_vk_extension_struct_size_with_stream_features(
6318                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6319         *(VkStructureType*)forUnmarshaling->pNext = extType;
6320         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6321     }
6322     vkStream->read((uint32_t*)&forUnmarshaling->aspectReferenceCount, sizeof(uint32_t));
6323     vkStream->alloc(
6324         (void**)&forUnmarshaling->pAspectReferences,
6325         forUnmarshaling->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
6326     if (forUnmarshaling) {
6327         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->aspectReferenceCount; ++i) {
6328             unmarshal_VkInputAttachmentAspectReference(
6329                 vkStream, rootType,
6330                 (VkInputAttachmentAspectReference*)(forUnmarshaling->pAspectReferences + i));
6331         }
6332     }
6333 }
6334 
marshal_VkImageViewUsageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkImageViewUsageCreateInfo * forMarshaling)6335 void marshal_VkImageViewUsageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
6336                                         const VkImageViewUsageCreateInfo* forMarshaling) {
6337     (void)rootType;
6338     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6339     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6340         rootType = forMarshaling->sType;
6341     }
6342     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6343     vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
6344 }
6345 
unmarshal_VkImageViewUsageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageViewUsageCreateInfo * forUnmarshaling)6346 void unmarshal_VkImageViewUsageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
6347                                           VkImageViewUsageCreateInfo* forUnmarshaling) {
6348     (void)rootType;
6349     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6350     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6351         rootType = forUnmarshaling->sType;
6352     }
6353     size_t pNext_size;
6354     pNext_size = vkStream->getBe32();
6355     forUnmarshaling->pNext = nullptr;
6356     if (pNext_size) {
6357         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6358         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6359         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6360         vkStream->alloc((void**)&forUnmarshaling->pNext,
6361                         goldfish_vk_extension_struct_size_with_stream_features(
6362                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6363         *(VkStructureType*)forUnmarshaling->pNext = extType;
6364         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6365     }
6366     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
6367 }
6368 
marshal_VkPipelineTessellationDomainOriginStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineTessellationDomainOriginStateCreateInfo * forMarshaling)6369 void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
6370     VulkanStream* vkStream, VkStructureType rootType,
6371     const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling) {
6372     (void)rootType;
6373     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6374     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6375         rootType = forMarshaling->sType;
6376     }
6377     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6378     vkStream->write((VkTessellationDomainOrigin*)&forMarshaling->domainOrigin,
6379                     sizeof(VkTessellationDomainOrigin));
6380 }
6381 
unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineTessellationDomainOriginStateCreateInfo * forUnmarshaling)6382 void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
6383     VulkanStream* vkStream, VkStructureType rootType,
6384     VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling) {
6385     (void)rootType;
6386     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6387     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6388         rootType = forUnmarshaling->sType;
6389     }
6390     size_t pNext_size;
6391     pNext_size = vkStream->getBe32();
6392     forUnmarshaling->pNext = nullptr;
6393     if (pNext_size) {
6394         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6395         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6396         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6397         vkStream->alloc((void**)&forUnmarshaling->pNext,
6398                         goldfish_vk_extension_struct_size_with_stream_features(
6399                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6400         *(VkStructureType*)forUnmarshaling->pNext = extType;
6401         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6402     }
6403     vkStream->read((VkTessellationDomainOrigin*)&forUnmarshaling->domainOrigin,
6404                    sizeof(VkTessellationDomainOrigin));
6405 }
6406 
marshal_VkRenderPassMultiviewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassMultiviewCreateInfo * forMarshaling)6407 void marshal_VkRenderPassMultiviewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
6408                                              const VkRenderPassMultiviewCreateInfo* forMarshaling) {
6409     (void)rootType;
6410     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6411     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6412         rootType = forMarshaling->sType;
6413     }
6414     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6415     vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
6416     vkStream->write((const uint32_t*)forMarshaling->pViewMasks,
6417                     forMarshaling->subpassCount * sizeof(const uint32_t));
6418     vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
6419     vkStream->write((const int32_t*)forMarshaling->pViewOffsets,
6420                     forMarshaling->dependencyCount * sizeof(const int32_t));
6421     vkStream->write((uint32_t*)&forMarshaling->correlationMaskCount, sizeof(uint32_t));
6422     vkStream->write((const uint32_t*)forMarshaling->pCorrelationMasks,
6423                     forMarshaling->correlationMaskCount * sizeof(const uint32_t));
6424 }
6425 
unmarshal_VkRenderPassMultiviewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassMultiviewCreateInfo * forUnmarshaling)6426 void unmarshal_VkRenderPassMultiviewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
6427                                                VkRenderPassMultiviewCreateInfo* forUnmarshaling) {
6428     (void)rootType;
6429     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6430     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6431         rootType = forUnmarshaling->sType;
6432     }
6433     size_t pNext_size;
6434     pNext_size = vkStream->getBe32();
6435     forUnmarshaling->pNext = nullptr;
6436     if (pNext_size) {
6437         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6438         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6439         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6440         vkStream->alloc((void**)&forUnmarshaling->pNext,
6441                         goldfish_vk_extension_struct_size_with_stream_features(
6442                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6443         *(VkStructureType*)forUnmarshaling->pNext = extType;
6444         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6445     }
6446     vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
6447     vkStream->alloc((void**)&forUnmarshaling->pViewMasks,
6448                     forUnmarshaling->subpassCount * sizeof(const uint32_t));
6449     vkStream->read((uint32_t*)forUnmarshaling->pViewMasks,
6450                    forUnmarshaling->subpassCount * sizeof(const uint32_t));
6451     vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
6452     vkStream->alloc((void**)&forUnmarshaling->pViewOffsets,
6453                     forUnmarshaling->dependencyCount * sizeof(const int32_t));
6454     vkStream->read((int32_t*)forUnmarshaling->pViewOffsets,
6455                    forUnmarshaling->dependencyCount * sizeof(const int32_t));
6456     vkStream->read((uint32_t*)&forUnmarshaling->correlationMaskCount, sizeof(uint32_t));
6457     vkStream->alloc((void**)&forUnmarshaling->pCorrelationMasks,
6458                     forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
6459     vkStream->read((uint32_t*)forUnmarshaling->pCorrelationMasks,
6460                    forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
6461 }
6462 
marshal_VkPhysicalDeviceMultiviewFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMultiviewFeatures * forMarshaling)6463 void marshal_VkPhysicalDeviceMultiviewFeatures(
6464     VulkanStream* vkStream, VkStructureType rootType,
6465     const VkPhysicalDeviceMultiviewFeatures* forMarshaling) {
6466     (void)rootType;
6467     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6468     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6469         rootType = forMarshaling->sType;
6470     }
6471     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6472     vkStream->write((VkBool32*)&forMarshaling->multiview, sizeof(VkBool32));
6473     vkStream->write((VkBool32*)&forMarshaling->multiviewGeometryShader, sizeof(VkBool32));
6474     vkStream->write((VkBool32*)&forMarshaling->multiviewTessellationShader, sizeof(VkBool32));
6475 }
6476 
unmarshal_VkPhysicalDeviceMultiviewFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMultiviewFeatures * forUnmarshaling)6477 void unmarshal_VkPhysicalDeviceMultiviewFeatures(
6478     VulkanStream* vkStream, VkStructureType rootType,
6479     VkPhysicalDeviceMultiviewFeatures* forUnmarshaling) {
6480     (void)rootType;
6481     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6482     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6483         rootType = forUnmarshaling->sType;
6484     }
6485     size_t pNext_size;
6486     pNext_size = vkStream->getBe32();
6487     forUnmarshaling->pNext = nullptr;
6488     if (pNext_size) {
6489         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6490         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6491         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6492         vkStream->alloc((void**)&forUnmarshaling->pNext,
6493                         goldfish_vk_extension_struct_size_with_stream_features(
6494                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6495         *(VkStructureType*)forUnmarshaling->pNext = extType;
6496         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6497     }
6498     vkStream->read((VkBool32*)&forUnmarshaling->multiview, sizeof(VkBool32));
6499     vkStream->read((VkBool32*)&forUnmarshaling->multiviewGeometryShader, sizeof(VkBool32));
6500     vkStream->read((VkBool32*)&forUnmarshaling->multiviewTessellationShader, sizeof(VkBool32));
6501 }
6502 
marshal_VkPhysicalDeviceMultiviewProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMultiviewProperties * forMarshaling)6503 void marshal_VkPhysicalDeviceMultiviewProperties(
6504     VulkanStream* vkStream, VkStructureType rootType,
6505     const VkPhysicalDeviceMultiviewProperties* forMarshaling) {
6506     (void)rootType;
6507     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6508     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6509         rootType = forMarshaling->sType;
6510     }
6511     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6512     vkStream->write((uint32_t*)&forMarshaling->maxMultiviewViewCount, sizeof(uint32_t));
6513     vkStream->write((uint32_t*)&forMarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
6514 }
6515 
unmarshal_VkPhysicalDeviceMultiviewProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMultiviewProperties * forUnmarshaling)6516 void unmarshal_VkPhysicalDeviceMultiviewProperties(
6517     VulkanStream* vkStream, VkStructureType rootType,
6518     VkPhysicalDeviceMultiviewProperties* forUnmarshaling) {
6519     (void)rootType;
6520     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6521     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6522         rootType = forUnmarshaling->sType;
6523     }
6524     size_t pNext_size;
6525     pNext_size = vkStream->getBe32();
6526     forUnmarshaling->pNext = nullptr;
6527     if (pNext_size) {
6528         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6529         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6530         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6531         vkStream->alloc((void**)&forUnmarshaling->pNext,
6532                         goldfish_vk_extension_struct_size_with_stream_features(
6533                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6534         *(VkStructureType*)forUnmarshaling->pNext = extType;
6535         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6536     }
6537     vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, sizeof(uint32_t));
6538     vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
6539 }
6540 
marshal_VkPhysicalDeviceVariablePointersFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVariablePointersFeatures * forMarshaling)6541 void marshal_VkPhysicalDeviceVariablePointersFeatures(
6542     VulkanStream* vkStream, VkStructureType rootType,
6543     const VkPhysicalDeviceVariablePointersFeatures* forMarshaling) {
6544     (void)rootType;
6545     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6546     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6547         rootType = forMarshaling->sType;
6548     }
6549     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6550     vkStream->write((VkBool32*)&forMarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
6551     vkStream->write((VkBool32*)&forMarshaling->variablePointers, sizeof(VkBool32));
6552 }
6553 
unmarshal_VkPhysicalDeviceVariablePointersFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVariablePointersFeatures * forUnmarshaling)6554 void unmarshal_VkPhysicalDeviceVariablePointersFeatures(
6555     VulkanStream* vkStream, VkStructureType rootType,
6556     VkPhysicalDeviceVariablePointersFeatures* forUnmarshaling) {
6557     (void)rootType;
6558     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6559     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6560         rootType = forUnmarshaling->sType;
6561     }
6562     size_t pNext_size;
6563     pNext_size = vkStream->getBe32();
6564     forUnmarshaling->pNext = nullptr;
6565     if (pNext_size) {
6566         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6567         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6568         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6569         vkStream->alloc((void**)&forUnmarshaling->pNext,
6570                         goldfish_vk_extension_struct_size_with_stream_features(
6571                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6572         *(VkStructureType*)forUnmarshaling->pNext = extType;
6573         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6574     }
6575     vkStream->read((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
6576     vkStream->read((VkBool32*)&forUnmarshaling->variablePointers, sizeof(VkBool32));
6577 }
6578 
marshal_VkPhysicalDeviceProtectedMemoryFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceProtectedMemoryFeatures * forMarshaling)6579 void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
6580     VulkanStream* vkStream, VkStructureType rootType,
6581     const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling) {
6582     (void)rootType;
6583     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6584     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6585         rootType = forMarshaling->sType;
6586     }
6587     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6588     vkStream->write((VkBool32*)&forMarshaling->protectedMemory, sizeof(VkBool32));
6589 }
6590 
unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProtectedMemoryFeatures * forUnmarshaling)6591 void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
6592     VulkanStream* vkStream, VkStructureType rootType,
6593     VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling) {
6594     (void)rootType;
6595     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6596     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6597         rootType = forUnmarshaling->sType;
6598     }
6599     size_t pNext_size;
6600     pNext_size = vkStream->getBe32();
6601     forUnmarshaling->pNext = nullptr;
6602     if (pNext_size) {
6603         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6604         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6605         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6606         vkStream->alloc((void**)&forUnmarshaling->pNext,
6607                         goldfish_vk_extension_struct_size_with_stream_features(
6608                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6609         *(VkStructureType*)forUnmarshaling->pNext = extType;
6610         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6611     }
6612     vkStream->read((VkBool32*)&forUnmarshaling->protectedMemory, sizeof(VkBool32));
6613 }
6614 
marshal_VkPhysicalDeviceProtectedMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceProtectedMemoryProperties * forMarshaling)6615 void marshal_VkPhysicalDeviceProtectedMemoryProperties(
6616     VulkanStream* vkStream, VkStructureType rootType,
6617     const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling) {
6618     (void)rootType;
6619     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6620     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6621         rootType = forMarshaling->sType;
6622     }
6623     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6624     vkStream->write((VkBool32*)&forMarshaling->protectedNoFault, sizeof(VkBool32));
6625 }
6626 
unmarshal_VkPhysicalDeviceProtectedMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProtectedMemoryProperties * forUnmarshaling)6627 void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
6628     VulkanStream* vkStream, VkStructureType rootType,
6629     VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling) {
6630     (void)rootType;
6631     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6632     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6633         rootType = forUnmarshaling->sType;
6634     }
6635     size_t pNext_size;
6636     pNext_size = vkStream->getBe32();
6637     forUnmarshaling->pNext = nullptr;
6638     if (pNext_size) {
6639         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6640         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6641         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6642         vkStream->alloc((void**)&forUnmarshaling->pNext,
6643                         goldfish_vk_extension_struct_size_with_stream_features(
6644                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6645         *(VkStructureType*)forUnmarshaling->pNext = extType;
6646         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6647     }
6648     vkStream->read((VkBool32*)&forUnmarshaling->protectedNoFault, sizeof(VkBool32));
6649 }
6650 
marshal_VkDeviceQueueInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceQueueInfo2 * forMarshaling)6651 void marshal_VkDeviceQueueInfo2(VulkanStream* vkStream, VkStructureType rootType,
6652                                 const VkDeviceQueueInfo2* forMarshaling) {
6653     (void)rootType;
6654     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6655     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6656         rootType = forMarshaling->sType;
6657     }
6658     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6659     vkStream->write((VkDeviceQueueCreateFlags*)&forMarshaling->flags,
6660                     sizeof(VkDeviceQueueCreateFlags));
6661     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
6662     vkStream->write((uint32_t*)&forMarshaling->queueIndex, sizeof(uint32_t));
6663 }
6664 
unmarshal_VkDeviceQueueInfo2(VulkanStream * vkStream,VkStructureType rootType,VkDeviceQueueInfo2 * forUnmarshaling)6665 void unmarshal_VkDeviceQueueInfo2(VulkanStream* vkStream, VkStructureType rootType,
6666                                   VkDeviceQueueInfo2* forUnmarshaling) {
6667     (void)rootType;
6668     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6669     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6670         rootType = forUnmarshaling->sType;
6671     }
6672     size_t pNext_size;
6673     pNext_size = vkStream->getBe32();
6674     forUnmarshaling->pNext = nullptr;
6675     if (pNext_size) {
6676         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6677         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6678         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6679         vkStream->alloc((void**)&forUnmarshaling->pNext,
6680                         goldfish_vk_extension_struct_size_with_stream_features(
6681                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6682         *(VkStructureType*)forUnmarshaling->pNext = extType;
6683         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6684     }
6685     vkStream->read((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags,
6686                    sizeof(VkDeviceQueueCreateFlags));
6687     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
6688     vkStream->read((uint32_t*)&forUnmarshaling->queueIndex, sizeof(uint32_t));
6689 }
6690 
marshal_VkProtectedSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkProtectedSubmitInfo * forMarshaling)6691 void marshal_VkProtectedSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
6692                                    const VkProtectedSubmitInfo* forMarshaling) {
6693     (void)rootType;
6694     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6695     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6696         rootType = forMarshaling->sType;
6697     }
6698     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6699     vkStream->write((VkBool32*)&forMarshaling->protectedSubmit, sizeof(VkBool32));
6700 }
6701 
unmarshal_VkProtectedSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkProtectedSubmitInfo * forUnmarshaling)6702 void unmarshal_VkProtectedSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
6703                                      VkProtectedSubmitInfo* forUnmarshaling) {
6704     (void)rootType;
6705     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6706     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6707         rootType = forUnmarshaling->sType;
6708     }
6709     size_t pNext_size;
6710     pNext_size = vkStream->getBe32();
6711     forUnmarshaling->pNext = nullptr;
6712     if (pNext_size) {
6713         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6714         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6715         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6716         vkStream->alloc((void**)&forUnmarshaling->pNext,
6717                         goldfish_vk_extension_struct_size_with_stream_features(
6718                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6719         *(VkStructureType*)forUnmarshaling->pNext = extType;
6720         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6721     }
6722     vkStream->read((VkBool32*)&forUnmarshaling->protectedSubmit, sizeof(VkBool32));
6723 }
6724 
marshal_VkSamplerYcbcrConversionCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSamplerYcbcrConversionCreateInfo * forMarshaling)6725 void marshal_VkSamplerYcbcrConversionCreateInfo(
6726     VulkanStream* vkStream, VkStructureType rootType,
6727     const VkSamplerYcbcrConversionCreateInfo* forMarshaling) {
6728     (void)rootType;
6729     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6730     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6731         rootType = forMarshaling->sType;
6732     }
6733     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6734     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
6735     vkStream->write((VkSamplerYcbcrModelConversion*)&forMarshaling->ycbcrModel,
6736                     sizeof(VkSamplerYcbcrModelConversion));
6737     vkStream->write((VkSamplerYcbcrRange*)&forMarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
6738     marshal_VkComponentMapping(vkStream, rootType,
6739                                (VkComponentMapping*)(&forMarshaling->components));
6740     vkStream->write((VkChromaLocation*)&forMarshaling->xChromaOffset, sizeof(VkChromaLocation));
6741     vkStream->write((VkChromaLocation*)&forMarshaling->yChromaOffset, sizeof(VkChromaLocation));
6742     vkStream->write((VkFilter*)&forMarshaling->chromaFilter, sizeof(VkFilter));
6743     vkStream->write((VkBool32*)&forMarshaling->forceExplicitReconstruction, sizeof(VkBool32));
6744 }
6745 
unmarshal_VkSamplerYcbcrConversionCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerYcbcrConversionCreateInfo * forUnmarshaling)6746 void unmarshal_VkSamplerYcbcrConversionCreateInfo(
6747     VulkanStream* vkStream, VkStructureType rootType,
6748     VkSamplerYcbcrConversionCreateInfo* forUnmarshaling) {
6749     (void)rootType;
6750     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6751     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6752         rootType = forUnmarshaling->sType;
6753     }
6754     size_t pNext_size;
6755     pNext_size = vkStream->getBe32();
6756     forUnmarshaling->pNext = nullptr;
6757     if (pNext_size) {
6758         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6759         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6760         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6761         vkStream->alloc((void**)&forUnmarshaling->pNext,
6762                         goldfish_vk_extension_struct_size_with_stream_features(
6763                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6764         *(VkStructureType*)forUnmarshaling->pNext = extType;
6765         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6766     }
6767     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
6768     vkStream->read((VkSamplerYcbcrModelConversion*)&forUnmarshaling->ycbcrModel,
6769                    sizeof(VkSamplerYcbcrModelConversion));
6770     vkStream->read((VkSamplerYcbcrRange*)&forUnmarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
6771     unmarshal_VkComponentMapping(vkStream, rootType,
6772                                  (VkComponentMapping*)(&forUnmarshaling->components));
6773     vkStream->read((VkChromaLocation*)&forUnmarshaling->xChromaOffset, sizeof(VkChromaLocation));
6774     vkStream->read((VkChromaLocation*)&forUnmarshaling->yChromaOffset, sizeof(VkChromaLocation));
6775     vkStream->read((VkFilter*)&forUnmarshaling->chromaFilter, sizeof(VkFilter));
6776     vkStream->read((VkBool32*)&forUnmarshaling->forceExplicitReconstruction, sizeof(VkBool32));
6777 }
6778 
marshal_VkSamplerYcbcrConversionInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSamplerYcbcrConversionInfo * forMarshaling)6779 void marshal_VkSamplerYcbcrConversionInfo(VulkanStream* vkStream, VkStructureType rootType,
6780                                           const VkSamplerYcbcrConversionInfo* forMarshaling) {
6781     (void)rootType;
6782     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6783     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6784         rootType = forMarshaling->sType;
6785     }
6786     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6787     uint64_t cgen_var_0;
6788     vkStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&forMarshaling->conversion,
6789                                                                        &cgen_var_0, 1);
6790     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
6791 }
6792 
unmarshal_VkSamplerYcbcrConversionInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerYcbcrConversionInfo * forUnmarshaling)6793 void unmarshal_VkSamplerYcbcrConversionInfo(VulkanStream* vkStream, VkStructureType rootType,
6794                                             VkSamplerYcbcrConversionInfo* forUnmarshaling) {
6795     (void)rootType;
6796     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6797     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6798         rootType = forUnmarshaling->sType;
6799     }
6800     size_t pNext_size;
6801     pNext_size = vkStream->getBe32();
6802     forUnmarshaling->pNext = nullptr;
6803     if (pNext_size) {
6804         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6805         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6806         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6807         vkStream->alloc((void**)&forUnmarshaling->pNext,
6808                         goldfish_vk_extension_struct_size_with_stream_features(
6809                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6810         *(VkStructureType*)forUnmarshaling->pNext = extType;
6811         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6812     }
6813     uint64_t cgen_var_0;
6814     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
6815     vkStream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(
6816         &cgen_var_0, (VkSamplerYcbcrConversion*)&forUnmarshaling->conversion, 1);
6817 }
6818 
marshal_VkBindImagePlaneMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBindImagePlaneMemoryInfo * forMarshaling)6819 void marshal_VkBindImagePlaneMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
6820                                         const VkBindImagePlaneMemoryInfo* forMarshaling) {
6821     (void)rootType;
6822     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6823     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6824         rootType = forMarshaling->sType;
6825     }
6826     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6827     vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect,
6828                     sizeof(VkImageAspectFlagBits));
6829 }
6830 
unmarshal_VkBindImagePlaneMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindImagePlaneMemoryInfo * forUnmarshaling)6831 void unmarshal_VkBindImagePlaneMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
6832                                           VkBindImagePlaneMemoryInfo* forUnmarshaling) {
6833     (void)rootType;
6834     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6835     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6836         rootType = forUnmarshaling->sType;
6837     }
6838     size_t pNext_size;
6839     pNext_size = vkStream->getBe32();
6840     forUnmarshaling->pNext = nullptr;
6841     if (pNext_size) {
6842         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6843         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6844         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6845         vkStream->alloc((void**)&forUnmarshaling->pNext,
6846                         goldfish_vk_extension_struct_size_with_stream_features(
6847                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6848         *(VkStructureType*)forUnmarshaling->pNext = extType;
6849         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6850     }
6851     vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect,
6852                    sizeof(VkImageAspectFlagBits));
6853 }
6854 
marshal_VkImagePlaneMemoryRequirementsInfo(VulkanStream * vkStream,VkStructureType rootType,const VkImagePlaneMemoryRequirementsInfo * forMarshaling)6855 void marshal_VkImagePlaneMemoryRequirementsInfo(
6856     VulkanStream* vkStream, VkStructureType rootType,
6857     const VkImagePlaneMemoryRequirementsInfo* forMarshaling) {
6858     (void)rootType;
6859     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6860     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6861         rootType = forMarshaling->sType;
6862     }
6863     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6864     vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect,
6865                     sizeof(VkImageAspectFlagBits));
6866 }
6867 
unmarshal_VkImagePlaneMemoryRequirementsInfo(VulkanStream * vkStream,VkStructureType rootType,VkImagePlaneMemoryRequirementsInfo * forUnmarshaling)6868 void unmarshal_VkImagePlaneMemoryRequirementsInfo(
6869     VulkanStream* vkStream, VkStructureType rootType,
6870     VkImagePlaneMemoryRequirementsInfo* forUnmarshaling) {
6871     (void)rootType;
6872     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6873     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6874         rootType = forUnmarshaling->sType;
6875     }
6876     size_t pNext_size;
6877     pNext_size = vkStream->getBe32();
6878     forUnmarshaling->pNext = nullptr;
6879     if (pNext_size) {
6880         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6881         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6882         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6883         vkStream->alloc((void**)&forUnmarshaling->pNext,
6884                         goldfish_vk_extension_struct_size_with_stream_features(
6885                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6886         *(VkStructureType*)forUnmarshaling->pNext = extType;
6887         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6888     }
6889     vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect,
6890                    sizeof(VkImageAspectFlagBits));
6891 }
6892 
marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSamplerYcbcrConversionFeatures * forMarshaling)6893 void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
6894     VulkanStream* vkStream, VkStructureType rootType,
6895     const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling) {
6896     (void)rootType;
6897     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6898     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6899         rootType = forMarshaling->sType;
6900     }
6901     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6902     vkStream->write((VkBool32*)&forMarshaling->samplerYcbcrConversion, sizeof(VkBool32));
6903 }
6904 
unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSamplerYcbcrConversionFeatures * forUnmarshaling)6905 void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
6906     VulkanStream* vkStream, VkStructureType rootType,
6907     VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling) {
6908     (void)rootType;
6909     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6910     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6911         rootType = forUnmarshaling->sType;
6912     }
6913     size_t pNext_size;
6914     pNext_size = vkStream->getBe32();
6915     forUnmarshaling->pNext = nullptr;
6916     if (pNext_size) {
6917         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6918         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6919         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6920         vkStream->alloc((void**)&forUnmarshaling->pNext,
6921                         goldfish_vk_extension_struct_size_with_stream_features(
6922                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6923         *(VkStructureType*)forUnmarshaling->pNext = extType;
6924         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6925     }
6926     vkStream->read((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, sizeof(VkBool32));
6927 }
6928 
marshal_VkSamplerYcbcrConversionImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,const VkSamplerYcbcrConversionImageFormatProperties * forMarshaling)6929 void marshal_VkSamplerYcbcrConversionImageFormatProperties(
6930     VulkanStream* vkStream, VkStructureType rootType,
6931     const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling) {
6932     (void)rootType;
6933     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6934     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6935         rootType = forMarshaling->sType;
6936     }
6937     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
6938     vkStream->write((uint32_t*)&forMarshaling->combinedImageSamplerDescriptorCount,
6939                     sizeof(uint32_t));
6940 }
6941 
unmarshal_VkSamplerYcbcrConversionImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkSamplerYcbcrConversionImageFormatProperties * forUnmarshaling)6942 void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
6943     VulkanStream* vkStream, VkStructureType rootType,
6944     VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling) {
6945     (void)rootType;
6946     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
6947     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6948         rootType = forUnmarshaling->sType;
6949     }
6950     size_t pNext_size;
6951     pNext_size = vkStream->getBe32();
6952     forUnmarshaling->pNext = nullptr;
6953     if (pNext_size) {
6954         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6955         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
6956         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6957         vkStream->alloc((void**)&forUnmarshaling->pNext,
6958                         goldfish_vk_extension_struct_size_with_stream_features(
6959                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6960         *(VkStructureType*)forUnmarshaling->pNext = extType;
6961         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
6962     }
6963     vkStream->read((uint32_t*)&forUnmarshaling->combinedImageSamplerDescriptorCount,
6964                    sizeof(uint32_t));
6965 }
6966 
marshal_VkDescriptorUpdateTemplateEntry(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorUpdateTemplateEntry * forMarshaling)6967 void marshal_VkDescriptorUpdateTemplateEntry(VulkanStream* vkStream, VkStructureType rootType,
6968                                              const VkDescriptorUpdateTemplateEntry* forMarshaling) {
6969     (void)rootType;
6970     vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
6971     vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
6972     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
6973     vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
6974     uint64_t cgen_var_0 = (uint64_t)forMarshaling->offset;
6975     vkStream->putBe64(cgen_var_0);
6976     uint64_t cgen_var_1 = (uint64_t)forMarshaling->stride;
6977     vkStream->putBe64(cgen_var_1);
6978 }
6979 
unmarshal_VkDescriptorUpdateTemplateEntry(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorUpdateTemplateEntry * forUnmarshaling)6980 void unmarshal_VkDescriptorUpdateTemplateEntry(VulkanStream* vkStream, VkStructureType rootType,
6981                                                VkDescriptorUpdateTemplateEntry* forUnmarshaling) {
6982     (void)rootType;
6983     vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
6984     vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
6985     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
6986     vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
6987     forUnmarshaling->offset = (size_t)vkStream->getBe64();
6988     forUnmarshaling->stride = (size_t)vkStream->getBe64();
6989 }
6990 
marshal_VkDescriptorUpdateTemplateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorUpdateTemplateCreateInfo * forMarshaling)6991 void marshal_VkDescriptorUpdateTemplateCreateInfo(
6992     VulkanStream* vkStream, VkStructureType rootType,
6993     const VkDescriptorUpdateTemplateCreateInfo* forMarshaling) {
6994     (void)rootType;
6995     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
6996     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6997         rootType = forMarshaling->sType;
6998     }
6999     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7000     vkStream->write((VkDescriptorUpdateTemplateCreateFlags*)&forMarshaling->flags,
7001                     sizeof(VkDescriptorUpdateTemplateCreateFlags));
7002     vkStream->write((uint32_t*)&forMarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
7003     if (forMarshaling) {
7004         for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorUpdateEntryCount; ++i) {
7005             marshal_VkDescriptorUpdateTemplateEntry(
7006                 vkStream, rootType,
7007                 (const VkDescriptorUpdateTemplateEntry*)(forMarshaling->pDescriptorUpdateEntries +
7008                                                          i));
7009         }
7010     }
7011     vkStream->write((VkDescriptorUpdateTemplateType*)&forMarshaling->templateType,
7012                     sizeof(VkDescriptorUpdateTemplateType));
7013     uint64_t cgen_var_0;
7014     vkStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(
7015         &forMarshaling->descriptorSetLayout, &cgen_var_0, 1);
7016     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
7017     vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint,
7018                     sizeof(VkPipelineBindPoint));
7019     uint64_t cgen_var_1;
7020     vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->pipelineLayout,
7021                                                                &cgen_var_1, 1);
7022     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
7023     vkStream->write((uint32_t*)&forMarshaling->set, sizeof(uint32_t));
7024 }
7025 
unmarshal_VkDescriptorUpdateTemplateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorUpdateTemplateCreateInfo * forUnmarshaling)7026 void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
7027     VulkanStream* vkStream, VkStructureType rootType,
7028     VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling) {
7029     (void)rootType;
7030     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7031     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7032         rootType = forUnmarshaling->sType;
7033     }
7034     size_t pNext_size;
7035     pNext_size = vkStream->getBe32();
7036     forUnmarshaling->pNext = nullptr;
7037     if (pNext_size) {
7038         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7039         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7040         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7041         vkStream->alloc((void**)&forUnmarshaling->pNext,
7042                         goldfish_vk_extension_struct_size_with_stream_features(
7043                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7044         *(VkStructureType*)forUnmarshaling->pNext = extType;
7045         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7046     }
7047     vkStream->read((VkDescriptorUpdateTemplateCreateFlags*)&forUnmarshaling->flags,
7048                    sizeof(VkDescriptorUpdateTemplateCreateFlags));
7049     vkStream->read((uint32_t*)&forUnmarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
7050     vkStream->alloc((void**)&forUnmarshaling->pDescriptorUpdateEntries,
7051                     forUnmarshaling->descriptorUpdateEntryCount *
7052                         sizeof(const VkDescriptorUpdateTemplateEntry));
7053     if (forUnmarshaling) {
7054         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorUpdateEntryCount; ++i) {
7055             unmarshal_VkDescriptorUpdateTemplateEntry(
7056                 vkStream, rootType,
7057                 (VkDescriptorUpdateTemplateEntry*)(forUnmarshaling->pDescriptorUpdateEntries + i));
7058         }
7059     }
7060     vkStream->read((VkDescriptorUpdateTemplateType*)&forUnmarshaling->templateType,
7061                    sizeof(VkDescriptorUpdateTemplateType));
7062     uint64_t cgen_var_0;
7063     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
7064     vkStream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(
7065         &cgen_var_0, (VkDescriptorSetLayout*)&forUnmarshaling->descriptorSetLayout, 1);
7066     vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint,
7067                    sizeof(VkPipelineBindPoint));
7068     uint64_t cgen_var_1;
7069     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
7070     vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(
7071         &cgen_var_1, (VkPipelineLayout*)&forUnmarshaling->pipelineLayout, 1);
7072     vkStream->read((uint32_t*)&forUnmarshaling->set, sizeof(uint32_t));
7073 }
7074 
marshal_VkExternalMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,const VkExternalMemoryProperties * forMarshaling)7075 void marshal_VkExternalMemoryProperties(VulkanStream* vkStream, VkStructureType rootType,
7076                                         const VkExternalMemoryProperties* forMarshaling) {
7077     (void)rootType;
7078     vkStream->write((VkExternalMemoryFeatureFlags*)&forMarshaling->externalMemoryFeatures,
7079                     sizeof(VkExternalMemoryFeatureFlags));
7080     vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes,
7081                     sizeof(VkExternalMemoryHandleTypeFlags));
7082     vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->compatibleHandleTypes,
7083                     sizeof(VkExternalMemoryHandleTypeFlags));
7084 }
7085 
unmarshal_VkExternalMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalMemoryProperties * forUnmarshaling)7086 void unmarshal_VkExternalMemoryProperties(VulkanStream* vkStream, VkStructureType rootType,
7087                                           VkExternalMemoryProperties* forUnmarshaling) {
7088     (void)rootType;
7089     vkStream->read((VkExternalMemoryFeatureFlags*)&forUnmarshaling->externalMemoryFeatures,
7090                    sizeof(VkExternalMemoryFeatureFlags));
7091     vkStream->read(
7092         (VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes,
7093         sizeof(VkExternalMemoryHandleTypeFlags));
7094     vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes,
7095                    sizeof(VkExternalMemoryHandleTypeFlags));
7096 }
7097 
marshal_VkPhysicalDeviceExternalImageFormatInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExternalImageFormatInfo * forMarshaling)7098 void marshal_VkPhysicalDeviceExternalImageFormatInfo(
7099     VulkanStream* vkStream, VkStructureType rootType,
7100     const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling) {
7101     (void)rootType;
7102     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7103     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7104         rootType = forMarshaling->sType;
7105     }
7106     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7107     vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType,
7108                     sizeof(VkExternalMemoryHandleTypeFlagBits));
7109 }
7110 
unmarshal_VkPhysicalDeviceExternalImageFormatInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalImageFormatInfo * forUnmarshaling)7111 void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
7112     VulkanStream* vkStream, VkStructureType rootType,
7113     VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling) {
7114     (void)rootType;
7115     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7116     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7117         rootType = forUnmarshaling->sType;
7118     }
7119     size_t pNext_size;
7120     pNext_size = vkStream->getBe32();
7121     forUnmarshaling->pNext = nullptr;
7122     if (pNext_size) {
7123         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7124         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7125         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7126         vkStream->alloc((void**)&forUnmarshaling->pNext,
7127                         goldfish_vk_extension_struct_size_with_stream_features(
7128                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7129         *(VkStructureType*)forUnmarshaling->pNext = extType;
7130         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7131     }
7132     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType,
7133                    sizeof(VkExternalMemoryHandleTypeFlagBits));
7134 }
7135 
marshal_VkExternalImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,const VkExternalImageFormatProperties * forMarshaling)7136 void marshal_VkExternalImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
7137                                              const VkExternalImageFormatProperties* forMarshaling) {
7138     (void)rootType;
7139     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7140     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7141         rootType = forMarshaling->sType;
7142     }
7143     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7144     marshal_VkExternalMemoryProperties(
7145         vkStream, rootType,
7146         (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
7147 }
7148 
unmarshal_VkExternalImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalImageFormatProperties * forUnmarshaling)7149 void unmarshal_VkExternalImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
7150                                                VkExternalImageFormatProperties* forUnmarshaling) {
7151     (void)rootType;
7152     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7153     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7154         rootType = forUnmarshaling->sType;
7155     }
7156     size_t pNext_size;
7157     pNext_size = vkStream->getBe32();
7158     forUnmarshaling->pNext = nullptr;
7159     if (pNext_size) {
7160         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7161         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7162         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7163         vkStream->alloc((void**)&forUnmarshaling->pNext,
7164                         goldfish_vk_extension_struct_size_with_stream_features(
7165                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7166         *(VkStructureType*)forUnmarshaling->pNext = extType;
7167         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7168     }
7169     unmarshal_VkExternalMemoryProperties(
7170         vkStream, rootType,
7171         (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
7172 }
7173 
marshal_VkPhysicalDeviceExternalBufferInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExternalBufferInfo * forMarshaling)7174 void marshal_VkPhysicalDeviceExternalBufferInfo(
7175     VulkanStream* vkStream, VkStructureType rootType,
7176     const VkPhysicalDeviceExternalBufferInfo* forMarshaling) {
7177     (void)rootType;
7178     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7179     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7180         rootType = forMarshaling->sType;
7181     }
7182     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7183     vkStream->write((VkBufferCreateFlags*)&forMarshaling->flags, sizeof(VkBufferCreateFlags));
7184     vkStream->write((VkBufferUsageFlags*)&forMarshaling->usage, sizeof(VkBufferUsageFlags));
7185     vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType,
7186                     sizeof(VkExternalMemoryHandleTypeFlagBits));
7187 }
7188 
unmarshal_VkPhysicalDeviceExternalBufferInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalBufferInfo * forUnmarshaling)7189 void unmarshal_VkPhysicalDeviceExternalBufferInfo(
7190     VulkanStream* vkStream, VkStructureType rootType,
7191     VkPhysicalDeviceExternalBufferInfo* forUnmarshaling) {
7192     (void)rootType;
7193     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7194     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7195         rootType = forUnmarshaling->sType;
7196     }
7197     size_t pNext_size;
7198     pNext_size = vkStream->getBe32();
7199     forUnmarshaling->pNext = nullptr;
7200     if (pNext_size) {
7201         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7202         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7203         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7204         vkStream->alloc((void**)&forUnmarshaling->pNext,
7205                         goldfish_vk_extension_struct_size_with_stream_features(
7206                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7207         *(VkStructureType*)forUnmarshaling->pNext = extType;
7208         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7209     }
7210     vkStream->read((VkBufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferCreateFlags));
7211     vkStream->read((VkBufferUsageFlags*)&forUnmarshaling->usage, sizeof(VkBufferUsageFlags));
7212     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType,
7213                    sizeof(VkExternalMemoryHandleTypeFlagBits));
7214 }
7215 
marshal_VkExternalBufferProperties(VulkanStream * vkStream,VkStructureType rootType,const VkExternalBufferProperties * forMarshaling)7216 void marshal_VkExternalBufferProperties(VulkanStream* vkStream, VkStructureType rootType,
7217                                         const VkExternalBufferProperties* forMarshaling) {
7218     (void)rootType;
7219     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7220     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7221         rootType = forMarshaling->sType;
7222     }
7223     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7224     marshal_VkExternalMemoryProperties(
7225         vkStream, rootType,
7226         (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
7227 }
7228 
unmarshal_VkExternalBufferProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalBufferProperties * forUnmarshaling)7229 void unmarshal_VkExternalBufferProperties(VulkanStream* vkStream, VkStructureType rootType,
7230                                           VkExternalBufferProperties* forUnmarshaling) {
7231     (void)rootType;
7232     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7233     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7234         rootType = forUnmarshaling->sType;
7235     }
7236     size_t pNext_size;
7237     pNext_size = vkStream->getBe32();
7238     forUnmarshaling->pNext = nullptr;
7239     if (pNext_size) {
7240         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7241         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7242         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7243         vkStream->alloc((void**)&forUnmarshaling->pNext,
7244                         goldfish_vk_extension_struct_size_with_stream_features(
7245                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7246         *(VkStructureType*)forUnmarshaling->pNext = extType;
7247         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7248     }
7249     unmarshal_VkExternalMemoryProperties(
7250         vkStream, rootType,
7251         (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
7252 }
7253 
marshal_VkPhysicalDeviceIDProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceIDProperties * forMarshaling)7254 void marshal_VkPhysicalDeviceIDProperties(VulkanStream* vkStream, VkStructureType rootType,
7255                                           const VkPhysicalDeviceIDProperties* forMarshaling) {
7256     (void)rootType;
7257     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7258     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7259         rootType = forMarshaling->sType;
7260     }
7261     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7262     vkStream->write((uint8_t*)forMarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
7263     vkStream->write((uint8_t*)forMarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
7264     vkStream->write((uint8_t*)forMarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
7265     vkStream->write((uint32_t*)&forMarshaling->deviceNodeMask, sizeof(uint32_t));
7266     vkStream->write((VkBool32*)&forMarshaling->deviceLUIDValid, sizeof(VkBool32));
7267 }
7268 
unmarshal_VkPhysicalDeviceIDProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceIDProperties * forUnmarshaling)7269 void unmarshal_VkPhysicalDeviceIDProperties(VulkanStream* vkStream, VkStructureType rootType,
7270                                             VkPhysicalDeviceIDProperties* forUnmarshaling) {
7271     (void)rootType;
7272     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7273     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7274         rootType = forUnmarshaling->sType;
7275     }
7276     size_t pNext_size;
7277     pNext_size = vkStream->getBe32();
7278     forUnmarshaling->pNext = nullptr;
7279     if (pNext_size) {
7280         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7281         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7282         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7283         vkStream->alloc((void**)&forUnmarshaling->pNext,
7284                         goldfish_vk_extension_struct_size_with_stream_features(
7285                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7286         *(VkStructureType*)forUnmarshaling->pNext = extType;
7287         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7288     }
7289     vkStream->read((uint8_t*)forUnmarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
7290     vkStream->read((uint8_t*)forUnmarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
7291     vkStream->read((uint8_t*)forUnmarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
7292     vkStream->read((uint32_t*)&forUnmarshaling->deviceNodeMask, sizeof(uint32_t));
7293     vkStream->read((VkBool32*)&forUnmarshaling->deviceLUIDValid, sizeof(VkBool32));
7294 }
7295 
marshal_VkExternalMemoryImageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkExternalMemoryImageCreateInfo * forMarshaling)7296 void marshal_VkExternalMemoryImageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7297                                              const VkExternalMemoryImageCreateInfo* forMarshaling) {
7298     (void)rootType;
7299     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7300     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7301         rootType = forMarshaling->sType;
7302     }
7303     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7304     vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes,
7305                     sizeof(VkExternalMemoryHandleTypeFlags));
7306 }
7307 
unmarshal_VkExternalMemoryImageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExternalMemoryImageCreateInfo * forUnmarshaling)7308 void unmarshal_VkExternalMemoryImageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7309                                                VkExternalMemoryImageCreateInfo* forUnmarshaling) {
7310     (void)rootType;
7311     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7312     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7313         rootType = forUnmarshaling->sType;
7314     }
7315     size_t pNext_size;
7316     pNext_size = vkStream->getBe32();
7317     forUnmarshaling->pNext = nullptr;
7318     if (pNext_size) {
7319         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7320         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7321         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7322         vkStream->alloc((void**)&forUnmarshaling->pNext,
7323                         goldfish_vk_extension_struct_size_with_stream_features(
7324                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7325         *(VkStructureType*)forUnmarshaling->pNext = extType;
7326         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7327     }
7328     vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes,
7329                    sizeof(VkExternalMemoryHandleTypeFlags));
7330 }
7331 
marshal_VkExternalMemoryBufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkExternalMemoryBufferCreateInfo * forMarshaling)7332 void marshal_VkExternalMemoryBufferCreateInfo(
7333     VulkanStream* vkStream, VkStructureType rootType,
7334     const VkExternalMemoryBufferCreateInfo* forMarshaling) {
7335     (void)rootType;
7336     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7337     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7338         rootType = forMarshaling->sType;
7339     }
7340     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7341     vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes,
7342                     sizeof(VkExternalMemoryHandleTypeFlags));
7343 }
7344 
unmarshal_VkExternalMemoryBufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExternalMemoryBufferCreateInfo * forUnmarshaling)7345 void unmarshal_VkExternalMemoryBufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7346                                                 VkExternalMemoryBufferCreateInfo* forUnmarshaling) {
7347     (void)rootType;
7348     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7349     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7350         rootType = forUnmarshaling->sType;
7351     }
7352     size_t pNext_size;
7353     pNext_size = vkStream->getBe32();
7354     forUnmarshaling->pNext = nullptr;
7355     if (pNext_size) {
7356         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7357         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7358         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7359         vkStream->alloc((void**)&forUnmarshaling->pNext,
7360                         goldfish_vk_extension_struct_size_with_stream_features(
7361                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7362         *(VkStructureType*)forUnmarshaling->pNext = extType;
7363         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7364     }
7365     vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes,
7366                    sizeof(VkExternalMemoryHandleTypeFlags));
7367 }
7368 
marshal_VkExportMemoryAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkExportMemoryAllocateInfo * forMarshaling)7369 void marshal_VkExportMemoryAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
7370                                         const VkExportMemoryAllocateInfo* forMarshaling) {
7371     (void)rootType;
7372     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7373     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7374         rootType = forMarshaling->sType;
7375     }
7376     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7377     vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes,
7378                     sizeof(VkExternalMemoryHandleTypeFlags));
7379 }
7380 
unmarshal_VkExportMemoryAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExportMemoryAllocateInfo * forUnmarshaling)7381 void unmarshal_VkExportMemoryAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
7382                                           VkExportMemoryAllocateInfo* forUnmarshaling) {
7383     (void)rootType;
7384     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7385     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7386         rootType = forUnmarshaling->sType;
7387     }
7388     size_t pNext_size;
7389     pNext_size = vkStream->getBe32();
7390     forUnmarshaling->pNext = nullptr;
7391     if (pNext_size) {
7392         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7393         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7394         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7395         vkStream->alloc((void**)&forUnmarshaling->pNext,
7396                         goldfish_vk_extension_struct_size_with_stream_features(
7397                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7398         *(VkStructureType*)forUnmarshaling->pNext = extType;
7399         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7400     }
7401     vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes,
7402                    sizeof(VkExternalMemoryHandleTypeFlags));
7403 }
7404 
marshal_VkPhysicalDeviceExternalFenceInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExternalFenceInfo * forMarshaling)7405 void marshal_VkPhysicalDeviceExternalFenceInfo(
7406     VulkanStream* vkStream, VkStructureType rootType,
7407     const VkPhysicalDeviceExternalFenceInfo* forMarshaling) {
7408     (void)rootType;
7409     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7410     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7411         rootType = forMarshaling->sType;
7412     }
7413     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7414     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType,
7415                     sizeof(VkExternalFenceHandleTypeFlagBits));
7416 }
7417 
unmarshal_VkPhysicalDeviceExternalFenceInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalFenceInfo * forUnmarshaling)7418 void unmarshal_VkPhysicalDeviceExternalFenceInfo(
7419     VulkanStream* vkStream, VkStructureType rootType,
7420     VkPhysicalDeviceExternalFenceInfo* forUnmarshaling) {
7421     (void)rootType;
7422     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7423     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7424         rootType = forUnmarshaling->sType;
7425     }
7426     size_t pNext_size;
7427     pNext_size = vkStream->getBe32();
7428     forUnmarshaling->pNext = nullptr;
7429     if (pNext_size) {
7430         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7431         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7432         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7433         vkStream->alloc((void**)&forUnmarshaling->pNext,
7434                         goldfish_vk_extension_struct_size_with_stream_features(
7435                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7436         *(VkStructureType*)forUnmarshaling->pNext = extType;
7437         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7438     }
7439     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType,
7440                    sizeof(VkExternalFenceHandleTypeFlagBits));
7441 }
7442 
marshal_VkExternalFenceProperties(VulkanStream * vkStream,VkStructureType rootType,const VkExternalFenceProperties * forMarshaling)7443 void marshal_VkExternalFenceProperties(VulkanStream* vkStream, VkStructureType rootType,
7444                                        const VkExternalFenceProperties* forMarshaling) {
7445     (void)rootType;
7446     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7447     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7448         rootType = forMarshaling->sType;
7449     }
7450     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7451     vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes,
7452                     sizeof(VkExternalFenceHandleTypeFlags));
7453     vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->compatibleHandleTypes,
7454                     sizeof(VkExternalFenceHandleTypeFlags));
7455     vkStream->write((VkExternalFenceFeatureFlags*)&forMarshaling->externalFenceFeatures,
7456                     sizeof(VkExternalFenceFeatureFlags));
7457 }
7458 
unmarshal_VkExternalFenceProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalFenceProperties * forUnmarshaling)7459 void unmarshal_VkExternalFenceProperties(VulkanStream* vkStream, VkStructureType rootType,
7460                                          VkExternalFenceProperties* forUnmarshaling) {
7461     (void)rootType;
7462     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7463     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7464         rootType = forUnmarshaling->sType;
7465     }
7466     size_t pNext_size;
7467     pNext_size = vkStream->getBe32();
7468     forUnmarshaling->pNext = nullptr;
7469     if (pNext_size) {
7470         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7471         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7472         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7473         vkStream->alloc((void**)&forUnmarshaling->pNext,
7474                         goldfish_vk_extension_struct_size_with_stream_features(
7475                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7476         *(VkStructureType*)forUnmarshaling->pNext = extType;
7477         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7478     }
7479     vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes,
7480                    sizeof(VkExternalFenceHandleTypeFlags));
7481     vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes,
7482                    sizeof(VkExternalFenceHandleTypeFlags));
7483     vkStream->read((VkExternalFenceFeatureFlags*)&forUnmarshaling->externalFenceFeatures,
7484                    sizeof(VkExternalFenceFeatureFlags));
7485 }
7486 
marshal_VkExportFenceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkExportFenceCreateInfo * forMarshaling)7487 void marshal_VkExportFenceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7488                                      const VkExportFenceCreateInfo* forMarshaling) {
7489     (void)rootType;
7490     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7491     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7492         rootType = forMarshaling->sType;
7493     }
7494     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7495     vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->handleTypes,
7496                     sizeof(VkExternalFenceHandleTypeFlags));
7497 }
7498 
unmarshal_VkExportFenceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExportFenceCreateInfo * forUnmarshaling)7499 void unmarshal_VkExportFenceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7500                                        VkExportFenceCreateInfo* forUnmarshaling) {
7501     (void)rootType;
7502     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7503     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7504         rootType = forUnmarshaling->sType;
7505     }
7506     size_t pNext_size;
7507     pNext_size = vkStream->getBe32();
7508     forUnmarshaling->pNext = nullptr;
7509     if (pNext_size) {
7510         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7511         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7512         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7513         vkStream->alloc((void**)&forUnmarshaling->pNext,
7514                         goldfish_vk_extension_struct_size_with_stream_features(
7515                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7516         *(VkStructureType*)forUnmarshaling->pNext = extType;
7517         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7518     }
7519     vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->handleTypes,
7520                    sizeof(VkExternalFenceHandleTypeFlags));
7521 }
7522 
marshal_VkExportSemaphoreCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkExportSemaphoreCreateInfo * forMarshaling)7523 void marshal_VkExportSemaphoreCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7524                                          const VkExportSemaphoreCreateInfo* forMarshaling) {
7525     (void)rootType;
7526     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7527     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7528         rootType = forMarshaling->sType;
7529     }
7530     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7531     vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->handleTypes,
7532                     sizeof(VkExternalSemaphoreHandleTypeFlags));
7533 }
7534 
unmarshal_VkExportSemaphoreCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExportSemaphoreCreateInfo * forUnmarshaling)7535 void unmarshal_VkExportSemaphoreCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7536                                            VkExportSemaphoreCreateInfo* forUnmarshaling) {
7537     (void)rootType;
7538     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7539     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7540         rootType = forUnmarshaling->sType;
7541     }
7542     size_t pNext_size;
7543     pNext_size = vkStream->getBe32();
7544     forUnmarshaling->pNext = nullptr;
7545     if (pNext_size) {
7546         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7547         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7548         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7549         vkStream->alloc((void**)&forUnmarshaling->pNext,
7550                         goldfish_vk_extension_struct_size_with_stream_features(
7551                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7552         *(VkStructureType*)forUnmarshaling->pNext = extType;
7553         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7554     }
7555     vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->handleTypes,
7556                    sizeof(VkExternalSemaphoreHandleTypeFlags));
7557 }
7558 
marshal_VkPhysicalDeviceExternalSemaphoreInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExternalSemaphoreInfo * forMarshaling)7559 void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
7560     VulkanStream* vkStream, VkStructureType rootType,
7561     const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling) {
7562     (void)rootType;
7563     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7564     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7565         rootType = forMarshaling->sType;
7566     }
7567     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7568     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType,
7569                     sizeof(VkExternalSemaphoreHandleTypeFlagBits));
7570 }
7571 
unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalSemaphoreInfo * forUnmarshaling)7572 void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
7573     VulkanStream* vkStream, VkStructureType rootType,
7574     VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling) {
7575     (void)rootType;
7576     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7577     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7578         rootType = forUnmarshaling->sType;
7579     }
7580     size_t pNext_size;
7581     pNext_size = vkStream->getBe32();
7582     forUnmarshaling->pNext = nullptr;
7583     if (pNext_size) {
7584         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7585         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7586         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7587         vkStream->alloc((void**)&forUnmarshaling->pNext,
7588                         goldfish_vk_extension_struct_size_with_stream_features(
7589                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7590         *(VkStructureType*)forUnmarshaling->pNext = extType;
7591         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7592     }
7593     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType,
7594                    sizeof(VkExternalSemaphoreHandleTypeFlagBits));
7595 }
7596 
marshal_VkExternalSemaphoreProperties(VulkanStream * vkStream,VkStructureType rootType,const VkExternalSemaphoreProperties * forMarshaling)7597 void marshal_VkExternalSemaphoreProperties(VulkanStream* vkStream, VkStructureType rootType,
7598                                            const VkExternalSemaphoreProperties* forMarshaling) {
7599     (void)rootType;
7600     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7601     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7602         rootType = forMarshaling->sType;
7603     }
7604     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7605     vkStream->write(
7606         (VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes,
7607         sizeof(VkExternalSemaphoreHandleTypeFlags));
7608     vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->compatibleHandleTypes,
7609                     sizeof(VkExternalSemaphoreHandleTypeFlags));
7610     vkStream->write((VkExternalSemaphoreFeatureFlags*)&forMarshaling->externalSemaphoreFeatures,
7611                     sizeof(VkExternalSemaphoreFeatureFlags));
7612 }
7613 
unmarshal_VkExternalSemaphoreProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalSemaphoreProperties * forUnmarshaling)7614 void unmarshal_VkExternalSemaphoreProperties(VulkanStream* vkStream, VkStructureType rootType,
7615                                              VkExternalSemaphoreProperties* forUnmarshaling) {
7616     (void)rootType;
7617     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7618     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7619         rootType = forUnmarshaling->sType;
7620     }
7621     size_t pNext_size;
7622     pNext_size = vkStream->getBe32();
7623     forUnmarshaling->pNext = nullptr;
7624     if (pNext_size) {
7625         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7626         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7627         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7628         vkStream->alloc((void**)&forUnmarshaling->pNext,
7629                         goldfish_vk_extension_struct_size_with_stream_features(
7630                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7631         *(VkStructureType*)forUnmarshaling->pNext = extType;
7632         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7633     }
7634     vkStream->read(
7635         (VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes,
7636         sizeof(VkExternalSemaphoreHandleTypeFlags));
7637     vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes,
7638                    sizeof(VkExternalSemaphoreHandleTypeFlags));
7639     vkStream->read((VkExternalSemaphoreFeatureFlags*)&forUnmarshaling->externalSemaphoreFeatures,
7640                    sizeof(VkExternalSemaphoreFeatureFlags));
7641 }
7642 
marshal_VkPhysicalDeviceMaintenance3Properties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMaintenance3Properties * forMarshaling)7643 void marshal_VkPhysicalDeviceMaintenance3Properties(
7644     VulkanStream* vkStream, VkStructureType rootType,
7645     const VkPhysicalDeviceMaintenance3Properties* forMarshaling) {
7646     (void)rootType;
7647     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7648     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7649         rootType = forMarshaling->sType;
7650     }
7651     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7652     vkStream->write((uint32_t*)&forMarshaling->maxPerSetDescriptors, sizeof(uint32_t));
7653     vkStream->write((VkDeviceSize*)&forMarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
7654 }
7655 
unmarshal_VkPhysicalDeviceMaintenance3Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance3Properties * forUnmarshaling)7656 void unmarshal_VkPhysicalDeviceMaintenance3Properties(
7657     VulkanStream* vkStream, VkStructureType rootType,
7658     VkPhysicalDeviceMaintenance3Properties* forUnmarshaling) {
7659     (void)rootType;
7660     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7661     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7662         rootType = forUnmarshaling->sType;
7663     }
7664     size_t pNext_size;
7665     pNext_size = vkStream->getBe32();
7666     forUnmarshaling->pNext = nullptr;
7667     if (pNext_size) {
7668         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7669         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7670         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7671         vkStream->alloc((void**)&forUnmarshaling->pNext,
7672                         goldfish_vk_extension_struct_size_with_stream_features(
7673                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7674         *(VkStructureType*)forUnmarshaling->pNext = extType;
7675         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7676     }
7677     vkStream->read((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, sizeof(uint32_t));
7678     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
7679 }
7680 
marshal_VkDescriptorSetLayoutSupport(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetLayoutSupport * forMarshaling)7681 void marshal_VkDescriptorSetLayoutSupport(VulkanStream* vkStream, VkStructureType rootType,
7682                                           const VkDescriptorSetLayoutSupport* forMarshaling) {
7683     (void)rootType;
7684     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7685     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7686         rootType = forMarshaling->sType;
7687     }
7688     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7689     vkStream->write((VkBool32*)&forMarshaling->supported, sizeof(VkBool32));
7690 }
7691 
unmarshal_VkDescriptorSetLayoutSupport(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutSupport * forUnmarshaling)7692 void unmarshal_VkDescriptorSetLayoutSupport(VulkanStream* vkStream, VkStructureType rootType,
7693                                             VkDescriptorSetLayoutSupport* forUnmarshaling) {
7694     (void)rootType;
7695     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7696     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7697         rootType = forUnmarshaling->sType;
7698     }
7699     size_t pNext_size;
7700     pNext_size = vkStream->getBe32();
7701     forUnmarshaling->pNext = nullptr;
7702     if (pNext_size) {
7703         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7704         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7705         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7706         vkStream->alloc((void**)&forUnmarshaling->pNext,
7707                         goldfish_vk_extension_struct_size_with_stream_features(
7708                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7709         *(VkStructureType*)forUnmarshaling->pNext = extType;
7710         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7711     }
7712     vkStream->read((VkBool32*)&forUnmarshaling->supported, sizeof(VkBool32));
7713 }
7714 
marshal_VkPhysicalDeviceShaderDrawParametersFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderDrawParametersFeatures * forMarshaling)7715 void marshal_VkPhysicalDeviceShaderDrawParametersFeatures(
7716     VulkanStream* vkStream, VkStructureType rootType,
7717     const VkPhysicalDeviceShaderDrawParametersFeatures* forMarshaling) {
7718     (void)rootType;
7719     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7720     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7721         rootType = forMarshaling->sType;
7722     }
7723     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7724     vkStream->write((VkBool32*)&forMarshaling->shaderDrawParameters, sizeof(VkBool32));
7725 }
7726 
unmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderDrawParametersFeatures * forUnmarshaling)7727 void unmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(
7728     VulkanStream* vkStream, VkStructureType rootType,
7729     VkPhysicalDeviceShaderDrawParametersFeatures* forUnmarshaling) {
7730     (void)rootType;
7731     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7732     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7733         rootType = forUnmarshaling->sType;
7734     }
7735     size_t pNext_size;
7736     pNext_size = vkStream->getBe32();
7737     forUnmarshaling->pNext = nullptr;
7738     if (pNext_size) {
7739         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7740         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7741         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7742         vkStream->alloc((void**)&forUnmarshaling->pNext,
7743                         goldfish_vk_extension_struct_size_with_stream_features(
7744                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7745         *(VkStructureType*)forUnmarshaling->pNext = extType;
7746         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7747     }
7748     vkStream->read((VkBool32*)&forUnmarshaling->shaderDrawParameters, sizeof(VkBool32));
7749 }
7750 
7751 #endif
7752 #ifdef VK_VERSION_1_2
marshal_VkPhysicalDeviceVulkan11Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkan11Features * forMarshaling)7753 void marshal_VkPhysicalDeviceVulkan11Features(
7754     VulkanStream* vkStream, VkStructureType rootType,
7755     const VkPhysicalDeviceVulkan11Features* forMarshaling) {
7756     (void)rootType;
7757     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7758     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7759         rootType = forMarshaling->sType;
7760     }
7761     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7762     vkStream->write((VkBool32*)&forMarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
7763     vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer16BitAccess,
7764                     sizeof(VkBool32));
7765     vkStream->write((VkBool32*)&forMarshaling->storagePushConstant16, sizeof(VkBool32));
7766     vkStream->write((VkBool32*)&forMarshaling->storageInputOutput16, sizeof(VkBool32));
7767     vkStream->write((VkBool32*)&forMarshaling->multiview, sizeof(VkBool32));
7768     vkStream->write((VkBool32*)&forMarshaling->multiviewGeometryShader, sizeof(VkBool32));
7769     vkStream->write((VkBool32*)&forMarshaling->multiviewTessellationShader, sizeof(VkBool32));
7770     vkStream->write((VkBool32*)&forMarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
7771     vkStream->write((VkBool32*)&forMarshaling->variablePointers, sizeof(VkBool32));
7772     vkStream->write((VkBool32*)&forMarshaling->protectedMemory, sizeof(VkBool32));
7773     vkStream->write((VkBool32*)&forMarshaling->samplerYcbcrConversion, sizeof(VkBool32));
7774     vkStream->write((VkBool32*)&forMarshaling->shaderDrawParameters, sizeof(VkBool32));
7775 }
7776 
unmarshal_VkPhysicalDeviceVulkan11Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan11Features * forUnmarshaling)7777 void unmarshal_VkPhysicalDeviceVulkan11Features(VulkanStream* vkStream, VkStructureType rootType,
7778                                                 VkPhysicalDeviceVulkan11Features* forUnmarshaling) {
7779     (void)rootType;
7780     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7781     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7782         rootType = forUnmarshaling->sType;
7783     }
7784     size_t pNext_size;
7785     pNext_size = vkStream->getBe32();
7786     forUnmarshaling->pNext = nullptr;
7787     if (pNext_size) {
7788         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7789         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7790         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7791         vkStream->alloc((void**)&forUnmarshaling->pNext,
7792                         goldfish_vk_extension_struct_size_with_stream_features(
7793                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7794         *(VkStructureType*)forUnmarshaling->pNext = extType;
7795         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7796     }
7797     vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
7798     vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess,
7799                    sizeof(VkBool32));
7800     vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant16, sizeof(VkBool32));
7801     vkStream->read((VkBool32*)&forUnmarshaling->storageInputOutput16, sizeof(VkBool32));
7802     vkStream->read((VkBool32*)&forUnmarshaling->multiview, sizeof(VkBool32));
7803     vkStream->read((VkBool32*)&forUnmarshaling->multiviewGeometryShader, sizeof(VkBool32));
7804     vkStream->read((VkBool32*)&forUnmarshaling->multiviewTessellationShader, sizeof(VkBool32));
7805     vkStream->read((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
7806     vkStream->read((VkBool32*)&forUnmarshaling->variablePointers, sizeof(VkBool32));
7807     vkStream->read((VkBool32*)&forUnmarshaling->protectedMemory, sizeof(VkBool32));
7808     vkStream->read((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, sizeof(VkBool32));
7809     vkStream->read((VkBool32*)&forUnmarshaling->shaderDrawParameters, sizeof(VkBool32));
7810 }
7811 
marshal_VkPhysicalDeviceVulkan11Properties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkan11Properties * forMarshaling)7812 void marshal_VkPhysicalDeviceVulkan11Properties(
7813     VulkanStream* vkStream, VkStructureType rootType,
7814     const VkPhysicalDeviceVulkan11Properties* forMarshaling) {
7815     (void)rootType;
7816     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7817     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7818         rootType = forMarshaling->sType;
7819     }
7820     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7821     vkStream->write((uint8_t*)forMarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
7822     vkStream->write((uint8_t*)forMarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
7823     vkStream->write((uint8_t*)forMarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
7824     vkStream->write((uint32_t*)&forMarshaling->deviceNodeMask, sizeof(uint32_t));
7825     vkStream->write((VkBool32*)&forMarshaling->deviceLUIDValid, sizeof(VkBool32));
7826     vkStream->write((uint32_t*)&forMarshaling->subgroupSize, sizeof(uint32_t));
7827     vkStream->write((VkShaderStageFlags*)&forMarshaling->subgroupSupportedStages,
7828                     sizeof(VkShaderStageFlags));
7829     vkStream->write((VkSubgroupFeatureFlags*)&forMarshaling->subgroupSupportedOperations,
7830                     sizeof(VkSubgroupFeatureFlags));
7831     vkStream->write((VkBool32*)&forMarshaling->subgroupQuadOperationsInAllStages, sizeof(VkBool32));
7832     vkStream->write((VkPointClippingBehavior*)&forMarshaling->pointClippingBehavior,
7833                     sizeof(VkPointClippingBehavior));
7834     vkStream->write((uint32_t*)&forMarshaling->maxMultiviewViewCount, sizeof(uint32_t));
7835     vkStream->write((uint32_t*)&forMarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
7836     vkStream->write((VkBool32*)&forMarshaling->protectedNoFault, sizeof(VkBool32));
7837     vkStream->write((uint32_t*)&forMarshaling->maxPerSetDescriptors, sizeof(uint32_t));
7838     vkStream->write((VkDeviceSize*)&forMarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
7839 }
7840 
unmarshal_VkPhysicalDeviceVulkan11Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan11Properties * forUnmarshaling)7841 void unmarshal_VkPhysicalDeviceVulkan11Properties(
7842     VulkanStream* vkStream, VkStructureType rootType,
7843     VkPhysicalDeviceVulkan11Properties* forUnmarshaling) {
7844     (void)rootType;
7845     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7846     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7847         rootType = forUnmarshaling->sType;
7848     }
7849     size_t pNext_size;
7850     pNext_size = vkStream->getBe32();
7851     forUnmarshaling->pNext = nullptr;
7852     if (pNext_size) {
7853         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7854         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7855         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7856         vkStream->alloc((void**)&forUnmarshaling->pNext,
7857                         goldfish_vk_extension_struct_size_with_stream_features(
7858                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7859         *(VkStructureType*)forUnmarshaling->pNext = extType;
7860         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7861     }
7862     vkStream->read((uint8_t*)forUnmarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
7863     vkStream->read((uint8_t*)forUnmarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
7864     vkStream->read((uint8_t*)forUnmarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
7865     vkStream->read((uint32_t*)&forUnmarshaling->deviceNodeMask, sizeof(uint32_t));
7866     vkStream->read((VkBool32*)&forUnmarshaling->deviceLUIDValid, sizeof(VkBool32));
7867     vkStream->read((uint32_t*)&forUnmarshaling->subgroupSize, sizeof(uint32_t));
7868     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->subgroupSupportedStages,
7869                    sizeof(VkShaderStageFlags));
7870     vkStream->read((VkSubgroupFeatureFlags*)&forUnmarshaling->subgroupSupportedOperations,
7871                    sizeof(VkSubgroupFeatureFlags));
7872     vkStream->read((VkBool32*)&forUnmarshaling->subgroupQuadOperationsInAllStages,
7873                    sizeof(VkBool32));
7874     vkStream->read((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior,
7875                    sizeof(VkPointClippingBehavior));
7876     vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, sizeof(uint32_t));
7877     vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
7878     vkStream->read((VkBool32*)&forUnmarshaling->protectedNoFault, sizeof(VkBool32));
7879     vkStream->read((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, sizeof(uint32_t));
7880     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
7881 }
7882 
marshal_VkPhysicalDeviceVulkan12Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkan12Features * forMarshaling)7883 void marshal_VkPhysicalDeviceVulkan12Features(
7884     VulkanStream* vkStream, VkStructureType rootType,
7885     const VkPhysicalDeviceVulkan12Features* forMarshaling) {
7886     (void)rootType;
7887     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
7888     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7889         rootType = forMarshaling->sType;
7890     }
7891     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
7892     vkStream->write((VkBool32*)&forMarshaling->samplerMirrorClampToEdge, sizeof(VkBool32));
7893     vkStream->write((VkBool32*)&forMarshaling->drawIndirectCount, sizeof(VkBool32));
7894     vkStream->write((VkBool32*)&forMarshaling->storageBuffer8BitAccess, sizeof(VkBool32));
7895     vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer8BitAccess, sizeof(VkBool32));
7896     vkStream->write((VkBool32*)&forMarshaling->storagePushConstant8, sizeof(VkBool32));
7897     vkStream->write((VkBool32*)&forMarshaling->shaderBufferInt64Atomics, sizeof(VkBool32));
7898     vkStream->write((VkBool32*)&forMarshaling->shaderSharedInt64Atomics, sizeof(VkBool32));
7899     vkStream->write((VkBool32*)&forMarshaling->shaderFloat16, sizeof(VkBool32));
7900     vkStream->write((VkBool32*)&forMarshaling->shaderInt8, sizeof(VkBool32));
7901     vkStream->write((VkBool32*)&forMarshaling->descriptorIndexing, sizeof(VkBool32));
7902     vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayDynamicIndexing,
7903                     sizeof(VkBool32));
7904     vkStream->write((VkBool32*)&forMarshaling->shaderUniformTexelBufferArrayDynamicIndexing,
7905                     sizeof(VkBool32));
7906     vkStream->write((VkBool32*)&forMarshaling->shaderStorageTexelBufferArrayDynamicIndexing,
7907                     sizeof(VkBool32));
7908     vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayNonUniformIndexing,
7909                     sizeof(VkBool32));
7910     vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayNonUniformIndexing,
7911                     sizeof(VkBool32));
7912     vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayNonUniformIndexing,
7913                     sizeof(VkBool32));
7914     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayNonUniformIndexing,
7915                     sizeof(VkBool32));
7916     vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayNonUniformIndexing,
7917                     sizeof(VkBool32));
7918     vkStream->write((VkBool32*)&forMarshaling->shaderUniformTexelBufferArrayNonUniformIndexing,
7919                     sizeof(VkBool32));
7920     vkStream->write((VkBool32*)&forMarshaling->shaderStorageTexelBufferArrayNonUniformIndexing,
7921                     sizeof(VkBool32));
7922     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUniformBufferUpdateAfterBind,
7923                     sizeof(VkBool32));
7924     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingSampledImageUpdateAfterBind,
7925                     sizeof(VkBool32));
7926     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageImageUpdateAfterBind,
7927                     sizeof(VkBool32));
7928     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageBufferUpdateAfterBind,
7929                     sizeof(VkBool32));
7930     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind,
7931                     sizeof(VkBool32));
7932     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind,
7933                     sizeof(VkBool32));
7934     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUpdateUnusedWhilePending,
7935                     sizeof(VkBool32));
7936     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingPartiallyBound, sizeof(VkBool32));
7937     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingVariableDescriptorCount,
7938                     sizeof(VkBool32));
7939     vkStream->write((VkBool32*)&forMarshaling->runtimeDescriptorArray, sizeof(VkBool32));
7940     vkStream->write((VkBool32*)&forMarshaling->samplerFilterMinmax, sizeof(VkBool32));
7941     vkStream->write((VkBool32*)&forMarshaling->scalarBlockLayout, sizeof(VkBool32));
7942     vkStream->write((VkBool32*)&forMarshaling->imagelessFramebuffer, sizeof(VkBool32));
7943     vkStream->write((VkBool32*)&forMarshaling->uniformBufferStandardLayout, sizeof(VkBool32));
7944     vkStream->write((VkBool32*)&forMarshaling->shaderSubgroupExtendedTypes, sizeof(VkBool32));
7945     vkStream->write((VkBool32*)&forMarshaling->separateDepthStencilLayouts, sizeof(VkBool32));
7946     vkStream->write((VkBool32*)&forMarshaling->hostQueryReset, sizeof(VkBool32));
7947     vkStream->write((VkBool32*)&forMarshaling->timelineSemaphore, sizeof(VkBool32));
7948     vkStream->write((VkBool32*)&forMarshaling->bufferDeviceAddress, sizeof(VkBool32));
7949     vkStream->write((VkBool32*)&forMarshaling->bufferDeviceAddressCaptureReplay, sizeof(VkBool32));
7950     vkStream->write((VkBool32*)&forMarshaling->bufferDeviceAddressMultiDevice, sizeof(VkBool32));
7951     vkStream->write((VkBool32*)&forMarshaling->vulkanMemoryModel, sizeof(VkBool32));
7952     vkStream->write((VkBool32*)&forMarshaling->vulkanMemoryModelDeviceScope, sizeof(VkBool32));
7953     vkStream->write((VkBool32*)&forMarshaling->vulkanMemoryModelAvailabilityVisibilityChains,
7954                     sizeof(VkBool32));
7955     vkStream->write((VkBool32*)&forMarshaling->shaderOutputViewportIndex, sizeof(VkBool32));
7956     vkStream->write((VkBool32*)&forMarshaling->shaderOutputLayer, sizeof(VkBool32));
7957     vkStream->write((VkBool32*)&forMarshaling->subgroupBroadcastDynamicId, sizeof(VkBool32));
7958 }
7959 
unmarshal_VkPhysicalDeviceVulkan12Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan12Features * forUnmarshaling)7960 void unmarshal_VkPhysicalDeviceVulkan12Features(VulkanStream* vkStream, VkStructureType rootType,
7961                                                 VkPhysicalDeviceVulkan12Features* forUnmarshaling) {
7962     (void)rootType;
7963     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
7964     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7965         rootType = forUnmarshaling->sType;
7966     }
7967     size_t pNext_size;
7968     pNext_size = vkStream->getBe32();
7969     forUnmarshaling->pNext = nullptr;
7970     if (pNext_size) {
7971         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7972         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
7973         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7974         vkStream->alloc((void**)&forUnmarshaling->pNext,
7975                         goldfish_vk_extension_struct_size_with_stream_features(
7976                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7977         *(VkStructureType*)forUnmarshaling->pNext = extType;
7978         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
7979     }
7980     vkStream->read((VkBool32*)&forUnmarshaling->samplerMirrorClampToEdge, sizeof(VkBool32));
7981     vkStream->read((VkBool32*)&forUnmarshaling->drawIndirectCount, sizeof(VkBool32));
7982     vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer8BitAccess, sizeof(VkBool32));
7983     vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer8BitAccess,
7984                    sizeof(VkBool32));
7985     vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant8, sizeof(VkBool32));
7986     vkStream->read((VkBool32*)&forUnmarshaling->shaderBufferInt64Atomics, sizeof(VkBool32));
7987     vkStream->read((VkBool32*)&forUnmarshaling->shaderSharedInt64Atomics, sizeof(VkBool32));
7988     vkStream->read((VkBool32*)&forUnmarshaling->shaderFloat16, sizeof(VkBool32));
7989     vkStream->read((VkBool32*)&forUnmarshaling->shaderInt8, sizeof(VkBool32));
7990     vkStream->read((VkBool32*)&forUnmarshaling->descriptorIndexing, sizeof(VkBool32));
7991     vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayDynamicIndexing,
7992                    sizeof(VkBool32));
7993     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayDynamicIndexing,
7994                    sizeof(VkBool32));
7995     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayDynamicIndexing,
7996                    sizeof(VkBool32));
7997     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexing,
7998                    sizeof(VkBool32));
7999     vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexing,
8000                    sizeof(VkBool32));
8001     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexing,
8002                    sizeof(VkBool32));
8003     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexing,
8004                    sizeof(VkBool32));
8005     vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexing,
8006                    sizeof(VkBool32));
8007     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayNonUniformIndexing,
8008                    sizeof(VkBool32));
8009     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayNonUniformIndexing,
8010                    sizeof(VkBool32));
8011     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUniformBufferUpdateAfterBind,
8012                    sizeof(VkBool32));
8013     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingSampledImageUpdateAfterBind,
8014                    sizeof(VkBool32));
8015     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageImageUpdateAfterBind,
8016                    sizeof(VkBool32));
8017     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageBufferUpdateAfterBind,
8018                    sizeof(VkBool32));
8019     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind,
8020                    sizeof(VkBool32));
8021     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind,
8022                    sizeof(VkBool32));
8023     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUpdateUnusedWhilePending,
8024                    sizeof(VkBool32));
8025     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingPartiallyBound, sizeof(VkBool32));
8026     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingVariableDescriptorCount,
8027                    sizeof(VkBool32));
8028     vkStream->read((VkBool32*)&forUnmarshaling->runtimeDescriptorArray, sizeof(VkBool32));
8029     vkStream->read((VkBool32*)&forUnmarshaling->samplerFilterMinmax, sizeof(VkBool32));
8030     vkStream->read((VkBool32*)&forUnmarshaling->scalarBlockLayout, sizeof(VkBool32));
8031     vkStream->read((VkBool32*)&forUnmarshaling->imagelessFramebuffer, sizeof(VkBool32));
8032     vkStream->read((VkBool32*)&forUnmarshaling->uniformBufferStandardLayout, sizeof(VkBool32));
8033     vkStream->read((VkBool32*)&forUnmarshaling->shaderSubgroupExtendedTypes, sizeof(VkBool32));
8034     vkStream->read((VkBool32*)&forUnmarshaling->separateDepthStencilLayouts, sizeof(VkBool32));
8035     vkStream->read((VkBool32*)&forUnmarshaling->hostQueryReset, sizeof(VkBool32));
8036     vkStream->read((VkBool32*)&forUnmarshaling->timelineSemaphore, sizeof(VkBool32));
8037     vkStream->read((VkBool32*)&forUnmarshaling->bufferDeviceAddress, sizeof(VkBool32));
8038     vkStream->read((VkBool32*)&forUnmarshaling->bufferDeviceAddressCaptureReplay, sizeof(VkBool32));
8039     vkStream->read((VkBool32*)&forUnmarshaling->bufferDeviceAddressMultiDevice, sizeof(VkBool32));
8040     vkStream->read((VkBool32*)&forUnmarshaling->vulkanMemoryModel, sizeof(VkBool32));
8041     vkStream->read((VkBool32*)&forUnmarshaling->vulkanMemoryModelDeviceScope, sizeof(VkBool32));
8042     vkStream->read((VkBool32*)&forUnmarshaling->vulkanMemoryModelAvailabilityVisibilityChains,
8043                    sizeof(VkBool32));
8044     vkStream->read((VkBool32*)&forUnmarshaling->shaderOutputViewportIndex, sizeof(VkBool32));
8045     vkStream->read((VkBool32*)&forUnmarshaling->shaderOutputLayer, sizeof(VkBool32));
8046     vkStream->read((VkBool32*)&forUnmarshaling->subgroupBroadcastDynamicId, sizeof(VkBool32));
8047 }
8048 
marshal_VkConformanceVersion(VulkanStream * vkStream,VkStructureType rootType,const VkConformanceVersion * forMarshaling)8049 void marshal_VkConformanceVersion(VulkanStream* vkStream, VkStructureType rootType,
8050                                   const VkConformanceVersion* forMarshaling) {
8051     (void)rootType;
8052     vkStream->write((uint8_t*)&forMarshaling->major, sizeof(uint8_t));
8053     vkStream->write((uint8_t*)&forMarshaling->minor, sizeof(uint8_t));
8054     vkStream->write((uint8_t*)&forMarshaling->subminor, sizeof(uint8_t));
8055     vkStream->write((uint8_t*)&forMarshaling->patch, sizeof(uint8_t));
8056 }
8057 
unmarshal_VkConformanceVersion(VulkanStream * vkStream,VkStructureType rootType,VkConformanceVersion * forUnmarshaling)8058 void unmarshal_VkConformanceVersion(VulkanStream* vkStream, VkStructureType rootType,
8059                                     VkConformanceVersion* forUnmarshaling) {
8060     (void)rootType;
8061     vkStream->read((uint8_t*)&forUnmarshaling->major, sizeof(uint8_t));
8062     vkStream->read((uint8_t*)&forUnmarshaling->minor, sizeof(uint8_t));
8063     vkStream->read((uint8_t*)&forUnmarshaling->subminor, sizeof(uint8_t));
8064     vkStream->read((uint8_t*)&forUnmarshaling->patch, sizeof(uint8_t));
8065 }
8066 
marshal_VkPhysicalDeviceVulkan12Properties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkan12Properties * forMarshaling)8067 void marshal_VkPhysicalDeviceVulkan12Properties(
8068     VulkanStream* vkStream, VkStructureType rootType,
8069     const VkPhysicalDeviceVulkan12Properties* forMarshaling) {
8070     (void)rootType;
8071     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8072     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8073         rootType = forMarshaling->sType;
8074     }
8075     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8076     vkStream->write((VkDriverId*)&forMarshaling->driverID, sizeof(VkDriverId));
8077     vkStream->write((char*)forMarshaling->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
8078     vkStream->write((char*)forMarshaling->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
8079     marshal_VkConformanceVersion(vkStream, rootType,
8080                                  (VkConformanceVersion*)(&forMarshaling->conformanceVersion));
8081     vkStream->write((VkShaderFloatControlsIndependence*)&forMarshaling->denormBehaviorIndependence,
8082                     sizeof(VkShaderFloatControlsIndependence));
8083     vkStream->write((VkShaderFloatControlsIndependence*)&forMarshaling->roundingModeIndependence,
8084                     sizeof(VkShaderFloatControlsIndependence));
8085     vkStream->write((VkBool32*)&forMarshaling->shaderSignedZeroInfNanPreserveFloat16,
8086                     sizeof(VkBool32));
8087     vkStream->write((VkBool32*)&forMarshaling->shaderSignedZeroInfNanPreserveFloat32,
8088                     sizeof(VkBool32));
8089     vkStream->write((VkBool32*)&forMarshaling->shaderSignedZeroInfNanPreserveFloat64,
8090                     sizeof(VkBool32));
8091     vkStream->write((VkBool32*)&forMarshaling->shaderDenormPreserveFloat16, sizeof(VkBool32));
8092     vkStream->write((VkBool32*)&forMarshaling->shaderDenormPreserveFloat32, sizeof(VkBool32));
8093     vkStream->write((VkBool32*)&forMarshaling->shaderDenormPreserveFloat64, sizeof(VkBool32));
8094     vkStream->write((VkBool32*)&forMarshaling->shaderDenormFlushToZeroFloat16, sizeof(VkBool32));
8095     vkStream->write((VkBool32*)&forMarshaling->shaderDenormFlushToZeroFloat32, sizeof(VkBool32));
8096     vkStream->write((VkBool32*)&forMarshaling->shaderDenormFlushToZeroFloat64, sizeof(VkBool32));
8097     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTEFloat16, sizeof(VkBool32));
8098     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTEFloat32, sizeof(VkBool32));
8099     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTEFloat64, sizeof(VkBool32));
8100     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTZFloat16, sizeof(VkBool32));
8101     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTZFloat32, sizeof(VkBool32));
8102     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTZFloat64, sizeof(VkBool32));
8103     vkStream->write((uint32_t*)&forMarshaling->maxUpdateAfterBindDescriptorsInAllPools,
8104                     sizeof(uint32_t));
8105     vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayNonUniformIndexingNative,
8106                     sizeof(VkBool32));
8107     vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayNonUniformIndexingNative,
8108                     sizeof(VkBool32));
8109     vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayNonUniformIndexingNative,
8110                     sizeof(VkBool32));
8111     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayNonUniformIndexingNative,
8112                     sizeof(VkBool32));
8113     vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayNonUniformIndexingNative,
8114                     sizeof(VkBool32));
8115     vkStream->write((VkBool32*)&forMarshaling->robustBufferAccessUpdateAfterBind, sizeof(VkBool32));
8116     vkStream->write((VkBool32*)&forMarshaling->quadDivergentImplicitLod, sizeof(VkBool32));
8117     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindSamplers,
8118                     sizeof(uint32_t));
8119     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers,
8120                     sizeof(uint32_t));
8121     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers,
8122                     sizeof(uint32_t));
8123     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages,
8124                     sizeof(uint32_t));
8125     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages,
8126                     sizeof(uint32_t));
8127     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments,
8128                     sizeof(uint32_t));
8129     vkStream->write((uint32_t*)&forMarshaling->maxPerStageUpdateAfterBindResources,
8130                     sizeof(uint32_t));
8131     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindSamplers,
8132                     sizeof(uint32_t));
8133     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers,
8134                     sizeof(uint32_t));
8135     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
8136                     sizeof(uint32_t));
8137     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers,
8138                     sizeof(uint32_t));
8139     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
8140                     sizeof(uint32_t));
8141     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindSampledImages,
8142                     sizeof(uint32_t));
8143     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageImages,
8144                     sizeof(uint32_t));
8145     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindInputAttachments,
8146                     sizeof(uint32_t));
8147     vkStream->write((VkResolveModeFlags*)&forMarshaling->supportedDepthResolveModes,
8148                     sizeof(VkResolveModeFlags));
8149     vkStream->write((VkResolveModeFlags*)&forMarshaling->supportedStencilResolveModes,
8150                     sizeof(VkResolveModeFlags));
8151     vkStream->write((VkBool32*)&forMarshaling->independentResolveNone, sizeof(VkBool32));
8152     vkStream->write((VkBool32*)&forMarshaling->independentResolve, sizeof(VkBool32));
8153     vkStream->write((VkBool32*)&forMarshaling->filterMinmaxSingleComponentFormats,
8154                     sizeof(VkBool32));
8155     vkStream->write((VkBool32*)&forMarshaling->filterMinmaxImageComponentMapping, sizeof(VkBool32));
8156     vkStream->write((uint64_t*)&forMarshaling->maxTimelineSemaphoreValueDifference,
8157                     sizeof(uint64_t));
8158     vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferIntegerColorSampleCounts,
8159                     sizeof(VkSampleCountFlags));
8160 }
8161 
unmarshal_VkPhysicalDeviceVulkan12Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan12Properties * forUnmarshaling)8162 void unmarshal_VkPhysicalDeviceVulkan12Properties(
8163     VulkanStream* vkStream, VkStructureType rootType,
8164     VkPhysicalDeviceVulkan12Properties* forUnmarshaling) {
8165     (void)rootType;
8166     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8167     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8168         rootType = forUnmarshaling->sType;
8169     }
8170     size_t pNext_size;
8171     pNext_size = vkStream->getBe32();
8172     forUnmarshaling->pNext = nullptr;
8173     if (pNext_size) {
8174         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8175         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8176         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8177         vkStream->alloc((void**)&forUnmarshaling->pNext,
8178                         goldfish_vk_extension_struct_size_with_stream_features(
8179                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8180         *(VkStructureType*)forUnmarshaling->pNext = extType;
8181         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8182     }
8183     vkStream->read((VkDriverId*)&forUnmarshaling->driverID, sizeof(VkDriverId));
8184     vkStream->read((char*)forUnmarshaling->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
8185     vkStream->read((char*)forUnmarshaling->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
8186     unmarshal_VkConformanceVersion(vkStream, rootType,
8187                                    (VkConformanceVersion*)(&forUnmarshaling->conformanceVersion));
8188     vkStream->read((VkShaderFloatControlsIndependence*)&forUnmarshaling->denormBehaviorIndependence,
8189                    sizeof(VkShaderFloatControlsIndependence));
8190     vkStream->read((VkShaderFloatControlsIndependence*)&forUnmarshaling->roundingModeIndependence,
8191                    sizeof(VkShaderFloatControlsIndependence));
8192     vkStream->read((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat16,
8193                    sizeof(VkBool32));
8194     vkStream->read((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat32,
8195                    sizeof(VkBool32));
8196     vkStream->read((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat64,
8197                    sizeof(VkBool32));
8198     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat16, sizeof(VkBool32));
8199     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat32, sizeof(VkBool32));
8200     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat64, sizeof(VkBool32));
8201     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat16, sizeof(VkBool32));
8202     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat32, sizeof(VkBool32));
8203     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat64, sizeof(VkBool32));
8204     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat16, sizeof(VkBool32));
8205     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat32, sizeof(VkBool32));
8206     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat64, sizeof(VkBool32));
8207     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat16, sizeof(VkBool32));
8208     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat32, sizeof(VkBool32));
8209     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat64, sizeof(VkBool32));
8210     vkStream->read((uint32_t*)&forUnmarshaling->maxUpdateAfterBindDescriptorsInAllPools,
8211                    sizeof(uint32_t));
8212     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexingNative,
8213                    sizeof(VkBool32));
8214     vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexingNative,
8215                    sizeof(VkBool32));
8216     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexingNative,
8217                    sizeof(VkBool32));
8218     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexingNative,
8219                    sizeof(VkBool32));
8220     vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexingNative,
8221                    sizeof(VkBool32));
8222     vkStream->read((VkBool32*)&forUnmarshaling->robustBufferAccessUpdateAfterBind,
8223                    sizeof(VkBool32));
8224     vkStream->read((VkBool32*)&forUnmarshaling->quadDivergentImplicitLod, sizeof(VkBool32));
8225     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSamplers,
8226                    sizeof(uint32_t));
8227     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers,
8228                    sizeof(uint32_t));
8229     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers,
8230                    sizeof(uint32_t));
8231     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages,
8232                    sizeof(uint32_t));
8233     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages,
8234                    sizeof(uint32_t));
8235     vkStream->read(
8236         (uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments,
8237         sizeof(uint32_t));
8238     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageUpdateAfterBindResources,
8239                    sizeof(uint32_t));
8240     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSamplers,
8241                    sizeof(uint32_t));
8242     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers,
8243                    sizeof(uint32_t));
8244     vkStream->read(
8245         (uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
8246         sizeof(uint32_t));
8247     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers,
8248                    sizeof(uint32_t));
8249     vkStream->read(
8250         (uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
8251         sizeof(uint32_t));
8252     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSampledImages,
8253                    sizeof(uint32_t));
8254     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageImages,
8255                    sizeof(uint32_t));
8256     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInputAttachments,
8257                    sizeof(uint32_t));
8258     vkStream->read((VkResolveModeFlags*)&forUnmarshaling->supportedDepthResolveModes,
8259                    sizeof(VkResolveModeFlags));
8260     vkStream->read((VkResolveModeFlags*)&forUnmarshaling->supportedStencilResolveModes,
8261                    sizeof(VkResolveModeFlags));
8262     vkStream->read((VkBool32*)&forUnmarshaling->independentResolveNone, sizeof(VkBool32));
8263     vkStream->read((VkBool32*)&forUnmarshaling->independentResolve, sizeof(VkBool32));
8264     vkStream->read((VkBool32*)&forUnmarshaling->filterMinmaxSingleComponentFormats,
8265                    sizeof(VkBool32));
8266     vkStream->read((VkBool32*)&forUnmarshaling->filterMinmaxImageComponentMapping,
8267                    sizeof(VkBool32));
8268     vkStream->read((uint64_t*)&forUnmarshaling->maxTimelineSemaphoreValueDifference,
8269                    sizeof(uint64_t));
8270     vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferIntegerColorSampleCounts,
8271                    sizeof(VkSampleCountFlags));
8272 }
8273 
marshal_VkImageFormatListCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkImageFormatListCreateInfo * forMarshaling)8274 void marshal_VkImageFormatListCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
8275                                          const VkImageFormatListCreateInfo* forMarshaling) {
8276     (void)rootType;
8277     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8278     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8279         rootType = forMarshaling->sType;
8280     }
8281     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8282     vkStream->write((uint32_t*)&forMarshaling->viewFormatCount, sizeof(uint32_t));
8283     vkStream->write((const VkFormat*)forMarshaling->pViewFormats,
8284                     forMarshaling->viewFormatCount * sizeof(const VkFormat));
8285 }
8286 
unmarshal_VkImageFormatListCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageFormatListCreateInfo * forUnmarshaling)8287 void unmarshal_VkImageFormatListCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
8288                                            VkImageFormatListCreateInfo* forUnmarshaling) {
8289     (void)rootType;
8290     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8291     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8292         rootType = forUnmarshaling->sType;
8293     }
8294     size_t pNext_size;
8295     pNext_size = vkStream->getBe32();
8296     forUnmarshaling->pNext = nullptr;
8297     if (pNext_size) {
8298         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8299         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8300         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8301         vkStream->alloc((void**)&forUnmarshaling->pNext,
8302                         goldfish_vk_extension_struct_size_with_stream_features(
8303                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8304         *(VkStructureType*)forUnmarshaling->pNext = extType;
8305         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8306     }
8307     vkStream->read((uint32_t*)&forUnmarshaling->viewFormatCount, sizeof(uint32_t));
8308     vkStream->alloc((void**)&forUnmarshaling->pViewFormats,
8309                     forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
8310     vkStream->read((VkFormat*)forUnmarshaling->pViewFormats,
8311                    forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
8312 }
8313 
marshal_VkAttachmentDescription2(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentDescription2 * forMarshaling)8314 void marshal_VkAttachmentDescription2(VulkanStream* vkStream, VkStructureType rootType,
8315                                       const VkAttachmentDescription2* forMarshaling) {
8316     (void)rootType;
8317     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8318     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8319         rootType = forMarshaling->sType;
8320     }
8321     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8322     vkStream->write((VkAttachmentDescriptionFlags*)&forMarshaling->flags,
8323                     sizeof(VkAttachmentDescriptionFlags));
8324     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
8325     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
8326     vkStream->write((VkAttachmentLoadOp*)&forMarshaling->loadOp, sizeof(VkAttachmentLoadOp));
8327     vkStream->write((VkAttachmentStoreOp*)&forMarshaling->storeOp, sizeof(VkAttachmentStoreOp));
8328     vkStream->write((VkAttachmentLoadOp*)&forMarshaling->stencilLoadOp, sizeof(VkAttachmentLoadOp));
8329     vkStream->write((VkAttachmentStoreOp*)&forMarshaling->stencilStoreOp,
8330                     sizeof(VkAttachmentStoreOp));
8331     vkStream->write((VkImageLayout*)&forMarshaling->initialLayout, sizeof(VkImageLayout));
8332     vkStream->write((VkImageLayout*)&forMarshaling->finalLayout, sizeof(VkImageLayout));
8333 }
8334 
unmarshal_VkAttachmentDescription2(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentDescription2 * forUnmarshaling)8335 void unmarshal_VkAttachmentDescription2(VulkanStream* vkStream, VkStructureType rootType,
8336                                         VkAttachmentDescription2* forUnmarshaling) {
8337     (void)rootType;
8338     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8339     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8340         rootType = forUnmarshaling->sType;
8341     }
8342     size_t pNext_size;
8343     pNext_size = vkStream->getBe32();
8344     forUnmarshaling->pNext = nullptr;
8345     if (pNext_size) {
8346         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8347         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8348         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8349         vkStream->alloc((void**)&forUnmarshaling->pNext,
8350                         goldfish_vk_extension_struct_size_with_stream_features(
8351                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8352         *(VkStructureType*)forUnmarshaling->pNext = extType;
8353         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8354     }
8355     vkStream->read((VkAttachmentDescriptionFlags*)&forUnmarshaling->flags,
8356                    sizeof(VkAttachmentDescriptionFlags));
8357     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
8358     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples,
8359                    sizeof(VkSampleCountFlagBits));
8360     vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, sizeof(VkAttachmentLoadOp));
8361     vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, sizeof(VkAttachmentStoreOp));
8362     vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->stencilLoadOp,
8363                    sizeof(VkAttachmentLoadOp));
8364     vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->stencilStoreOp,
8365                    sizeof(VkAttachmentStoreOp));
8366     vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
8367     vkStream->read((VkImageLayout*)&forUnmarshaling->finalLayout, sizeof(VkImageLayout));
8368 }
8369 
marshal_VkAttachmentReference2(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentReference2 * forMarshaling)8370 void marshal_VkAttachmentReference2(VulkanStream* vkStream, VkStructureType rootType,
8371                                     const VkAttachmentReference2* forMarshaling) {
8372     (void)rootType;
8373     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8374     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8375         rootType = forMarshaling->sType;
8376     }
8377     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8378     vkStream->write((uint32_t*)&forMarshaling->attachment, sizeof(uint32_t));
8379     vkStream->write((VkImageLayout*)&forMarshaling->layout, sizeof(VkImageLayout));
8380     vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
8381 }
8382 
unmarshal_VkAttachmentReference2(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentReference2 * forUnmarshaling)8383 void unmarshal_VkAttachmentReference2(VulkanStream* vkStream, VkStructureType rootType,
8384                                       VkAttachmentReference2* forUnmarshaling) {
8385     (void)rootType;
8386     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8387     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8388         rootType = forUnmarshaling->sType;
8389     }
8390     size_t pNext_size;
8391     pNext_size = vkStream->getBe32();
8392     forUnmarshaling->pNext = nullptr;
8393     if (pNext_size) {
8394         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8395         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8396         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8397         vkStream->alloc((void**)&forUnmarshaling->pNext,
8398                         goldfish_vk_extension_struct_size_with_stream_features(
8399                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8400         *(VkStructureType*)forUnmarshaling->pNext = extType;
8401         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8402     }
8403     vkStream->read((uint32_t*)&forUnmarshaling->attachment, sizeof(uint32_t));
8404     vkStream->read((VkImageLayout*)&forUnmarshaling->layout, sizeof(VkImageLayout));
8405     vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
8406 }
8407 
marshal_VkSubpassDescription2(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassDescription2 * forMarshaling)8408 void marshal_VkSubpassDescription2(VulkanStream* vkStream, VkStructureType rootType,
8409                                    const VkSubpassDescription2* forMarshaling) {
8410     (void)rootType;
8411     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8412     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8413         rootType = forMarshaling->sType;
8414     }
8415     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8416     vkStream->write((VkSubpassDescriptionFlags*)&forMarshaling->flags,
8417                     sizeof(VkSubpassDescriptionFlags));
8418     vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint,
8419                     sizeof(VkPipelineBindPoint));
8420     vkStream->write((uint32_t*)&forMarshaling->viewMask, sizeof(uint32_t));
8421     vkStream->write((uint32_t*)&forMarshaling->inputAttachmentCount, sizeof(uint32_t));
8422     if (forMarshaling) {
8423         for (uint32_t i = 0; i < (uint32_t)forMarshaling->inputAttachmentCount; ++i) {
8424             marshal_VkAttachmentReference2(
8425                 vkStream, rootType,
8426                 (const VkAttachmentReference2*)(forMarshaling->pInputAttachments + i));
8427         }
8428     }
8429     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
8430     if (forMarshaling) {
8431         for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i) {
8432             marshal_VkAttachmentReference2(
8433                 vkStream, rootType,
8434                 (const VkAttachmentReference2*)(forMarshaling->pColorAttachments + i));
8435         }
8436     }
8437     // WARNING PTR CHECK
8438     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pResolveAttachments;
8439     vkStream->putBe64(cgen_var_0);
8440     if (forMarshaling->pResolveAttachments) {
8441         if (forMarshaling) {
8442             for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i) {
8443                 marshal_VkAttachmentReference2(
8444                     vkStream, rootType,
8445                     (const VkAttachmentReference2*)(forMarshaling->pResolveAttachments + i));
8446             }
8447         }
8448     }
8449     // WARNING PTR CHECK
8450     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilAttachment;
8451     vkStream->putBe64(cgen_var_1);
8452     if (forMarshaling->pDepthStencilAttachment) {
8453         marshal_VkAttachmentReference2(
8454             vkStream, rootType,
8455             (const VkAttachmentReference2*)(forMarshaling->pDepthStencilAttachment));
8456     }
8457     vkStream->write((uint32_t*)&forMarshaling->preserveAttachmentCount, sizeof(uint32_t));
8458     vkStream->write((const uint32_t*)forMarshaling->pPreserveAttachments,
8459                     forMarshaling->preserveAttachmentCount * sizeof(const uint32_t));
8460 }
8461 
unmarshal_VkSubpassDescription2(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDescription2 * forUnmarshaling)8462 void unmarshal_VkSubpassDescription2(VulkanStream* vkStream, VkStructureType rootType,
8463                                      VkSubpassDescription2* forUnmarshaling) {
8464     (void)rootType;
8465     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8466     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8467         rootType = forUnmarshaling->sType;
8468     }
8469     size_t pNext_size;
8470     pNext_size = vkStream->getBe32();
8471     forUnmarshaling->pNext = nullptr;
8472     if (pNext_size) {
8473         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8474         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8475         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8476         vkStream->alloc((void**)&forUnmarshaling->pNext,
8477                         goldfish_vk_extension_struct_size_with_stream_features(
8478                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8479         *(VkStructureType*)forUnmarshaling->pNext = extType;
8480         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8481     }
8482     vkStream->read((VkSubpassDescriptionFlags*)&forUnmarshaling->flags,
8483                    sizeof(VkSubpassDescriptionFlags));
8484     vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint,
8485                    sizeof(VkPipelineBindPoint));
8486     vkStream->read((uint32_t*)&forUnmarshaling->viewMask, sizeof(uint32_t));
8487     vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentCount, sizeof(uint32_t));
8488     vkStream->alloc((void**)&forUnmarshaling->pInputAttachments,
8489                     forUnmarshaling->inputAttachmentCount * sizeof(const VkAttachmentReference2));
8490     if (forUnmarshaling) {
8491         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->inputAttachmentCount; ++i) {
8492             unmarshal_VkAttachmentReference2(
8493                 vkStream, rootType,
8494                 (VkAttachmentReference2*)(forUnmarshaling->pInputAttachments + i));
8495         }
8496     }
8497     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
8498     vkStream->alloc((void**)&forUnmarshaling->pColorAttachments,
8499                     forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference2));
8500     if (forUnmarshaling) {
8501         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
8502             unmarshal_VkAttachmentReference2(
8503                 vkStream, rootType,
8504                 (VkAttachmentReference2*)(forUnmarshaling->pColorAttachments + i));
8505         }
8506     }
8507     // WARNING PTR CHECK
8508     forUnmarshaling->pResolveAttachments =
8509         (const VkAttachmentReference2*)(uintptr_t)vkStream->getBe64();
8510     if (forUnmarshaling->pResolveAttachments) {
8511         vkStream->alloc(
8512             (void**)&forUnmarshaling->pResolveAttachments,
8513             forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference2));
8514         if (forUnmarshaling) {
8515             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
8516                 unmarshal_VkAttachmentReference2(
8517                     vkStream, rootType,
8518                     (VkAttachmentReference2*)(forUnmarshaling->pResolveAttachments + i));
8519             }
8520         }
8521     }
8522     // WARNING PTR CHECK
8523     forUnmarshaling->pDepthStencilAttachment =
8524         (const VkAttachmentReference2*)(uintptr_t)vkStream->getBe64();
8525     if (forUnmarshaling->pDepthStencilAttachment) {
8526         vkStream->alloc((void**)&forUnmarshaling->pDepthStencilAttachment,
8527                         sizeof(const VkAttachmentReference2));
8528         unmarshal_VkAttachmentReference2(
8529             vkStream, rootType,
8530             (VkAttachmentReference2*)(forUnmarshaling->pDepthStencilAttachment));
8531     }
8532     vkStream->read((uint32_t*)&forUnmarshaling->preserveAttachmentCount, sizeof(uint32_t));
8533     vkStream->alloc((void**)&forUnmarshaling->pPreserveAttachments,
8534                     forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
8535     vkStream->read((uint32_t*)forUnmarshaling->pPreserveAttachments,
8536                    forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
8537 }
8538 
marshal_VkSubpassDependency2(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassDependency2 * forMarshaling)8539 void marshal_VkSubpassDependency2(VulkanStream* vkStream, VkStructureType rootType,
8540                                   const VkSubpassDependency2* forMarshaling) {
8541     (void)rootType;
8542     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8543     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8544         rootType = forMarshaling->sType;
8545     }
8546     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8547     vkStream->write((uint32_t*)&forMarshaling->srcSubpass, sizeof(uint32_t));
8548     vkStream->write((uint32_t*)&forMarshaling->dstSubpass, sizeof(uint32_t));
8549     vkStream->write((VkPipelineStageFlags*)&forMarshaling->srcStageMask,
8550                     sizeof(VkPipelineStageFlags));
8551     vkStream->write((VkPipelineStageFlags*)&forMarshaling->dstStageMask,
8552                     sizeof(VkPipelineStageFlags));
8553     vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
8554     vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
8555     vkStream->write((VkDependencyFlags*)&forMarshaling->dependencyFlags, sizeof(VkDependencyFlags));
8556     vkStream->write((int32_t*)&forMarshaling->viewOffset, sizeof(int32_t));
8557 }
8558 
unmarshal_VkSubpassDependency2(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDependency2 * forUnmarshaling)8559 void unmarshal_VkSubpassDependency2(VulkanStream* vkStream, VkStructureType rootType,
8560                                     VkSubpassDependency2* forUnmarshaling) {
8561     (void)rootType;
8562     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8563     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8564         rootType = forUnmarshaling->sType;
8565     }
8566     size_t pNext_size;
8567     pNext_size = vkStream->getBe32();
8568     forUnmarshaling->pNext = nullptr;
8569     if (pNext_size) {
8570         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8571         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8572         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8573         vkStream->alloc((void**)&forUnmarshaling->pNext,
8574                         goldfish_vk_extension_struct_size_with_stream_features(
8575                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8576         *(VkStructureType*)forUnmarshaling->pNext = extType;
8577         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8578     }
8579     vkStream->read((uint32_t*)&forUnmarshaling->srcSubpass, sizeof(uint32_t));
8580     vkStream->read((uint32_t*)&forUnmarshaling->dstSubpass, sizeof(uint32_t));
8581     vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->srcStageMask,
8582                    sizeof(VkPipelineStageFlags));
8583     vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->dstStageMask,
8584                    sizeof(VkPipelineStageFlags));
8585     vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
8586     vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
8587     vkStream->read((VkDependencyFlags*)&forUnmarshaling->dependencyFlags,
8588                    sizeof(VkDependencyFlags));
8589     vkStream->read((int32_t*)&forUnmarshaling->viewOffset, sizeof(int32_t));
8590 }
8591 
marshal_VkRenderPassCreateInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassCreateInfo2 * forMarshaling)8592 void marshal_VkRenderPassCreateInfo2(VulkanStream* vkStream, VkStructureType rootType,
8593                                      const VkRenderPassCreateInfo2* forMarshaling) {
8594     (void)rootType;
8595     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8596     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8597         rootType = forMarshaling->sType;
8598     }
8599     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8600     vkStream->write((VkRenderPassCreateFlags*)&forMarshaling->flags,
8601                     sizeof(VkRenderPassCreateFlags));
8602     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
8603     if (forMarshaling) {
8604         for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentCount; ++i) {
8605             marshal_VkAttachmentDescription2(
8606                 vkStream, rootType,
8607                 (const VkAttachmentDescription2*)(forMarshaling->pAttachments + i));
8608         }
8609     }
8610     vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
8611     if (forMarshaling) {
8612         for (uint32_t i = 0; i < (uint32_t)forMarshaling->subpassCount; ++i) {
8613             marshal_VkSubpassDescription2(
8614                 vkStream, rootType, (const VkSubpassDescription2*)(forMarshaling->pSubpasses + i));
8615         }
8616     }
8617     vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
8618     if (forMarshaling) {
8619         for (uint32_t i = 0; i < (uint32_t)forMarshaling->dependencyCount; ++i) {
8620             marshal_VkSubpassDependency2(
8621                 vkStream, rootType,
8622                 (const VkSubpassDependency2*)(forMarshaling->pDependencies + i));
8623         }
8624     }
8625     vkStream->write((uint32_t*)&forMarshaling->correlatedViewMaskCount, sizeof(uint32_t));
8626     vkStream->write((const uint32_t*)forMarshaling->pCorrelatedViewMasks,
8627                     forMarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
8628 }
8629 
unmarshal_VkRenderPassCreateInfo2(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassCreateInfo2 * forUnmarshaling)8630 void unmarshal_VkRenderPassCreateInfo2(VulkanStream* vkStream, VkStructureType rootType,
8631                                        VkRenderPassCreateInfo2* forUnmarshaling) {
8632     (void)rootType;
8633     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8634     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8635         rootType = forUnmarshaling->sType;
8636     }
8637     size_t pNext_size;
8638     pNext_size = vkStream->getBe32();
8639     forUnmarshaling->pNext = nullptr;
8640     if (pNext_size) {
8641         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8642         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8643         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8644         vkStream->alloc((void**)&forUnmarshaling->pNext,
8645                         goldfish_vk_extension_struct_size_with_stream_features(
8646                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8647         *(VkStructureType*)forUnmarshaling->pNext = extType;
8648         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8649     }
8650     vkStream->read((VkRenderPassCreateFlags*)&forUnmarshaling->flags,
8651                    sizeof(VkRenderPassCreateFlags));
8652     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
8653     vkStream->alloc((void**)&forUnmarshaling->pAttachments,
8654                     forUnmarshaling->attachmentCount * sizeof(const VkAttachmentDescription2));
8655     if (forUnmarshaling) {
8656         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i) {
8657             unmarshal_VkAttachmentDescription2(
8658                 vkStream, rootType, (VkAttachmentDescription2*)(forUnmarshaling->pAttachments + i));
8659         }
8660     }
8661     vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
8662     vkStream->alloc((void**)&forUnmarshaling->pSubpasses,
8663                     forUnmarshaling->subpassCount * sizeof(const VkSubpassDescription2));
8664     if (forUnmarshaling) {
8665         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->subpassCount; ++i) {
8666             unmarshal_VkSubpassDescription2(
8667                 vkStream, rootType, (VkSubpassDescription2*)(forUnmarshaling->pSubpasses + i));
8668         }
8669     }
8670     vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
8671     vkStream->alloc((void**)&forUnmarshaling->pDependencies,
8672                     forUnmarshaling->dependencyCount * sizeof(const VkSubpassDependency2));
8673     if (forUnmarshaling) {
8674         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->dependencyCount; ++i) {
8675             unmarshal_VkSubpassDependency2(
8676                 vkStream, rootType, (VkSubpassDependency2*)(forUnmarshaling->pDependencies + i));
8677         }
8678     }
8679     vkStream->read((uint32_t*)&forUnmarshaling->correlatedViewMaskCount, sizeof(uint32_t));
8680     vkStream->alloc((void**)&forUnmarshaling->pCorrelatedViewMasks,
8681                     forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
8682     vkStream->read((uint32_t*)forUnmarshaling->pCorrelatedViewMasks,
8683                    forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
8684 }
8685 
marshal_VkSubpassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassBeginInfo * forMarshaling)8686 void marshal_VkSubpassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
8687                                 const VkSubpassBeginInfo* forMarshaling) {
8688     (void)rootType;
8689     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8690     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8691         rootType = forMarshaling->sType;
8692     }
8693     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8694     vkStream->write((VkSubpassContents*)&forMarshaling->contents, sizeof(VkSubpassContents));
8695 }
8696 
unmarshal_VkSubpassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkSubpassBeginInfo * forUnmarshaling)8697 void unmarshal_VkSubpassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
8698                                   VkSubpassBeginInfo* forUnmarshaling) {
8699     (void)rootType;
8700     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8701     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8702         rootType = forUnmarshaling->sType;
8703     }
8704     size_t pNext_size;
8705     pNext_size = vkStream->getBe32();
8706     forUnmarshaling->pNext = nullptr;
8707     if (pNext_size) {
8708         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8709         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8710         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8711         vkStream->alloc((void**)&forUnmarshaling->pNext,
8712                         goldfish_vk_extension_struct_size_with_stream_features(
8713                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8714         *(VkStructureType*)forUnmarshaling->pNext = extType;
8715         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8716     }
8717     vkStream->read((VkSubpassContents*)&forUnmarshaling->contents, sizeof(VkSubpassContents));
8718 }
8719 
marshal_VkSubpassEndInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassEndInfo * forMarshaling)8720 void marshal_VkSubpassEndInfo(VulkanStream* vkStream, VkStructureType rootType,
8721                               const VkSubpassEndInfo* forMarshaling) {
8722     (void)rootType;
8723     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8724     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8725         rootType = forMarshaling->sType;
8726     }
8727     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8728 }
8729 
unmarshal_VkSubpassEndInfo(VulkanStream * vkStream,VkStructureType rootType,VkSubpassEndInfo * forUnmarshaling)8730 void unmarshal_VkSubpassEndInfo(VulkanStream* vkStream, VkStructureType rootType,
8731                                 VkSubpassEndInfo* forUnmarshaling) {
8732     (void)rootType;
8733     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8734     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8735         rootType = forUnmarshaling->sType;
8736     }
8737     size_t pNext_size;
8738     pNext_size = vkStream->getBe32();
8739     forUnmarshaling->pNext = nullptr;
8740     if (pNext_size) {
8741         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8742         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8743         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8744         vkStream->alloc((void**)&forUnmarshaling->pNext,
8745                         goldfish_vk_extension_struct_size_with_stream_features(
8746                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8747         *(VkStructureType*)forUnmarshaling->pNext = extType;
8748         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8749     }
8750 }
8751 
marshal_VkPhysicalDevice8BitStorageFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevice8BitStorageFeatures * forMarshaling)8752 void marshal_VkPhysicalDevice8BitStorageFeatures(
8753     VulkanStream* vkStream, VkStructureType rootType,
8754     const VkPhysicalDevice8BitStorageFeatures* forMarshaling) {
8755     (void)rootType;
8756     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8757     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8758         rootType = forMarshaling->sType;
8759     }
8760     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8761     vkStream->write((VkBool32*)&forMarshaling->storageBuffer8BitAccess, sizeof(VkBool32));
8762     vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer8BitAccess, sizeof(VkBool32));
8763     vkStream->write((VkBool32*)&forMarshaling->storagePushConstant8, sizeof(VkBool32));
8764 }
8765 
unmarshal_VkPhysicalDevice8BitStorageFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevice8BitStorageFeatures * forUnmarshaling)8766 void unmarshal_VkPhysicalDevice8BitStorageFeatures(
8767     VulkanStream* vkStream, VkStructureType rootType,
8768     VkPhysicalDevice8BitStorageFeatures* forUnmarshaling) {
8769     (void)rootType;
8770     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8771     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8772         rootType = forUnmarshaling->sType;
8773     }
8774     size_t pNext_size;
8775     pNext_size = vkStream->getBe32();
8776     forUnmarshaling->pNext = nullptr;
8777     if (pNext_size) {
8778         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8779         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8780         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8781         vkStream->alloc((void**)&forUnmarshaling->pNext,
8782                         goldfish_vk_extension_struct_size_with_stream_features(
8783                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8784         *(VkStructureType*)forUnmarshaling->pNext = extType;
8785         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8786     }
8787     vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer8BitAccess, sizeof(VkBool32));
8788     vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer8BitAccess,
8789                    sizeof(VkBool32));
8790     vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant8, sizeof(VkBool32));
8791 }
8792 
marshal_VkPhysicalDeviceDriverProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDriverProperties * forMarshaling)8793 void marshal_VkPhysicalDeviceDriverProperties(
8794     VulkanStream* vkStream, VkStructureType rootType,
8795     const VkPhysicalDeviceDriverProperties* forMarshaling) {
8796     (void)rootType;
8797     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8798     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8799         rootType = forMarshaling->sType;
8800     }
8801     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8802     vkStream->write((VkDriverId*)&forMarshaling->driverID, sizeof(VkDriverId));
8803     vkStream->write((char*)forMarshaling->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
8804     vkStream->write((char*)forMarshaling->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
8805     marshal_VkConformanceVersion(vkStream, rootType,
8806                                  (VkConformanceVersion*)(&forMarshaling->conformanceVersion));
8807 }
8808 
unmarshal_VkPhysicalDeviceDriverProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDriverProperties * forUnmarshaling)8809 void unmarshal_VkPhysicalDeviceDriverProperties(VulkanStream* vkStream, VkStructureType rootType,
8810                                                 VkPhysicalDeviceDriverProperties* forUnmarshaling) {
8811     (void)rootType;
8812     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8813     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8814         rootType = forUnmarshaling->sType;
8815     }
8816     size_t pNext_size;
8817     pNext_size = vkStream->getBe32();
8818     forUnmarshaling->pNext = nullptr;
8819     if (pNext_size) {
8820         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8821         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8822         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8823         vkStream->alloc((void**)&forUnmarshaling->pNext,
8824                         goldfish_vk_extension_struct_size_with_stream_features(
8825                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8826         *(VkStructureType*)forUnmarshaling->pNext = extType;
8827         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8828     }
8829     vkStream->read((VkDriverId*)&forUnmarshaling->driverID, sizeof(VkDriverId));
8830     vkStream->read((char*)forUnmarshaling->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
8831     vkStream->read((char*)forUnmarshaling->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
8832     unmarshal_VkConformanceVersion(vkStream, rootType,
8833                                    (VkConformanceVersion*)(&forUnmarshaling->conformanceVersion));
8834 }
8835 
marshal_VkPhysicalDeviceShaderAtomicInt64Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderAtomicInt64Features * forMarshaling)8836 void marshal_VkPhysicalDeviceShaderAtomicInt64Features(
8837     VulkanStream* vkStream, VkStructureType rootType,
8838     const VkPhysicalDeviceShaderAtomicInt64Features* forMarshaling) {
8839     (void)rootType;
8840     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8841     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8842         rootType = forMarshaling->sType;
8843     }
8844     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8845     vkStream->write((VkBool32*)&forMarshaling->shaderBufferInt64Atomics, sizeof(VkBool32));
8846     vkStream->write((VkBool32*)&forMarshaling->shaderSharedInt64Atomics, sizeof(VkBool32));
8847 }
8848 
unmarshal_VkPhysicalDeviceShaderAtomicInt64Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderAtomicInt64Features * forUnmarshaling)8849 void unmarshal_VkPhysicalDeviceShaderAtomicInt64Features(
8850     VulkanStream* vkStream, VkStructureType rootType,
8851     VkPhysicalDeviceShaderAtomicInt64Features* forUnmarshaling) {
8852     (void)rootType;
8853     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8854     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8855         rootType = forUnmarshaling->sType;
8856     }
8857     size_t pNext_size;
8858     pNext_size = vkStream->getBe32();
8859     forUnmarshaling->pNext = nullptr;
8860     if (pNext_size) {
8861         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8862         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8863         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8864         vkStream->alloc((void**)&forUnmarshaling->pNext,
8865                         goldfish_vk_extension_struct_size_with_stream_features(
8866                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8867         *(VkStructureType*)forUnmarshaling->pNext = extType;
8868         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8869     }
8870     vkStream->read((VkBool32*)&forUnmarshaling->shaderBufferInt64Atomics, sizeof(VkBool32));
8871     vkStream->read((VkBool32*)&forUnmarshaling->shaderSharedInt64Atomics, sizeof(VkBool32));
8872 }
8873 
marshal_VkPhysicalDeviceShaderFloat16Int8Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderFloat16Int8Features * forMarshaling)8874 void marshal_VkPhysicalDeviceShaderFloat16Int8Features(
8875     VulkanStream* vkStream, VkStructureType rootType,
8876     const VkPhysicalDeviceShaderFloat16Int8Features* forMarshaling) {
8877     (void)rootType;
8878     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8879     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8880         rootType = forMarshaling->sType;
8881     }
8882     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8883     vkStream->write((VkBool32*)&forMarshaling->shaderFloat16, sizeof(VkBool32));
8884     vkStream->write((VkBool32*)&forMarshaling->shaderInt8, sizeof(VkBool32));
8885 }
8886 
unmarshal_VkPhysicalDeviceShaderFloat16Int8Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderFloat16Int8Features * forUnmarshaling)8887 void unmarshal_VkPhysicalDeviceShaderFloat16Int8Features(
8888     VulkanStream* vkStream, VkStructureType rootType,
8889     VkPhysicalDeviceShaderFloat16Int8Features* forUnmarshaling) {
8890     (void)rootType;
8891     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8892     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8893         rootType = forUnmarshaling->sType;
8894     }
8895     size_t pNext_size;
8896     pNext_size = vkStream->getBe32();
8897     forUnmarshaling->pNext = nullptr;
8898     if (pNext_size) {
8899         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8900         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8901         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8902         vkStream->alloc((void**)&forUnmarshaling->pNext,
8903                         goldfish_vk_extension_struct_size_with_stream_features(
8904                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8905         *(VkStructureType*)forUnmarshaling->pNext = extType;
8906         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8907     }
8908     vkStream->read((VkBool32*)&forUnmarshaling->shaderFloat16, sizeof(VkBool32));
8909     vkStream->read((VkBool32*)&forUnmarshaling->shaderInt8, sizeof(VkBool32));
8910 }
8911 
marshal_VkPhysicalDeviceFloatControlsProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceFloatControlsProperties * forMarshaling)8912 void marshal_VkPhysicalDeviceFloatControlsProperties(
8913     VulkanStream* vkStream, VkStructureType rootType,
8914     const VkPhysicalDeviceFloatControlsProperties* forMarshaling) {
8915     (void)rootType;
8916     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8917     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8918         rootType = forMarshaling->sType;
8919     }
8920     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8921     vkStream->write((VkShaderFloatControlsIndependence*)&forMarshaling->denormBehaviorIndependence,
8922                     sizeof(VkShaderFloatControlsIndependence));
8923     vkStream->write((VkShaderFloatControlsIndependence*)&forMarshaling->roundingModeIndependence,
8924                     sizeof(VkShaderFloatControlsIndependence));
8925     vkStream->write((VkBool32*)&forMarshaling->shaderSignedZeroInfNanPreserveFloat16,
8926                     sizeof(VkBool32));
8927     vkStream->write((VkBool32*)&forMarshaling->shaderSignedZeroInfNanPreserveFloat32,
8928                     sizeof(VkBool32));
8929     vkStream->write((VkBool32*)&forMarshaling->shaderSignedZeroInfNanPreserveFloat64,
8930                     sizeof(VkBool32));
8931     vkStream->write((VkBool32*)&forMarshaling->shaderDenormPreserveFloat16, sizeof(VkBool32));
8932     vkStream->write((VkBool32*)&forMarshaling->shaderDenormPreserveFloat32, sizeof(VkBool32));
8933     vkStream->write((VkBool32*)&forMarshaling->shaderDenormPreserveFloat64, sizeof(VkBool32));
8934     vkStream->write((VkBool32*)&forMarshaling->shaderDenormFlushToZeroFloat16, sizeof(VkBool32));
8935     vkStream->write((VkBool32*)&forMarshaling->shaderDenormFlushToZeroFloat32, sizeof(VkBool32));
8936     vkStream->write((VkBool32*)&forMarshaling->shaderDenormFlushToZeroFloat64, sizeof(VkBool32));
8937     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTEFloat16, sizeof(VkBool32));
8938     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTEFloat32, sizeof(VkBool32));
8939     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTEFloat64, sizeof(VkBool32));
8940     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTZFloat16, sizeof(VkBool32));
8941     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTZFloat32, sizeof(VkBool32));
8942     vkStream->write((VkBool32*)&forMarshaling->shaderRoundingModeRTZFloat64, sizeof(VkBool32));
8943 }
8944 
unmarshal_VkPhysicalDeviceFloatControlsProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFloatControlsProperties * forUnmarshaling)8945 void unmarshal_VkPhysicalDeviceFloatControlsProperties(
8946     VulkanStream* vkStream, VkStructureType rootType,
8947     VkPhysicalDeviceFloatControlsProperties* forUnmarshaling) {
8948     (void)rootType;
8949     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
8950     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8951         rootType = forUnmarshaling->sType;
8952     }
8953     size_t pNext_size;
8954     pNext_size = vkStream->getBe32();
8955     forUnmarshaling->pNext = nullptr;
8956     if (pNext_size) {
8957         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8958         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
8959         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8960         vkStream->alloc((void**)&forUnmarshaling->pNext,
8961                         goldfish_vk_extension_struct_size_with_stream_features(
8962                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8963         *(VkStructureType*)forUnmarshaling->pNext = extType;
8964         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
8965     }
8966     vkStream->read((VkShaderFloatControlsIndependence*)&forUnmarshaling->denormBehaviorIndependence,
8967                    sizeof(VkShaderFloatControlsIndependence));
8968     vkStream->read((VkShaderFloatControlsIndependence*)&forUnmarshaling->roundingModeIndependence,
8969                    sizeof(VkShaderFloatControlsIndependence));
8970     vkStream->read((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat16,
8971                    sizeof(VkBool32));
8972     vkStream->read((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat32,
8973                    sizeof(VkBool32));
8974     vkStream->read((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat64,
8975                    sizeof(VkBool32));
8976     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat16, sizeof(VkBool32));
8977     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat32, sizeof(VkBool32));
8978     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat64, sizeof(VkBool32));
8979     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat16, sizeof(VkBool32));
8980     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat32, sizeof(VkBool32));
8981     vkStream->read((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat64, sizeof(VkBool32));
8982     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat16, sizeof(VkBool32));
8983     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat32, sizeof(VkBool32));
8984     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat64, sizeof(VkBool32));
8985     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat16, sizeof(VkBool32));
8986     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat32, sizeof(VkBool32));
8987     vkStream->read((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat64, sizeof(VkBool32));
8988 }
8989 
marshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetLayoutBindingFlagsCreateInfo * forMarshaling)8990 void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
8991     VulkanStream* vkStream, VkStructureType rootType,
8992     const VkDescriptorSetLayoutBindingFlagsCreateInfo* forMarshaling) {
8993     (void)rootType;
8994     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
8995     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8996         rootType = forMarshaling->sType;
8997     }
8998     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
8999     vkStream->write((uint32_t*)&forMarshaling->bindingCount, sizeof(uint32_t));
9000     // WARNING PTR CHECK
9001     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pBindingFlags;
9002     vkStream->putBe64(cgen_var_0);
9003     if (forMarshaling->pBindingFlags) {
9004         vkStream->write((const VkDescriptorBindingFlags*)forMarshaling->pBindingFlags,
9005                         forMarshaling->bindingCount * sizeof(const VkDescriptorBindingFlags));
9006     }
9007 }
9008 
unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutBindingFlagsCreateInfo * forUnmarshaling)9009 void unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
9010     VulkanStream* vkStream, VkStructureType rootType,
9011     VkDescriptorSetLayoutBindingFlagsCreateInfo* forUnmarshaling) {
9012     (void)rootType;
9013     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9014     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9015         rootType = forUnmarshaling->sType;
9016     }
9017     size_t pNext_size;
9018     pNext_size = vkStream->getBe32();
9019     forUnmarshaling->pNext = nullptr;
9020     if (pNext_size) {
9021         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9022         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9023         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9024         vkStream->alloc((void**)&forUnmarshaling->pNext,
9025                         goldfish_vk_extension_struct_size_with_stream_features(
9026                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9027         *(VkStructureType*)forUnmarshaling->pNext = extType;
9028         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9029     }
9030     vkStream->read((uint32_t*)&forUnmarshaling->bindingCount, sizeof(uint32_t));
9031     // WARNING PTR CHECK
9032     forUnmarshaling->pBindingFlags =
9033         (const VkDescriptorBindingFlags*)(uintptr_t)vkStream->getBe64();
9034     if (forUnmarshaling->pBindingFlags) {
9035         vkStream->alloc((void**)&forUnmarshaling->pBindingFlags,
9036                         forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlags));
9037         vkStream->read((VkDescriptorBindingFlags*)forUnmarshaling->pBindingFlags,
9038                        forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlags));
9039     }
9040 }
9041 
marshal_VkPhysicalDeviceDescriptorIndexingFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDescriptorIndexingFeatures * forMarshaling)9042 void marshal_VkPhysicalDeviceDescriptorIndexingFeatures(
9043     VulkanStream* vkStream, VkStructureType rootType,
9044     const VkPhysicalDeviceDescriptorIndexingFeatures* forMarshaling) {
9045     (void)rootType;
9046     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9047     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9048         rootType = forMarshaling->sType;
9049     }
9050     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9051     vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayDynamicIndexing,
9052                     sizeof(VkBool32));
9053     vkStream->write((VkBool32*)&forMarshaling->shaderUniformTexelBufferArrayDynamicIndexing,
9054                     sizeof(VkBool32));
9055     vkStream->write((VkBool32*)&forMarshaling->shaderStorageTexelBufferArrayDynamicIndexing,
9056                     sizeof(VkBool32));
9057     vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayNonUniformIndexing,
9058                     sizeof(VkBool32));
9059     vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayNonUniformIndexing,
9060                     sizeof(VkBool32));
9061     vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayNonUniformIndexing,
9062                     sizeof(VkBool32));
9063     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayNonUniformIndexing,
9064                     sizeof(VkBool32));
9065     vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayNonUniformIndexing,
9066                     sizeof(VkBool32));
9067     vkStream->write((VkBool32*)&forMarshaling->shaderUniformTexelBufferArrayNonUniformIndexing,
9068                     sizeof(VkBool32));
9069     vkStream->write((VkBool32*)&forMarshaling->shaderStorageTexelBufferArrayNonUniformIndexing,
9070                     sizeof(VkBool32));
9071     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUniformBufferUpdateAfterBind,
9072                     sizeof(VkBool32));
9073     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingSampledImageUpdateAfterBind,
9074                     sizeof(VkBool32));
9075     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageImageUpdateAfterBind,
9076                     sizeof(VkBool32));
9077     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageBufferUpdateAfterBind,
9078                     sizeof(VkBool32));
9079     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind,
9080                     sizeof(VkBool32));
9081     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind,
9082                     sizeof(VkBool32));
9083     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUpdateUnusedWhilePending,
9084                     sizeof(VkBool32));
9085     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingPartiallyBound, sizeof(VkBool32));
9086     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingVariableDescriptorCount,
9087                     sizeof(VkBool32));
9088     vkStream->write((VkBool32*)&forMarshaling->runtimeDescriptorArray, sizeof(VkBool32));
9089 }
9090 
unmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDescriptorIndexingFeatures * forUnmarshaling)9091 void unmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(
9092     VulkanStream* vkStream, VkStructureType rootType,
9093     VkPhysicalDeviceDescriptorIndexingFeatures* forUnmarshaling) {
9094     (void)rootType;
9095     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9096     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9097         rootType = forUnmarshaling->sType;
9098     }
9099     size_t pNext_size;
9100     pNext_size = vkStream->getBe32();
9101     forUnmarshaling->pNext = nullptr;
9102     if (pNext_size) {
9103         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9104         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9105         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9106         vkStream->alloc((void**)&forUnmarshaling->pNext,
9107                         goldfish_vk_extension_struct_size_with_stream_features(
9108                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9109         *(VkStructureType*)forUnmarshaling->pNext = extType;
9110         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9111     }
9112     vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayDynamicIndexing,
9113                    sizeof(VkBool32));
9114     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayDynamicIndexing,
9115                    sizeof(VkBool32));
9116     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayDynamicIndexing,
9117                    sizeof(VkBool32));
9118     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexing,
9119                    sizeof(VkBool32));
9120     vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexing,
9121                    sizeof(VkBool32));
9122     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexing,
9123                    sizeof(VkBool32));
9124     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexing,
9125                    sizeof(VkBool32));
9126     vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexing,
9127                    sizeof(VkBool32));
9128     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayNonUniformIndexing,
9129                    sizeof(VkBool32));
9130     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayNonUniformIndexing,
9131                    sizeof(VkBool32));
9132     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUniformBufferUpdateAfterBind,
9133                    sizeof(VkBool32));
9134     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingSampledImageUpdateAfterBind,
9135                    sizeof(VkBool32));
9136     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageImageUpdateAfterBind,
9137                    sizeof(VkBool32));
9138     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageBufferUpdateAfterBind,
9139                    sizeof(VkBool32));
9140     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind,
9141                    sizeof(VkBool32));
9142     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind,
9143                    sizeof(VkBool32));
9144     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUpdateUnusedWhilePending,
9145                    sizeof(VkBool32));
9146     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingPartiallyBound, sizeof(VkBool32));
9147     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingVariableDescriptorCount,
9148                    sizeof(VkBool32));
9149     vkStream->read((VkBool32*)&forUnmarshaling->runtimeDescriptorArray, sizeof(VkBool32));
9150 }
9151 
marshal_VkPhysicalDeviceDescriptorIndexingProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDescriptorIndexingProperties * forMarshaling)9152 void marshal_VkPhysicalDeviceDescriptorIndexingProperties(
9153     VulkanStream* vkStream, VkStructureType rootType,
9154     const VkPhysicalDeviceDescriptorIndexingProperties* forMarshaling) {
9155     (void)rootType;
9156     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9157     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9158         rootType = forMarshaling->sType;
9159     }
9160     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9161     vkStream->write((uint32_t*)&forMarshaling->maxUpdateAfterBindDescriptorsInAllPools,
9162                     sizeof(uint32_t));
9163     vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayNonUniformIndexingNative,
9164                     sizeof(VkBool32));
9165     vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayNonUniformIndexingNative,
9166                     sizeof(VkBool32));
9167     vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayNonUniformIndexingNative,
9168                     sizeof(VkBool32));
9169     vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayNonUniformIndexingNative,
9170                     sizeof(VkBool32));
9171     vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayNonUniformIndexingNative,
9172                     sizeof(VkBool32));
9173     vkStream->write((VkBool32*)&forMarshaling->robustBufferAccessUpdateAfterBind, sizeof(VkBool32));
9174     vkStream->write((VkBool32*)&forMarshaling->quadDivergentImplicitLod, sizeof(VkBool32));
9175     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindSamplers,
9176                     sizeof(uint32_t));
9177     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers,
9178                     sizeof(uint32_t));
9179     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers,
9180                     sizeof(uint32_t));
9181     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages,
9182                     sizeof(uint32_t));
9183     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages,
9184                     sizeof(uint32_t));
9185     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments,
9186                     sizeof(uint32_t));
9187     vkStream->write((uint32_t*)&forMarshaling->maxPerStageUpdateAfterBindResources,
9188                     sizeof(uint32_t));
9189     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindSamplers,
9190                     sizeof(uint32_t));
9191     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers,
9192                     sizeof(uint32_t));
9193     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
9194                     sizeof(uint32_t));
9195     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers,
9196                     sizeof(uint32_t));
9197     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
9198                     sizeof(uint32_t));
9199     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindSampledImages,
9200                     sizeof(uint32_t));
9201     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageImages,
9202                     sizeof(uint32_t));
9203     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindInputAttachments,
9204                     sizeof(uint32_t));
9205 }
9206 
unmarshal_VkPhysicalDeviceDescriptorIndexingProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDescriptorIndexingProperties * forUnmarshaling)9207 void unmarshal_VkPhysicalDeviceDescriptorIndexingProperties(
9208     VulkanStream* vkStream, VkStructureType rootType,
9209     VkPhysicalDeviceDescriptorIndexingProperties* forUnmarshaling) {
9210     (void)rootType;
9211     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9212     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9213         rootType = forUnmarshaling->sType;
9214     }
9215     size_t pNext_size;
9216     pNext_size = vkStream->getBe32();
9217     forUnmarshaling->pNext = nullptr;
9218     if (pNext_size) {
9219         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9220         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9221         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9222         vkStream->alloc((void**)&forUnmarshaling->pNext,
9223                         goldfish_vk_extension_struct_size_with_stream_features(
9224                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9225         *(VkStructureType*)forUnmarshaling->pNext = extType;
9226         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9227     }
9228     vkStream->read((uint32_t*)&forUnmarshaling->maxUpdateAfterBindDescriptorsInAllPools,
9229                    sizeof(uint32_t));
9230     vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexingNative,
9231                    sizeof(VkBool32));
9232     vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexingNative,
9233                    sizeof(VkBool32));
9234     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexingNative,
9235                    sizeof(VkBool32));
9236     vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexingNative,
9237                    sizeof(VkBool32));
9238     vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexingNative,
9239                    sizeof(VkBool32));
9240     vkStream->read((VkBool32*)&forUnmarshaling->robustBufferAccessUpdateAfterBind,
9241                    sizeof(VkBool32));
9242     vkStream->read((VkBool32*)&forUnmarshaling->quadDivergentImplicitLod, sizeof(VkBool32));
9243     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSamplers,
9244                    sizeof(uint32_t));
9245     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers,
9246                    sizeof(uint32_t));
9247     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers,
9248                    sizeof(uint32_t));
9249     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages,
9250                    sizeof(uint32_t));
9251     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages,
9252                    sizeof(uint32_t));
9253     vkStream->read(
9254         (uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments,
9255         sizeof(uint32_t));
9256     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageUpdateAfterBindResources,
9257                    sizeof(uint32_t));
9258     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSamplers,
9259                    sizeof(uint32_t));
9260     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers,
9261                    sizeof(uint32_t));
9262     vkStream->read(
9263         (uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
9264         sizeof(uint32_t));
9265     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers,
9266                    sizeof(uint32_t));
9267     vkStream->read(
9268         (uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
9269         sizeof(uint32_t));
9270     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSampledImages,
9271                    sizeof(uint32_t));
9272     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageImages,
9273                    sizeof(uint32_t));
9274     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInputAttachments,
9275                    sizeof(uint32_t));
9276 }
9277 
marshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetVariableDescriptorCountAllocateInfo * forMarshaling)9278 void marshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
9279     VulkanStream* vkStream, VkStructureType rootType,
9280     const VkDescriptorSetVariableDescriptorCountAllocateInfo* forMarshaling) {
9281     (void)rootType;
9282     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9283     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9284         rootType = forMarshaling->sType;
9285     }
9286     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9287     vkStream->write((uint32_t*)&forMarshaling->descriptorSetCount, sizeof(uint32_t));
9288     vkStream->write((const uint32_t*)forMarshaling->pDescriptorCounts,
9289                     forMarshaling->descriptorSetCount * sizeof(const uint32_t));
9290 }
9291 
unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetVariableDescriptorCountAllocateInfo * forUnmarshaling)9292 void unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
9293     VulkanStream* vkStream, VkStructureType rootType,
9294     VkDescriptorSetVariableDescriptorCountAllocateInfo* forUnmarshaling) {
9295     (void)rootType;
9296     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9297     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9298         rootType = forUnmarshaling->sType;
9299     }
9300     size_t pNext_size;
9301     pNext_size = vkStream->getBe32();
9302     forUnmarshaling->pNext = nullptr;
9303     if (pNext_size) {
9304         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9305         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9306         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9307         vkStream->alloc((void**)&forUnmarshaling->pNext,
9308                         goldfish_vk_extension_struct_size_with_stream_features(
9309                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9310         *(VkStructureType*)forUnmarshaling->pNext = extType;
9311         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9312     }
9313     vkStream->read((uint32_t*)&forUnmarshaling->descriptorSetCount, sizeof(uint32_t));
9314     vkStream->alloc((void**)&forUnmarshaling->pDescriptorCounts,
9315                     forUnmarshaling->descriptorSetCount * sizeof(const uint32_t));
9316     vkStream->read((uint32_t*)forUnmarshaling->pDescriptorCounts,
9317                    forUnmarshaling->descriptorSetCount * sizeof(const uint32_t));
9318 }
9319 
marshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorSetVariableDescriptorCountLayoutSupport * forMarshaling)9320 void marshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
9321     VulkanStream* vkStream, VkStructureType rootType,
9322     const VkDescriptorSetVariableDescriptorCountLayoutSupport* forMarshaling) {
9323     (void)rootType;
9324     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9325     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9326         rootType = forMarshaling->sType;
9327     }
9328     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9329     vkStream->write((uint32_t*)&forMarshaling->maxVariableDescriptorCount, sizeof(uint32_t));
9330 }
9331 
unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetVariableDescriptorCountLayoutSupport * forUnmarshaling)9332 void unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
9333     VulkanStream* vkStream, VkStructureType rootType,
9334     VkDescriptorSetVariableDescriptorCountLayoutSupport* forUnmarshaling) {
9335     (void)rootType;
9336     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9337     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9338         rootType = forUnmarshaling->sType;
9339     }
9340     size_t pNext_size;
9341     pNext_size = vkStream->getBe32();
9342     forUnmarshaling->pNext = nullptr;
9343     if (pNext_size) {
9344         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9345         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9346         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9347         vkStream->alloc((void**)&forUnmarshaling->pNext,
9348                         goldfish_vk_extension_struct_size_with_stream_features(
9349                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9350         *(VkStructureType*)forUnmarshaling->pNext = extType;
9351         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9352     }
9353     vkStream->read((uint32_t*)&forUnmarshaling->maxVariableDescriptorCount, sizeof(uint32_t));
9354 }
9355 
marshal_VkSubpassDescriptionDepthStencilResolve(VulkanStream * vkStream,VkStructureType rootType,const VkSubpassDescriptionDepthStencilResolve * forMarshaling)9356 void marshal_VkSubpassDescriptionDepthStencilResolve(
9357     VulkanStream* vkStream, VkStructureType rootType,
9358     const VkSubpassDescriptionDepthStencilResolve* forMarshaling) {
9359     (void)rootType;
9360     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9361     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9362         rootType = forMarshaling->sType;
9363     }
9364     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9365     vkStream->write((VkResolveModeFlagBits*)&forMarshaling->depthResolveMode,
9366                     sizeof(VkResolveModeFlagBits));
9367     vkStream->write((VkResolveModeFlagBits*)&forMarshaling->stencilResolveMode,
9368                     sizeof(VkResolveModeFlagBits));
9369     // WARNING PTR CHECK
9370     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilResolveAttachment;
9371     vkStream->putBe64(cgen_var_0);
9372     if (forMarshaling->pDepthStencilResolveAttachment) {
9373         marshal_VkAttachmentReference2(
9374             vkStream, rootType,
9375             (const VkAttachmentReference2*)(forMarshaling->pDepthStencilResolveAttachment));
9376     }
9377 }
9378 
unmarshal_VkSubpassDescriptionDepthStencilResolve(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDescriptionDepthStencilResolve * forUnmarshaling)9379 void unmarshal_VkSubpassDescriptionDepthStencilResolve(
9380     VulkanStream* vkStream, VkStructureType rootType,
9381     VkSubpassDescriptionDepthStencilResolve* forUnmarshaling) {
9382     (void)rootType;
9383     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9384     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9385         rootType = forUnmarshaling->sType;
9386     }
9387     size_t pNext_size;
9388     pNext_size = vkStream->getBe32();
9389     forUnmarshaling->pNext = nullptr;
9390     if (pNext_size) {
9391         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9392         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9393         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9394         vkStream->alloc((void**)&forUnmarshaling->pNext,
9395                         goldfish_vk_extension_struct_size_with_stream_features(
9396                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9397         *(VkStructureType*)forUnmarshaling->pNext = extType;
9398         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9399     }
9400     vkStream->read((VkResolveModeFlagBits*)&forUnmarshaling->depthResolveMode,
9401                    sizeof(VkResolveModeFlagBits));
9402     vkStream->read((VkResolveModeFlagBits*)&forUnmarshaling->stencilResolveMode,
9403                    sizeof(VkResolveModeFlagBits));
9404     // WARNING PTR CHECK
9405     forUnmarshaling->pDepthStencilResolveAttachment =
9406         (const VkAttachmentReference2*)(uintptr_t)vkStream->getBe64();
9407     if (forUnmarshaling->pDepthStencilResolveAttachment) {
9408         vkStream->alloc((void**)&forUnmarshaling->pDepthStencilResolveAttachment,
9409                         sizeof(const VkAttachmentReference2));
9410         unmarshal_VkAttachmentReference2(
9411             vkStream, rootType,
9412             (VkAttachmentReference2*)(forUnmarshaling->pDepthStencilResolveAttachment));
9413     }
9414 }
9415 
marshal_VkPhysicalDeviceDepthStencilResolveProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDepthStencilResolveProperties * forMarshaling)9416 void marshal_VkPhysicalDeviceDepthStencilResolveProperties(
9417     VulkanStream* vkStream, VkStructureType rootType,
9418     const VkPhysicalDeviceDepthStencilResolveProperties* forMarshaling) {
9419     (void)rootType;
9420     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9421     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9422         rootType = forMarshaling->sType;
9423     }
9424     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9425     vkStream->write((VkResolveModeFlags*)&forMarshaling->supportedDepthResolveModes,
9426                     sizeof(VkResolveModeFlags));
9427     vkStream->write((VkResolveModeFlags*)&forMarshaling->supportedStencilResolveModes,
9428                     sizeof(VkResolveModeFlags));
9429     vkStream->write((VkBool32*)&forMarshaling->independentResolveNone, sizeof(VkBool32));
9430     vkStream->write((VkBool32*)&forMarshaling->independentResolve, sizeof(VkBool32));
9431 }
9432 
unmarshal_VkPhysicalDeviceDepthStencilResolveProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDepthStencilResolveProperties * forUnmarshaling)9433 void unmarshal_VkPhysicalDeviceDepthStencilResolveProperties(
9434     VulkanStream* vkStream, VkStructureType rootType,
9435     VkPhysicalDeviceDepthStencilResolveProperties* forUnmarshaling) {
9436     (void)rootType;
9437     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9438     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9439         rootType = forUnmarshaling->sType;
9440     }
9441     size_t pNext_size;
9442     pNext_size = vkStream->getBe32();
9443     forUnmarshaling->pNext = nullptr;
9444     if (pNext_size) {
9445         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9446         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9447         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9448         vkStream->alloc((void**)&forUnmarshaling->pNext,
9449                         goldfish_vk_extension_struct_size_with_stream_features(
9450                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9451         *(VkStructureType*)forUnmarshaling->pNext = extType;
9452         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9453     }
9454     vkStream->read((VkResolveModeFlags*)&forUnmarshaling->supportedDepthResolveModes,
9455                    sizeof(VkResolveModeFlags));
9456     vkStream->read((VkResolveModeFlags*)&forUnmarshaling->supportedStencilResolveModes,
9457                    sizeof(VkResolveModeFlags));
9458     vkStream->read((VkBool32*)&forUnmarshaling->independentResolveNone, sizeof(VkBool32));
9459     vkStream->read((VkBool32*)&forUnmarshaling->independentResolve, sizeof(VkBool32));
9460 }
9461 
marshal_VkPhysicalDeviceScalarBlockLayoutFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceScalarBlockLayoutFeatures * forMarshaling)9462 void marshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
9463     VulkanStream* vkStream, VkStructureType rootType,
9464     const VkPhysicalDeviceScalarBlockLayoutFeatures* forMarshaling) {
9465     (void)rootType;
9466     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9467     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9468         rootType = forMarshaling->sType;
9469     }
9470     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9471     vkStream->write((VkBool32*)&forMarshaling->scalarBlockLayout, sizeof(VkBool32));
9472 }
9473 
unmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceScalarBlockLayoutFeatures * forUnmarshaling)9474 void unmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
9475     VulkanStream* vkStream, VkStructureType rootType,
9476     VkPhysicalDeviceScalarBlockLayoutFeatures* forUnmarshaling) {
9477     (void)rootType;
9478     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9479     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9480         rootType = forUnmarshaling->sType;
9481     }
9482     size_t pNext_size;
9483     pNext_size = vkStream->getBe32();
9484     forUnmarshaling->pNext = nullptr;
9485     if (pNext_size) {
9486         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9487         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9488         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9489         vkStream->alloc((void**)&forUnmarshaling->pNext,
9490                         goldfish_vk_extension_struct_size_with_stream_features(
9491                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9492         *(VkStructureType*)forUnmarshaling->pNext = extType;
9493         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9494     }
9495     vkStream->read((VkBool32*)&forUnmarshaling->scalarBlockLayout, sizeof(VkBool32));
9496 }
9497 
marshal_VkImageStencilUsageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkImageStencilUsageCreateInfo * forMarshaling)9498 void marshal_VkImageStencilUsageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
9499                                            const VkImageStencilUsageCreateInfo* forMarshaling) {
9500     (void)rootType;
9501     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9502     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9503         rootType = forMarshaling->sType;
9504     }
9505     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9506     vkStream->write((VkImageUsageFlags*)&forMarshaling->stencilUsage, sizeof(VkImageUsageFlags));
9507 }
9508 
unmarshal_VkImageStencilUsageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageStencilUsageCreateInfo * forUnmarshaling)9509 void unmarshal_VkImageStencilUsageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
9510                                              VkImageStencilUsageCreateInfo* forUnmarshaling) {
9511     (void)rootType;
9512     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9513     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9514         rootType = forUnmarshaling->sType;
9515     }
9516     size_t pNext_size;
9517     pNext_size = vkStream->getBe32();
9518     forUnmarshaling->pNext = nullptr;
9519     if (pNext_size) {
9520         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9521         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9522         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9523         vkStream->alloc((void**)&forUnmarshaling->pNext,
9524                         goldfish_vk_extension_struct_size_with_stream_features(
9525                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9526         *(VkStructureType*)forUnmarshaling->pNext = extType;
9527         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9528     }
9529     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->stencilUsage, sizeof(VkImageUsageFlags));
9530 }
9531 
marshal_VkSamplerReductionModeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSamplerReductionModeCreateInfo * forMarshaling)9532 void marshal_VkSamplerReductionModeCreateInfo(
9533     VulkanStream* vkStream, VkStructureType rootType,
9534     const VkSamplerReductionModeCreateInfo* forMarshaling) {
9535     (void)rootType;
9536     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9537     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9538         rootType = forMarshaling->sType;
9539     }
9540     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9541     vkStream->write((VkSamplerReductionMode*)&forMarshaling->reductionMode,
9542                     sizeof(VkSamplerReductionMode));
9543 }
9544 
unmarshal_VkSamplerReductionModeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerReductionModeCreateInfo * forUnmarshaling)9545 void unmarshal_VkSamplerReductionModeCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
9546                                                 VkSamplerReductionModeCreateInfo* forUnmarshaling) {
9547     (void)rootType;
9548     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9549     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9550         rootType = forUnmarshaling->sType;
9551     }
9552     size_t pNext_size;
9553     pNext_size = vkStream->getBe32();
9554     forUnmarshaling->pNext = nullptr;
9555     if (pNext_size) {
9556         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9557         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9558         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9559         vkStream->alloc((void**)&forUnmarshaling->pNext,
9560                         goldfish_vk_extension_struct_size_with_stream_features(
9561                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9562         *(VkStructureType*)forUnmarshaling->pNext = extType;
9563         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9564     }
9565     vkStream->read((VkSamplerReductionMode*)&forUnmarshaling->reductionMode,
9566                    sizeof(VkSamplerReductionMode));
9567 }
9568 
marshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSamplerFilterMinmaxProperties * forMarshaling)9569 void marshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
9570     VulkanStream* vkStream, VkStructureType rootType,
9571     const VkPhysicalDeviceSamplerFilterMinmaxProperties* forMarshaling) {
9572     (void)rootType;
9573     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9574     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9575         rootType = forMarshaling->sType;
9576     }
9577     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9578     vkStream->write((VkBool32*)&forMarshaling->filterMinmaxSingleComponentFormats,
9579                     sizeof(VkBool32));
9580     vkStream->write((VkBool32*)&forMarshaling->filterMinmaxImageComponentMapping, sizeof(VkBool32));
9581 }
9582 
unmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSamplerFilterMinmaxProperties * forUnmarshaling)9583 void unmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
9584     VulkanStream* vkStream, VkStructureType rootType,
9585     VkPhysicalDeviceSamplerFilterMinmaxProperties* forUnmarshaling) {
9586     (void)rootType;
9587     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9588     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9589         rootType = forUnmarshaling->sType;
9590     }
9591     size_t pNext_size;
9592     pNext_size = vkStream->getBe32();
9593     forUnmarshaling->pNext = nullptr;
9594     if (pNext_size) {
9595         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9596         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9597         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9598         vkStream->alloc((void**)&forUnmarshaling->pNext,
9599                         goldfish_vk_extension_struct_size_with_stream_features(
9600                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9601         *(VkStructureType*)forUnmarshaling->pNext = extType;
9602         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9603     }
9604     vkStream->read((VkBool32*)&forUnmarshaling->filterMinmaxSingleComponentFormats,
9605                    sizeof(VkBool32));
9606     vkStream->read((VkBool32*)&forUnmarshaling->filterMinmaxImageComponentMapping,
9607                    sizeof(VkBool32));
9608 }
9609 
marshal_VkPhysicalDeviceVulkanMemoryModelFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkanMemoryModelFeatures * forMarshaling)9610 void marshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
9611     VulkanStream* vkStream, VkStructureType rootType,
9612     const VkPhysicalDeviceVulkanMemoryModelFeatures* forMarshaling) {
9613     (void)rootType;
9614     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9615     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9616         rootType = forMarshaling->sType;
9617     }
9618     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9619     vkStream->write((VkBool32*)&forMarshaling->vulkanMemoryModel, sizeof(VkBool32));
9620     vkStream->write((VkBool32*)&forMarshaling->vulkanMemoryModelDeviceScope, sizeof(VkBool32));
9621     vkStream->write((VkBool32*)&forMarshaling->vulkanMemoryModelAvailabilityVisibilityChains,
9622                     sizeof(VkBool32));
9623 }
9624 
unmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkanMemoryModelFeatures * forUnmarshaling)9625 void unmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
9626     VulkanStream* vkStream, VkStructureType rootType,
9627     VkPhysicalDeviceVulkanMemoryModelFeatures* forUnmarshaling) {
9628     (void)rootType;
9629     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9630     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9631         rootType = forUnmarshaling->sType;
9632     }
9633     size_t pNext_size;
9634     pNext_size = vkStream->getBe32();
9635     forUnmarshaling->pNext = nullptr;
9636     if (pNext_size) {
9637         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9638         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9639         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9640         vkStream->alloc((void**)&forUnmarshaling->pNext,
9641                         goldfish_vk_extension_struct_size_with_stream_features(
9642                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9643         *(VkStructureType*)forUnmarshaling->pNext = extType;
9644         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9645     }
9646     vkStream->read((VkBool32*)&forUnmarshaling->vulkanMemoryModel, sizeof(VkBool32));
9647     vkStream->read((VkBool32*)&forUnmarshaling->vulkanMemoryModelDeviceScope, sizeof(VkBool32));
9648     vkStream->read((VkBool32*)&forUnmarshaling->vulkanMemoryModelAvailabilityVisibilityChains,
9649                    sizeof(VkBool32));
9650 }
9651 
marshal_VkPhysicalDeviceImagelessFramebufferFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceImagelessFramebufferFeatures * forMarshaling)9652 void marshal_VkPhysicalDeviceImagelessFramebufferFeatures(
9653     VulkanStream* vkStream, VkStructureType rootType,
9654     const VkPhysicalDeviceImagelessFramebufferFeatures* forMarshaling) {
9655     (void)rootType;
9656     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9657     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9658         rootType = forMarshaling->sType;
9659     }
9660     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9661     vkStream->write((VkBool32*)&forMarshaling->imagelessFramebuffer, sizeof(VkBool32));
9662 }
9663 
unmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImagelessFramebufferFeatures * forUnmarshaling)9664 void unmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(
9665     VulkanStream* vkStream, VkStructureType rootType,
9666     VkPhysicalDeviceImagelessFramebufferFeatures* forUnmarshaling) {
9667     (void)rootType;
9668     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9669     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9670         rootType = forUnmarshaling->sType;
9671     }
9672     size_t pNext_size;
9673     pNext_size = vkStream->getBe32();
9674     forUnmarshaling->pNext = nullptr;
9675     if (pNext_size) {
9676         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9677         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9678         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9679         vkStream->alloc((void**)&forUnmarshaling->pNext,
9680                         goldfish_vk_extension_struct_size_with_stream_features(
9681                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9682         *(VkStructureType*)forUnmarshaling->pNext = extType;
9683         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9684     }
9685     vkStream->read((VkBool32*)&forUnmarshaling->imagelessFramebuffer, sizeof(VkBool32));
9686 }
9687 
marshal_VkFramebufferAttachmentImageInfo(VulkanStream * vkStream,VkStructureType rootType,const VkFramebufferAttachmentImageInfo * forMarshaling)9688 void marshal_VkFramebufferAttachmentImageInfo(
9689     VulkanStream* vkStream, VkStructureType rootType,
9690     const VkFramebufferAttachmentImageInfo* forMarshaling) {
9691     (void)rootType;
9692     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9693     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9694         rootType = forMarshaling->sType;
9695     }
9696     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9697     vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
9698     vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
9699     vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
9700     vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
9701     vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
9702     vkStream->write((uint32_t*)&forMarshaling->viewFormatCount, sizeof(uint32_t));
9703     vkStream->write((const VkFormat*)forMarshaling->pViewFormats,
9704                     forMarshaling->viewFormatCount * sizeof(const VkFormat));
9705 }
9706 
unmarshal_VkFramebufferAttachmentImageInfo(VulkanStream * vkStream,VkStructureType rootType,VkFramebufferAttachmentImageInfo * forUnmarshaling)9707 void unmarshal_VkFramebufferAttachmentImageInfo(VulkanStream* vkStream, VkStructureType rootType,
9708                                                 VkFramebufferAttachmentImageInfo* forUnmarshaling) {
9709     (void)rootType;
9710     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9711     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9712         rootType = forUnmarshaling->sType;
9713     }
9714     size_t pNext_size;
9715     pNext_size = vkStream->getBe32();
9716     forUnmarshaling->pNext = nullptr;
9717     if (pNext_size) {
9718         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9719         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9720         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9721         vkStream->alloc((void**)&forUnmarshaling->pNext,
9722                         goldfish_vk_extension_struct_size_with_stream_features(
9723                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9724         *(VkStructureType*)forUnmarshaling->pNext = extType;
9725         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9726     }
9727     vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
9728     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
9729     vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
9730     vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
9731     vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
9732     vkStream->read((uint32_t*)&forUnmarshaling->viewFormatCount, sizeof(uint32_t));
9733     vkStream->alloc((void**)&forUnmarshaling->pViewFormats,
9734                     forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
9735     vkStream->read((VkFormat*)forUnmarshaling->pViewFormats,
9736                    forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
9737 }
9738 
marshal_VkFramebufferAttachmentsCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkFramebufferAttachmentsCreateInfo * forMarshaling)9739 void marshal_VkFramebufferAttachmentsCreateInfo(
9740     VulkanStream* vkStream, VkStructureType rootType,
9741     const VkFramebufferAttachmentsCreateInfo* forMarshaling) {
9742     (void)rootType;
9743     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9744     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9745         rootType = forMarshaling->sType;
9746     }
9747     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9748     vkStream->write((uint32_t*)&forMarshaling->attachmentImageInfoCount, sizeof(uint32_t));
9749     if (forMarshaling) {
9750         for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentImageInfoCount; ++i) {
9751             marshal_VkFramebufferAttachmentImageInfo(
9752                 vkStream, rootType,
9753                 (const VkFramebufferAttachmentImageInfo*)(forMarshaling->pAttachmentImageInfos +
9754                                                           i));
9755         }
9756     }
9757 }
9758 
unmarshal_VkFramebufferAttachmentsCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkFramebufferAttachmentsCreateInfo * forUnmarshaling)9759 void unmarshal_VkFramebufferAttachmentsCreateInfo(
9760     VulkanStream* vkStream, VkStructureType rootType,
9761     VkFramebufferAttachmentsCreateInfo* forUnmarshaling) {
9762     (void)rootType;
9763     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9764     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9765         rootType = forUnmarshaling->sType;
9766     }
9767     size_t pNext_size;
9768     pNext_size = vkStream->getBe32();
9769     forUnmarshaling->pNext = nullptr;
9770     if (pNext_size) {
9771         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9772         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9773         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9774         vkStream->alloc((void**)&forUnmarshaling->pNext,
9775                         goldfish_vk_extension_struct_size_with_stream_features(
9776                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9777         *(VkStructureType*)forUnmarshaling->pNext = extType;
9778         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9779     }
9780     vkStream->read((uint32_t*)&forUnmarshaling->attachmentImageInfoCount, sizeof(uint32_t));
9781     vkStream->alloc(
9782         (void**)&forUnmarshaling->pAttachmentImageInfos,
9783         forUnmarshaling->attachmentImageInfoCount * sizeof(const VkFramebufferAttachmentImageInfo));
9784     if (forUnmarshaling) {
9785         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentImageInfoCount; ++i) {
9786             unmarshal_VkFramebufferAttachmentImageInfo(
9787                 vkStream, rootType,
9788                 (VkFramebufferAttachmentImageInfo*)(forUnmarshaling->pAttachmentImageInfos + i));
9789         }
9790     }
9791 }
9792 
marshal_VkRenderPassAttachmentBeginInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassAttachmentBeginInfo * forMarshaling)9793 void marshal_VkRenderPassAttachmentBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
9794                                              const VkRenderPassAttachmentBeginInfo* forMarshaling) {
9795     (void)rootType;
9796     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9797     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9798         rootType = forMarshaling->sType;
9799     }
9800     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9801     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
9802     if (forMarshaling->attachmentCount) {
9803         uint64_t* cgen_var_0;
9804         vkStream->alloc((void**)&cgen_var_0, forMarshaling->attachmentCount * 8);
9805         vkStream->handleMapping()->mapHandles_VkImageView_u64(
9806             forMarshaling->pAttachments, cgen_var_0, forMarshaling->attachmentCount);
9807         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->attachmentCount * 8);
9808     }
9809 }
9810 
unmarshal_VkRenderPassAttachmentBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassAttachmentBeginInfo * forUnmarshaling)9811 void unmarshal_VkRenderPassAttachmentBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
9812                                                VkRenderPassAttachmentBeginInfo* forUnmarshaling) {
9813     (void)rootType;
9814     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9815     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9816         rootType = forUnmarshaling->sType;
9817     }
9818     size_t pNext_size;
9819     pNext_size = vkStream->getBe32();
9820     forUnmarshaling->pNext = nullptr;
9821     if (pNext_size) {
9822         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9823         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9824         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9825         vkStream->alloc((void**)&forUnmarshaling->pNext,
9826                         goldfish_vk_extension_struct_size_with_stream_features(
9827                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9828         *(VkStructureType*)forUnmarshaling->pNext = extType;
9829         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9830     }
9831     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
9832     vkStream->alloc((void**)&forUnmarshaling->pAttachments,
9833                     forUnmarshaling->attachmentCount * sizeof(const VkImageView));
9834     if (forUnmarshaling->attachmentCount) {
9835         uint64_t* cgen_var_0;
9836         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->attachmentCount * 8);
9837         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->attachmentCount * 8);
9838         vkStream->handleMapping()->mapHandles_u64_VkImageView(
9839             cgen_var_0, (VkImageView*)forUnmarshaling->pAttachments,
9840             forUnmarshaling->attachmentCount);
9841     }
9842 }
9843 
marshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceUniformBufferStandardLayoutFeatures * forMarshaling)9844 void marshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
9845     VulkanStream* vkStream, VkStructureType rootType,
9846     const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* forMarshaling) {
9847     (void)rootType;
9848     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9849     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9850         rootType = forMarshaling->sType;
9851     }
9852     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9853     vkStream->write((VkBool32*)&forMarshaling->uniformBufferStandardLayout, sizeof(VkBool32));
9854 }
9855 
unmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceUniformBufferStandardLayoutFeatures * forUnmarshaling)9856 void unmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
9857     VulkanStream* vkStream, VkStructureType rootType,
9858     VkPhysicalDeviceUniformBufferStandardLayoutFeatures* forUnmarshaling) {
9859     (void)rootType;
9860     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9861     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9862         rootType = forUnmarshaling->sType;
9863     }
9864     size_t pNext_size;
9865     pNext_size = vkStream->getBe32();
9866     forUnmarshaling->pNext = nullptr;
9867     if (pNext_size) {
9868         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9869         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9870         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9871         vkStream->alloc((void**)&forUnmarshaling->pNext,
9872                         goldfish_vk_extension_struct_size_with_stream_features(
9873                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9874         *(VkStructureType*)forUnmarshaling->pNext = extType;
9875         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9876     }
9877     vkStream->read((VkBool32*)&forUnmarshaling->uniformBufferStandardLayout, sizeof(VkBool32));
9878 }
9879 
marshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures * forMarshaling)9880 void marshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
9881     VulkanStream* vkStream, VkStructureType rootType,
9882     const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* forMarshaling) {
9883     (void)rootType;
9884     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9885     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9886         rootType = forMarshaling->sType;
9887     }
9888     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9889     vkStream->write((VkBool32*)&forMarshaling->shaderSubgroupExtendedTypes, sizeof(VkBool32));
9890 }
9891 
unmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures * forUnmarshaling)9892 void unmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
9893     VulkanStream* vkStream, VkStructureType rootType,
9894     VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* forUnmarshaling) {
9895     (void)rootType;
9896     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9897     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9898         rootType = forUnmarshaling->sType;
9899     }
9900     size_t pNext_size;
9901     pNext_size = vkStream->getBe32();
9902     forUnmarshaling->pNext = nullptr;
9903     if (pNext_size) {
9904         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9905         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9906         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9907         vkStream->alloc((void**)&forUnmarshaling->pNext,
9908                         goldfish_vk_extension_struct_size_with_stream_features(
9909                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9910         *(VkStructureType*)forUnmarshaling->pNext = extType;
9911         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9912     }
9913     vkStream->read((VkBool32*)&forUnmarshaling->shaderSubgroupExtendedTypes, sizeof(VkBool32));
9914 }
9915 
marshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures * forMarshaling)9916 void marshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
9917     VulkanStream* vkStream, VkStructureType rootType,
9918     const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* forMarshaling) {
9919     (void)rootType;
9920     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9921     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9922         rootType = forMarshaling->sType;
9923     }
9924     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9925     vkStream->write((VkBool32*)&forMarshaling->separateDepthStencilLayouts, sizeof(VkBool32));
9926 }
9927 
unmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures * forUnmarshaling)9928 void unmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
9929     VulkanStream* vkStream, VkStructureType rootType,
9930     VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* forUnmarshaling) {
9931     (void)rootType;
9932     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9933     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9934         rootType = forUnmarshaling->sType;
9935     }
9936     size_t pNext_size;
9937     pNext_size = vkStream->getBe32();
9938     forUnmarshaling->pNext = nullptr;
9939     if (pNext_size) {
9940         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9941         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9942         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9943         vkStream->alloc((void**)&forUnmarshaling->pNext,
9944                         goldfish_vk_extension_struct_size_with_stream_features(
9945                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9946         *(VkStructureType*)forUnmarshaling->pNext = extType;
9947         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9948     }
9949     vkStream->read((VkBool32*)&forUnmarshaling->separateDepthStencilLayouts, sizeof(VkBool32));
9950 }
9951 
marshal_VkAttachmentReferenceStencilLayout(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentReferenceStencilLayout * forMarshaling)9952 void marshal_VkAttachmentReferenceStencilLayout(
9953     VulkanStream* vkStream, VkStructureType rootType,
9954     const VkAttachmentReferenceStencilLayout* forMarshaling) {
9955     (void)rootType;
9956     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9957     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9958         rootType = forMarshaling->sType;
9959     }
9960     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9961     vkStream->write((VkImageLayout*)&forMarshaling->stencilLayout, sizeof(VkImageLayout));
9962 }
9963 
unmarshal_VkAttachmentReferenceStencilLayout(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentReferenceStencilLayout * forUnmarshaling)9964 void unmarshal_VkAttachmentReferenceStencilLayout(
9965     VulkanStream* vkStream, VkStructureType rootType,
9966     VkAttachmentReferenceStencilLayout* forUnmarshaling) {
9967     (void)rootType;
9968     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
9969     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9970         rootType = forUnmarshaling->sType;
9971     }
9972     size_t pNext_size;
9973     pNext_size = vkStream->getBe32();
9974     forUnmarshaling->pNext = nullptr;
9975     if (pNext_size) {
9976         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9977         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
9978         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9979         vkStream->alloc((void**)&forUnmarshaling->pNext,
9980                         goldfish_vk_extension_struct_size_with_stream_features(
9981                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9982         *(VkStructureType*)forUnmarshaling->pNext = extType;
9983         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
9984     }
9985     vkStream->read((VkImageLayout*)&forUnmarshaling->stencilLayout, sizeof(VkImageLayout));
9986 }
9987 
marshal_VkAttachmentDescriptionStencilLayout(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentDescriptionStencilLayout * forMarshaling)9988 void marshal_VkAttachmentDescriptionStencilLayout(
9989     VulkanStream* vkStream, VkStructureType rootType,
9990     const VkAttachmentDescriptionStencilLayout* forMarshaling) {
9991     (void)rootType;
9992     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
9993     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9994         rootType = forMarshaling->sType;
9995     }
9996     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
9997     vkStream->write((VkImageLayout*)&forMarshaling->stencilInitialLayout, sizeof(VkImageLayout));
9998     vkStream->write((VkImageLayout*)&forMarshaling->stencilFinalLayout, sizeof(VkImageLayout));
9999 }
10000 
unmarshal_VkAttachmentDescriptionStencilLayout(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentDescriptionStencilLayout * forUnmarshaling)10001 void unmarshal_VkAttachmentDescriptionStencilLayout(
10002     VulkanStream* vkStream, VkStructureType rootType,
10003     VkAttachmentDescriptionStencilLayout* forUnmarshaling) {
10004     (void)rootType;
10005     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10006     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10007         rootType = forUnmarshaling->sType;
10008     }
10009     size_t pNext_size;
10010     pNext_size = vkStream->getBe32();
10011     forUnmarshaling->pNext = nullptr;
10012     if (pNext_size) {
10013         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10014         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10015         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10016         vkStream->alloc((void**)&forUnmarshaling->pNext,
10017                         goldfish_vk_extension_struct_size_with_stream_features(
10018                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10019         *(VkStructureType*)forUnmarshaling->pNext = extType;
10020         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10021     }
10022     vkStream->read((VkImageLayout*)&forUnmarshaling->stencilInitialLayout, sizeof(VkImageLayout));
10023     vkStream->read((VkImageLayout*)&forUnmarshaling->stencilFinalLayout, sizeof(VkImageLayout));
10024 }
10025 
marshal_VkPhysicalDeviceHostQueryResetFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceHostQueryResetFeatures * forMarshaling)10026 void marshal_VkPhysicalDeviceHostQueryResetFeatures(
10027     VulkanStream* vkStream, VkStructureType rootType,
10028     const VkPhysicalDeviceHostQueryResetFeatures* forMarshaling) {
10029     (void)rootType;
10030     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10031     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10032         rootType = forMarshaling->sType;
10033     }
10034     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10035     vkStream->write((VkBool32*)&forMarshaling->hostQueryReset, sizeof(VkBool32));
10036 }
10037 
unmarshal_VkPhysicalDeviceHostQueryResetFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceHostQueryResetFeatures * forUnmarshaling)10038 void unmarshal_VkPhysicalDeviceHostQueryResetFeatures(
10039     VulkanStream* vkStream, VkStructureType rootType,
10040     VkPhysicalDeviceHostQueryResetFeatures* forUnmarshaling) {
10041     (void)rootType;
10042     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10043     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10044         rootType = forUnmarshaling->sType;
10045     }
10046     size_t pNext_size;
10047     pNext_size = vkStream->getBe32();
10048     forUnmarshaling->pNext = nullptr;
10049     if (pNext_size) {
10050         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10051         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10052         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10053         vkStream->alloc((void**)&forUnmarshaling->pNext,
10054                         goldfish_vk_extension_struct_size_with_stream_features(
10055                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10056         *(VkStructureType*)forUnmarshaling->pNext = extType;
10057         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10058     }
10059     vkStream->read((VkBool32*)&forUnmarshaling->hostQueryReset, sizeof(VkBool32));
10060 }
10061 
marshal_VkPhysicalDeviceTimelineSemaphoreFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTimelineSemaphoreFeatures * forMarshaling)10062 void marshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
10063     VulkanStream* vkStream, VkStructureType rootType,
10064     const VkPhysicalDeviceTimelineSemaphoreFeatures* forMarshaling) {
10065     (void)rootType;
10066     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10067     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10068         rootType = forMarshaling->sType;
10069     }
10070     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10071     vkStream->write((VkBool32*)&forMarshaling->timelineSemaphore, sizeof(VkBool32));
10072 }
10073 
unmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTimelineSemaphoreFeatures * forUnmarshaling)10074 void unmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
10075     VulkanStream* vkStream, VkStructureType rootType,
10076     VkPhysicalDeviceTimelineSemaphoreFeatures* forUnmarshaling) {
10077     (void)rootType;
10078     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10079     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10080         rootType = forUnmarshaling->sType;
10081     }
10082     size_t pNext_size;
10083     pNext_size = vkStream->getBe32();
10084     forUnmarshaling->pNext = nullptr;
10085     if (pNext_size) {
10086         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10087         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10088         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10089         vkStream->alloc((void**)&forUnmarshaling->pNext,
10090                         goldfish_vk_extension_struct_size_with_stream_features(
10091                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10092         *(VkStructureType*)forUnmarshaling->pNext = extType;
10093         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10094     }
10095     vkStream->read((VkBool32*)&forUnmarshaling->timelineSemaphore, sizeof(VkBool32));
10096 }
10097 
marshal_VkPhysicalDeviceTimelineSemaphoreProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTimelineSemaphoreProperties * forMarshaling)10098 void marshal_VkPhysicalDeviceTimelineSemaphoreProperties(
10099     VulkanStream* vkStream, VkStructureType rootType,
10100     const VkPhysicalDeviceTimelineSemaphoreProperties* forMarshaling) {
10101     (void)rootType;
10102     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10103     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10104         rootType = forMarshaling->sType;
10105     }
10106     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10107     vkStream->write((uint64_t*)&forMarshaling->maxTimelineSemaphoreValueDifference,
10108                     sizeof(uint64_t));
10109 }
10110 
unmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTimelineSemaphoreProperties * forUnmarshaling)10111 void unmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(
10112     VulkanStream* vkStream, VkStructureType rootType,
10113     VkPhysicalDeviceTimelineSemaphoreProperties* forUnmarshaling) {
10114     (void)rootType;
10115     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10116     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10117         rootType = forUnmarshaling->sType;
10118     }
10119     size_t pNext_size;
10120     pNext_size = vkStream->getBe32();
10121     forUnmarshaling->pNext = nullptr;
10122     if (pNext_size) {
10123         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10124         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10125         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10126         vkStream->alloc((void**)&forUnmarshaling->pNext,
10127                         goldfish_vk_extension_struct_size_with_stream_features(
10128                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10129         *(VkStructureType*)forUnmarshaling->pNext = extType;
10130         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10131     }
10132     vkStream->read((uint64_t*)&forUnmarshaling->maxTimelineSemaphoreValueDifference,
10133                    sizeof(uint64_t));
10134 }
10135 
marshal_VkSemaphoreTypeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSemaphoreTypeCreateInfo * forMarshaling)10136 void marshal_VkSemaphoreTypeCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
10137                                        const VkSemaphoreTypeCreateInfo* forMarshaling) {
10138     (void)rootType;
10139     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10140     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10141         rootType = forMarshaling->sType;
10142     }
10143     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10144     vkStream->write((VkSemaphoreType*)&forMarshaling->semaphoreType, sizeof(VkSemaphoreType));
10145     vkStream->write((uint64_t*)&forMarshaling->initialValue, sizeof(uint64_t));
10146 }
10147 
unmarshal_VkSemaphoreTypeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreTypeCreateInfo * forUnmarshaling)10148 void unmarshal_VkSemaphoreTypeCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
10149                                          VkSemaphoreTypeCreateInfo* forUnmarshaling) {
10150     (void)rootType;
10151     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10152     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10153         rootType = forUnmarshaling->sType;
10154     }
10155     size_t pNext_size;
10156     pNext_size = vkStream->getBe32();
10157     forUnmarshaling->pNext = nullptr;
10158     if (pNext_size) {
10159         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10160         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10161         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10162         vkStream->alloc((void**)&forUnmarshaling->pNext,
10163                         goldfish_vk_extension_struct_size_with_stream_features(
10164                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10165         *(VkStructureType*)forUnmarshaling->pNext = extType;
10166         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10167     }
10168     vkStream->read((VkSemaphoreType*)&forUnmarshaling->semaphoreType, sizeof(VkSemaphoreType));
10169     vkStream->read((uint64_t*)&forUnmarshaling->initialValue, sizeof(uint64_t));
10170 }
10171 
marshal_VkTimelineSemaphoreSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkTimelineSemaphoreSubmitInfo * forMarshaling)10172 void marshal_VkTimelineSemaphoreSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
10173                                            const VkTimelineSemaphoreSubmitInfo* forMarshaling) {
10174     (void)rootType;
10175     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10176     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10177         rootType = forMarshaling->sType;
10178     }
10179     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10180     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreValueCount, sizeof(uint32_t));
10181     // WARNING PTR CHECK
10182     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pWaitSemaphoreValues;
10183     vkStream->putBe64(cgen_var_0);
10184     if (forMarshaling->pWaitSemaphoreValues) {
10185         vkStream->write((const uint64_t*)forMarshaling->pWaitSemaphoreValues,
10186                         forMarshaling->waitSemaphoreValueCount * sizeof(const uint64_t));
10187     }
10188     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreValueCount, sizeof(uint32_t));
10189     // WARNING PTR CHECK
10190     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pSignalSemaphoreValues;
10191     vkStream->putBe64(cgen_var_1);
10192     if (forMarshaling->pSignalSemaphoreValues) {
10193         vkStream->write((const uint64_t*)forMarshaling->pSignalSemaphoreValues,
10194                         forMarshaling->signalSemaphoreValueCount * sizeof(const uint64_t));
10195     }
10196 }
10197 
unmarshal_VkTimelineSemaphoreSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkTimelineSemaphoreSubmitInfo * forUnmarshaling)10198 void unmarshal_VkTimelineSemaphoreSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
10199                                              VkTimelineSemaphoreSubmitInfo* forUnmarshaling) {
10200     (void)rootType;
10201     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10202     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10203         rootType = forUnmarshaling->sType;
10204     }
10205     size_t pNext_size;
10206     pNext_size = vkStream->getBe32();
10207     forUnmarshaling->pNext = nullptr;
10208     if (pNext_size) {
10209         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10210         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10211         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10212         vkStream->alloc((void**)&forUnmarshaling->pNext,
10213                         goldfish_vk_extension_struct_size_with_stream_features(
10214                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10215         *(VkStructureType*)forUnmarshaling->pNext = extType;
10216         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10217     }
10218     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreValueCount, sizeof(uint32_t));
10219     // WARNING PTR CHECK
10220     forUnmarshaling->pWaitSemaphoreValues = (const uint64_t*)(uintptr_t)vkStream->getBe64();
10221     if (forUnmarshaling->pWaitSemaphoreValues) {
10222         vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreValues,
10223                         forUnmarshaling->waitSemaphoreValueCount * sizeof(const uint64_t));
10224         vkStream->read((uint64_t*)forUnmarshaling->pWaitSemaphoreValues,
10225                        forUnmarshaling->waitSemaphoreValueCount * sizeof(const uint64_t));
10226     }
10227     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreValueCount, sizeof(uint32_t));
10228     // WARNING PTR CHECK
10229     forUnmarshaling->pSignalSemaphoreValues = (const uint64_t*)(uintptr_t)vkStream->getBe64();
10230     if (forUnmarshaling->pSignalSemaphoreValues) {
10231         vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreValues,
10232                         forUnmarshaling->signalSemaphoreValueCount * sizeof(const uint64_t));
10233         vkStream->read((uint64_t*)forUnmarshaling->pSignalSemaphoreValues,
10234                        forUnmarshaling->signalSemaphoreValueCount * sizeof(const uint64_t));
10235     }
10236 }
10237 
marshal_VkSemaphoreWaitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSemaphoreWaitInfo * forMarshaling)10238 void marshal_VkSemaphoreWaitInfo(VulkanStream* vkStream, VkStructureType rootType,
10239                                  const VkSemaphoreWaitInfo* forMarshaling) {
10240     (void)rootType;
10241     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10242     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10243         rootType = forMarshaling->sType;
10244     }
10245     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10246     vkStream->write((VkSemaphoreWaitFlags*)&forMarshaling->flags, sizeof(VkSemaphoreWaitFlags));
10247     vkStream->write((uint32_t*)&forMarshaling->semaphoreCount, sizeof(uint32_t));
10248     if (forMarshaling->semaphoreCount) {
10249         uint64_t* cgen_var_0;
10250         vkStream->alloc((void**)&cgen_var_0, forMarshaling->semaphoreCount * 8);
10251         vkStream->handleMapping()->mapHandles_VkSemaphore_u64(
10252             forMarshaling->pSemaphores, cgen_var_0, forMarshaling->semaphoreCount);
10253         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->semaphoreCount * 8);
10254     }
10255     vkStream->write((const uint64_t*)forMarshaling->pValues,
10256                     forMarshaling->semaphoreCount * sizeof(const uint64_t));
10257 }
10258 
unmarshal_VkSemaphoreWaitInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreWaitInfo * forUnmarshaling)10259 void unmarshal_VkSemaphoreWaitInfo(VulkanStream* vkStream, VkStructureType rootType,
10260                                    VkSemaphoreWaitInfo* forUnmarshaling) {
10261     (void)rootType;
10262     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10263     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10264         rootType = forUnmarshaling->sType;
10265     }
10266     size_t pNext_size;
10267     pNext_size = vkStream->getBe32();
10268     forUnmarshaling->pNext = nullptr;
10269     if (pNext_size) {
10270         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10271         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10272         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10273         vkStream->alloc((void**)&forUnmarshaling->pNext,
10274                         goldfish_vk_extension_struct_size_with_stream_features(
10275                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10276         *(VkStructureType*)forUnmarshaling->pNext = extType;
10277         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10278     }
10279     vkStream->read((VkSemaphoreWaitFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreWaitFlags));
10280     vkStream->read((uint32_t*)&forUnmarshaling->semaphoreCount, sizeof(uint32_t));
10281     vkStream->alloc((void**)&forUnmarshaling->pSemaphores,
10282                     forUnmarshaling->semaphoreCount * sizeof(const VkSemaphore));
10283     if (forUnmarshaling->semaphoreCount) {
10284         uint64_t* cgen_var_0;
10285         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->semaphoreCount * 8);
10286         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->semaphoreCount * 8);
10287         vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
10288             cgen_var_0, (VkSemaphore*)forUnmarshaling->pSemaphores,
10289             forUnmarshaling->semaphoreCount);
10290     }
10291     vkStream->alloc((void**)&forUnmarshaling->pValues,
10292                     forUnmarshaling->semaphoreCount * sizeof(const uint64_t));
10293     vkStream->read((uint64_t*)forUnmarshaling->pValues,
10294                    forUnmarshaling->semaphoreCount * sizeof(const uint64_t));
10295 }
10296 
marshal_VkSemaphoreSignalInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSemaphoreSignalInfo * forMarshaling)10297 void marshal_VkSemaphoreSignalInfo(VulkanStream* vkStream, VkStructureType rootType,
10298                                    const VkSemaphoreSignalInfo* forMarshaling) {
10299     (void)rootType;
10300     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10301     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10302         rootType = forMarshaling->sType;
10303     }
10304     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10305     uint64_t cgen_var_0;
10306     vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_0,
10307                                                           1);
10308     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
10309     vkStream->write((uint64_t*)&forMarshaling->value, sizeof(uint64_t));
10310 }
10311 
unmarshal_VkSemaphoreSignalInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreSignalInfo * forUnmarshaling)10312 void unmarshal_VkSemaphoreSignalInfo(VulkanStream* vkStream, VkStructureType rootType,
10313                                      VkSemaphoreSignalInfo* forUnmarshaling) {
10314     (void)rootType;
10315     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10316     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10317         rootType = forUnmarshaling->sType;
10318     }
10319     size_t pNext_size;
10320     pNext_size = vkStream->getBe32();
10321     forUnmarshaling->pNext = nullptr;
10322     if (pNext_size) {
10323         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10324         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10325         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10326         vkStream->alloc((void**)&forUnmarshaling->pNext,
10327                         goldfish_vk_extension_struct_size_with_stream_features(
10328                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10329         *(VkStructureType*)forUnmarshaling->pNext = extType;
10330         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10331     }
10332     uint64_t cgen_var_0;
10333     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
10334     vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
10335         &cgen_var_0, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
10336     vkStream->read((uint64_t*)&forUnmarshaling->value, sizeof(uint64_t));
10337 }
10338 
marshal_VkPhysicalDeviceBufferDeviceAddressFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceBufferDeviceAddressFeatures * forMarshaling)10339 void marshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
10340     VulkanStream* vkStream, VkStructureType rootType,
10341     const VkPhysicalDeviceBufferDeviceAddressFeatures* forMarshaling) {
10342     (void)rootType;
10343     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10344     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10345         rootType = forMarshaling->sType;
10346     }
10347     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10348     vkStream->write((VkBool32*)&forMarshaling->bufferDeviceAddress, sizeof(VkBool32));
10349     vkStream->write((VkBool32*)&forMarshaling->bufferDeviceAddressCaptureReplay, sizeof(VkBool32));
10350     vkStream->write((VkBool32*)&forMarshaling->bufferDeviceAddressMultiDevice, sizeof(VkBool32));
10351 }
10352 
unmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceBufferDeviceAddressFeatures * forUnmarshaling)10353 void unmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
10354     VulkanStream* vkStream, VkStructureType rootType,
10355     VkPhysicalDeviceBufferDeviceAddressFeatures* forUnmarshaling) {
10356     (void)rootType;
10357     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10358     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10359         rootType = forUnmarshaling->sType;
10360     }
10361     size_t pNext_size;
10362     pNext_size = vkStream->getBe32();
10363     forUnmarshaling->pNext = nullptr;
10364     if (pNext_size) {
10365         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10366         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10367         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10368         vkStream->alloc((void**)&forUnmarshaling->pNext,
10369                         goldfish_vk_extension_struct_size_with_stream_features(
10370                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10371         *(VkStructureType*)forUnmarshaling->pNext = extType;
10372         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10373     }
10374     vkStream->read((VkBool32*)&forUnmarshaling->bufferDeviceAddress, sizeof(VkBool32));
10375     vkStream->read((VkBool32*)&forUnmarshaling->bufferDeviceAddressCaptureReplay, sizeof(VkBool32));
10376     vkStream->read((VkBool32*)&forUnmarshaling->bufferDeviceAddressMultiDevice, sizeof(VkBool32));
10377 }
10378 
marshal_VkBufferDeviceAddressInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBufferDeviceAddressInfo * forMarshaling)10379 void marshal_VkBufferDeviceAddressInfo(VulkanStream* vkStream, VkStructureType rootType,
10380                                        const VkBufferDeviceAddressInfo* forMarshaling) {
10381     (void)rootType;
10382     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10383     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10384         rootType = forMarshaling->sType;
10385     }
10386     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10387     uint64_t cgen_var_0;
10388     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
10389     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
10390 }
10391 
unmarshal_VkBufferDeviceAddressInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferDeviceAddressInfo * forUnmarshaling)10392 void unmarshal_VkBufferDeviceAddressInfo(VulkanStream* vkStream, VkStructureType rootType,
10393                                          VkBufferDeviceAddressInfo* forUnmarshaling) {
10394     (void)rootType;
10395     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10396     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10397         rootType = forUnmarshaling->sType;
10398     }
10399     size_t pNext_size;
10400     pNext_size = vkStream->getBe32();
10401     forUnmarshaling->pNext = nullptr;
10402     if (pNext_size) {
10403         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10404         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10405         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10406         vkStream->alloc((void**)&forUnmarshaling->pNext,
10407                         goldfish_vk_extension_struct_size_with_stream_features(
10408                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10409         *(VkStructureType*)forUnmarshaling->pNext = extType;
10410         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10411     }
10412     uint64_t cgen_var_0;
10413     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
10414     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
10415                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
10416 }
10417 
marshal_VkBufferOpaqueCaptureAddressCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkBufferOpaqueCaptureAddressCreateInfo * forMarshaling)10418 void marshal_VkBufferOpaqueCaptureAddressCreateInfo(
10419     VulkanStream* vkStream, VkStructureType rootType,
10420     const VkBufferOpaqueCaptureAddressCreateInfo* forMarshaling) {
10421     (void)rootType;
10422     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10423     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10424         rootType = forMarshaling->sType;
10425     }
10426     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10427     vkStream->write((uint64_t*)&forMarshaling->opaqueCaptureAddress, sizeof(uint64_t));
10428 }
10429 
unmarshal_VkBufferOpaqueCaptureAddressCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferOpaqueCaptureAddressCreateInfo * forUnmarshaling)10430 void unmarshal_VkBufferOpaqueCaptureAddressCreateInfo(
10431     VulkanStream* vkStream, VkStructureType rootType,
10432     VkBufferOpaqueCaptureAddressCreateInfo* forUnmarshaling) {
10433     (void)rootType;
10434     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10435     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10436         rootType = forUnmarshaling->sType;
10437     }
10438     size_t pNext_size;
10439     pNext_size = vkStream->getBe32();
10440     forUnmarshaling->pNext = nullptr;
10441     if (pNext_size) {
10442         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10443         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10444         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10445         vkStream->alloc((void**)&forUnmarshaling->pNext,
10446                         goldfish_vk_extension_struct_size_with_stream_features(
10447                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10448         *(VkStructureType*)forUnmarshaling->pNext = extType;
10449         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10450     }
10451     vkStream->read((uint64_t*)&forUnmarshaling->opaqueCaptureAddress, sizeof(uint64_t));
10452 }
10453 
marshal_VkMemoryOpaqueCaptureAddressAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryOpaqueCaptureAddressAllocateInfo * forMarshaling)10454 void marshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
10455     VulkanStream* vkStream, VkStructureType rootType,
10456     const VkMemoryOpaqueCaptureAddressAllocateInfo* forMarshaling) {
10457     (void)rootType;
10458     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10459     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10460         rootType = forMarshaling->sType;
10461     }
10462     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10463     vkStream->write((uint64_t*)&forMarshaling->opaqueCaptureAddress, sizeof(uint64_t));
10464 }
10465 
unmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryOpaqueCaptureAddressAllocateInfo * forUnmarshaling)10466 void unmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
10467     VulkanStream* vkStream, VkStructureType rootType,
10468     VkMemoryOpaqueCaptureAddressAllocateInfo* forUnmarshaling) {
10469     (void)rootType;
10470     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10471     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10472         rootType = forUnmarshaling->sType;
10473     }
10474     size_t pNext_size;
10475     pNext_size = vkStream->getBe32();
10476     forUnmarshaling->pNext = nullptr;
10477     if (pNext_size) {
10478         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10479         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10480         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10481         vkStream->alloc((void**)&forUnmarshaling->pNext,
10482                         goldfish_vk_extension_struct_size_with_stream_features(
10483                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10484         *(VkStructureType*)forUnmarshaling->pNext = extType;
10485         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10486     }
10487     vkStream->read((uint64_t*)&forUnmarshaling->opaqueCaptureAddress, sizeof(uint64_t));
10488 }
10489 
marshal_VkDeviceMemoryOpaqueCaptureAddressInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceMemoryOpaqueCaptureAddressInfo * forMarshaling)10490 void marshal_VkDeviceMemoryOpaqueCaptureAddressInfo(
10491     VulkanStream* vkStream, VkStructureType rootType,
10492     const VkDeviceMemoryOpaqueCaptureAddressInfo* forMarshaling) {
10493     (void)rootType;
10494     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10495     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10496         rootType = forMarshaling->sType;
10497     }
10498     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10499     uint64_t cgen_var_0;
10500     vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_0,
10501                                                              1);
10502     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
10503 }
10504 
unmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceMemoryOpaqueCaptureAddressInfo * forUnmarshaling)10505 void unmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo(
10506     VulkanStream* vkStream, VkStructureType rootType,
10507     VkDeviceMemoryOpaqueCaptureAddressInfo* forUnmarshaling) {
10508     (void)rootType;
10509     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10510     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10511         rootType = forUnmarshaling->sType;
10512     }
10513     size_t pNext_size;
10514     pNext_size = vkStream->getBe32();
10515     forUnmarshaling->pNext = nullptr;
10516     if (pNext_size) {
10517         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10518         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10519         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10520         vkStream->alloc((void**)&forUnmarshaling->pNext,
10521                         goldfish_vk_extension_struct_size_with_stream_features(
10522                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10523         *(VkStructureType*)forUnmarshaling->pNext = extType;
10524         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10525     }
10526     uint64_t cgen_var_0;
10527     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
10528     vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(
10529         &cgen_var_0, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
10530 }
10531 
10532 #endif
10533 #ifdef VK_VERSION_1_3
marshal_VkPhysicalDeviceVulkan13Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkan13Features * forMarshaling)10534 void marshal_VkPhysicalDeviceVulkan13Features(
10535     VulkanStream* vkStream, VkStructureType rootType,
10536     const VkPhysicalDeviceVulkan13Features* forMarshaling) {
10537     (void)rootType;
10538     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10539     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10540         rootType = forMarshaling->sType;
10541     }
10542     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10543     vkStream->write((VkBool32*)&forMarshaling->robustImageAccess, sizeof(VkBool32));
10544     vkStream->write((VkBool32*)&forMarshaling->inlineUniformBlock, sizeof(VkBool32));
10545     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingInlineUniformBlockUpdateAfterBind,
10546                     sizeof(VkBool32));
10547     vkStream->write((VkBool32*)&forMarshaling->pipelineCreationCacheControl, sizeof(VkBool32));
10548     vkStream->write((VkBool32*)&forMarshaling->privateData, sizeof(VkBool32));
10549     vkStream->write((VkBool32*)&forMarshaling->shaderDemoteToHelperInvocation, sizeof(VkBool32));
10550     vkStream->write((VkBool32*)&forMarshaling->shaderTerminateInvocation, sizeof(VkBool32));
10551     vkStream->write((VkBool32*)&forMarshaling->subgroupSizeControl, sizeof(VkBool32));
10552     vkStream->write((VkBool32*)&forMarshaling->computeFullSubgroups, sizeof(VkBool32));
10553     vkStream->write((VkBool32*)&forMarshaling->synchronization2, sizeof(VkBool32));
10554     vkStream->write((VkBool32*)&forMarshaling->textureCompressionASTC_HDR, sizeof(VkBool32));
10555     vkStream->write((VkBool32*)&forMarshaling->shaderZeroInitializeWorkgroupMemory,
10556                     sizeof(VkBool32));
10557     vkStream->write((VkBool32*)&forMarshaling->dynamicRendering, sizeof(VkBool32));
10558     vkStream->write((VkBool32*)&forMarshaling->shaderIntegerDotProduct, sizeof(VkBool32));
10559     vkStream->write((VkBool32*)&forMarshaling->maintenance4, sizeof(VkBool32));
10560 }
10561 
unmarshal_VkPhysicalDeviceVulkan13Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan13Features * forUnmarshaling)10562 void unmarshal_VkPhysicalDeviceVulkan13Features(VulkanStream* vkStream, VkStructureType rootType,
10563                                                 VkPhysicalDeviceVulkan13Features* forUnmarshaling) {
10564     (void)rootType;
10565     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10566     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10567         rootType = forUnmarshaling->sType;
10568     }
10569     size_t pNext_size;
10570     pNext_size = vkStream->getBe32();
10571     forUnmarshaling->pNext = nullptr;
10572     if (pNext_size) {
10573         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10574         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10575         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10576         vkStream->alloc((void**)&forUnmarshaling->pNext,
10577                         goldfish_vk_extension_struct_size_with_stream_features(
10578                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10579         *(VkStructureType*)forUnmarshaling->pNext = extType;
10580         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10581     }
10582     vkStream->read((VkBool32*)&forUnmarshaling->robustImageAccess, sizeof(VkBool32));
10583     vkStream->read((VkBool32*)&forUnmarshaling->inlineUniformBlock, sizeof(VkBool32));
10584     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingInlineUniformBlockUpdateAfterBind,
10585                    sizeof(VkBool32));
10586     vkStream->read((VkBool32*)&forUnmarshaling->pipelineCreationCacheControl, sizeof(VkBool32));
10587     vkStream->read((VkBool32*)&forUnmarshaling->privateData, sizeof(VkBool32));
10588     vkStream->read((VkBool32*)&forUnmarshaling->shaderDemoteToHelperInvocation, sizeof(VkBool32));
10589     vkStream->read((VkBool32*)&forUnmarshaling->shaderTerminateInvocation, sizeof(VkBool32));
10590     vkStream->read((VkBool32*)&forUnmarshaling->subgroupSizeControl, sizeof(VkBool32));
10591     vkStream->read((VkBool32*)&forUnmarshaling->computeFullSubgroups, sizeof(VkBool32));
10592     vkStream->read((VkBool32*)&forUnmarshaling->synchronization2, sizeof(VkBool32));
10593     vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionASTC_HDR, sizeof(VkBool32));
10594     vkStream->read((VkBool32*)&forUnmarshaling->shaderZeroInitializeWorkgroupMemory,
10595                    sizeof(VkBool32));
10596     vkStream->read((VkBool32*)&forUnmarshaling->dynamicRendering, sizeof(VkBool32));
10597     vkStream->read((VkBool32*)&forUnmarshaling->shaderIntegerDotProduct, sizeof(VkBool32));
10598     vkStream->read((VkBool32*)&forUnmarshaling->maintenance4, sizeof(VkBool32));
10599 }
10600 
marshal_VkPhysicalDeviceVulkan13Properties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVulkan13Properties * forMarshaling)10601 void marshal_VkPhysicalDeviceVulkan13Properties(
10602     VulkanStream* vkStream, VkStructureType rootType,
10603     const VkPhysicalDeviceVulkan13Properties* forMarshaling) {
10604     (void)rootType;
10605     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10606     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10607         rootType = forMarshaling->sType;
10608     }
10609     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10610     vkStream->write((uint32_t*)&forMarshaling->minSubgroupSize, sizeof(uint32_t));
10611     vkStream->write((uint32_t*)&forMarshaling->maxSubgroupSize, sizeof(uint32_t));
10612     vkStream->write((uint32_t*)&forMarshaling->maxComputeWorkgroupSubgroups, sizeof(uint32_t));
10613     vkStream->write((VkShaderStageFlags*)&forMarshaling->requiredSubgroupSizeStages,
10614                     sizeof(VkShaderStageFlags));
10615     vkStream->write((uint32_t*)&forMarshaling->maxInlineUniformBlockSize, sizeof(uint32_t));
10616     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorInlineUniformBlocks,
10617                     sizeof(uint32_t));
10618     vkStream->write(
10619         (uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
10620         sizeof(uint32_t));
10621     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetInlineUniformBlocks,
10622                     sizeof(uint32_t));
10623     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindInlineUniformBlocks,
10624                     sizeof(uint32_t));
10625     vkStream->write((uint32_t*)&forMarshaling->maxInlineUniformTotalSize, sizeof(uint32_t));
10626     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct8BitUnsignedAccelerated,
10627                     sizeof(VkBool32));
10628     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct8BitSignedAccelerated,
10629                     sizeof(VkBool32));
10630     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct8BitMixedSignednessAccelerated,
10631                     sizeof(VkBool32));
10632     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct4x8BitPackedUnsignedAccelerated,
10633                     sizeof(VkBool32));
10634     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct4x8BitPackedSignedAccelerated,
10635                     sizeof(VkBool32));
10636     vkStream->write(
10637         (VkBool32*)&forMarshaling->integerDotProduct4x8BitPackedMixedSignednessAccelerated,
10638         sizeof(VkBool32));
10639     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct16BitUnsignedAccelerated,
10640                     sizeof(VkBool32));
10641     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct16BitSignedAccelerated,
10642                     sizeof(VkBool32));
10643     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct16BitMixedSignednessAccelerated,
10644                     sizeof(VkBool32));
10645     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct32BitUnsignedAccelerated,
10646                     sizeof(VkBool32));
10647     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct32BitSignedAccelerated,
10648                     sizeof(VkBool32));
10649     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct32BitMixedSignednessAccelerated,
10650                     sizeof(VkBool32));
10651     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct64BitUnsignedAccelerated,
10652                     sizeof(VkBool32));
10653     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct64BitSignedAccelerated,
10654                     sizeof(VkBool32));
10655     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct64BitMixedSignednessAccelerated,
10656                     sizeof(VkBool32));
10657     vkStream->write(
10658         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
10659         sizeof(VkBool32));
10660     vkStream->write(
10661         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating8BitSignedAccelerated,
10662         sizeof(VkBool32));
10663     vkStream->write((VkBool32*)&forMarshaling
10664                         ->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
10665                     sizeof(VkBool32));
10666     vkStream->write((VkBool32*)&forMarshaling
10667                         ->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
10668                     sizeof(VkBool32));
10669     vkStream->write((VkBool32*)&forMarshaling
10670                         ->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
10671                     sizeof(VkBool32));
10672     vkStream->write(
10673         (VkBool32*)&forMarshaling
10674             ->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
10675         sizeof(VkBool32));
10676     vkStream->write(
10677         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
10678         sizeof(VkBool32));
10679     vkStream->write(
10680         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating16BitSignedAccelerated,
10681         sizeof(VkBool32));
10682     vkStream->write((VkBool32*)&forMarshaling
10683                         ->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
10684                     sizeof(VkBool32));
10685     vkStream->write(
10686         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
10687         sizeof(VkBool32));
10688     vkStream->write(
10689         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating32BitSignedAccelerated,
10690         sizeof(VkBool32));
10691     vkStream->write((VkBool32*)&forMarshaling
10692                         ->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
10693                     sizeof(VkBool32));
10694     vkStream->write(
10695         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
10696         sizeof(VkBool32));
10697     vkStream->write(
10698         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating64BitSignedAccelerated,
10699         sizeof(VkBool32));
10700     vkStream->write((VkBool32*)&forMarshaling
10701                         ->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
10702                     sizeof(VkBool32));
10703     vkStream->write((VkDeviceSize*)&forMarshaling->storageTexelBufferOffsetAlignmentBytes,
10704                     sizeof(VkDeviceSize));
10705     vkStream->write((VkBool32*)&forMarshaling->storageTexelBufferOffsetSingleTexelAlignment,
10706                     sizeof(VkBool32));
10707     vkStream->write((VkDeviceSize*)&forMarshaling->uniformTexelBufferOffsetAlignmentBytes,
10708                     sizeof(VkDeviceSize));
10709     vkStream->write((VkBool32*)&forMarshaling->uniformTexelBufferOffsetSingleTexelAlignment,
10710                     sizeof(VkBool32));
10711     vkStream->write((VkDeviceSize*)&forMarshaling->maxBufferSize, sizeof(VkDeviceSize));
10712 }
10713 
unmarshal_VkPhysicalDeviceVulkan13Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan13Properties * forUnmarshaling)10714 void unmarshal_VkPhysicalDeviceVulkan13Properties(
10715     VulkanStream* vkStream, VkStructureType rootType,
10716     VkPhysicalDeviceVulkan13Properties* forUnmarshaling) {
10717     (void)rootType;
10718     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10719     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10720         rootType = forUnmarshaling->sType;
10721     }
10722     size_t pNext_size;
10723     pNext_size = vkStream->getBe32();
10724     forUnmarshaling->pNext = nullptr;
10725     if (pNext_size) {
10726         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10727         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10728         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10729         vkStream->alloc((void**)&forUnmarshaling->pNext,
10730                         goldfish_vk_extension_struct_size_with_stream_features(
10731                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10732         *(VkStructureType*)forUnmarshaling->pNext = extType;
10733         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10734     }
10735     vkStream->read((uint32_t*)&forUnmarshaling->minSubgroupSize, sizeof(uint32_t));
10736     vkStream->read((uint32_t*)&forUnmarshaling->maxSubgroupSize, sizeof(uint32_t));
10737     vkStream->read((uint32_t*)&forUnmarshaling->maxComputeWorkgroupSubgroups, sizeof(uint32_t));
10738     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->requiredSubgroupSizeStages,
10739                    sizeof(VkShaderStageFlags));
10740     vkStream->read((uint32_t*)&forUnmarshaling->maxInlineUniformBlockSize, sizeof(uint32_t));
10741     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInlineUniformBlocks,
10742                    sizeof(uint32_t));
10743     vkStream->read(
10744         (uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
10745         sizeof(uint32_t));
10746     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetInlineUniformBlocks,
10747                    sizeof(uint32_t));
10748     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInlineUniformBlocks,
10749                    sizeof(uint32_t));
10750     vkStream->read((uint32_t*)&forUnmarshaling->maxInlineUniformTotalSize, sizeof(uint32_t));
10751     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct8BitUnsignedAccelerated,
10752                    sizeof(VkBool32));
10753     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct8BitSignedAccelerated,
10754                    sizeof(VkBool32));
10755     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct8BitMixedSignednessAccelerated,
10756                    sizeof(VkBool32));
10757     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedUnsignedAccelerated,
10758                    sizeof(VkBool32));
10759     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedSignedAccelerated,
10760                    sizeof(VkBool32));
10761     vkStream->read(
10762         (VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedMixedSignednessAccelerated,
10763         sizeof(VkBool32));
10764     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct16BitUnsignedAccelerated,
10765                    sizeof(VkBool32));
10766     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct16BitSignedAccelerated,
10767                    sizeof(VkBool32));
10768     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct16BitMixedSignednessAccelerated,
10769                    sizeof(VkBool32));
10770     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct32BitUnsignedAccelerated,
10771                    sizeof(VkBool32));
10772     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct32BitSignedAccelerated,
10773                    sizeof(VkBool32));
10774     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct32BitMixedSignednessAccelerated,
10775                    sizeof(VkBool32));
10776     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct64BitUnsignedAccelerated,
10777                    sizeof(VkBool32));
10778     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct64BitSignedAccelerated,
10779                    sizeof(VkBool32));
10780     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct64BitMixedSignednessAccelerated,
10781                    sizeof(VkBool32));
10782     vkStream->read(
10783         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
10784         sizeof(VkBool32));
10785     vkStream->read(
10786         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitSignedAccelerated,
10787         sizeof(VkBool32));
10788     vkStream->read((VkBool32*)&forUnmarshaling
10789                        ->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
10790                    sizeof(VkBool32));
10791     vkStream->read((VkBool32*)&forUnmarshaling
10792                        ->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
10793                    sizeof(VkBool32));
10794     vkStream->read((VkBool32*)&forUnmarshaling
10795                        ->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
10796                    sizeof(VkBool32));
10797     vkStream->read(
10798         (VkBool32*)&forUnmarshaling
10799             ->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
10800         sizeof(VkBool32));
10801     vkStream->read((VkBool32*)&forUnmarshaling
10802                        ->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
10803                    sizeof(VkBool32));
10804     vkStream->read(
10805         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating16BitSignedAccelerated,
10806         sizeof(VkBool32));
10807     vkStream->read((VkBool32*)&forUnmarshaling
10808                        ->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
10809                    sizeof(VkBool32));
10810     vkStream->read((VkBool32*)&forUnmarshaling
10811                        ->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
10812                    sizeof(VkBool32));
10813     vkStream->read(
10814         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating32BitSignedAccelerated,
10815         sizeof(VkBool32));
10816     vkStream->read((VkBool32*)&forUnmarshaling
10817                        ->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
10818                    sizeof(VkBool32));
10819     vkStream->read((VkBool32*)&forUnmarshaling
10820                        ->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
10821                    sizeof(VkBool32));
10822     vkStream->read(
10823         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating64BitSignedAccelerated,
10824         sizeof(VkBool32));
10825     vkStream->read((VkBool32*)&forUnmarshaling
10826                        ->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
10827                    sizeof(VkBool32));
10828     vkStream->read((VkDeviceSize*)&forUnmarshaling->storageTexelBufferOffsetAlignmentBytes,
10829                    sizeof(VkDeviceSize));
10830     vkStream->read((VkBool32*)&forUnmarshaling->storageTexelBufferOffsetSingleTexelAlignment,
10831                    sizeof(VkBool32));
10832     vkStream->read((VkDeviceSize*)&forUnmarshaling->uniformTexelBufferOffsetAlignmentBytes,
10833                    sizeof(VkDeviceSize));
10834     vkStream->read((VkBool32*)&forUnmarshaling->uniformTexelBufferOffsetSingleTexelAlignment,
10835                    sizeof(VkBool32));
10836     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxBufferSize, sizeof(VkDeviceSize));
10837 }
10838 
marshal_VkPipelineCreationFeedback(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineCreationFeedback * forMarshaling)10839 void marshal_VkPipelineCreationFeedback(VulkanStream* vkStream, VkStructureType rootType,
10840                                         const VkPipelineCreationFeedback* forMarshaling) {
10841     (void)rootType;
10842     vkStream->write((VkPipelineCreationFeedbackFlags*)&forMarshaling->flags,
10843                     sizeof(VkPipelineCreationFeedbackFlags));
10844     vkStream->write((uint64_t*)&forMarshaling->duration, sizeof(uint64_t));
10845 }
10846 
unmarshal_VkPipelineCreationFeedback(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCreationFeedback * forUnmarshaling)10847 void unmarshal_VkPipelineCreationFeedback(VulkanStream* vkStream, VkStructureType rootType,
10848                                           VkPipelineCreationFeedback* forUnmarshaling) {
10849     (void)rootType;
10850     vkStream->read((VkPipelineCreationFeedbackFlags*)&forUnmarshaling->flags,
10851                    sizeof(VkPipelineCreationFeedbackFlags));
10852     vkStream->read((uint64_t*)&forUnmarshaling->duration, sizeof(uint64_t));
10853 }
10854 
marshal_VkPipelineCreationFeedbackCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineCreationFeedbackCreateInfo * forMarshaling)10855 void marshal_VkPipelineCreationFeedbackCreateInfo(
10856     VulkanStream* vkStream, VkStructureType rootType,
10857     const VkPipelineCreationFeedbackCreateInfo* forMarshaling) {
10858     (void)rootType;
10859     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10860     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10861         rootType = forMarshaling->sType;
10862     }
10863     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10864     marshal_VkPipelineCreationFeedback(
10865         vkStream, rootType,
10866         (VkPipelineCreationFeedback*)(forMarshaling->pPipelineCreationFeedback));
10867     vkStream->write((uint32_t*)&forMarshaling->pipelineStageCreationFeedbackCount,
10868                     sizeof(uint32_t));
10869     if (forMarshaling) {
10870         for (uint32_t i = 0; i < (uint32_t)forMarshaling->pipelineStageCreationFeedbackCount; ++i) {
10871             marshal_VkPipelineCreationFeedback(
10872                 vkStream, rootType,
10873                 (VkPipelineCreationFeedback*)(forMarshaling->pPipelineStageCreationFeedbacks + i));
10874         }
10875     }
10876 }
10877 
unmarshal_VkPipelineCreationFeedbackCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCreationFeedbackCreateInfo * forUnmarshaling)10878 void unmarshal_VkPipelineCreationFeedbackCreateInfo(
10879     VulkanStream* vkStream, VkStructureType rootType,
10880     VkPipelineCreationFeedbackCreateInfo* forUnmarshaling) {
10881     (void)rootType;
10882     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10883     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10884         rootType = forUnmarshaling->sType;
10885     }
10886     size_t pNext_size;
10887     pNext_size = vkStream->getBe32();
10888     forUnmarshaling->pNext = nullptr;
10889     if (pNext_size) {
10890         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10891         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10892         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10893         vkStream->alloc((void**)&forUnmarshaling->pNext,
10894                         goldfish_vk_extension_struct_size_with_stream_features(
10895                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10896         *(VkStructureType*)forUnmarshaling->pNext = extType;
10897         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10898     }
10899     vkStream->alloc((void**)&forUnmarshaling->pPipelineCreationFeedback,
10900                     sizeof(VkPipelineCreationFeedback));
10901     unmarshal_VkPipelineCreationFeedback(
10902         vkStream, rootType,
10903         (VkPipelineCreationFeedback*)(forUnmarshaling->pPipelineCreationFeedback));
10904     vkStream->read((uint32_t*)&forUnmarshaling->pipelineStageCreationFeedbackCount,
10905                    sizeof(uint32_t));
10906     vkStream->alloc(
10907         (void**)&forUnmarshaling->pPipelineStageCreationFeedbacks,
10908         forUnmarshaling->pipelineStageCreationFeedbackCount * sizeof(VkPipelineCreationFeedback));
10909     if (forUnmarshaling) {
10910         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->pipelineStageCreationFeedbackCount;
10911              ++i) {
10912             unmarshal_VkPipelineCreationFeedback(
10913                 vkStream, rootType,
10914                 (VkPipelineCreationFeedback*)(forUnmarshaling->pPipelineStageCreationFeedbacks +
10915                                               i));
10916         }
10917     }
10918 }
10919 
marshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderTerminateInvocationFeatures * forMarshaling)10920 void marshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(
10921     VulkanStream* vkStream, VkStructureType rootType,
10922     const VkPhysicalDeviceShaderTerminateInvocationFeatures* forMarshaling) {
10923     (void)rootType;
10924     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10925     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10926         rootType = forMarshaling->sType;
10927     }
10928     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10929     vkStream->write((VkBool32*)&forMarshaling->shaderTerminateInvocation, sizeof(VkBool32));
10930 }
10931 
unmarshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderTerminateInvocationFeatures * forUnmarshaling)10932 void unmarshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(
10933     VulkanStream* vkStream, VkStructureType rootType,
10934     VkPhysicalDeviceShaderTerminateInvocationFeatures* forUnmarshaling) {
10935     (void)rootType;
10936     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10937     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10938         rootType = forUnmarshaling->sType;
10939     }
10940     size_t pNext_size;
10941     pNext_size = vkStream->getBe32();
10942     forUnmarshaling->pNext = nullptr;
10943     if (pNext_size) {
10944         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10945         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10946         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10947         vkStream->alloc((void**)&forUnmarshaling->pNext,
10948                         goldfish_vk_extension_struct_size_with_stream_features(
10949                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10950         *(VkStructureType*)forUnmarshaling->pNext = extType;
10951         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10952     }
10953     vkStream->read((VkBool32*)&forUnmarshaling->shaderTerminateInvocation, sizeof(VkBool32));
10954 }
10955 
marshal_VkPhysicalDeviceToolProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceToolProperties * forMarshaling)10956 void marshal_VkPhysicalDeviceToolProperties(VulkanStream* vkStream, VkStructureType rootType,
10957                                             const VkPhysicalDeviceToolProperties* forMarshaling) {
10958     (void)rootType;
10959     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
10960     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10961         rootType = forMarshaling->sType;
10962     }
10963     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
10964     vkStream->write((char*)forMarshaling->name, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
10965     vkStream->write((char*)forMarshaling->version, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
10966     vkStream->write((VkToolPurposeFlags*)&forMarshaling->purposes, sizeof(VkToolPurposeFlags));
10967     vkStream->write((char*)forMarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
10968     vkStream->write((char*)forMarshaling->layer, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
10969 }
10970 
unmarshal_VkPhysicalDeviceToolProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceToolProperties * forUnmarshaling)10971 void unmarshal_VkPhysicalDeviceToolProperties(VulkanStream* vkStream, VkStructureType rootType,
10972                                               VkPhysicalDeviceToolProperties* forUnmarshaling) {
10973     (void)rootType;
10974     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
10975     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10976         rootType = forUnmarshaling->sType;
10977     }
10978     size_t pNext_size;
10979     pNext_size = vkStream->getBe32();
10980     forUnmarshaling->pNext = nullptr;
10981     if (pNext_size) {
10982         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10983         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
10984         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10985         vkStream->alloc((void**)&forUnmarshaling->pNext,
10986                         goldfish_vk_extension_struct_size_with_stream_features(
10987                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10988         *(VkStructureType*)forUnmarshaling->pNext = extType;
10989         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
10990     }
10991     vkStream->read((char*)forUnmarshaling->name, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
10992     vkStream->read((char*)forUnmarshaling->version, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
10993     vkStream->read((VkToolPurposeFlags*)&forUnmarshaling->purposes, sizeof(VkToolPurposeFlags));
10994     vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
10995     vkStream->read((char*)forUnmarshaling->layer, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
10996 }
10997 
marshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures * forMarshaling)10998 void marshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
10999     VulkanStream* vkStream, VkStructureType rootType,
11000     const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures* forMarshaling) {
11001     (void)rootType;
11002     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11003     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11004         rootType = forMarshaling->sType;
11005     }
11006     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11007     vkStream->write((VkBool32*)&forMarshaling->shaderDemoteToHelperInvocation, sizeof(VkBool32));
11008 }
11009 
unmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures * forUnmarshaling)11010 void unmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
11011     VulkanStream* vkStream, VkStructureType rootType,
11012     VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures* forUnmarshaling) {
11013     (void)rootType;
11014     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11015     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11016         rootType = forUnmarshaling->sType;
11017     }
11018     size_t pNext_size;
11019     pNext_size = vkStream->getBe32();
11020     forUnmarshaling->pNext = nullptr;
11021     if (pNext_size) {
11022         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11023         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11024         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11025         vkStream->alloc((void**)&forUnmarshaling->pNext,
11026                         goldfish_vk_extension_struct_size_with_stream_features(
11027                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11028         *(VkStructureType*)forUnmarshaling->pNext = extType;
11029         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11030     }
11031     vkStream->read((VkBool32*)&forUnmarshaling->shaderDemoteToHelperInvocation, sizeof(VkBool32));
11032 }
11033 
marshal_VkPhysicalDevicePrivateDataFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevicePrivateDataFeatures * forMarshaling)11034 void marshal_VkPhysicalDevicePrivateDataFeatures(
11035     VulkanStream* vkStream, VkStructureType rootType,
11036     const VkPhysicalDevicePrivateDataFeatures* forMarshaling) {
11037     (void)rootType;
11038     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11039     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11040         rootType = forMarshaling->sType;
11041     }
11042     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11043     vkStream->write((VkBool32*)&forMarshaling->privateData, sizeof(VkBool32));
11044 }
11045 
unmarshal_VkPhysicalDevicePrivateDataFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePrivateDataFeatures * forUnmarshaling)11046 void unmarshal_VkPhysicalDevicePrivateDataFeatures(
11047     VulkanStream* vkStream, VkStructureType rootType,
11048     VkPhysicalDevicePrivateDataFeatures* forUnmarshaling) {
11049     (void)rootType;
11050     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11051     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11052         rootType = forUnmarshaling->sType;
11053     }
11054     size_t pNext_size;
11055     pNext_size = vkStream->getBe32();
11056     forUnmarshaling->pNext = nullptr;
11057     if (pNext_size) {
11058         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11059         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11060         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11061         vkStream->alloc((void**)&forUnmarshaling->pNext,
11062                         goldfish_vk_extension_struct_size_with_stream_features(
11063                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11064         *(VkStructureType*)forUnmarshaling->pNext = extType;
11065         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11066     }
11067     vkStream->read((VkBool32*)&forUnmarshaling->privateData, sizeof(VkBool32));
11068 }
11069 
marshal_VkDevicePrivateDataCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDevicePrivateDataCreateInfo * forMarshaling)11070 void marshal_VkDevicePrivateDataCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
11071                                            const VkDevicePrivateDataCreateInfo* forMarshaling) {
11072     (void)rootType;
11073     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11074     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11075         rootType = forMarshaling->sType;
11076     }
11077     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11078     vkStream->write((uint32_t*)&forMarshaling->privateDataSlotRequestCount, sizeof(uint32_t));
11079 }
11080 
unmarshal_VkDevicePrivateDataCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDevicePrivateDataCreateInfo * forUnmarshaling)11081 void unmarshal_VkDevicePrivateDataCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
11082                                              VkDevicePrivateDataCreateInfo* forUnmarshaling) {
11083     (void)rootType;
11084     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11085     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11086         rootType = forUnmarshaling->sType;
11087     }
11088     size_t pNext_size;
11089     pNext_size = vkStream->getBe32();
11090     forUnmarshaling->pNext = nullptr;
11091     if (pNext_size) {
11092         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11093         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11094         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11095         vkStream->alloc((void**)&forUnmarshaling->pNext,
11096                         goldfish_vk_extension_struct_size_with_stream_features(
11097                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11098         *(VkStructureType*)forUnmarshaling->pNext = extType;
11099         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11100     }
11101     vkStream->read((uint32_t*)&forUnmarshaling->privateDataSlotRequestCount, sizeof(uint32_t));
11102 }
11103 
marshal_VkPrivateDataSlotCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPrivateDataSlotCreateInfo * forMarshaling)11104 void marshal_VkPrivateDataSlotCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
11105                                          const VkPrivateDataSlotCreateInfo* forMarshaling) {
11106     (void)rootType;
11107     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11108     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11109         rootType = forMarshaling->sType;
11110     }
11111     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11112     vkStream->write((VkPrivateDataSlotCreateFlags*)&forMarshaling->flags,
11113                     sizeof(VkPrivateDataSlotCreateFlags));
11114 }
11115 
unmarshal_VkPrivateDataSlotCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPrivateDataSlotCreateInfo * forUnmarshaling)11116 void unmarshal_VkPrivateDataSlotCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
11117                                            VkPrivateDataSlotCreateInfo* forUnmarshaling) {
11118     (void)rootType;
11119     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11120     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11121         rootType = forUnmarshaling->sType;
11122     }
11123     size_t pNext_size;
11124     pNext_size = vkStream->getBe32();
11125     forUnmarshaling->pNext = nullptr;
11126     if (pNext_size) {
11127         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11128         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11129         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11130         vkStream->alloc((void**)&forUnmarshaling->pNext,
11131                         goldfish_vk_extension_struct_size_with_stream_features(
11132                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11133         *(VkStructureType*)forUnmarshaling->pNext = extType;
11134         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11135     }
11136     vkStream->read((VkPrivateDataSlotCreateFlags*)&forUnmarshaling->flags,
11137                    sizeof(VkPrivateDataSlotCreateFlags));
11138 }
11139 
marshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevicePipelineCreationCacheControlFeatures * forMarshaling)11140 void marshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(
11141     VulkanStream* vkStream, VkStructureType rootType,
11142     const VkPhysicalDevicePipelineCreationCacheControlFeatures* forMarshaling) {
11143     (void)rootType;
11144     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11145     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11146         rootType = forMarshaling->sType;
11147     }
11148     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11149     vkStream->write((VkBool32*)&forMarshaling->pipelineCreationCacheControl, sizeof(VkBool32));
11150 }
11151 
unmarshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePipelineCreationCacheControlFeatures * forUnmarshaling)11152 void unmarshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(
11153     VulkanStream* vkStream, VkStructureType rootType,
11154     VkPhysicalDevicePipelineCreationCacheControlFeatures* forUnmarshaling) {
11155     (void)rootType;
11156     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11157     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11158         rootType = forUnmarshaling->sType;
11159     }
11160     size_t pNext_size;
11161     pNext_size = vkStream->getBe32();
11162     forUnmarshaling->pNext = nullptr;
11163     if (pNext_size) {
11164         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11165         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11166         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11167         vkStream->alloc((void**)&forUnmarshaling->pNext,
11168                         goldfish_vk_extension_struct_size_with_stream_features(
11169                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11170         *(VkStructureType*)forUnmarshaling->pNext = extType;
11171         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11172     }
11173     vkStream->read((VkBool32*)&forUnmarshaling->pipelineCreationCacheControl, sizeof(VkBool32));
11174 }
11175 
marshal_VkMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryBarrier2 * forMarshaling)11176 void marshal_VkMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
11177                               const VkMemoryBarrier2* forMarshaling) {
11178     (void)rootType;
11179     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11180     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11181         rootType = forMarshaling->sType;
11182     }
11183     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11184     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->srcStageMask,
11185                     sizeof(VkPipelineStageFlags2));
11186     vkStream->write((VkAccessFlags2*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags2));
11187     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->dstStageMask,
11188                     sizeof(VkPipelineStageFlags2));
11189     vkStream->write((VkAccessFlags2*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags2));
11190 }
11191 
unmarshal_VkMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,VkMemoryBarrier2 * forUnmarshaling)11192 void unmarshal_VkMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
11193                                 VkMemoryBarrier2* forUnmarshaling) {
11194     (void)rootType;
11195     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11196     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11197         rootType = forUnmarshaling->sType;
11198     }
11199     size_t pNext_size;
11200     pNext_size = vkStream->getBe32();
11201     forUnmarshaling->pNext = nullptr;
11202     if (pNext_size) {
11203         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11204         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11205         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11206         vkStream->alloc((void**)&forUnmarshaling->pNext,
11207                         goldfish_vk_extension_struct_size_with_stream_features(
11208                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11209         *(VkStructureType*)forUnmarshaling->pNext = extType;
11210         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11211     }
11212     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->srcStageMask,
11213                    sizeof(VkPipelineStageFlags2));
11214     vkStream->read((VkAccessFlags2*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags2));
11215     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->dstStageMask,
11216                    sizeof(VkPipelineStageFlags2));
11217     vkStream->read((VkAccessFlags2*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags2));
11218 }
11219 
marshal_VkBufferMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,const VkBufferMemoryBarrier2 * forMarshaling)11220 void marshal_VkBufferMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
11221                                     const VkBufferMemoryBarrier2* forMarshaling) {
11222     (void)rootType;
11223     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11224     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11225         rootType = forMarshaling->sType;
11226     }
11227     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11228     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->srcStageMask,
11229                     sizeof(VkPipelineStageFlags2));
11230     vkStream->write((VkAccessFlags2*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags2));
11231     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->dstStageMask,
11232                     sizeof(VkPipelineStageFlags2));
11233     vkStream->write((VkAccessFlags2*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags2));
11234     vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
11235     vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
11236     uint64_t cgen_var_0;
11237     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_0, 1);
11238     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11239     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
11240     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
11241 }
11242 
unmarshal_VkBufferMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,VkBufferMemoryBarrier2 * forUnmarshaling)11243 void unmarshal_VkBufferMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
11244                                       VkBufferMemoryBarrier2* forUnmarshaling) {
11245     (void)rootType;
11246     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11247     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11248         rootType = forUnmarshaling->sType;
11249     }
11250     size_t pNext_size;
11251     pNext_size = vkStream->getBe32();
11252     forUnmarshaling->pNext = nullptr;
11253     if (pNext_size) {
11254         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11255         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11256         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11257         vkStream->alloc((void**)&forUnmarshaling->pNext,
11258                         goldfish_vk_extension_struct_size_with_stream_features(
11259                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11260         *(VkStructureType*)forUnmarshaling->pNext = extType;
11261         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11262     }
11263     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->srcStageMask,
11264                    sizeof(VkPipelineStageFlags2));
11265     vkStream->read((VkAccessFlags2*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags2));
11266     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->dstStageMask,
11267                    sizeof(VkPipelineStageFlags2));
11268     vkStream->read((VkAccessFlags2*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags2));
11269     vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
11270     vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
11271     uint64_t cgen_var_0;
11272     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
11273     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
11274                                                        (VkBuffer*)&forUnmarshaling->buffer, 1);
11275     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
11276     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
11277 }
11278 
marshal_VkImageMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,const VkImageMemoryBarrier2 * forMarshaling)11279 void marshal_VkImageMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
11280                                    const VkImageMemoryBarrier2* forMarshaling) {
11281     (void)rootType;
11282     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11283     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11284         rootType = forMarshaling->sType;
11285     }
11286     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11287     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->srcStageMask,
11288                     sizeof(VkPipelineStageFlags2));
11289     vkStream->write((VkAccessFlags2*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags2));
11290     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->dstStageMask,
11291                     sizeof(VkPipelineStageFlags2));
11292     vkStream->write((VkAccessFlags2*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags2));
11293     vkStream->write((VkImageLayout*)&forMarshaling->oldLayout, sizeof(VkImageLayout));
11294     vkStream->write((VkImageLayout*)&forMarshaling->newLayout, sizeof(VkImageLayout));
11295     vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
11296     vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
11297     uint64_t cgen_var_0;
11298     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
11299     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11300     marshal_VkImageSubresourceRange(vkStream, rootType,
11301                                     (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
11302 }
11303 
unmarshal_VkImageMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,VkImageMemoryBarrier2 * forUnmarshaling)11304 void unmarshal_VkImageMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
11305                                      VkImageMemoryBarrier2* forUnmarshaling) {
11306     (void)rootType;
11307     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11308     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11309         rootType = forUnmarshaling->sType;
11310     }
11311     size_t pNext_size;
11312     pNext_size = vkStream->getBe32();
11313     forUnmarshaling->pNext = nullptr;
11314     if (pNext_size) {
11315         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11316         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11317         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11318         vkStream->alloc((void**)&forUnmarshaling->pNext,
11319                         goldfish_vk_extension_struct_size_with_stream_features(
11320                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11321         *(VkStructureType*)forUnmarshaling->pNext = extType;
11322         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11323     }
11324     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->srcStageMask,
11325                    sizeof(VkPipelineStageFlags2));
11326     vkStream->read((VkAccessFlags2*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags2));
11327     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->dstStageMask,
11328                    sizeof(VkPipelineStageFlags2));
11329     vkStream->read((VkAccessFlags2*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags2));
11330     vkStream->read((VkImageLayout*)&forUnmarshaling->oldLayout, sizeof(VkImageLayout));
11331     vkStream->read((VkImageLayout*)&forUnmarshaling->newLayout, sizeof(VkImageLayout));
11332     vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
11333     vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
11334     uint64_t cgen_var_0;
11335     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
11336     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
11337                                                       (VkImage*)&forUnmarshaling->image, 1);
11338     unmarshal_VkImageSubresourceRange(
11339         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
11340 }
11341 
marshal_VkDependencyInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDependencyInfo * forMarshaling)11342 void marshal_VkDependencyInfo(VulkanStream* vkStream, VkStructureType rootType,
11343                               const VkDependencyInfo* forMarshaling) {
11344     (void)rootType;
11345     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11346     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11347         rootType = forMarshaling->sType;
11348     }
11349     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11350     vkStream->write((VkDependencyFlags*)&forMarshaling->dependencyFlags, sizeof(VkDependencyFlags));
11351     vkStream->write((uint32_t*)&forMarshaling->memoryBarrierCount, sizeof(uint32_t));
11352     if (forMarshaling) {
11353         for (uint32_t i = 0; i < (uint32_t)forMarshaling->memoryBarrierCount; ++i) {
11354             marshal_VkMemoryBarrier2(vkStream, rootType,
11355                                      (const VkMemoryBarrier2*)(forMarshaling->pMemoryBarriers + i));
11356         }
11357     }
11358     vkStream->write((uint32_t*)&forMarshaling->bufferMemoryBarrierCount, sizeof(uint32_t));
11359     if (forMarshaling) {
11360         for (uint32_t i = 0; i < (uint32_t)forMarshaling->bufferMemoryBarrierCount; ++i) {
11361             marshal_VkBufferMemoryBarrier2(
11362                 vkStream, rootType,
11363                 (const VkBufferMemoryBarrier2*)(forMarshaling->pBufferMemoryBarriers + i));
11364         }
11365     }
11366     vkStream->write((uint32_t*)&forMarshaling->imageMemoryBarrierCount, sizeof(uint32_t));
11367     if (forMarshaling) {
11368         for (uint32_t i = 0; i < (uint32_t)forMarshaling->imageMemoryBarrierCount; ++i) {
11369             marshal_VkImageMemoryBarrier2(
11370                 vkStream, rootType,
11371                 (const VkImageMemoryBarrier2*)(forMarshaling->pImageMemoryBarriers + i));
11372         }
11373     }
11374 }
11375 
unmarshal_VkDependencyInfo(VulkanStream * vkStream,VkStructureType rootType,VkDependencyInfo * forUnmarshaling)11376 void unmarshal_VkDependencyInfo(VulkanStream* vkStream, VkStructureType rootType,
11377                                 VkDependencyInfo* forUnmarshaling) {
11378     (void)rootType;
11379     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11380     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11381         rootType = forUnmarshaling->sType;
11382     }
11383     size_t pNext_size;
11384     pNext_size = vkStream->getBe32();
11385     forUnmarshaling->pNext = nullptr;
11386     if (pNext_size) {
11387         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11388         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11389         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11390         vkStream->alloc((void**)&forUnmarshaling->pNext,
11391                         goldfish_vk_extension_struct_size_with_stream_features(
11392                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11393         *(VkStructureType*)forUnmarshaling->pNext = extType;
11394         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11395     }
11396     vkStream->read((VkDependencyFlags*)&forUnmarshaling->dependencyFlags,
11397                    sizeof(VkDependencyFlags));
11398     vkStream->read((uint32_t*)&forUnmarshaling->memoryBarrierCount, sizeof(uint32_t));
11399     vkStream->alloc((void**)&forUnmarshaling->pMemoryBarriers,
11400                     forUnmarshaling->memoryBarrierCount * sizeof(const VkMemoryBarrier2));
11401     if (forUnmarshaling) {
11402         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->memoryBarrierCount; ++i) {
11403             unmarshal_VkMemoryBarrier2(vkStream, rootType,
11404                                        (VkMemoryBarrier2*)(forUnmarshaling->pMemoryBarriers + i));
11405         }
11406     }
11407     vkStream->read((uint32_t*)&forUnmarshaling->bufferMemoryBarrierCount, sizeof(uint32_t));
11408     vkStream->alloc(
11409         (void**)&forUnmarshaling->pBufferMemoryBarriers,
11410         forUnmarshaling->bufferMemoryBarrierCount * sizeof(const VkBufferMemoryBarrier2));
11411     if (forUnmarshaling) {
11412         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bufferMemoryBarrierCount; ++i) {
11413             unmarshal_VkBufferMemoryBarrier2(
11414                 vkStream, rootType,
11415                 (VkBufferMemoryBarrier2*)(forUnmarshaling->pBufferMemoryBarriers + i));
11416         }
11417     }
11418     vkStream->read((uint32_t*)&forUnmarshaling->imageMemoryBarrierCount, sizeof(uint32_t));
11419     vkStream->alloc((void**)&forUnmarshaling->pImageMemoryBarriers,
11420                     forUnmarshaling->imageMemoryBarrierCount * sizeof(const VkImageMemoryBarrier2));
11421     if (forUnmarshaling) {
11422         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageMemoryBarrierCount; ++i) {
11423             unmarshal_VkImageMemoryBarrier2(
11424                 vkStream, rootType,
11425                 (VkImageMemoryBarrier2*)(forUnmarshaling->pImageMemoryBarriers + i));
11426         }
11427     }
11428 }
11429 
marshal_VkSemaphoreSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkSemaphoreSubmitInfo * forMarshaling)11430 void marshal_VkSemaphoreSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
11431                                    const VkSemaphoreSubmitInfo* forMarshaling) {
11432     (void)rootType;
11433     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11434     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11435         rootType = forMarshaling->sType;
11436     }
11437     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11438     uint64_t cgen_var_0;
11439     vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_0,
11440                                                           1);
11441     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11442     vkStream->write((uint64_t*)&forMarshaling->value, sizeof(uint64_t));
11443     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->stageMask,
11444                     sizeof(VkPipelineStageFlags2));
11445     vkStream->write((uint32_t*)&forMarshaling->deviceIndex, sizeof(uint32_t));
11446 }
11447 
unmarshal_VkSemaphoreSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreSubmitInfo * forUnmarshaling)11448 void unmarshal_VkSemaphoreSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
11449                                      VkSemaphoreSubmitInfo* forUnmarshaling) {
11450     (void)rootType;
11451     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11452     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11453         rootType = forUnmarshaling->sType;
11454     }
11455     size_t pNext_size;
11456     pNext_size = vkStream->getBe32();
11457     forUnmarshaling->pNext = nullptr;
11458     if (pNext_size) {
11459         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11460         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11461         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11462         vkStream->alloc((void**)&forUnmarshaling->pNext,
11463                         goldfish_vk_extension_struct_size_with_stream_features(
11464                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11465         *(VkStructureType*)forUnmarshaling->pNext = extType;
11466         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11467     }
11468     uint64_t cgen_var_0;
11469     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
11470     vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
11471         &cgen_var_0, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
11472     vkStream->read((uint64_t*)&forUnmarshaling->value, sizeof(uint64_t));
11473     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->stageMask,
11474                    sizeof(VkPipelineStageFlags2));
11475     vkStream->read((uint32_t*)&forUnmarshaling->deviceIndex, sizeof(uint32_t));
11476 }
11477 
marshal_VkCommandBufferSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,const VkCommandBufferSubmitInfo * forMarshaling)11478 void marshal_VkCommandBufferSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
11479                                        const VkCommandBufferSubmitInfo* forMarshaling) {
11480     (void)rootType;
11481     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11482     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11483         rootType = forMarshaling->sType;
11484     }
11485     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11486     uint64_t cgen_var_0;
11487     vkStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&forMarshaling->commandBuffer,
11488                                                               &cgen_var_0, 1);
11489     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11490     vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
11491 }
11492 
unmarshal_VkCommandBufferSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferSubmitInfo * forUnmarshaling)11493 void unmarshal_VkCommandBufferSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
11494                                          VkCommandBufferSubmitInfo* forUnmarshaling) {
11495     (void)rootType;
11496     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11497     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11498         rootType = forUnmarshaling->sType;
11499     }
11500     size_t pNext_size;
11501     pNext_size = vkStream->getBe32();
11502     forUnmarshaling->pNext = nullptr;
11503     if (pNext_size) {
11504         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11505         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11506         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11507         vkStream->alloc((void**)&forUnmarshaling->pNext,
11508                         goldfish_vk_extension_struct_size_with_stream_features(
11509                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11510         *(VkStructureType*)forUnmarshaling->pNext = extType;
11511         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11512     }
11513     uint64_t cgen_var_0;
11514     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
11515     vkStream->handleMapping()->mapHandles_u64_VkCommandBuffer(
11516         &cgen_var_0, (VkCommandBuffer*)&forUnmarshaling->commandBuffer, 1);
11517     vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
11518 }
11519 
marshal_VkSubmitInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkSubmitInfo2 * forMarshaling)11520 void marshal_VkSubmitInfo2(VulkanStream* vkStream, VkStructureType rootType,
11521                            const VkSubmitInfo2* forMarshaling) {
11522     (void)rootType;
11523     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11524     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11525         rootType = forMarshaling->sType;
11526     }
11527     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11528     vkStream->write((VkSubmitFlags*)&forMarshaling->flags, sizeof(VkSubmitFlags));
11529     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreInfoCount, sizeof(uint32_t));
11530     if (forMarshaling) {
11531         for (uint32_t i = 0; i < (uint32_t)forMarshaling->waitSemaphoreInfoCount; ++i) {
11532             marshal_VkSemaphoreSubmitInfo(
11533                 vkStream, rootType,
11534                 (const VkSemaphoreSubmitInfo*)(forMarshaling->pWaitSemaphoreInfos + i));
11535         }
11536     }
11537     vkStream->write((uint32_t*)&forMarshaling->commandBufferInfoCount, sizeof(uint32_t));
11538     if (forMarshaling) {
11539         for (uint32_t i = 0; i < (uint32_t)forMarshaling->commandBufferInfoCount; ++i) {
11540             marshal_VkCommandBufferSubmitInfo(
11541                 vkStream, rootType,
11542                 (const VkCommandBufferSubmitInfo*)(forMarshaling->pCommandBufferInfos + i));
11543         }
11544     }
11545     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreInfoCount, sizeof(uint32_t));
11546     if (forMarshaling) {
11547         for (uint32_t i = 0; i < (uint32_t)forMarshaling->signalSemaphoreInfoCount; ++i) {
11548             marshal_VkSemaphoreSubmitInfo(
11549                 vkStream, rootType,
11550                 (const VkSemaphoreSubmitInfo*)(forMarshaling->pSignalSemaphoreInfos + i));
11551         }
11552     }
11553 }
11554 
unmarshal_VkSubmitInfo2(VulkanStream * vkStream,VkStructureType rootType,VkSubmitInfo2 * forUnmarshaling)11555 void unmarshal_VkSubmitInfo2(VulkanStream* vkStream, VkStructureType rootType,
11556                              VkSubmitInfo2* forUnmarshaling) {
11557     (void)rootType;
11558     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11559     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11560         rootType = forUnmarshaling->sType;
11561     }
11562     size_t pNext_size;
11563     pNext_size = vkStream->getBe32();
11564     forUnmarshaling->pNext = nullptr;
11565     if (pNext_size) {
11566         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11567         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11568         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11569         vkStream->alloc((void**)&forUnmarshaling->pNext,
11570                         goldfish_vk_extension_struct_size_with_stream_features(
11571                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11572         *(VkStructureType*)forUnmarshaling->pNext = extType;
11573         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11574     }
11575     vkStream->read((VkSubmitFlags*)&forUnmarshaling->flags, sizeof(VkSubmitFlags));
11576     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreInfoCount, sizeof(uint32_t));
11577     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreInfos,
11578                     forUnmarshaling->waitSemaphoreInfoCount * sizeof(const VkSemaphoreSubmitInfo));
11579     if (forUnmarshaling) {
11580         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->waitSemaphoreInfoCount; ++i) {
11581             unmarshal_VkSemaphoreSubmitInfo(
11582                 vkStream, rootType,
11583                 (VkSemaphoreSubmitInfo*)(forUnmarshaling->pWaitSemaphoreInfos + i));
11584         }
11585     }
11586     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferInfoCount, sizeof(uint32_t));
11587     vkStream->alloc(
11588         (void**)&forUnmarshaling->pCommandBufferInfos,
11589         forUnmarshaling->commandBufferInfoCount * sizeof(const VkCommandBufferSubmitInfo));
11590     if (forUnmarshaling) {
11591         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->commandBufferInfoCount; ++i) {
11592             unmarshal_VkCommandBufferSubmitInfo(
11593                 vkStream, rootType,
11594                 (VkCommandBufferSubmitInfo*)(forUnmarshaling->pCommandBufferInfos + i));
11595         }
11596     }
11597     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreInfoCount, sizeof(uint32_t));
11598     vkStream->alloc(
11599         (void**)&forUnmarshaling->pSignalSemaphoreInfos,
11600         forUnmarshaling->signalSemaphoreInfoCount * sizeof(const VkSemaphoreSubmitInfo));
11601     if (forUnmarshaling) {
11602         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->signalSemaphoreInfoCount; ++i) {
11603             unmarshal_VkSemaphoreSubmitInfo(
11604                 vkStream, rootType,
11605                 (VkSemaphoreSubmitInfo*)(forUnmarshaling->pSignalSemaphoreInfos + i));
11606         }
11607     }
11608 }
11609 
marshal_VkPhysicalDeviceSynchronization2Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSynchronization2Features * forMarshaling)11610 void marshal_VkPhysicalDeviceSynchronization2Features(
11611     VulkanStream* vkStream, VkStructureType rootType,
11612     const VkPhysicalDeviceSynchronization2Features* forMarshaling) {
11613     (void)rootType;
11614     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11615     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11616         rootType = forMarshaling->sType;
11617     }
11618     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11619     vkStream->write((VkBool32*)&forMarshaling->synchronization2, sizeof(VkBool32));
11620 }
11621 
unmarshal_VkPhysicalDeviceSynchronization2Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSynchronization2Features * forUnmarshaling)11622 void unmarshal_VkPhysicalDeviceSynchronization2Features(
11623     VulkanStream* vkStream, VkStructureType rootType,
11624     VkPhysicalDeviceSynchronization2Features* forUnmarshaling) {
11625     (void)rootType;
11626     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11627     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11628         rootType = forUnmarshaling->sType;
11629     }
11630     size_t pNext_size;
11631     pNext_size = vkStream->getBe32();
11632     forUnmarshaling->pNext = nullptr;
11633     if (pNext_size) {
11634         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11635         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11636         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11637         vkStream->alloc((void**)&forUnmarshaling->pNext,
11638                         goldfish_vk_extension_struct_size_with_stream_features(
11639                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11640         *(VkStructureType*)forUnmarshaling->pNext = extType;
11641         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11642     }
11643     vkStream->read((VkBool32*)&forUnmarshaling->synchronization2, sizeof(VkBool32));
11644 }
11645 
marshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures * forMarshaling)11646 void marshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
11647     VulkanStream* vkStream, VkStructureType rootType,
11648     const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures* forMarshaling) {
11649     (void)rootType;
11650     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11651     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11652         rootType = forMarshaling->sType;
11653     }
11654     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11655     vkStream->write((VkBool32*)&forMarshaling->shaderZeroInitializeWorkgroupMemory,
11656                     sizeof(VkBool32));
11657 }
11658 
unmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures * forUnmarshaling)11659 void unmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
11660     VulkanStream* vkStream, VkStructureType rootType,
11661     VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures* forUnmarshaling) {
11662     (void)rootType;
11663     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11664     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11665         rootType = forUnmarshaling->sType;
11666     }
11667     size_t pNext_size;
11668     pNext_size = vkStream->getBe32();
11669     forUnmarshaling->pNext = nullptr;
11670     if (pNext_size) {
11671         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11672         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11673         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11674         vkStream->alloc((void**)&forUnmarshaling->pNext,
11675                         goldfish_vk_extension_struct_size_with_stream_features(
11676                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11677         *(VkStructureType*)forUnmarshaling->pNext = extType;
11678         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11679     }
11680     vkStream->read((VkBool32*)&forUnmarshaling->shaderZeroInitializeWorkgroupMemory,
11681                    sizeof(VkBool32));
11682 }
11683 
marshal_VkPhysicalDeviceImageRobustnessFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceImageRobustnessFeatures * forMarshaling)11684 void marshal_VkPhysicalDeviceImageRobustnessFeatures(
11685     VulkanStream* vkStream, VkStructureType rootType,
11686     const VkPhysicalDeviceImageRobustnessFeatures* forMarshaling) {
11687     (void)rootType;
11688     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11689     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11690         rootType = forMarshaling->sType;
11691     }
11692     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11693     vkStream->write((VkBool32*)&forMarshaling->robustImageAccess, sizeof(VkBool32));
11694 }
11695 
unmarshal_VkPhysicalDeviceImageRobustnessFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageRobustnessFeatures * forUnmarshaling)11696 void unmarshal_VkPhysicalDeviceImageRobustnessFeatures(
11697     VulkanStream* vkStream, VkStructureType rootType,
11698     VkPhysicalDeviceImageRobustnessFeatures* forUnmarshaling) {
11699     (void)rootType;
11700     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11701     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11702         rootType = forUnmarshaling->sType;
11703     }
11704     size_t pNext_size;
11705     pNext_size = vkStream->getBe32();
11706     forUnmarshaling->pNext = nullptr;
11707     if (pNext_size) {
11708         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11709         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11710         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11711         vkStream->alloc((void**)&forUnmarshaling->pNext,
11712                         goldfish_vk_extension_struct_size_with_stream_features(
11713                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11714         *(VkStructureType*)forUnmarshaling->pNext = extType;
11715         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11716     }
11717     vkStream->read((VkBool32*)&forUnmarshaling->robustImageAccess, sizeof(VkBool32));
11718 }
11719 
marshal_VkBufferCopy2(VulkanStream * vkStream,VkStructureType rootType,const VkBufferCopy2 * forMarshaling)11720 void marshal_VkBufferCopy2(VulkanStream* vkStream, VkStructureType rootType,
11721                            const VkBufferCopy2* forMarshaling) {
11722     (void)rootType;
11723     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11724     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11725         rootType = forMarshaling->sType;
11726     }
11727     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11728     vkStream->write((VkDeviceSize*)&forMarshaling->srcOffset, sizeof(VkDeviceSize));
11729     vkStream->write((VkDeviceSize*)&forMarshaling->dstOffset, sizeof(VkDeviceSize));
11730     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
11731 }
11732 
unmarshal_VkBufferCopy2(VulkanStream * vkStream,VkStructureType rootType,VkBufferCopy2 * forUnmarshaling)11733 void unmarshal_VkBufferCopy2(VulkanStream* vkStream, VkStructureType rootType,
11734                              VkBufferCopy2* forUnmarshaling) {
11735     (void)rootType;
11736     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11737     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11738         rootType = forUnmarshaling->sType;
11739     }
11740     size_t pNext_size;
11741     pNext_size = vkStream->getBe32();
11742     forUnmarshaling->pNext = nullptr;
11743     if (pNext_size) {
11744         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11745         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11746         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11747         vkStream->alloc((void**)&forUnmarshaling->pNext,
11748                         goldfish_vk_extension_struct_size_with_stream_features(
11749                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11750         *(VkStructureType*)forUnmarshaling->pNext = extType;
11751         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11752     }
11753     vkStream->read((VkDeviceSize*)&forUnmarshaling->srcOffset, sizeof(VkDeviceSize));
11754     vkStream->read((VkDeviceSize*)&forUnmarshaling->dstOffset, sizeof(VkDeviceSize));
11755     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
11756 }
11757 
marshal_VkCopyBufferInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkCopyBufferInfo2 * forMarshaling)11758 void marshal_VkCopyBufferInfo2(VulkanStream* vkStream, VkStructureType rootType,
11759                                const VkCopyBufferInfo2* forMarshaling) {
11760     (void)rootType;
11761     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11762     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11763         rootType = forMarshaling->sType;
11764     }
11765     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11766     uint64_t cgen_var_0;
11767     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->srcBuffer, &cgen_var_0, 1);
11768     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11769     uint64_t cgen_var_1;
11770     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->dstBuffer, &cgen_var_1, 1);
11771     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
11772     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
11773     if (forMarshaling) {
11774         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
11775             marshal_VkBufferCopy2(vkStream, rootType,
11776                                   (const VkBufferCopy2*)(forMarshaling->pRegions + i));
11777         }
11778     }
11779 }
11780 
unmarshal_VkCopyBufferInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyBufferInfo2 * forUnmarshaling)11781 void unmarshal_VkCopyBufferInfo2(VulkanStream* vkStream, VkStructureType rootType,
11782                                  VkCopyBufferInfo2* forUnmarshaling) {
11783     (void)rootType;
11784     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11785     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11786         rootType = forUnmarshaling->sType;
11787     }
11788     size_t pNext_size;
11789     pNext_size = vkStream->getBe32();
11790     forUnmarshaling->pNext = nullptr;
11791     if (pNext_size) {
11792         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11793         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11794         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11795         vkStream->alloc((void**)&forUnmarshaling->pNext,
11796                         goldfish_vk_extension_struct_size_with_stream_features(
11797                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11798         *(VkStructureType*)forUnmarshaling->pNext = extType;
11799         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11800     }
11801     uint64_t cgen_var_0;
11802     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
11803     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
11804                                                        (VkBuffer*)&forUnmarshaling->srcBuffer, 1);
11805     uint64_t cgen_var_1;
11806     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
11807     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_1,
11808                                                        (VkBuffer*)&forUnmarshaling->dstBuffer, 1);
11809     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
11810     vkStream->alloc((void**)&forUnmarshaling->pRegions,
11811                     forUnmarshaling->regionCount * sizeof(const VkBufferCopy2));
11812     if (forUnmarshaling) {
11813         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
11814             unmarshal_VkBufferCopy2(vkStream, rootType,
11815                                     (VkBufferCopy2*)(forUnmarshaling->pRegions + i));
11816         }
11817     }
11818 }
11819 
marshal_VkImageCopy2(VulkanStream * vkStream,VkStructureType rootType,const VkImageCopy2 * forMarshaling)11820 void marshal_VkImageCopy2(VulkanStream* vkStream, VkStructureType rootType,
11821                           const VkImageCopy2* forMarshaling) {
11822     (void)rootType;
11823     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11824     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11825         rootType = forMarshaling->sType;
11826     }
11827     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11828     marshal_VkImageSubresourceLayers(vkStream, rootType,
11829                                      (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
11830     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->srcOffset));
11831     marshal_VkImageSubresourceLayers(vkStream, rootType,
11832                                      (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
11833     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->dstOffset));
11834     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->extent));
11835 }
11836 
unmarshal_VkImageCopy2(VulkanStream * vkStream,VkStructureType rootType,VkImageCopy2 * forUnmarshaling)11837 void unmarshal_VkImageCopy2(VulkanStream* vkStream, VkStructureType rootType,
11838                             VkImageCopy2* forUnmarshaling) {
11839     (void)rootType;
11840     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11841     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11842         rootType = forUnmarshaling->sType;
11843     }
11844     size_t pNext_size;
11845     pNext_size = vkStream->getBe32();
11846     forUnmarshaling->pNext = nullptr;
11847     if (pNext_size) {
11848         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11849         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11850         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11851         vkStream->alloc((void**)&forUnmarshaling->pNext,
11852                         goldfish_vk_extension_struct_size_with_stream_features(
11853                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11854         *(VkStructureType*)forUnmarshaling->pNext = extType;
11855         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11856     }
11857     unmarshal_VkImageSubresourceLayers(
11858         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
11859     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset));
11860     unmarshal_VkImageSubresourceLayers(
11861         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
11862     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset));
11863     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent));
11864 }
11865 
marshal_VkCopyImageInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkCopyImageInfo2 * forMarshaling)11866 void marshal_VkCopyImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
11867                               const VkCopyImageInfo2* forMarshaling) {
11868     (void)rootType;
11869     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11870     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11871         rootType = forMarshaling->sType;
11872     }
11873     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11874     uint64_t cgen_var_0;
11875     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->srcImage, &cgen_var_0, 1);
11876     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11877     vkStream->write((VkImageLayout*)&forMarshaling->srcImageLayout, sizeof(VkImageLayout));
11878     uint64_t cgen_var_1;
11879     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->dstImage, &cgen_var_1, 1);
11880     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
11881     vkStream->write((VkImageLayout*)&forMarshaling->dstImageLayout, sizeof(VkImageLayout));
11882     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
11883     if (forMarshaling) {
11884         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
11885             marshal_VkImageCopy2(vkStream, rootType,
11886                                  (const VkImageCopy2*)(forMarshaling->pRegions + i));
11887         }
11888     }
11889 }
11890 
unmarshal_VkCopyImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageInfo2 * forUnmarshaling)11891 void unmarshal_VkCopyImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
11892                                 VkCopyImageInfo2* forUnmarshaling) {
11893     (void)rootType;
11894     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11895     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11896         rootType = forUnmarshaling->sType;
11897     }
11898     size_t pNext_size;
11899     pNext_size = vkStream->getBe32();
11900     forUnmarshaling->pNext = nullptr;
11901     if (pNext_size) {
11902         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11903         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11904         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11905         vkStream->alloc((void**)&forUnmarshaling->pNext,
11906                         goldfish_vk_extension_struct_size_with_stream_features(
11907                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11908         *(VkStructureType*)forUnmarshaling->pNext = extType;
11909         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11910     }
11911     uint64_t cgen_var_0;
11912     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
11913     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
11914                                                       (VkImage*)&forUnmarshaling->srcImage, 1);
11915     vkStream->read((VkImageLayout*)&forUnmarshaling->srcImageLayout, sizeof(VkImageLayout));
11916     uint64_t cgen_var_1;
11917     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
11918     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_1,
11919                                                       (VkImage*)&forUnmarshaling->dstImage, 1);
11920     vkStream->read((VkImageLayout*)&forUnmarshaling->dstImageLayout, sizeof(VkImageLayout));
11921     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
11922     vkStream->alloc((void**)&forUnmarshaling->pRegions,
11923                     forUnmarshaling->regionCount * sizeof(const VkImageCopy2));
11924     if (forUnmarshaling) {
11925         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
11926             unmarshal_VkImageCopy2(vkStream, rootType,
11927                                    (VkImageCopy2*)(forUnmarshaling->pRegions + i));
11928         }
11929     }
11930 }
11931 
marshal_VkBufferImageCopy2(VulkanStream * vkStream,VkStructureType rootType,const VkBufferImageCopy2 * forMarshaling)11932 void marshal_VkBufferImageCopy2(VulkanStream* vkStream, VkStructureType rootType,
11933                                 const VkBufferImageCopy2* forMarshaling) {
11934     (void)rootType;
11935     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11936     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11937         rootType = forMarshaling->sType;
11938     }
11939     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11940     vkStream->write((VkDeviceSize*)&forMarshaling->bufferOffset, sizeof(VkDeviceSize));
11941     vkStream->write((uint32_t*)&forMarshaling->bufferRowLength, sizeof(uint32_t));
11942     vkStream->write((uint32_t*)&forMarshaling->bufferImageHeight, sizeof(uint32_t));
11943     marshal_VkImageSubresourceLayers(vkStream, rootType,
11944                                      (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
11945     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->imageOffset));
11946     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->imageExtent));
11947 }
11948 
unmarshal_VkBufferImageCopy2(VulkanStream * vkStream,VkStructureType rootType,VkBufferImageCopy2 * forUnmarshaling)11949 void unmarshal_VkBufferImageCopy2(VulkanStream* vkStream, VkStructureType rootType,
11950                                   VkBufferImageCopy2* forUnmarshaling) {
11951     (void)rootType;
11952     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
11953     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11954         rootType = forUnmarshaling->sType;
11955     }
11956     size_t pNext_size;
11957     pNext_size = vkStream->getBe32();
11958     forUnmarshaling->pNext = nullptr;
11959     if (pNext_size) {
11960         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11961         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
11962         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11963         vkStream->alloc((void**)&forUnmarshaling->pNext,
11964                         goldfish_vk_extension_struct_size_with_stream_features(
11965                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11966         *(VkStructureType*)forUnmarshaling->pNext = extType;
11967         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
11968     }
11969     vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferOffset, sizeof(VkDeviceSize));
11970     vkStream->read((uint32_t*)&forUnmarshaling->bufferRowLength, sizeof(uint32_t));
11971     vkStream->read((uint32_t*)&forUnmarshaling->bufferImageHeight, sizeof(uint32_t));
11972     unmarshal_VkImageSubresourceLayers(
11973         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
11974     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset));
11975     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent));
11976 }
11977 
marshal_VkCopyBufferToImageInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkCopyBufferToImageInfo2 * forMarshaling)11978 void marshal_VkCopyBufferToImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
11979                                       const VkCopyBufferToImageInfo2* forMarshaling) {
11980     (void)rootType;
11981     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
11982     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11983         rootType = forMarshaling->sType;
11984     }
11985     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
11986     uint64_t cgen_var_0;
11987     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->srcBuffer, &cgen_var_0, 1);
11988     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
11989     uint64_t cgen_var_1;
11990     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->dstImage, &cgen_var_1, 1);
11991     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
11992     vkStream->write((VkImageLayout*)&forMarshaling->dstImageLayout, sizeof(VkImageLayout));
11993     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
11994     if (forMarshaling) {
11995         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
11996             marshal_VkBufferImageCopy2(vkStream, rootType,
11997                                        (const VkBufferImageCopy2*)(forMarshaling->pRegions + i));
11998         }
11999     }
12000 }
12001 
unmarshal_VkCopyBufferToImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyBufferToImageInfo2 * forUnmarshaling)12002 void unmarshal_VkCopyBufferToImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
12003                                         VkCopyBufferToImageInfo2* forUnmarshaling) {
12004     (void)rootType;
12005     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12006     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12007         rootType = forUnmarshaling->sType;
12008     }
12009     size_t pNext_size;
12010     pNext_size = vkStream->getBe32();
12011     forUnmarshaling->pNext = nullptr;
12012     if (pNext_size) {
12013         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12014         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12015         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12016         vkStream->alloc((void**)&forUnmarshaling->pNext,
12017                         goldfish_vk_extension_struct_size_with_stream_features(
12018                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12019         *(VkStructureType*)forUnmarshaling->pNext = extType;
12020         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12021     }
12022     uint64_t cgen_var_0;
12023     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
12024     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_0,
12025                                                        (VkBuffer*)&forUnmarshaling->srcBuffer, 1);
12026     uint64_t cgen_var_1;
12027     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
12028     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_1,
12029                                                       (VkImage*)&forUnmarshaling->dstImage, 1);
12030     vkStream->read((VkImageLayout*)&forUnmarshaling->dstImageLayout, sizeof(VkImageLayout));
12031     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
12032     vkStream->alloc((void**)&forUnmarshaling->pRegions,
12033                     forUnmarshaling->regionCount * sizeof(const VkBufferImageCopy2));
12034     if (forUnmarshaling) {
12035         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
12036             unmarshal_VkBufferImageCopy2(vkStream, rootType,
12037                                          (VkBufferImageCopy2*)(forUnmarshaling->pRegions + i));
12038         }
12039     }
12040 }
12041 
marshal_VkCopyImageToBufferInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkCopyImageToBufferInfo2 * forMarshaling)12042 void marshal_VkCopyImageToBufferInfo2(VulkanStream* vkStream, VkStructureType rootType,
12043                                       const VkCopyImageToBufferInfo2* forMarshaling) {
12044     (void)rootType;
12045     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12046     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12047         rootType = forMarshaling->sType;
12048     }
12049     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12050     uint64_t cgen_var_0;
12051     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->srcImage, &cgen_var_0, 1);
12052     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
12053     vkStream->write((VkImageLayout*)&forMarshaling->srcImageLayout, sizeof(VkImageLayout));
12054     uint64_t cgen_var_1;
12055     vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->dstBuffer, &cgen_var_1, 1);
12056     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
12057     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
12058     if (forMarshaling) {
12059         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
12060             marshal_VkBufferImageCopy2(vkStream, rootType,
12061                                        (const VkBufferImageCopy2*)(forMarshaling->pRegions + i));
12062         }
12063     }
12064 }
12065 
unmarshal_VkCopyImageToBufferInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageToBufferInfo2 * forUnmarshaling)12066 void unmarshal_VkCopyImageToBufferInfo2(VulkanStream* vkStream, VkStructureType rootType,
12067                                         VkCopyImageToBufferInfo2* forUnmarshaling) {
12068     (void)rootType;
12069     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12070     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12071         rootType = forUnmarshaling->sType;
12072     }
12073     size_t pNext_size;
12074     pNext_size = vkStream->getBe32();
12075     forUnmarshaling->pNext = nullptr;
12076     if (pNext_size) {
12077         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12078         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12079         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12080         vkStream->alloc((void**)&forUnmarshaling->pNext,
12081                         goldfish_vk_extension_struct_size_with_stream_features(
12082                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12083         *(VkStructureType*)forUnmarshaling->pNext = extType;
12084         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12085     }
12086     uint64_t cgen_var_0;
12087     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
12088     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
12089                                                       (VkImage*)&forUnmarshaling->srcImage, 1);
12090     vkStream->read((VkImageLayout*)&forUnmarshaling->srcImageLayout, sizeof(VkImageLayout));
12091     uint64_t cgen_var_1;
12092     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
12093     vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_1,
12094                                                        (VkBuffer*)&forUnmarshaling->dstBuffer, 1);
12095     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
12096     vkStream->alloc((void**)&forUnmarshaling->pRegions,
12097                     forUnmarshaling->regionCount * sizeof(const VkBufferImageCopy2));
12098     if (forUnmarshaling) {
12099         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
12100             unmarshal_VkBufferImageCopy2(vkStream, rootType,
12101                                          (VkBufferImageCopy2*)(forUnmarshaling->pRegions + i));
12102         }
12103     }
12104 }
12105 
marshal_VkImageBlit2(VulkanStream * vkStream,VkStructureType rootType,const VkImageBlit2 * forMarshaling)12106 void marshal_VkImageBlit2(VulkanStream* vkStream, VkStructureType rootType,
12107                           const VkImageBlit2* forMarshaling) {
12108     (void)rootType;
12109     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12110     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12111         rootType = forMarshaling->sType;
12112     }
12113     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12114     marshal_VkImageSubresourceLayers(vkStream, rootType,
12115                                      (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
12116     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
12117         marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forMarshaling->srcOffsets + i));
12118     }
12119     marshal_VkImageSubresourceLayers(vkStream, rootType,
12120                                      (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
12121     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
12122         marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forMarshaling->dstOffsets + i));
12123     }
12124 }
12125 
unmarshal_VkImageBlit2(VulkanStream * vkStream,VkStructureType rootType,VkImageBlit2 * forUnmarshaling)12126 void unmarshal_VkImageBlit2(VulkanStream* vkStream, VkStructureType rootType,
12127                             VkImageBlit2* forUnmarshaling) {
12128     (void)rootType;
12129     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12130     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12131         rootType = forUnmarshaling->sType;
12132     }
12133     size_t pNext_size;
12134     pNext_size = vkStream->getBe32();
12135     forUnmarshaling->pNext = nullptr;
12136     if (pNext_size) {
12137         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12138         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12139         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12140         vkStream->alloc((void**)&forUnmarshaling->pNext,
12141                         goldfish_vk_extension_struct_size_with_stream_features(
12142                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12143         *(VkStructureType*)forUnmarshaling->pNext = extType;
12144         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12145     }
12146     unmarshal_VkImageSubresourceLayers(
12147         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
12148     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
12149         unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forUnmarshaling->srcOffsets + i));
12150     }
12151     unmarshal_VkImageSubresourceLayers(
12152         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
12153     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
12154         unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(forUnmarshaling->dstOffsets + i));
12155     }
12156 }
12157 
marshal_VkBlitImageInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkBlitImageInfo2 * forMarshaling)12158 void marshal_VkBlitImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
12159                               const VkBlitImageInfo2* forMarshaling) {
12160     (void)rootType;
12161     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12162     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12163         rootType = forMarshaling->sType;
12164     }
12165     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12166     uint64_t cgen_var_0;
12167     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->srcImage, &cgen_var_0, 1);
12168     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
12169     vkStream->write((VkImageLayout*)&forMarshaling->srcImageLayout, sizeof(VkImageLayout));
12170     uint64_t cgen_var_1;
12171     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->dstImage, &cgen_var_1, 1);
12172     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
12173     vkStream->write((VkImageLayout*)&forMarshaling->dstImageLayout, sizeof(VkImageLayout));
12174     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
12175     if (forMarshaling) {
12176         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
12177             marshal_VkImageBlit2(vkStream, rootType,
12178                                  (const VkImageBlit2*)(forMarshaling->pRegions + i));
12179         }
12180     }
12181     vkStream->write((VkFilter*)&forMarshaling->filter, sizeof(VkFilter));
12182 }
12183 
unmarshal_VkBlitImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkBlitImageInfo2 * forUnmarshaling)12184 void unmarshal_VkBlitImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
12185                                 VkBlitImageInfo2* forUnmarshaling) {
12186     (void)rootType;
12187     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12188     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12189         rootType = forUnmarshaling->sType;
12190     }
12191     size_t pNext_size;
12192     pNext_size = vkStream->getBe32();
12193     forUnmarshaling->pNext = nullptr;
12194     if (pNext_size) {
12195         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12196         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12197         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12198         vkStream->alloc((void**)&forUnmarshaling->pNext,
12199                         goldfish_vk_extension_struct_size_with_stream_features(
12200                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12201         *(VkStructureType*)forUnmarshaling->pNext = extType;
12202         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12203     }
12204     uint64_t cgen_var_0;
12205     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
12206     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
12207                                                       (VkImage*)&forUnmarshaling->srcImage, 1);
12208     vkStream->read((VkImageLayout*)&forUnmarshaling->srcImageLayout, sizeof(VkImageLayout));
12209     uint64_t cgen_var_1;
12210     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
12211     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_1,
12212                                                       (VkImage*)&forUnmarshaling->dstImage, 1);
12213     vkStream->read((VkImageLayout*)&forUnmarshaling->dstImageLayout, sizeof(VkImageLayout));
12214     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
12215     vkStream->alloc((void**)&forUnmarshaling->pRegions,
12216                     forUnmarshaling->regionCount * sizeof(const VkImageBlit2));
12217     if (forUnmarshaling) {
12218         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
12219             unmarshal_VkImageBlit2(vkStream, rootType,
12220                                    (VkImageBlit2*)(forUnmarshaling->pRegions + i));
12221         }
12222     }
12223     vkStream->read((VkFilter*)&forUnmarshaling->filter, sizeof(VkFilter));
12224 }
12225 
marshal_VkImageResolve2(VulkanStream * vkStream,VkStructureType rootType,const VkImageResolve2 * forMarshaling)12226 void marshal_VkImageResolve2(VulkanStream* vkStream, VkStructureType rootType,
12227                              const VkImageResolve2* forMarshaling) {
12228     (void)rootType;
12229     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12230     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12231         rootType = forMarshaling->sType;
12232     }
12233     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12234     marshal_VkImageSubresourceLayers(vkStream, rootType,
12235                                      (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
12236     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->srcOffset));
12237     marshal_VkImageSubresourceLayers(vkStream, rootType,
12238                                      (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
12239     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->dstOffset));
12240     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->extent));
12241 }
12242 
unmarshal_VkImageResolve2(VulkanStream * vkStream,VkStructureType rootType,VkImageResolve2 * forUnmarshaling)12243 void unmarshal_VkImageResolve2(VulkanStream* vkStream, VkStructureType rootType,
12244                                VkImageResolve2* forUnmarshaling) {
12245     (void)rootType;
12246     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12247     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12248         rootType = forUnmarshaling->sType;
12249     }
12250     size_t pNext_size;
12251     pNext_size = vkStream->getBe32();
12252     forUnmarshaling->pNext = nullptr;
12253     if (pNext_size) {
12254         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12255         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12256         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12257         vkStream->alloc((void**)&forUnmarshaling->pNext,
12258                         goldfish_vk_extension_struct_size_with_stream_features(
12259                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12260         *(VkStructureType*)forUnmarshaling->pNext = extType;
12261         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12262     }
12263     unmarshal_VkImageSubresourceLayers(
12264         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
12265     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset));
12266     unmarshal_VkImageSubresourceLayers(
12267         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
12268     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset));
12269     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent));
12270 }
12271 
marshal_VkResolveImageInfo2(VulkanStream * vkStream,VkStructureType rootType,const VkResolveImageInfo2 * forMarshaling)12272 void marshal_VkResolveImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
12273                                  const VkResolveImageInfo2* forMarshaling) {
12274     (void)rootType;
12275     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12276     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12277         rootType = forMarshaling->sType;
12278     }
12279     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12280     uint64_t cgen_var_0;
12281     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->srcImage, &cgen_var_0, 1);
12282     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
12283     vkStream->write((VkImageLayout*)&forMarshaling->srcImageLayout, sizeof(VkImageLayout));
12284     uint64_t cgen_var_1;
12285     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->dstImage, &cgen_var_1, 1);
12286     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
12287     vkStream->write((VkImageLayout*)&forMarshaling->dstImageLayout, sizeof(VkImageLayout));
12288     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
12289     if (forMarshaling) {
12290         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
12291             marshal_VkImageResolve2(vkStream, rootType,
12292                                     (const VkImageResolve2*)(forMarshaling->pRegions + i));
12293         }
12294     }
12295 }
12296 
unmarshal_VkResolveImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkResolveImageInfo2 * forUnmarshaling)12297 void unmarshal_VkResolveImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
12298                                    VkResolveImageInfo2* forUnmarshaling) {
12299     (void)rootType;
12300     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12301     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12302         rootType = forUnmarshaling->sType;
12303     }
12304     size_t pNext_size;
12305     pNext_size = vkStream->getBe32();
12306     forUnmarshaling->pNext = nullptr;
12307     if (pNext_size) {
12308         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12309         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12310         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12311         vkStream->alloc((void**)&forUnmarshaling->pNext,
12312                         goldfish_vk_extension_struct_size_with_stream_features(
12313                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12314         *(VkStructureType*)forUnmarshaling->pNext = extType;
12315         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12316     }
12317     uint64_t cgen_var_0;
12318     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
12319     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
12320                                                       (VkImage*)&forUnmarshaling->srcImage, 1);
12321     vkStream->read((VkImageLayout*)&forUnmarshaling->srcImageLayout, sizeof(VkImageLayout));
12322     uint64_t cgen_var_1;
12323     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
12324     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_1,
12325                                                       (VkImage*)&forUnmarshaling->dstImage, 1);
12326     vkStream->read((VkImageLayout*)&forUnmarshaling->dstImageLayout, sizeof(VkImageLayout));
12327     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
12328     vkStream->alloc((void**)&forUnmarshaling->pRegions,
12329                     forUnmarshaling->regionCount * sizeof(const VkImageResolve2));
12330     if (forUnmarshaling) {
12331         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
12332             unmarshal_VkImageResolve2(vkStream, rootType,
12333                                       (VkImageResolve2*)(forUnmarshaling->pRegions + i));
12334         }
12335     }
12336 }
12337 
marshal_VkPhysicalDeviceSubgroupSizeControlFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSubgroupSizeControlFeatures * forMarshaling)12338 void marshal_VkPhysicalDeviceSubgroupSizeControlFeatures(
12339     VulkanStream* vkStream, VkStructureType rootType,
12340     const VkPhysicalDeviceSubgroupSizeControlFeatures* forMarshaling) {
12341     (void)rootType;
12342     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12343     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12344         rootType = forMarshaling->sType;
12345     }
12346     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12347     vkStream->write((VkBool32*)&forMarshaling->subgroupSizeControl, sizeof(VkBool32));
12348     vkStream->write((VkBool32*)&forMarshaling->computeFullSubgroups, sizeof(VkBool32));
12349 }
12350 
unmarshal_VkPhysicalDeviceSubgroupSizeControlFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSubgroupSizeControlFeatures * forUnmarshaling)12351 void unmarshal_VkPhysicalDeviceSubgroupSizeControlFeatures(
12352     VulkanStream* vkStream, VkStructureType rootType,
12353     VkPhysicalDeviceSubgroupSizeControlFeatures* forUnmarshaling) {
12354     (void)rootType;
12355     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12356     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12357         rootType = forUnmarshaling->sType;
12358     }
12359     size_t pNext_size;
12360     pNext_size = vkStream->getBe32();
12361     forUnmarshaling->pNext = nullptr;
12362     if (pNext_size) {
12363         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12364         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12365         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12366         vkStream->alloc((void**)&forUnmarshaling->pNext,
12367                         goldfish_vk_extension_struct_size_with_stream_features(
12368                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12369         *(VkStructureType*)forUnmarshaling->pNext = extType;
12370         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12371     }
12372     vkStream->read((VkBool32*)&forUnmarshaling->subgroupSizeControl, sizeof(VkBool32));
12373     vkStream->read((VkBool32*)&forUnmarshaling->computeFullSubgroups, sizeof(VkBool32));
12374 }
12375 
marshal_VkPhysicalDeviceSubgroupSizeControlProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSubgroupSizeControlProperties * forMarshaling)12376 void marshal_VkPhysicalDeviceSubgroupSizeControlProperties(
12377     VulkanStream* vkStream, VkStructureType rootType,
12378     const VkPhysicalDeviceSubgroupSizeControlProperties* forMarshaling) {
12379     (void)rootType;
12380     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12381     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12382         rootType = forMarshaling->sType;
12383     }
12384     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12385     vkStream->write((uint32_t*)&forMarshaling->minSubgroupSize, sizeof(uint32_t));
12386     vkStream->write((uint32_t*)&forMarshaling->maxSubgroupSize, sizeof(uint32_t));
12387     vkStream->write((uint32_t*)&forMarshaling->maxComputeWorkgroupSubgroups, sizeof(uint32_t));
12388     vkStream->write((VkShaderStageFlags*)&forMarshaling->requiredSubgroupSizeStages,
12389                     sizeof(VkShaderStageFlags));
12390 }
12391 
unmarshal_VkPhysicalDeviceSubgroupSizeControlProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSubgroupSizeControlProperties * forUnmarshaling)12392 void unmarshal_VkPhysicalDeviceSubgroupSizeControlProperties(
12393     VulkanStream* vkStream, VkStructureType rootType,
12394     VkPhysicalDeviceSubgroupSizeControlProperties* forUnmarshaling) {
12395     (void)rootType;
12396     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12397     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12398         rootType = forUnmarshaling->sType;
12399     }
12400     size_t pNext_size;
12401     pNext_size = vkStream->getBe32();
12402     forUnmarshaling->pNext = nullptr;
12403     if (pNext_size) {
12404         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12405         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12406         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12407         vkStream->alloc((void**)&forUnmarshaling->pNext,
12408                         goldfish_vk_extension_struct_size_with_stream_features(
12409                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12410         *(VkStructureType*)forUnmarshaling->pNext = extType;
12411         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12412     }
12413     vkStream->read((uint32_t*)&forUnmarshaling->minSubgroupSize, sizeof(uint32_t));
12414     vkStream->read((uint32_t*)&forUnmarshaling->maxSubgroupSize, sizeof(uint32_t));
12415     vkStream->read((uint32_t*)&forUnmarshaling->maxComputeWorkgroupSubgroups, sizeof(uint32_t));
12416     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->requiredSubgroupSizeStages,
12417                    sizeof(VkShaderStageFlags));
12418 }
12419 
marshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo * forMarshaling)12420 void marshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(
12421     VulkanStream* vkStream, VkStructureType rootType,
12422     const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo* forMarshaling) {
12423     (void)rootType;
12424     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12425     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12426         rootType = forMarshaling->sType;
12427     }
12428     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12429     vkStream->write((uint32_t*)&forMarshaling->requiredSubgroupSize, sizeof(uint32_t));
12430 }
12431 
unmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineShaderStageRequiredSubgroupSizeCreateInfo * forUnmarshaling)12432 void unmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(
12433     VulkanStream* vkStream, VkStructureType rootType,
12434     VkPipelineShaderStageRequiredSubgroupSizeCreateInfo* forUnmarshaling) {
12435     (void)rootType;
12436     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12437     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12438         rootType = forUnmarshaling->sType;
12439     }
12440     size_t pNext_size;
12441     pNext_size = vkStream->getBe32();
12442     forUnmarshaling->pNext = nullptr;
12443     if (pNext_size) {
12444         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12445         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12446         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12447         vkStream->alloc((void**)&forUnmarshaling->pNext,
12448                         goldfish_vk_extension_struct_size_with_stream_features(
12449                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12450         *(VkStructureType*)forUnmarshaling->pNext = extType;
12451         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12452     }
12453     vkStream->read((uint32_t*)&forUnmarshaling->requiredSubgroupSize, sizeof(uint32_t));
12454 }
12455 
marshal_VkPhysicalDeviceInlineUniformBlockFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceInlineUniformBlockFeatures * forMarshaling)12456 void marshal_VkPhysicalDeviceInlineUniformBlockFeatures(
12457     VulkanStream* vkStream, VkStructureType rootType,
12458     const VkPhysicalDeviceInlineUniformBlockFeatures* forMarshaling) {
12459     (void)rootType;
12460     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12461     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12462         rootType = forMarshaling->sType;
12463     }
12464     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12465     vkStream->write((VkBool32*)&forMarshaling->inlineUniformBlock, sizeof(VkBool32));
12466     vkStream->write((VkBool32*)&forMarshaling->descriptorBindingInlineUniformBlockUpdateAfterBind,
12467                     sizeof(VkBool32));
12468 }
12469 
unmarshal_VkPhysicalDeviceInlineUniformBlockFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceInlineUniformBlockFeatures * forUnmarshaling)12470 void unmarshal_VkPhysicalDeviceInlineUniformBlockFeatures(
12471     VulkanStream* vkStream, VkStructureType rootType,
12472     VkPhysicalDeviceInlineUniformBlockFeatures* forUnmarshaling) {
12473     (void)rootType;
12474     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12475     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12476         rootType = forUnmarshaling->sType;
12477     }
12478     size_t pNext_size;
12479     pNext_size = vkStream->getBe32();
12480     forUnmarshaling->pNext = nullptr;
12481     if (pNext_size) {
12482         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12483         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12484         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12485         vkStream->alloc((void**)&forUnmarshaling->pNext,
12486                         goldfish_vk_extension_struct_size_with_stream_features(
12487                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12488         *(VkStructureType*)forUnmarshaling->pNext = extType;
12489         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12490     }
12491     vkStream->read((VkBool32*)&forUnmarshaling->inlineUniformBlock, sizeof(VkBool32));
12492     vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingInlineUniformBlockUpdateAfterBind,
12493                    sizeof(VkBool32));
12494 }
12495 
marshal_VkPhysicalDeviceInlineUniformBlockProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceInlineUniformBlockProperties * forMarshaling)12496 void marshal_VkPhysicalDeviceInlineUniformBlockProperties(
12497     VulkanStream* vkStream, VkStructureType rootType,
12498     const VkPhysicalDeviceInlineUniformBlockProperties* forMarshaling) {
12499     (void)rootType;
12500     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12501     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12502         rootType = forMarshaling->sType;
12503     }
12504     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12505     vkStream->write((uint32_t*)&forMarshaling->maxInlineUniformBlockSize, sizeof(uint32_t));
12506     vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorInlineUniformBlocks,
12507                     sizeof(uint32_t));
12508     vkStream->write(
12509         (uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
12510         sizeof(uint32_t));
12511     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetInlineUniformBlocks,
12512                     sizeof(uint32_t));
12513     vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindInlineUniformBlocks,
12514                     sizeof(uint32_t));
12515 }
12516 
unmarshal_VkPhysicalDeviceInlineUniformBlockProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceInlineUniformBlockProperties * forUnmarshaling)12517 void unmarshal_VkPhysicalDeviceInlineUniformBlockProperties(
12518     VulkanStream* vkStream, VkStructureType rootType,
12519     VkPhysicalDeviceInlineUniformBlockProperties* forUnmarshaling) {
12520     (void)rootType;
12521     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12522     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12523         rootType = forUnmarshaling->sType;
12524     }
12525     size_t pNext_size;
12526     pNext_size = vkStream->getBe32();
12527     forUnmarshaling->pNext = nullptr;
12528     if (pNext_size) {
12529         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12530         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12531         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12532         vkStream->alloc((void**)&forUnmarshaling->pNext,
12533                         goldfish_vk_extension_struct_size_with_stream_features(
12534                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12535         *(VkStructureType*)forUnmarshaling->pNext = extType;
12536         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12537     }
12538     vkStream->read((uint32_t*)&forUnmarshaling->maxInlineUniformBlockSize, sizeof(uint32_t));
12539     vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInlineUniformBlocks,
12540                    sizeof(uint32_t));
12541     vkStream->read(
12542         (uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
12543         sizeof(uint32_t));
12544     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetInlineUniformBlocks,
12545                    sizeof(uint32_t));
12546     vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInlineUniformBlocks,
12547                    sizeof(uint32_t));
12548 }
12549 
marshal_VkWriteDescriptorSetInlineUniformBlock(VulkanStream * vkStream,VkStructureType rootType,const VkWriteDescriptorSetInlineUniformBlock * forMarshaling)12550 void marshal_VkWriteDescriptorSetInlineUniformBlock(
12551     VulkanStream* vkStream, VkStructureType rootType,
12552     const VkWriteDescriptorSetInlineUniformBlock* forMarshaling) {
12553     (void)rootType;
12554     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12555     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12556         rootType = forMarshaling->sType;
12557     }
12558     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12559     vkStream->write((uint32_t*)&forMarshaling->dataSize, sizeof(uint32_t));
12560     vkStream->write((const void*)forMarshaling->pData,
12561                     forMarshaling->dataSize * sizeof(const uint8_t));
12562 }
12563 
unmarshal_VkWriteDescriptorSetInlineUniformBlock(VulkanStream * vkStream,VkStructureType rootType,VkWriteDescriptorSetInlineUniformBlock * forUnmarshaling)12564 void unmarshal_VkWriteDescriptorSetInlineUniformBlock(
12565     VulkanStream* vkStream, VkStructureType rootType,
12566     VkWriteDescriptorSetInlineUniformBlock* forUnmarshaling) {
12567     (void)rootType;
12568     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12569     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12570         rootType = forUnmarshaling->sType;
12571     }
12572     size_t pNext_size;
12573     pNext_size = vkStream->getBe32();
12574     forUnmarshaling->pNext = nullptr;
12575     if (pNext_size) {
12576         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12577         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12578         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12579         vkStream->alloc((void**)&forUnmarshaling->pNext,
12580                         goldfish_vk_extension_struct_size_with_stream_features(
12581                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12582         *(VkStructureType*)forUnmarshaling->pNext = extType;
12583         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12584     }
12585     vkStream->read((uint32_t*)&forUnmarshaling->dataSize, sizeof(uint32_t));
12586     vkStream->alloc((void**)&forUnmarshaling->pData,
12587                     forUnmarshaling->dataSize * sizeof(const uint8_t));
12588     vkStream->read((void*)forUnmarshaling->pData,
12589                    forUnmarshaling->dataSize * sizeof(const uint8_t));
12590 }
12591 
marshal_VkDescriptorPoolInlineUniformBlockCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkDescriptorPoolInlineUniformBlockCreateInfo * forMarshaling)12592 void marshal_VkDescriptorPoolInlineUniformBlockCreateInfo(
12593     VulkanStream* vkStream, VkStructureType rootType,
12594     const VkDescriptorPoolInlineUniformBlockCreateInfo* forMarshaling) {
12595     (void)rootType;
12596     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12597     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12598         rootType = forMarshaling->sType;
12599     }
12600     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12601     vkStream->write((uint32_t*)&forMarshaling->maxInlineUniformBlockBindings, sizeof(uint32_t));
12602 }
12603 
unmarshal_VkDescriptorPoolInlineUniformBlockCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorPoolInlineUniformBlockCreateInfo * forUnmarshaling)12604 void unmarshal_VkDescriptorPoolInlineUniformBlockCreateInfo(
12605     VulkanStream* vkStream, VkStructureType rootType,
12606     VkDescriptorPoolInlineUniformBlockCreateInfo* forUnmarshaling) {
12607     (void)rootType;
12608     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12609     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12610         rootType = forUnmarshaling->sType;
12611     }
12612     size_t pNext_size;
12613     pNext_size = vkStream->getBe32();
12614     forUnmarshaling->pNext = nullptr;
12615     if (pNext_size) {
12616         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12617         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12618         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12619         vkStream->alloc((void**)&forUnmarshaling->pNext,
12620                         goldfish_vk_extension_struct_size_with_stream_features(
12621                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12622         *(VkStructureType*)forUnmarshaling->pNext = extType;
12623         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12624     }
12625     vkStream->read((uint32_t*)&forUnmarshaling->maxInlineUniformBlockBindings, sizeof(uint32_t));
12626 }
12627 
marshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTextureCompressionASTCHDRFeatures * forMarshaling)12628 void marshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(
12629     VulkanStream* vkStream, VkStructureType rootType,
12630     const VkPhysicalDeviceTextureCompressionASTCHDRFeatures* forMarshaling) {
12631     (void)rootType;
12632     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12633     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12634         rootType = forMarshaling->sType;
12635     }
12636     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12637     vkStream->write((VkBool32*)&forMarshaling->textureCompressionASTC_HDR, sizeof(VkBool32));
12638 }
12639 
unmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTextureCompressionASTCHDRFeatures * forUnmarshaling)12640 void unmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(
12641     VulkanStream* vkStream, VkStructureType rootType,
12642     VkPhysicalDeviceTextureCompressionASTCHDRFeatures* forUnmarshaling) {
12643     (void)rootType;
12644     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12645     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12646         rootType = forUnmarshaling->sType;
12647     }
12648     size_t pNext_size;
12649     pNext_size = vkStream->getBe32();
12650     forUnmarshaling->pNext = nullptr;
12651     if (pNext_size) {
12652         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12653         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12654         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12655         vkStream->alloc((void**)&forUnmarshaling->pNext,
12656                         goldfish_vk_extension_struct_size_with_stream_features(
12657                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12658         *(VkStructureType*)forUnmarshaling->pNext = extType;
12659         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12660     }
12661     vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionASTC_HDR, sizeof(VkBool32));
12662 }
12663 
marshal_VkRenderingAttachmentInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderingAttachmentInfo * forMarshaling)12664 void marshal_VkRenderingAttachmentInfo(VulkanStream* vkStream, VkStructureType rootType,
12665                                        const VkRenderingAttachmentInfo* forMarshaling) {
12666     (void)rootType;
12667     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12668     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12669         rootType = forMarshaling->sType;
12670     }
12671     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12672     uint64_t cgen_var_0;
12673     vkStream->handleMapping()->mapHandles_VkImageView_u64(&forMarshaling->imageView, &cgen_var_0,
12674                                                           1);
12675     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
12676     vkStream->write((VkImageLayout*)&forMarshaling->imageLayout, sizeof(VkImageLayout));
12677     vkStream->write((VkResolveModeFlagBits*)&forMarshaling->resolveMode,
12678                     sizeof(VkResolveModeFlagBits));
12679     uint64_t cgen_var_1;
12680     vkStream->handleMapping()->mapHandles_VkImageView_u64(&forMarshaling->resolveImageView,
12681                                                           &cgen_var_1, 1);
12682     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
12683     vkStream->write((VkImageLayout*)&forMarshaling->resolveImageLayout, sizeof(VkImageLayout));
12684     vkStream->write((VkAttachmentLoadOp*)&forMarshaling->loadOp, sizeof(VkAttachmentLoadOp));
12685     vkStream->write((VkAttachmentStoreOp*)&forMarshaling->storeOp, sizeof(VkAttachmentStoreOp));
12686     marshal_VkClearValue(vkStream, rootType, (VkClearValue*)(&forMarshaling->clearValue));
12687 }
12688 
unmarshal_VkRenderingAttachmentInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderingAttachmentInfo * forUnmarshaling)12689 void unmarshal_VkRenderingAttachmentInfo(VulkanStream* vkStream, VkStructureType rootType,
12690                                          VkRenderingAttachmentInfo* forUnmarshaling) {
12691     (void)rootType;
12692     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12693     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12694         rootType = forUnmarshaling->sType;
12695     }
12696     size_t pNext_size;
12697     pNext_size = vkStream->getBe32();
12698     forUnmarshaling->pNext = nullptr;
12699     if (pNext_size) {
12700         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12701         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12702         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12703         vkStream->alloc((void**)&forUnmarshaling->pNext,
12704                         goldfish_vk_extension_struct_size_with_stream_features(
12705                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12706         *(VkStructureType*)forUnmarshaling->pNext = extType;
12707         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12708     }
12709     uint64_t cgen_var_0;
12710     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
12711     vkStream->handleMapping()->mapHandles_u64_VkImageView(
12712         &cgen_var_0, (VkImageView*)&forUnmarshaling->imageView, 1);
12713     vkStream->read((VkImageLayout*)&forUnmarshaling->imageLayout, sizeof(VkImageLayout));
12714     vkStream->read((VkResolveModeFlagBits*)&forUnmarshaling->resolveMode,
12715                    sizeof(VkResolveModeFlagBits));
12716     uint64_t cgen_var_1;
12717     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
12718     vkStream->handleMapping()->mapHandles_u64_VkImageView(
12719         &cgen_var_1, (VkImageView*)&forUnmarshaling->resolveImageView, 1);
12720     vkStream->read((VkImageLayout*)&forUnmarshaling->resolveImageLayout, sizeof(VkImageLayout));
12721     vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, sizeof(VkAttachmentLoadOp));
12722     vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, sizeof(VkAttachmentStoreOp));
12723     unmarshal_VkClearValue(vkStream, rootType, (VkClearValue*)(&forUnmarshaling->clearValue));
12724 }
12725 
marshal_VkRenderingInfo(VulkanStream * vkStream,VkStructureType rootType,const VkRenderingInfo * forMarshaling)12726 void marshal_VkRenderingInfo(VulkanStream* vkStream, VkStructureType rootType,
12727                              const VkRenderingInfo* forMarshaling) {
12728     (void)rootType;
12729     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12730     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12731         rootType = forMarshaling->sType;
12732     }
12733     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12734     vkStream->write((VkRenderingFlags*)&forMarshaling->flags, sizeof(VkRenderingFlags));
12735     marshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forMarshaling->renderArea));
12736     vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
12737     vkStream->write((uint32_t*)&forMarshaling->viewMask, sizeof(uint32_t));
12738     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
12739     if (forMarshaling) {
12740         for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i) {
12741             marshal_VkRenderingAttachmentInfo(
12742                 vkStream, rootType,
12743                 (const VkRenderingAttachmentInfo*)(forMarshaling->pColorAttachments + i));
12744         }
12745     }
12746     // WARNING PTR CHECK
12747     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pDepthAttachment;
12748     vkStream->putBe64(cgen_var_0);
12749     if (forMarshaling->pDepthAttachment) {
12750         marshal_VkRenderingAttachmentInfo(
12751             vkStream, rootType,
12752             (const VkRenderingAttachmentInfo*)(forMarshaling->pDepthAttachment));
12753     }
12754     // WARNING PTR CHECK
12755     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pStencilAttachment;
12756     vkStream->putBe64(cgen_var_1);
12757     if (forMarshaling->pStencilAttachment) {
12758         marshal_VkRenderingAttachmentInfo(
12759             vkStream, rootType,
12760             (const VkRenderingAttachmentInfo*)(forMarshaling->pStencilAttachment));
12761     }
12762 }
12763 
unmarshal_VkRenderingInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderingInfo * forUnmarshaling)12764 void unmarshal_VkRenderingInfo(VulkanStream* vkStream, VkStructureType rootType,
12765                                VkRenderingInfo* forUnmarshaling) {
12766     (void)rootType;
12767     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12768     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12769         rootType = forUnmarshaling->sType;
12770     }
12771     size_t pNext_size;
12772     pNext_size = vkStream->getBe32();
12773     forUnmarshaling->pNext = nullptr;
12774     if (pNext_size) {
12775         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12776         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12777         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12778         vkStream->alloc((void**)&forUnmarshaling->pNext,
12779                         goldfish_vk_extension_struct_size_with_stream_features(
12780                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12781         *(VkStructureType*)forUnmarshaling->pNext = extType;
12782         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12783     }
12784     vkStream->read((VkRenderingFlags*)&forUnmarshaling->flags, sizeof(VkRenderingFlags));
12785     unmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forUnmarshaling->renderArea));
12786     vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
12787     vkStream->read((uint32_t*)&forUnmarshaling->viewMask, sizeof(uint32_t));
12788     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
12789     vkStream->alloc(
12790         (void**)&forUnmarshaling->pColorAttachments,
12791         forUnmarshaling->colorAttachmentCount * sizeof(const VkRenderingAttachmentInfo));
12792     if (forUnmarshaling) {
12793         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
12794             unmarshal_VkRenderingAttachmentInfo(
12795                 vkStream, rootType,
12796                 (VkRenderingAttachmentInfo*)(forUnmarshaling->pColorAttachments + i));
12797         }
12798     }
12799     // WARNING PTR CHECK
12800     forUnmarshaling->pDepthAttachment =
12801         (const VkRenderingAttachmentInfo*)(uintptr_t)vkStream->getBe64();
12802     if (forUnmarshaling->pDepthAttachment) {
12803         vkStream->alloc((void**)&forUnmarshaling->pDepthAttachment,
12804                         sizeof(const VkRenderingAttachmentInfo));
12805         unmarshal_VkRenderingAttachmentInfo(
12806             vkStream, rootType, (VkRenderingAttachmentInfo*)(forUnmarshaling->pDepthAttachment));
12807     }
12808     // WARNING PTR CHECK
12809     forUnmarshaling->pStencilAttachment =
12810         (const VkRenderingAttachmentInfo*)(uintptr_t)vkStream->getBe64();
12811     if (forUnmarshaling->pStencilAttachment) {
12812         vkStream->alloc((void**)&forUnmarshaling->pStencilAttachment,
12813                         sizeof(const VkRenderingAttachmentInfo));
12814         unmarshal_VkRenderingAttachmentInfo(
12815             vkStream, rootType, (VkRenderingAttachmentInfo*)(forUnmarshaling->pStencilAttachment));
12816     }
12817 }
12818 
marshal_VkPipelineRenderingCreateInfo(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineRenderingCreateInfo * forMarshaling)12819 void marshal_VkPipelineRenderingCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
12820                                            const VkPipelineRenderingCreateInfo* forMarshaling) {
12821     (void)rootType;
12822     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12823     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12824         rootType = forMarshaling->sType;
12825     }
12826     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12827     vkStream->write((uint32_t*)&forMarshaling->viewMask, sizeof(uint32_t));
12828     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
12829     // WARNING PTR CHECK
12830     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pColorAttachmentFormats;
12831     vkStream->putBe64(cgen_var_0);
12832     if (forMarshaling->pColorAttachmentFormats) {
12833         vkStream->write((const VkFormat*)forMarshaling->pColorAttachmentFormats,
12834                         forMarshaling->colorAttachmentCount * sizeof(const VkFormat));
12835     }
12836     vkStream->write((VkFormat*)&forMarshaling->depthAttachmentFormat, sizeof(VkFormat));
12837     vkStream->write((VkFormat*)&forMarshaling->stencilAttachmentFormat, sizeof(VkFormat));
12838 }
12839 
unmarshal_VkPipelineRenderingCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRenderingCreateInfo * forUnmarshaling)12840 void unmarshal_VkPipelineRenderingCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
12841                                              VkPipelineRenderingCreateInfo* forUnmarshaling) {
12842     (void)rootType;
12843     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12844     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12845         rootType = forUnmarshaling->sType;
12846     }
12847     size_t pNext_size;
12848     pNext_size = vkStream->getBe32();
12849     forUnmarshaling->pNext = nullptr;
12850     if (pNext_size) {
12851         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12852         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12853         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12854         vkStream->alloc((void**)&forUnmarshaling->pNext,
12855                         goldfish_vk_extension_struct_size_with_stream_features(
12856                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12857         *(VkStructureType*)forUnmarshaling->pNext = extType;
12858         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12859     }
12860     vkStream->read((uint32_t*)&forUnmarshaling->viewMask, sizeof(uint32_t));
12861     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
12862     // WARNING PTR CHECK
12863     forUnmarshaling->pColorAttachmentFormats = (const VkFormat*)(uintptr_t)vkStream->getBe64();
12864     if (forUnmarshaling->pColorAttachmentFormats) {
12865         vkStream->alloc((void**)&forUnmarshaling->pColorAttachmentFormats,
12866                         forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
12867         vkStream->read((VkFormat*)forUnmarshaling->pColorAttachmentFormats,
12868                        forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
12869     }
12870     vkStream->read((VkFormat*)&forUnmarshaling->depthAttachmentFormat, sizeof(VkFormat));
12871     vkStream->read((VkFormat*)&forUnmarshaling->stencilAttachmentFormat, sizeof(VkFormat));
12872 }
12873 
marshal_VkPhysicalDeviceDynamicRenderingFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDynamicRenderingFeatures * forMarshaling)12874 void marshal_VkPhysicalDeviceDynamicRenderingFeatures(
12875     VulkanStream* vkStream, VkStructureType rootType,
12876     const VkPhysicalDeviceDynamicRenderingFeatures* forMarshaling) {
12877     (void)rootType;
12878     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12879     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12880         rootType = forMarshaling->sType;
12881     }
12882     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12883     vkStream->write((VkBool32*)&forMarshaling->dynamicRendering, sizeof(VkBool32));
12884 }
12885 
unmarshal_VkPhysicalDeviceDynamicRenderingFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDynamicRenderingFeatures * forUnmarshaling)12886 void unmarshal_VkPhysicalDeviceDynamicRenderingFeatures(
12887     VulkanStream* vkStream, VkStructureType rootType,
12888     VkPhysicalDeviceDynamicRenderingFeatures* forUnmarshaling) {
12889     (void)rootType;
12890     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12891     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12892         rootType = forUnmarshaling->sType;
12893     }
12894     size_t pNext_size;
12895     pNext_size = vkStream->getBe32();
12896     forUnmarshaling->pNext = nullptr;
12897     if (pNext_size) {
12898         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12899         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12900         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12901         vkStream->alloc((void**)&forUnmarshaling->pNext,
12902                         goldfish_vk_extension_struct_size_with_stream_features(
12903                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12904         *(VkStructureType*)forUnmarshaling->pNext = extType;
12905         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12906     }
12907     vkStream->read((VkBool32*)&forUnmarshaling->dynamicRendering, sizeof(VkBool32));
12908 }
12909 
marshal_VkCommandBufferInheritanceRenderingInfo(VulkanStream * vkStream,VkStructureType rootType,const VkCommandBufferInheritanceRenderingInfo * forMarshaling)12910 void marshal_VkCommandBufferInheritanceRenderingInfo(
12911     VulkanStream* vkStream, VkStructureType rootType,
12912     const VkCommandBufferInheritanceRenderingInfo* forMarshaling) {
12913     (void)rootType;
12914     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12915     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12916         rootType = forMarshaling->sType;
12917     }
12918     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12919     vkStream->write((VkRenderingFlags*)&forMarshaling->flags, sizeof(VkRenderingFlags));
12920     vkStream->write((uint32_t*)&forMarshaling->viewMask, sizeof(uint32_t));
12921     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
12922     vkStream->write((const VkFormat*)forMarshaling->pColorAttachmentFormats,
12923                     forMarshaling->colorAttachmentCount * sizeof(const VkFormat));
12924     vkStream->write((VkFormat*)&forMarshaling->depthAttachmentFormat, sizeof(VkFormat));
12925     vkStream->write((VkFormat*)&forMarshaling->stencilAttachmentFormat, sizeof(VkFormat));
12926     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->rasterizationSamples,
12927                     sizeof(VkSampleCountFlagBits));
12928 }
12929 
unmarshal_VkCommandBufferInheritanceRenderingInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferInheritanceRenderingInfo * forUnmarshaling)12930 void unmarshal_VkCommandBufferInheritanceRenderingInfo(
12931     VulkanStream* vkStream, VkStructureType rootType,
12932     VkCommandBufferInheritanceRenderingInfo* forUnmarshaling) {
12933     (void)rootType;
12934     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12935     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12936         rootType = forUnmarshaling->sType;
12937     }
12938     size_t pNext_size;
12939     pNext_size = vkStream->getBe32();
12940     forUnmarshaling->pNext = nullptr;
12941     if (pNext_size) {
12942         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12943         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12944         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12945         vkStream->alloc((void**)&forUnmarshaling->pNext,
12946                         goldfish_vk_extension_struct_size_with_stream_features(
12947                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12948         *(VkStructureType*)forUnmarshaling->pNext = extType;
12949         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12950     }
12951     vkStream->read((VkRenderingFlags*)&forUnmarshaling->flags, sizeof(VkRenderingFlags));
12952     vkStream->read((uint32_t*)&forUnmarshaling->viewMask, sizeof(uint32_t));
12953     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
12954     vkStream->alloc((void**)&forUnmarshaling->pColorAttachmentFormats,
12955                     forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
12956     vkStream->read((VkFormat*)forUnmarshaling->pColorAttachmentFormats,
12957                    forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
12958     vkStream->read((VkFormat*)&forUnmarshaling->depthAttachmentFormat, sizeof(VkFormat));
12959     vkStream->read((VkFormat*)&forUnmarshaling->stencilAttachmentFormat, sizeof(VkFormat));
12960     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->rasterizationSamples,
12961                    sizeof(VkSampleCountFlagBits));
12962 }
12963 
marshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderIntegerDotProductFeatures * forMarshaling)12964 void marshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(
12965     VulkanStream* vkStream, VkStructureType rootType,
12966     const VkPhysicalDeviceShaderIntegerDotProductFeatures* forMarshaling) {
12967     (void)rootType;
12968     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
12969     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12970         rootType = forMarshaling->sType;
12971     }
12972     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
12973     vkStream->write((VkBool32*)&forMarshaling->shaderIntegerDotProduct, sizeof(VkBool32));
12974 }
12975 
unmarshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderIntegerDotProductFeatures * forUnmarshaling)12976 void unmarshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(
12977     VulkanStream* vkStream, VkStructureType rootType,
12978     VkPhysicalDeviceShaderIntegerDotProductFeatures* forUnmarshaling) {
12979     (void)rootType;
12980     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
12981     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12982         rootType = forUnmarshaling->sType;
12983     }
12984     size_t pNext_size;
12985     pNext_size = vkStream->getBe32();
12986     forUnmarshaling->pNext = nullptr;
12987     if (pNext_size) {
12988         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12989         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
12990         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12991         vkStream->alloc((void**)&forUnmarshaling->pNext,
12992                         goldfish_vk_extension_struct_size_with_stream_features(
12993                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12994         *(VkStructureType*)forUnmarshaling->pNext = extType;
12995         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
12996     }
12997     vkStream->read((VkBool32*)&forUnmarshaling->shaderIntegerDotProduct, sizeof(VkBool32));
12998 }
12999 
marshal_VkPhysicalDeviceShaderIntegerDotProductProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceShaderIntegerDotProductProperties * forMarshaling)13000 void marshal_VkPhysicalDeviceShaderIntegerDotProductProperties(
13001     VulkanStream* vkStream, VkStructureType rootType,
13002     const VkPhysicalDeviceShaderIntegerDotProductProperties* forMarshaling) {
13003     (void)rootType;
13004     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13005     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13006         rootType = forMarshaling->sType;
13007     }
13008     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13009     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct8BitUnsignedAccelerated,
13010                     sizeof(VkBool32));
13011     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct8BitSignedAccelerated,
13012                     sizeof(VkBool32));
13013     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct8BitMixedSignednessAccelerated,
13014                     sizeof(VkBool32));
13015     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct4x8BitPackedUnsignedAccelerated,
13016                     sizeof(VkBool32));
13017     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct4x8BitPackedSignedAccelerated,
13018                     sizeof(VkBool32));
13019     vkStream->write(
13020         (VkBool32*)&forMarshaling->integerDotProduct4x8BitPackedMixedSignednessAccelerated,
13021         sizeof(VkBool32));
13022     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct16BitUnsignedAccelerated,
13023                     sizeof(VkBool32));
13024     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct16BitSignedAccelerated,
13025                     sizeof(VkBool32));
13026     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct16BitMixedSignednessAccelerated,
13027                     sizeof(VkBool32));
13028     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct32BitUnsignedAccelerated,
13029                     sizeof(VkBool32));
13030     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct32BitSignedAccelerated,
13031                     sizeof(VkBool32));
13032     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct32BitMixedSignednessAccelerated,
13033                     sizeof(VkBool32));
13034     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct64BitUnsignedAccelerated,
13035                     sizeof(VkBool32));
13036     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct64BitSignedAccelerated,
13037                     sizeof(VkBool32));
13038     vkStream->write((VkBool32*)&forMarshaling->integerDotProduct64BitMixedSignednessAccelerated,
13039                     sizeof(VkBool32));
13040     vkStream->write(
13041         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
13042         sizeof(VkBool32));
13043     vkStream->write(
13044         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating8BitSignedAccelerated,
13045         sizeof(VkBool32));
13046     vkStream->write((VkBool32*)&forMarshaling
13047                         ->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
13048                     sizeof(VkBool32));
13049     vkStream->write((VkBool32*)&forMarshaling
13050                         ->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
13051                     sizeof(VkBool32));
13052     vkStream->write((VkBool32*)&forMarshaling
13053                         ->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
13054                     sizeof(VkBool32));
13055     vkStream->write(
13056         (VkBool32*)&forMarshaling
13057             ->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
13058         sizeof(VkBool32));
13059     vkStream->write(
13060         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
13061         sizeof(VkBool32));
13062     vkStream->write(
13063         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating16BitSignedAccelerated,
13064         sizeof(VkBool32));
13065     vkStream->write((VkBool32*)&forMarshaling
13066                         ->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
13067                     sizeof(VkBool32));
13068     vkStream->write(
13069         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
13070         sizeof(VkBool32));
13071     vkStream->write(
13072         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating32BitSignedAccelerated,
13073         sizeof(VkBool32));
13074     vkStream->write((VkBool32*)&forMarshaling
13075                         ->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
13076                     sizeof(VkBool32));
13077     vkStream->write(
13078         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
13079         sizeof(VkBool32));
13080     vkStream->write(
13081         (VkBool32*)&forMarshaling->integerDotProductAccumulatingSaturating64BitSignedAccelerated,
13082         sizeof(VkBool32));
13083     vkStream->write((VkBool32*)&forMarshaling
13084                         ->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
13085                     sizeof(VkBool32));
13086 }
13087 
unmarshal_VkPhysicalDeviceShaderIntegerDotProductProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderIntegerDotProductProperties * forUnmarshaling)13088 void unmarshal_VkPhysicalDeviceShaderIntegerDotProductProperties(
13089     VulkanStream* vkStream, VkStructureType rootType,
13090     VkPhysicalDeviceShaderIntegerDotProductProperties* forUnmarshaling) {
13091     (void)rootType;
13092     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13093     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13094         rootType = forUnmarshaling->sType;
13095     }
13096     size_t pNext_size;
13097     pNext_size = vkStream->getBe32();
13098     forUnmarshaling->pNext = nullptr;
13099     if (pNext_size) {
13100         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13101         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13102         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13103         vkStream->alloc((void**)&forUnmarshaling->pNext,
13104                         goldfish_vk_extension_struct_size_with_stream_features(
13105                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13106         *(VkStructureType*)forUnmarshaling->pNext = extType;
13107         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13108     }
13109     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct8BitUnsignedAccelerated,
13110                    sizeof(VkBool32));
13111     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct8BitSignedAccelerated,
13112                    sizeof(VkBool32));
13113     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct8BitMixedSignednessAccelerated,
13114                    sizeof(VkBool32));
13115     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedUnsignedAccelerated,
13116                    sizeof(VkBool32));
13117     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedSignedAccelerated,
13118                    sizeof(VkBool32));
13119     vkStream->read(
13120         (VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedMixedSignednessAccelerated,
13121         sizeof(VkBool32));
13122     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct16BitUnsignedAccelerated,
13123                    sizeof(VkBool32));
13124     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct16BitSignedAccelerated,
13125                    sizeof(VkBool32));
13126     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct16BitMixedSignednessAccelerated,
13127                    sizeof(VkBool32));
13128     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct32BitUnsignedAccelerated,
13129                    sizeof(VkBool32));
13130     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct32BitSignedAccelerated,
13131                    sizeof(VkBool32));
13132     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct32BitMixedSignednessAccelerated,
13133                    sizeof(VkBool32));
13134     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct64BitUnsignedAccelerated,
13135                    sizeof(VkBool32));
13136     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct64BitSignedAccelerated,
13137                    sizeof(VkBool32));
13138     vkStream->read((VkBool32*)&forUnmarshaling->integerDotProduct64BitMixedSignednessAccelerated,
13139                    sizeof(VkBool32));
13140     vkStream->read(
13141         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
13142         sizeof(VkBool32));
13143     vkStream->read(
13144         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitSignedAccelerated,
13145         sizeof(VkBool32));
13146     vkStream->read((VkBool32*)&forUnmarshaling
13147                        ->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
13148                    sizeof(VkBool32));
13149     vkStream->read((VkBool32*)&forUnmarshaling
13150                        ->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
13151                    sizeof(VkBool32));
13152     vkStream->read((VkBool32*)&forUnmarshaling
13153                        ->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
13154                    sizeof(VkBool32));
13155     vkStream->read(
13156         (VkBool32*)&forUnmarshaling
13157             ->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
13158         sizeof(VkBool32));
13159     vkStream->read((VkBool32*)&forUnmarshaling
13160                        ->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
13161                    sizeof(VkBool32));
13162     vkStream->read(
13163         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating16BitSignedAccelerated,
13164         sizeof(VkBool32));
13165     vkStream->read((VkBool32*)&forUnmarshaling
13166                        ->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
13167                    sizeof(VkBool32));
13168     vkStream->read((VkBool32*)&forUnmarshaling
13169                        ->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
13170                    sizeof(VkBool32));
13171     vkStream->read(
13172         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating32BitSignedAccelerated,
13173         sizeof(VkBool32));
13174     vkStream->read((VkBool32*)&forUnmarshaling
13175                        ->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
13176                    sizeof(VkBool32));
13177     vkStream->read((VkBool32*)&forUnmarshaling
13178                        ->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
13179                    sizeof(VkBool32));
13180     vkStream->read(
13181         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating64BitSignedAccelerated,
13182         sizeof(VkBool32));
13183     vkStream->read((VkBool32*)&forUnmarshaling
13184                        ->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
13185                    sizeof(VkBool32));
13186 }
13187 
marshal_VkPhysicalDeviceTexelBufferAlignmentProperties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTexelBufferAlignmentProperties * forMarshaling)13188 void marshal_VkPhysicalDeviceTexelBufferAlignmentProperties(
13189     VulkanStream* vkStream, VkStructureType rootType,
13190     const VkPhysicalDeviceTexelBufferAlignmentProperties* forMarshaling) {
13191     (void)rootType;
13192     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13193     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13194         rootType = forMarshaling->sType;
13195     }
13196     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13197     vkStream->write((VkDeviceSize*)&forMarshaling->storageTexelBufferOffsetAlignmentBytes,
13198                     sizeof(VkDeviceSize));
13199     vkStream->write((VkBool32*)&forMarshaling->storageTexelBufferOffsetSingleTexelAlignment,
13200                     sizeof(VkBool32));
13201     vkStream->write((VkDeviceSize*)&forMarshaling->uniformTexelBufferOffsetAlignmentBytes,
13202                     sizeof(VkDeviceSize));
13203     vkStream->write((VkBool32*)&forMarshaling->uniformTexelBufferOffsetSingleTexelAlignment,
13204                     sizeof(VkBool32));
13205 }
13206 
unmarshal_VkPhysicalDeviceTexelBufferAlignmentProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTexelBufferAlignmentProperties * forUnmarshaling)13207 void unmarshal_VkPhysicalDeviceTexelBufferAlignmentProperties(
13208     VulkanStream* vkStream, VkStructureType rootType,
13209     VkPhysicalDeviceTexelBufferAlignmentProperties* forUnmarshaling) {
13210     (void)rootType;
13211     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13212     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13213         rootType = forUnmarshaling->sType;
13214     }
13215     size_t pNext_size;
13216     pNext_size = vkStream->getBe32();
13217     forUnmarshaling->pNext = nullptr;
13218     if (pNext_size) {
13219         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13220         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13221         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13222         vkStream->alloc((void**)&forUnmarshaling->pNext,
13223                         goldfish_vk_extension_struct_size_with_stream_features(
13224                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13225         *(VkStructureType*)forUnmarshaling->pNext = extType;
13226         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13227     }
13228     vkStream->read((VkDeviceSize*)&forUnmarshaling->storageTexelBufferOffsetAlignmentBytes,
13229                    sizeof(VkDeviceSize));
13230     vkStream->read((VkBool32*)&forUnmarshaling->storageTexelBufferOffsetSingleTexelAlignment,
13231                    sizeof(VkBool32));
13232     vkStream->read((VkDeviceSize*)&forUnmarshaling->uniformTexelBufferOffsetAlignmentBytes,
13233                    sizeof(VkDeviceSize));
13234     vkStream->read((VkBool32*)&forUnmarshaling->uniformTexelBufferOffsetSingleTexelAlignment,
13235                    sizeof(VkBool32));
13236 }
13237 
marshal_VkFormatProperties3(VulkanStream * vkStream,VkStructureType rootType,const VkFormatProperties3 * forMarshaling)13238 void marshal_VkFormatProperties3(VulkanStream* vkStream, VkStructureType rootType,
13239                                  const VkFormatProperties3* forMarshaling) {
13240     (void)rootType;
13241     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13242     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13243         rootType = forMarshaling->sType;
13244     }
13245     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13246     vkStream->write((VkFormatFeatureFlags2*)&forMarshaling->linearTilingFeatures,
13247                     sizeof(VkFormatFeatureFlags2));
13248     vkStream->write((VkFormatFeatureFlags2*)&forMarshaling->optimalTilingFeatures,
13249                     sizeof(VkFormatFeatureFlags2));
13250     vkStream->write((VkFormatFeatureFlags2*)&forMarshaling->bufferFeatures,
13251                     sizeof(VkFormatFeatureFlags2));
13252 }
13253 
unmarshal_VkFormatProperties3(VulkanStream * vkStream,VkStructureType rootType,VkFormatProperties3 * forUnmarshaling)13254 void unmarshal_VkFormatProperties3(VulkanStream* vkStream, VkStructureType rootType,
13255                                    VkFormatProperties3* forUnmarshaling) {
13256     (void)rootType;
13257     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13258     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13259         rootType = forUnmarshaling->sType;
13260     }
13261     size_t pNext_size;
13262     pNext_size = vkStream->getBe32();
13263     forUnmarshaling->pNext = nullptr;
13264     if (pNext_size) {
13265         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13266         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13267         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13268         vkStream->alloc((void**)&forUnmarshaling->pNext,
13269                         goldfish_vk_extension_struct_size_with_stream_features(
13270                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13271         *(VkStructureType*)forUnmarshaling->pNext = extType;
13272         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13273     }
13274     vkStream->read((VkFormatFeatureFlags2*)&forUnmarshaling->linearTilingFeatures,
13275                    sizeof(VkFormatFeatureFlags2));
13276     vkStream->read((VkFormatFeatureFlags2*)&forUnmarshaling->optimalTilingFeatures,
13277                    sizeof(VkFormatFeatureFlags2));
13278     vkStream->read((VkFormatFeatureFlags2*)&forUnmarshaling->bufferFeatures,
13279                    sizeof(VkFormatFeatureFlags2));
13280 }
13281 
marshal_VkPhysicalDeviceMaintenance4Features(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMaintenance4Features * forMarshaling)13282 void marshal_VkPhysicalDeviceMaintenance4Features(
13283     VulkanStream* vkStream, VkStructureType rootType,
13284     const VkPhysicalDeviceMaintenance4Features* forMarshaling) {
13285     (void)rootType;
13286     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13287     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13288         rootType = forMarshaling->sType;
13289     }
13290     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13291     vkStream->write((VkBool32*)&forMarshaling->maintenance4, sizeof(VkBool32));
13292 }
13293 
unmarshal_VkPhysicalDeviceMaintenance4Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance4Features * forUnmarshaling)13294 void unmarshal_VkPhysicalDeviceMaintenance4Features(
13295     VulkanStream* vkStream, VkStructureType rootType,
13296     VkPhysicalDeviceMaintenance4Features* forUnmarshaling) {
13297     (void)rootType;
13298     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13299     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13300         rootType = forUnmarshaling->sType;
13301     }
13302     size_t pNext_size;
13303     pNext_size = vkStream->getBe32();
13304     forUnmarshaling->pNext = nullptr;
13305     if (pNext_size) {
13306         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13307         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13308         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13309         vkStream->alloc((void**)&forUnmarshaling->pNext,
13310                         goldfish_vk_extension_struct_size_with_stream_features(
13311                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13312         *(VkStructureType*)forUnmarshaling->pNext = extType;
13313         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13314     }
13315     vkStream->read((VkBool32*)&forUnmarshaling->maintenance4, sizeof(VkBool32));
13316 }
13317 
marshal_VkPhysicalDeviceMaintenance4Properties(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMaintenance4Properties * forMarshaling)13318 void marshal_VkPhysicalDeviceMaintenance4Properties(
13319     VulkanStream* vkStream, VkStructureType rootType,
13320     const VkPhysicalDeviceMaintenance4Properties* forMarshaling) {
13321     (void)rootType;
13322     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13323     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13324         rootType = forMarshaling->sType;
13325     }
13326     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13327     vkStream->write((VkDeviceSize*)&forMarshaling->maxBufferSize, sizeof(VkDeviceSize));
13328 }
13329 
unmarshal_VkPhysicalDeviceMaintenance4Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance4Properties * forUnmarshaling)13330 void unmarshal_VkPhysicalDeviceMaintenance4Properties(
13331     VulkanStream* vkStream, VkStructureType rootType,
13332     VkPhysicalDeviceMaintenance4Properties* forUnmarshaling) {
13333     (void)rootType;
13334     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13335     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13336         rootType = forUnmarshaling->sType;
13337     }
13338     size_t pNext_size;
13339     pNext_size = vkStream->getBe32();
13340     forUnmarshaling->pNext = nullptr;
13341     if (pNext_size) {
13342         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13343         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13344         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13345         vkStream->alloc((void**)&forUnmarshaling->pNext,
13346                         goldfish_vk_extension_struct_size_with_stream_features(
13347                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13348         *(VkStructureType*)forUnmarshaling->pNext = extType;
13349         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13350     }
13351     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxBufferSize, sizeof(VkDeviceSize));
13352 }
13353 
marshal_VkDeviceBufferMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceBufferMemoryRequirements * forMarshaling)13354 void marshal_VkDeviceBufferMemoryRequirements(
13355     VulkanStream* vkStream, VkStructureType rootType,
13356     const VkDeviceBufferMemoryRequirements* forMarshaling) {
13357     (void)rootType;
13358     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13359     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13360         rootType = forMarshaling->sType;
13361     }
13362     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13363     marshal_VkBufferCreateInfo(vkStream, rootType,
13364                                (const VkBufferCreateInfo*)(forMarshaling->pCreateInfo));
13365 }
13366 
unmarshal_VkDeviceBufferMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkDeviceBufferMemoryRequirements * forUnmarshaling)13367 void unmarshal_VkDeviceBufferMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
13368                                                 VkDeviceBufferMemoryRequirements* forUnmarshaling) {
13369     (void)rootType;
13370     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13371     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13372         rootType = forUnmarshaling->sType;
13373     }
13374     size_t pNext_size;
13375     pNext_size = vkStream->getBe32();
13376     forUnmarshaling->pNext = nullptr;
13377     if (pNext_size) {
13378         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13379         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13380         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13381         vkStream->alloc((void**)&forUnmarshaling->pNext,
13382                         goldfish_vk_extension_struct_size_with_stream_features(
13383                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13384         *(VkStructureType*)forUnmarshaling->pNext = extType;
13385         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13386     }
13387     vkStream->alloc((void**)&forUnmarshaling->pCreateInfo, sizeof(const VkBufferCreateInfo));
13388     unmarshal_VkBufferCreateInfo(vkStream, rootType,
13389                                  (VkBufferCreateInfo*)(forUnmarshaling->pCreateInfo));
13390 }
13391 
marshal_VkDeviceImageMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceImageMemoryRequirements * forMarshaling)13392 void marshal_VkDeviceImageMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
13393                                              const VkDeviceImageMemoryRequirements* forMarshaling) {
13394     (void)rootType;
13395     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13396     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13397         rootType = forMarshaling->sType;
13398     }
13399     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13400     marshal_VkImageCreateInfo(vkStream, rootType,
13401                               (const VkImageCreateInfo*)(forMarshaling->pCreateInfo));
13402     vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect,
13403                     sizeof(VkImageAspectFlagBits));
13404 }
13405 
unmarshal_VkDeviceImageMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkDeviceImageMemoryRequirements * forUnmarshaling)13406 void unmarshal_VkDeviceImageMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
13407                                                VkDeviceImageMemoryRequirements* forUnmarshaling) {
13408     (void)rootType;
13409     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13410     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13411         rootType = forUnmarshaling->sType;
13412     }
13413     size_t pNext_size;
13414     pNext_size = vkStream->getBe32();
13415     forUnmarshaling->pNext = nullptr;
13416     if (pNext_size) {
13417         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13418         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13419         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13420         vkStream->alloc((void**)&forUnmarshaling->pNext,
13421                         goldfish_vk_extension_struct_size_with_stream_features(
13422                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13423         *(VkStructureType*)forUnmarshaling->pNext = extType;
13424         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13425     }
13426     vkStream->alloc((void**)&forUnmarshaling->pCreateInfo, sizeof(const VkImageCreateInfo));
13427     unmarshal_VkImageCreateInfo(vkStream, rootType,
13428                                 (VkImageCreateInfo*)(forUnmarshaling->pCreateInfo));
13429     vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect,
13430                    sizeof(VkImageAspectFlagBits));
13431 }
13432 
13433 #endif
13434 #ifdef VK_KHR_swapchain
marshal_VkSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkSwapchainCreateInfoKHR * forMarshaling)13435 void marshal_VkSwapchainCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13436                                       const VkSwapchainCreateInfoKHR* forMarshaling) {
13437     (void)rootType;
13438     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13439     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13440         rootType = forMarshaling->sType;
13441     }
13442     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13443     vkStream->write((VkSwapchainCreateFlagsKHR*)&forMarshaling->flags,
13444                     sizeof(VkSwapchainCreateFlagsKHR));
13445     uint64_t cgen_var_0;
13446     vkStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&forMarshaling->surface, &cgen_var_0, 1);
13447     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
13448     vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
13449     vkStream->write((VkFormat*)&forMarshaling->imageFormat, sizeof(VkFormat));
13450     vkStream->write((VkColorSpaceKHR*)&forMarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
13451     marshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forMarshaling->imageExtent));
13452     vkStream->write((uint32_t*)&forMarshaling->imageArrayLayers, sizeof(uint32_t));
13453     vkStream->write((VkImageUsageFlags*)&forMarshaling->imageUsage, sizeof(VkImageUsageFlags));
13454     vkStream->write((VkSharingMode*)&forMarshaling->imageSharingMode, sizeof(VkSharingMode));
13455     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
13456     // WARNING PTR CHECK
13457     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
13458     vkStream->putBe64(cgen_var_1);
13459     if (forMarshaling->pQueueFamilyIndices) {
13460         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices,
13461                         forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
13462     }
13463     vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->preTransform,
13464                     sizeof(VkSurfaceTransformFlagBitsKHR));
13465     vkStream->write((VkCompositeAlphaFlagBitsKHR*)&forMarshaling->compositeAlpha,
13466                     sizeof(VkCompositeAlphaFlagBitsKHR));
13467     vkStream->write((VkPresentModeKHR*)&forMarshaling->presentMode, sizeof(VkPresentModeKHR));
13468     vkStream->write((VkBool32*)&forMarshaling->clipped, sizeof(VkBool32));
13469     uint64_t cgen_var_2;
13470     vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->oldSwapchain,
13471                                                              &cgen_var_2, 1);
13472     vkStream->write((uint64_t*)&cgen_var_2, 1 * 8);
13473 }
13474 
unmarshal_VkSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainCreateInfoKHR * forUnmarshaling)13475 void unmarshal_VkSwapchainCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13476                                         VkSwapchainCreateInfoKHR* forUnmarshaling) {
13477     (void)rootType;
13478     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13479     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13480         rootType = forUnmarshaling->sType;
13481     }
13482     size_t pNext_size;
13483     pNext_size = vkStream->getBe32();
13484     forUnmarshaling->pNext = nullptr;
13485     if (pNext_size) {
13486         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13487         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13488         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13489         vkStream->alloc((void**)&forUnmarshaling->pNext,
13490                         goldfish_vk_extension_struct_size_with_stream_features(
13491                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13492         *(VkStructureType*)forUnmarshaling->pNext = extType;
13493         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13494     }
13495     vkStream->read((VkSwapchainCreateFlagsKHR*)&forUnmarshaling->flags,
13496                    sizeof(VkSwapchainCreateFlagsKHR));
13497     uint64_t cgen_var_0;
13498     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
13499     vkStream->handleMapping()->mapHandles_u64_VkSurfaceKHR(
13500         &cgen_var_0, (VkSurfaceKHR*)&forUnmarshaling->surface, 1);
13501     vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
13502     vkStream->read((VkFormat*)&forUnmarshaling->imageFormat, sizeof(VkFormat));
13503     vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
13504     unmarshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->imageExtent));
13505     vkStream->read((uint32_t*)&forUnmarshaling->imageArrayLayers, sizeof(uint32_t));
13506     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->imageUsage, sizeof(VkImageUsageFlags));
13507     vkStream->read((VkSharingMode*)&forUnmarshaling->imageSharingMode, sizeof(VkSharingMode));
13508     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
13509     // WARNING PTR CHECK
13510     forUnmarshaling->pQueueFamilyIndices = (const uint32_t*)(uintptr_t)vkStream->getBe64();
13511     if (forUnmarshaling->pQueueFamilyIndices) {
13512         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
13513                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
13514         vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices,
13515                        forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
13516     }
13517     vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->preTransform,
13518                    sizeof(VkSurfaceTransformFlagBitsKHR));
13519     vkStream->read((VkCompositeAlphaFlagBitsKHR*)&forUnmarshaling->compositeAlpha,
13520                    sizeof(VkCompositeAlphaFlagBitsKHR));
13521     vkStream->read((VkPresentModeKHR*)&forUnmarshaling->presentMode, sizeof(VkPresentModeKHR));
13522     vkStream->read((VkBool32*)&forUnmarshaling->clipped, sizeof(VkBool32));
13523     uint64_t cgen_var_2;
13524     vkStream->read((uint64_t*)&cgen_var_2, 1 * 8);
13525     vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(
13526         &cgen_var_2, (VkSwapchainKHR*)&forUnmarshaling->oldSwapchain, 1);
13527 }
13528 
marshal_VkPresentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPresentInfoKHR * forMarshaling)13529 void marshal_VkPresentInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13530                               const VkPresentInfoKHR* forMarshaling) {
13531     (void)rootType;
13532     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13533     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13534         rootType = forMarshaling->sType;
13535     }
13536     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13537     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
13538     if (forMarshaling->waitSemaphoreCount) {
13539         uint64_t* cgen_var_0;
13540         vkStream->alloc((void**)&cgen_var_0, forMarshaling->waitSemaphoreCount * 8);
13541         vkStream->handleMapping()->mapHandles_VkSemaphore_u64(
13542             forMarshaling->pWaitSemaphores, cgen_var_0, forMarshaling->waitSemaphoreCount);
13543         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->waitSemaphoreCount * 8);
13544     }
13545     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
13546     if (forMarshaling->swapchainCount) {
13547         uint64_t* cgen_var_1;
13548         vkStream->alloc((void**)&cgen_var_1, forMarshaling->swapchainCount * 8);
13549         vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(
13550             forMarshaling->pSwapchains, cgen_var_1, forMarshaling->swapchainCount);
13551         vkStream->write((uint64_t*)cgen_var_1, forMarshaling->swapchainCount * 8);
13552     }
13553     vkStream->write((const uint32_t*)forMarshaling->pImageIndices,
13554                     forMarshaling->swapchainCount * sizeof(const uint32_t));
13555     // WARNING PTR CHECK
13556     uint64_t cgen_var_2 = (uint64_t)(uintptr_t)forMarshaling->pResults;
13557     vkStream->putBe64(cgen_var_2);
13558     if (forMarshaling->pResults) {
13559         vkStream->write((VkResult*)forMarshaling->pResults,
13560                         forMarshaling->swapchainCount * sizeof(VkResult));
13561     }
13562 }
13563 
unmarshal_VkPresentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPresentInfoKHR * forUnmarshaling)13564 void unmarshal_VkPresentInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13565                                 VkPresentInfoKHR* forUnmarshaling) {
13566     (void)rootType;
13567     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13568     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13569         rootType = forUnmarshaling->sType;
13570     }
13571     size_t pNext_size;
13572     pNext_size = vkStream->getBe32();
13573     forUnmarshaling->pNext = nullptr;
13574     if (pNext_size) {
13575         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13576         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13577         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13578         vkStream->alloc((void**)&forUnmarshaling->pNext,
13579                         goldfish_vk_extension_struct_size_with_stream_features(
13580                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13581         *(VkStructureType*)forUnmarshaling->pNext = extType;
13582         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13583     }
13584     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
13585     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores,
13586                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
13587     if (forUnmarshaling->waitSemaphoreCount) {
13588         uint64_t* cgen_var_0;
13589         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->waitSemaphoreCount * 8);
13590         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->waitSemaphoreCount * 8);
13591         vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
13592             cgen_var_0, (VkSemaphore*)forUnmarshaling->pWaitSemaphores,
13593             forUnmarshaling->waitSemaphoreCount);
13594     }
13595     vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
13596     vkStream->alloc((void**)&forUnmarshaling->pSwapchains,
13597                     forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
13598     if (forUnmarshaling->swapchainCount) {
13599         uint64_t* cgen_var_1;
13600         vkStream->alloc((void**)&cgen_var_1, forUnmarshaling->swapchainCount * 8);
13601         vkStream->read((uint64_t*)cgen_var_1, forUnmarshaling->swapchainCount * 8);
13602         vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(
13603             cgen_var_1, (VkSwapchainKHR*)forUnmarshaling->pSwapchains,
13604             forUnmarshaling->swapchainCount);
13605     }
13606     vkStream->alloc((void**)&forUnmarshaling->pImageIndices,
13607                     forUnmarshaling->swapchainCount * sizeof(const uint32_t));
13608     vkStream->read((uint32_t*)forUnmarshaling->pImageIndices,
13609                    forUnmarshaling->swapchainCount * sizeof(const uint32_t));
13610     // WARNING PTR CHECK
13611     forUnmarshaling->pResults = (VkResult*)(uintptr_t)vkStream->getBe64();
13612     if (forUnmarshaling->pResults) {
13613         vkStream->alloc((void**)&forUnmarshaling->pResults,
13614                         forUnmarshaling->swapchainCount * sizeof(VkResult));
13615         vkStream->read((VkResult*)forUnmarshaling->pResults,
13616                        forUnmarshaling->swapchainCount * sizeof(VkResult));
13617     }
13618 }
13619 
marshal_VkImageSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkImageSwapchainCreateInfoKHR * forMarshaling)13620 void marshal_VkImageSwapchainCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13621                                            const VkImageSwapchainCreateInfoKHR* forMarshaling) {
13622     (void)rootType;
13623     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13624     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13625         rootType = forMarshaling->sType;
13626     }
13627     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13628     uint64_t cgen_var_0;
13629     vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_0,
13630                                                              1);
13631     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
13632 }
13633 
unmarshal_VkImageSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkImageSwapchainCreateInfoKHR * forUnmarshaling)13634 void unmarshal_VkImageSwapchainCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13635                                              VkImageSwapchainCreateInfoKHR* forUnmarshaling) {
13636     (void)rootType;
13637     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13638     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13639         rootType = forUnmarshaling->sType;
13640     }
13641     size_t pNext_size;
13642     pNext_size = vkStream->getBe32();
13643     forUnmarshaling->pNext = nullptr;
13644     if (pNext_size) {
13645         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13646         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13647         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13648         vkStream->alloc((void**)&forUnmarshaling->pNext,
13649                         goldfish_vk_extension_struct_size_with_stream_features(
13650                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13651         *(VkStructureType*)forUnmarshaling->pNext = extType;
13652         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13653     }
13654     uint64_t cgen_var_0;
13655     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
13656     vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(
13657         &cgen_var_0, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
13658 }
13659 
marshal_VkBindImageMemorySwapchainInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkBindImageMemorySwapchainInfoKHR * forMarshaling)13660 void marshal_VkBindImageMemorySwapchainInfoKHR(
13661     VulkanStream* vkStream, VkStructureType rootType,
13662     const VkBindImageMemorySwapchainInfoKHR* forMarshaling) {
13663     (void)rootType;
13664     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13665     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13666         rootType = forMarshaling->sType;
13667     }
13668     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13669     uint64_t cgen_var_0;
13670     vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_0,
13671                                                              1);
13672     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
13673     vkStream->write((uint32_t*)&forMarshaling->imageIndex, sizeof(uint32_t));
13674 }
13675 
unmarshal_VkBindImageMemorySwapchainInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkBindImageMemorySwapchainInfoKHR * forUnmarshaling)13676 void unmarshal_VkBindImageMemorySwapchainInfoKHR(
13677     VulkanStream* vkStream, VkStructureType rootType,
13678     VkBindImageMemorySwapchainInfoKHR* forUnmarshaling) {
13679     (void)rootType;
13680     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13681     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13682         rootType = forUnmarshaling->sType;
13683     }
13684     size_t pNext_size;
13685     pNext_size = vkStream->getBe32();
13686     forUnmarshaling->pNext = nullptr;
13687     if (pNext_size) {
13688         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13689         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13690         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13691         vkStream->alloc((void**)&forUnmarshaling->pNext,
13692                         goldfish_vk_extension_struct_size_with_stream_features(
13693                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13694         *(VkStructureType*)forUnmarshaling->pNext = extType;
13695         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13696     }
13697     uint64_t cgen_var_0;
13698     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
13699     vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(
13700         &cgen_var_0, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
13701     vkStream->read((uint32_t*)&forUnmarshaling->imageIndex, sizeof(uint32_t));
13702 }
13703 
marshal_VkAcquireNextImageInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkAcquireNextImageInfoKHR * forMarshaling)13704 void marshal_VkAcquireNextImageInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13705                                        const VkAcquireNextImageInfoKHR* forMarshaling) {
13706     (void)rootType;
13707     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13708     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13709         rootType = forMarshaling->sType;
13710     }
13711     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13712     uint64_t cgen_var_0;
13713     vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_0,
13714                                                              1);
13715     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
13716     vkStream->write((uint64_t*)&forMarshaling->timeout, sizeof(uint64_t));
13717     uint64_t cgen_var_1;
13718     vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_1,
13719                                                           1);
13720     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
13721     uint64_t cgen_var_2;
13722     vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_2, 1);
13723     vkStream->write((uint64_t*)&cgen_var_2, 1 * 8);
13724     vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
13725 }
13726 
unmarshal_VkAcquireNextImageInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkAcquireNextImageInfoKHR * forUnmarshaling)13727 void unmarshal_VkAcquireNextImageInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13728                                          VkAcquireNextImageInfoKHR* forUnmarshaling) {
13729     (void)rootType;
13730     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13731     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13732         rootType = forUnmarshaling->sType;
13733     }
13734     size_t pNext_size;
13735     pNext_size = vkStream->getBe32();
13736     forUnmarshaling->pNext = nullptr;
13737     if (pNext_size) {
13738         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13739         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13740         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13741         vkStream->alloc((void**)&forUnmarshaling->pNext,
13742                         goldfish_vk_extension_struct_size_with_stream_features(
13743                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13744         *(VkStructureType*)forUnmarshaling->pNext = extType;
13745         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13746     }
13747     uint64_t cgen_var_0;
13748     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
13749     vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(
13750         &cgen_var_0, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
13751     vkStream->read((uint64_t*)&forUnmarshaling->timeout, sizeof(uint64_t));
13752     uint64_t cgen_var_1;
13753     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
13754     vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
13755         &cgen_var_1, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
13756     uint64_t cgen_var_2;
13757     vkStream->read((uint64_t*)&cgen_var_2, 1 * 8);
13758     vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_2,
13759                                                       (VkFence*)&forUnmarshaling->fence, 1);
13760     vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
13761 }
13762 
marshal_VkDeviceGroupPresentCapabilitiesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupPresentCapabilitiesKHR * forMarshaling)13763 void marshal_VkDeviceGroupPresentCapabilitiesKHR(
13764     VulkanStream* vkStream, VkStructureType rootType,
13765     const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling) {
13766     (void)rootType;
13767     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13768     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13769         rootType = forMarshaling->sType;
13770     }
13771     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13772     vkStream->write((uint32_t*)forMarshaling->presentMask,
13773                     VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
13774     vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes,
13775                     sizeof(VkDeviceGroupPresentModeFlagsKHR));
13776 }
13777 
unmarshal_VkDeviceGroupPresentCapabilitiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupPresentCapabilitiesKHR * forUnmarshaling)13778 void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
13779     VulkanStream* vkStream, VkStructureType rootType,
13780     VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling) {
13781     (void)rootType;
13782     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13783     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13784         rootType = forUnmarshaling->sType;
13785     }
13786     size_t pNext_size;
13787     pNext_size = vkStream->getBe32();
13788     forUnmarshaling->pNext = nullptr;
13789     if (pNext_size) {
13790         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13791         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13792         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13793         vkStream->alloc((void**)&forUnmarshaling->pNext,
13794                         goldfish_vk_extension_struct_size_with_stream_features(
13795                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13796         *(VkStructureType*)forUnmarshaling->pNext = extType;
13797         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13798     }
13799     vkStream->read((uint32_t*)forUnmarshaling->presentMask,
13800                    VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
13801     vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes,
13802                    sizeof(VkDeviceGroupPresentModeFlagsKHR));
13803 }
13804 
marshal_VkDeviceGroupPresentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupPresentInfoKHR * forMarshaling)13805 void marshal_VkDeviceGroupPresentInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13806                                          const VkDeviceGroupPresentInfoKHR* forMarshaling) {
13807     (void)rootType;
13808     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13809     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13810         rootType = forMarshaling->sType;
13811     }
13812     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13813     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
13814     vkStream->write((const uint32_t*)forMarshaling->pDeviceMasks,
13815                     forMarshaling->swapchainCount * sizeof(const uint32_t));
13816     vkStream->write((VkDeviceGroupPresentModeFlagBitsKHR*)&forMarshaling->mode,
13817                     sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
13818 }
13819 
unmarshal_VkDeviceGroupPresentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupPresentInfoKHR * forUnmarshaling)13820 void unmarshal_VkDeviceGroupPresentInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
13821                                            VkDeviceGroupPresentInfoKHR* forUnmarshaling) {
13822     (void)rootType;
13823     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13824     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13825         rootType = forUnmarshaling->sType;
13826     }
13827     size_t pNext_size;
13828     pNext_size = vkStream->getBe32();
13829     forUnmarshaling->pNext = nullptr;
13830     if (pNext_size) {
13831         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13832         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13833         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13834         vkStream->alloc((void**)&forUnmarshaling->pNext,
13835                         goldfish_vk_extension_struct_size_with_stream_features(
13836                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13837         *(VkStructureType*)forUnmarshaling->pNext = extType;
13838         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13839     }
13840     vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
13841     vkStream->alloc((void**)&forUnmarshaling->pDeviceMasks,
13842                     forUnmarshaling->swapchainCount * sizeof(const uint32_t));
13843     vkStream->read((uint32_t*)forUnmarshaling->pDeviceMasks,
13844                    forUnmarshaling->swapchainCount * sizeof(const uint32_t));
13845     vkStream->read((VkDeviceGroupPresentModeFlagBitsKHR*)&forUnmarshaling->mode,
13846                    sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
13847 }
13848 
marshal_VkDeviceGroupSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceGroupSwapchainCreateInfoKHR * forMarshaling)13849 void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
13850     VulkanStream* vkStream, VkStructureType rootType,
13851     const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling) {
13852     (void)rootType;
13853     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13854     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13855         rootType = forMarshaling->sType;
13856     }
13857     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13858     vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes,
13859                     sizeof(VkDeviceGroupPresentModeFlagsKHR));
13860 }
13861 
unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupSwapchainCreateInfoKHR * forUnmarshaling)13862 void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
13863     VulkanStream* vkStream, VkStructureType rootType,
13864     VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling) {
13865     (void)rootType;
13866     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13867     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13868         rootType = forUnmarshaling->sType;
13869     }
13870     size_t pNext_size;
13871     pNext_size = vkStream->getBe32();
13872     forUnmarshaling->pNext = nullptr;
13873     if (pNext_size) {
13874         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13875         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13876         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13877         vkStream->alloc((void**)&forUnmarshaling->pNext,
13878                         goldfish_vk_extension_struct_size_with_stream_features(
13879                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13880         *(VkStructureType*)forUnmarshaling->pNext = extType;
13881         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13882     }
13883     vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes,
13884                    sizeof(VkDeviceGroupPresentModeFlagsKHR));
13885 }
13886 
13887 #endif
13888 #ifdef VK_KHR_dynamic_rendering
marshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkRenderingFragmentShadingRateAttachmentInfoKHR * forMarshaling)13889 void marshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
13890     VulkanStream* vkStream, VkStructureType rootType,
13891     const VkRenderingFragmentShadingRateAttachmentInfoKHR* forMarshaling) {
13892     (void)rootType;
13893     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13894     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13895         rootType = forMarshaling->sType;
13896     }
13897     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13898     uint64_t cgen_var_0;
13899     vkStream->handleMapping()->mapHandles_VkImageView_u64(&forMarshaling->imageView, &cgen_var_0,
13900                                                           1);
13901     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
13902     vkStream->write((VkImageLayout*)&forMarshaling->imageLayout, sizeof(VkImageLayout));
13903     marshal_VkExtent2D(vkStream, rootType,
13904                        (VkExtent2D*)(&forMarshaling->shadingRateAttachmentTexelSize));
13905 }
13906 
unmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRenderingFragmentShadingRateAttachmentInfoKHR * forUnmarshaling)13907 void unmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
13908     VulkanStream* vkStream, VkStructureType rootType,
13909     VkRenderingFragmentShadingRateAttachmentInfoKHR* forUnmarshaling) {
13910     (void)rootType;
13911     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13912     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13913         rootType = forUnmarshaling->sType;
13914     }
13915     size_t pNext_size;
13916     pNext_size = vkStream->getBe32();
13917     forUnmarshaling->pNext = nullptr;
13918     if (pNext_size) {
13919         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13920         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13921         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13922         vkStream->alloc((void**)&forUnmarshaling->pNext,
13923                         goldfish_vk_extension_struct_size_with_stream_features(
13924                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13925         *(VkStructureType*)forUnmarshaling->pNext = extType;
13926         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13927     }
13928     uint64_t cgen_var_0;
13929     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
13930     vkStream->handleMapping()->mapHandles_u64_VkImageView(
13931         &cgen_var_0, (VkImageView*)&forUnmarshaling->imageView, 1);
13932     vkStream->read((VkImageLayout*)&forUnmarshaling->imageLayout, sizeof(VkImageLayout));
13933     unmarshal_VkExtent2D(vkStream, rootType,
13934                          (VkExtent2D*)(&forUnmarshaling->shadingRateAttachmentTexelSize));
13935 }
13936 
marshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkRenderingFragmentDensityMapAttachmentInfoEXT * forMarshaling)13937 void marshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
13938     VulkanStream* vkStream, VkStructureType rootType,
13939     const VkRenderingFragmentDensityMapAttachmentInfoEXT* forMarshaling) {
13940     (void)rootType;
13941     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13942     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13943         rootType = forMarshaling->sType;
13944     }
13945     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13946     uint64_t cgen_var_0;
13947     vkStream->handleMapping()->mapHandles_VkImageView_u64(&forMarshaling->imageView, &cgen_var_0,
13948                                                           1);
13949     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
13950     vkStream->write((VkImageLayout*)&forMarshaling->imageLayout, sizeof(VkImageLayout));
13951 }
13952 
unmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkRenderingFragmentDensityMapAttachmentInfoEXT * forUnmarshaling)13953 void unmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
13954     VulkanStream* vkStream, VkStructureType rootType,
13955     VkRenderingFragmentDensityMapAttachmentInfoEXT* forUnmarshaling) {
13956     (void)rootType;
13957     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
13958     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13959         rootType = forUnmarshaling->sType;
13960     }
13961     size_t pNext_size;
13962     pNext_size = vkStream->getBe32();
13963     forUnmarshaling->pNext = nullptr;
13964     if (pNext_size) {
13965         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13966         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
13967         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13968         vkStream->alloc((void**)&forUnmarshaling->pNext,
13969                         goldfish_vk_extension_struct_size_with_stream_features(
13970                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13971         *(VkStructureType*)forUnmarshaling->pNext = extType;
13972         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
13973     }
13974     uint64_t cgen_var_0;
13975     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
13976     vkStream->handleMapping()->mapHandles_u64_VkImageView(
13977         &cgen_var_0, (VkImageView*)&forUnmarshaling->imageView, 1);
13978     vkStream->read((VkImageLayout*)&forUnmarshaling->imageLayout, sizeof(VkImageLayout));
13979 }
13980 
marshal_VkAttachmentSampleCountInfoAMD(VulkanStream * vkStream,VkStructureType rootType,const VkAttachmentSampleCountInfoAMD * forMarshaling)13981 void marshal_VkAttachmentSampleCountInfoAMD(VulkanStream* vkStream, VkStructureType rootType,
13982                                             const VkAttachmentSampleCountInfoAMD* forMarshaling) {
13983     (void)rootType;
13984     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
13985     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13986         rootType = forMarshaling->sType;
13987     }
13988     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
13989     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
13990     // WARNING PTR CHECK
13991     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pColorAttachmentSamples;
13992     vkStream->putBe64(cgen_var_0);
13993     if (forMarshaling->pColorAttachmentSamples) {
13994         vkStream->write((const VkSampleCountFlagBits*)forMarshaling->pColorAttachmentSamples,
13995                         forMarshaling->colorAttachmentCount * sizeof(const VkSampleCountFlagBits));
13996     }
13997     vkStream->write((VkSampleCountFlagBits*)&forMarshaling->depthStencilAttachmentSamples,
13998                     sizeof(VkSampleCountFlagBits));
13999 }
14000 
unmarshal_VkAttachmentSampleCountInfoAMD(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentSampleCountInfoAMD * forUnmarshaling)14001 void unmarshal_VkAttachmentSampleCountInfoAMD(VulkanStream* vkStream, VkStructureType rootType,
14002                                               VkAttachmentSampleCountInfoAMD* forUnmarshaling) {
14003     (void)rootType;
14004     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14005     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14006         rootType = forUnmarshaling->sType;
14007     }
14008     size_t pNext_size;
14009     pNext_size = vkStream->getBe32();
14010     forUnmarshaling->pNext = nullptr;
14011     if (pNext_size) {
14012         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14013         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14014         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14015         vkStream->alloc((void**)&forUnmarshaling->pNext,
14016                         goldfish_vk_extension_struct_size_with_stream_features(
14017                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14018         *(VkStructureType*)forUnmarshaling->pNext = extType;
14019         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14020     }
14021     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
14022     // WARNING PTR CHECK
14023     forUnmarshaling->pColorAttachmentSamples =
14024         (const VkSampleCountFlagBits*)(uintptr_t)vkStream->getBe64();
14025     if (forUnmarshaling->pColorAttachmentSamples) {
14026         vkStream->alloc(
14027             (void**)&forUnmarshaling->pColorAttachmentSamples,
14028             forUnmarshaling->colorAttachmentCount * sizeof(const VkSampleCountFlagBits));
14029         vkStream->read((VkSampleCountFlagBits*)forUnmarshaling->pColorAttachmentSamples,
14030                        forUnmarshaling->colorAttachmentCount * sizeof(const VkSampleCountFlagBits));
14031     }
14032     vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->depthStencilAttachmentSamples,
14033                    sizeof(VkSampleCountFlagBits));
14034 }
14035 
marshal_VkMultiviewPerViewAttributesInfoNVX(VulkanStream * vkStream,VkStructureType rootType,const VkMultiviewPerViewAttributesInfoNVX * forMarshaling)14036 void marshal_VkMultiviewPerViewAttributesInfoNVX(
14037     VulkanStream* vkStream, VkStructureType rootType,
14038     const VkMultiviewPerViewAttributesInfoNVX* forMarshaling) {
14039     (void)rootType;
14040     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14041     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14042         rootType = forMarshaling->sType;
14043     }
14044     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14045     vkStream->write((VkBool32*)&forMarshaling->perViewAttributes, sizeof(VkBool32));
14046     vkStream->write((VkBool32*)&forMarshaling->perViewAttributesPositionXOnly, sizeof(VkBool32));
14047 }
14048 
unmarshal_VkMultiviewPerViewAttributesInfoNVX(VulkanStream * vkStream,VkStructureType rootType,VkMultiviewPerViewAttributesInfoNVX * forUnmarshaling)14049 void unmarshal_VkMultiviewPerViewAttributesInfoNVX(
14050     VulkanStream* vkStream, VkStructureType rootType,
14051     VkMultiviewPerViewAttributesInfoNVX* forUnmarshaling) {
14052     (void)rootType;
14053     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14054     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14055         rootType = forUnmarshaling->sType;
14056     }
14057     size_t pNext_size;
14058     pNext_size = vkStream->getBe32();
14059     forUnmarshaling->pNext = nullptr;
14060     if (pNext_size) {
14061         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14062         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14063         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14064         vkStream->alloc((void**)&forUnmarshaling->pNext,
14065                         goldfish_vk_extension_struct_size_with_stream_features(
14066                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14067         *(VkStructureType*)forUnmarshaling->pNext = extType;
14068         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14069     }
14070     vkStream->read((VkBool32*)&forUnmarshaling->perViewAttributes, sizeof(VkBool32));
14071     vkStream->read((VkBool32*)&forUnmarshaling->perViewAttributesPositionXOnly, sizeof(VkBool32));
14072 }
14073 
14074 #endif
14075 #ifdef VK_KHR_external_semaphore_fd
marshal_VkImportSemaphoreFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkImportSemaphoreFdInfoKHR * forMarshaling)14076 void marshal_VkImportSemaphoreFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14077                                         const VkImportSemaphoreFdInfoKHR* forMarshaling) {
14078     (void)rootType;
14079     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14080     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14081         rootType = forMarshaling->sType;
14082     }
14083     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14084     uint64_t cgen_var_0;
14085     vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_0,
14086                                                           1);
14087     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
14088     vkStream->write((VkSemaphoreImportFlags*)&forMarshaling->flags, sizeof(VkSemaphoreImportFlags));
14089     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType,
14090                     sizeof(VkExternalSemaphoreHandleTypeFlagBits));
14091     vkStream->write((int*)&forMarshaling->fd, sizeof(int));
14092 }
14093 
unmarshal_VkImportSemaphoreFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkImportSemaphoreFdInfoKHR * forUnmarshaling)14094 void unmarshal_VkImportSemaphoreFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14095                                           VkImportSemaphoreFdInfoKHR* forUnmarshaling) {
14096     (void)rootType;
14097     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14098     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14099         rootType = forUnmarshaling->sType;
14100     }
14101     size_t pNext_size;
14102     pNext_size = vkStream->getBe32();
14103     forUnmarshaling->pNext = nullptr;
14104     if (pNext_size) {
14105         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14106         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14107         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14108         vkStream->alloc((void**)&forUnmarshaling->pNext,
14109                         goldfish_vk_extension_struct_size_with_stream_features(
14110                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14111         *(VkStructureType*)forUnmarshaling->pNext = extType;
14112         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14113     }
14114     uint64_t cgen_var_0;
14115     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
14116     vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
14117         &cgen_var_0, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
14118     vkStream->read((VkSemaphoreImportFlags*)&forUnmarshaling->flags,
14119                    sizeof(VkSemaphoreImportFlags));
14120     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType,
14121                    sizeof(VkExternalSemaphoreHandleTypeFlagBits));
14122     vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
14123 }
14124 
marshal_VkSemaphoreGetFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkSemaphoreGetFdInfoKHR * forMarshaling)14125 void marshal_VkSemaphoreGetFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14126                                      const VkSemaphoreGetFdInfoKHR* forMarshaling) {
14127     (void)rootType;
14128     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14129     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14130         rootType = forMarshaling->sType;
14131     }
14132     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14133     uint64_t cgen_var_0;
14134     vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_0,
14135                                                           1);
14136     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
14137     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType,
14138                     sizeof(VkExternalSemaphoreHandleTypeFlagBits));
14139 }
14140 
unmarshal_VkSemaphoreGetFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreGetFdInfoKHR * forUnmarshaling)14141 void unmarshal_VkSemaphoreGetFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14142                                        VkSemaphoreGetFdInfoKHR* forUnmarshaling) {
14143     (void)rootType;
14144     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14145     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14146         rootType = forUnmarshaling->sType;
14147     }
14148     size_t pNext_size;
14149     pNext_size = vkStream->getBe32();
14150     forUnmarshaling->pNext = nullptr;
14151     if (pNext_size) {
14152         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14153         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14154         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14155         vkStream->alloc((void**)&forUnmarshaling->pNext,
14156                         goldfish_vk_extension_struct_size_with_stream_features(
14157                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14158         *(VkStructureType*)forUnmarshaling->pNext = extType;
14159         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14160     }
14161     uint64_t cgen_var_0;
14162     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
14163     vkStream->handleMapping()->mapHandles_u64_VkSemaphore(
14164         &cgen_var_0, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
14165     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType,
14166                    sizeof(VkExternalSemaphoreHandleTypeFlagBits));
14167 }
14168 
14169 #endif
14170 #ifdef VK_KHR_incremental_present
marshal_VkRectLayerKHR(VulkanStream * vkStream,VkStructureType rootType,const VkRectLayerKHR * forMarshaling)14171 void marshal_VkRectLayerKHR(VulkanStream* vkStream, VkStructureType rootType,
14172                             const VkRectLayerKHR* forMarshaling) {
14173     (void)rootType;
14174     marshal_VkOffset2D(vkStream, rootType, (VkOffset2D*)(&forMarshaling->offset));
14175     marshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forMarshaling->extent));
14176     vkStream->write((uint32_t*)&forMarshaling->layer, sizeof(uint32_t));
14177 }
14178 
unmarshal_VkRectLayerKHR(VulkanStream * vkStream,VkStructureType rootType,VkRectLayerKHR * forUnmarshaling)14179 void unmarshal_VkRectLayerKHR(VulkanStream* vkStream, VkStructureType rootType,
14180                               VkRectLayerKHR* forUnmarshaling) {
14181     (void)rootType;
14182     unmarshal_VkOffset2D(vkStream, rootType, (VkOffset2D*)(&forUnmarshaling->offset));
14183     unmarshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->extent));
14184     vkStream->read((uint32_t*)&forUnmarshaling->layer, sizeof(uint32_t));
14185 }
14186 
marshal_VkPresentRegionKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPresentRegionKHR * forMarshaling)14187 void marshal_VkPresentRegionKHR(VulkanStream* vkStream, VkStructureType rootType,
14188                                 const VkPresentRegionKHR* forMarshaling) {
14189     (void)rootType;
14190     vkStream->write((uint32_t*)&forMarshaling->rectangleCount, sizeof(uint32_t));
14191     // WARNING PTR CHECK
14192     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pRectangles;
14193     vkStream->putBe64(cgen_var_0);
14194     if (forMarshaling->pRectangles) {
14195         if (forMarshaling) {
14196             for (uint32_t i = 0; i < (uint32_t)forMarshaling->rectangleCount; ++i) {
14197                 marshal_VkRectLayerKHR(vkStream, rootType,
14198                                        (const VkRectLayerKHR*)(forMarshaling->pRectangles + i));
14199             }
14200         }
14201     }
14202 }
14203 
unmarshal_VkPresentRegionKHR(VulkanStream * vkStream,VkStructureType rootType,VkPresentRegionKHR * forUnmarshaling)14204 void unmarshal_VkPresentRegionKHR(VulkanStream* vkStream, VkStructureType rootType,
14205                                   VkPresentRegionKHR* forUnmarshaling) {
14206     (void)rootType;
14207     vkStream->read((uint32_t*)&forUnmarshaling->rectangleCount, sizeof(uint32_t));
14208     // WARNING PTR CHECK
14209     forUnmarshaling->pRectangles = (const VkRectLayerKHR*)(uintptr_t)vkStream->getBe64();
14210     if (forUnmarshaling->pRectangles) {
14211         vkStream->alloc((void**)&forUnmarshaling->pRectangles,
14212                         forUnmarshaling->rectangleCount * sizeof(const VkRectLayerKHR));
14213         if (forUnmarshaling) {
14214             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->rectangleCount; ++i) {
14215                 unmarshal_VkRectLayerKHR(vkStream, rootType,
14216                                          (VkRectLayerKHR*)(forUnmarshaling->pRectangles + i));
14217             }
14218         }
14219     }
14220 }
14221 
marshal_VkPresentRegionsKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPresentRegionsKHR * forMarshaling)14222 void marshal_VkPresentRegionsKHR(VulkanStream* vkStream, VkStructureType rootType,
14223                                  const VkPresentRegionsKHR* forMarshaling) {
14224     (void)rootType;
14225     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14226     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14227         rootType = forMarshaling->sType;
14228     }
14229     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14230     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
14231     // WARNING PTR CHECK
14232     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pRegions;
14233     vkStream->putBe64(cgen_var_0);
14234     if (forMarshaling->pRegions) {
14235         if (forMarshaling) {
14236             for (uint32_t i = 0; i < (uint32_t)forMarshaling->swapchainCount; ++i) {
14237                 marshal_VkPresentRegionKHR(
14238                     vkStream, rootType, (const VkPresentRegionKHR*)(forMarshaling->pRegions + i));
14239             }
14240         }
14241     }
14242 }
14243 
unmarshal_VkPresentRegionsKHR(VulkanStream * vkStream,VkStructureType rootType,VkPresentRegionsKHR * forUnmarshaling)14244 void unmarshal_VkPresentRegionsKHR(VulkanStream* vkStream, VkStructureType rootType,
14245                                    VkPresentRegionsKHR* forUnmarshaling) {
14246     (void)rootType;
14247     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14248     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14249         rootType = forUnmarshaling->sType;
14250     }
14251     size_t pNext_size;
14252     pNext_size = vkStream->getBe32();
14253     forUnmarshaling->pNext = nullptr;
14254     if (pNext_size) {
14255         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14256         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14257         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14258         vkStream->alloc((void**)&forUnmarshaling->pNext,
14259                         goldfish_vk_extension_struct_size_with_stream_features(
14260                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14261         *(VkStructureType*)forUnmarshaling->pNext = extType;
14262         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14263     }
14264     vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
14265     // WARNING PTR CHECK
14266     forUnmarshaling->pRegions = (const VkPresentRegionKHR*)(uintptr_t)vkStream->getBe64();
14267     if (forUnmarshaling->pRegions) {
14268         vkStream->alloc((void**)&forUnmarshaling->pRegions,
14269                         forUnmarshaling->swapchainCount * sizeof(const VkPresentRegionKHR));
14270         if (forUnmarshaling) {
14271             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->swapchainCount; ++i) {
14272                 unmarshal_VkPresentRegionKHR(vkStream, rootType,
14273                                              (VkPresentRegionKHR*)(forUnmarshaling->pRegions + i));
14274             }
14275         }
14276     }
14277 }
14278 
14279 #endif
14280 #ifdef VK_KHR_external_fence_fd
marshal_VkImportFenceFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkImportFenceFdInfoKHR * forMarshaling)14281 void marshal_VkImportFenceFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14282                                     const VkImportFenceFdInfoKHR* forMarshaling) {
14283     (void)rootType;
14284     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14285     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14286         rootType = forMarshaling->sType;
14287     }
14288     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14289     uint64_t cgen_var_0;
14290     vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_0, 1);
14291     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
14292     vkStream->write((VkFenceImportFlags*)&forMarshaling->flags, sizeof(VkFenceImportFlags));
14293     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType,
14294                     sizeof(VkExternalFenceHandleTypeFlagBits));
14295     vkStream->write((int*)&forMarshaling->fd, sizeof(int));
14296 }
14297 
unmarshal_VkImportFenceFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkImportFenceFdInfoKHR * forUnmarshaling)14298 void unmarshal_VkImportFenceFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14299                                       VkImportFenceFdInfoKHR* forUnmarshaling) {
14300     (void)rootType;
14301     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14302     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14303         rootType = forUnmarshaling->sType;
14304     }
14305     size_t pNext_size;
14306     pNext_size = vkStream->getBe32();
14307     forUnmarshaling->pNext = nullptr;
14308     if (pNext_size) {
14309         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14310         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14311         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14312         vkStream->alloc((void**)&forUnmarshaling->pNext,
14313                         goldfish_vk_extension_struct_size_with_stream_features(
14314                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14315         *(VkStructureType*)forUnmarshaling->pNext = extType;
14316         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14317     }
14318     uint64_t cgen_var_0;
14319     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
14320     vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_0,
14321                                                       (VkFence*)&forUnmarshaling->fence, 1);
14322     vkStream->read((VkFenceImportFlags*)&forUnmarshaling->flags, sizeof(VkFenceImportFlags));
14323     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType,
14324                    sizeof(VkExternalFenceHandleTypeFlagBits));
14325     vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
14326 }
14327 
marshal_VkFenceGetFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkFenceGetFdInfoKHR * forMarshaling)14328 void marshal_VkFenceGetFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14329                                  const VkFenceGetFdInfoKHR* forMarshaling) {
14330     (void)rootType;
14331     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14332     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14333         rootType = forMarshaling->sType;
14334     }
14335     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14336     uint64_t cgen_var_0;
14337     vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_0, 1);
14338     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
14339     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType,
14340                     sizeof(VkExternalFenceHandleTypeFlagBits));
14341 }
14342 
unmarshal_VkFenceGetFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkFenceGetFdInfoKHR * forUnmarshaling)14343 void unmarshal_VkFenceGetFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14344                                    VkFenceGetFdInfoKHR* forUnmarshaling) {
14345     (void)rootType;
14346     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14347     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14348         rootType = forUnmarshaling->sType;
14349     }
14350     size_t pNext_size;
14351     pNext_size = vkStream->getBe32();
14352     forUnmarshaling->pNext = nullptr;
14353     if (pNext_size) {
14354         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14355         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14356         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14357         vkStream->alloc((void**)&forUnmarshaling->pNext,
14358                         goldfish_vk_extension_struct_size_with_stream_features(
14359                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14360         *(VkStructureType*)forUnmarshaling->pNext = extType;
14361         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14362     }
14363     uint64_t cgen_var_0;
14364     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
14365     vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_0,
14366                                                       (VkFence*)&forUnmarshaling->fence, 1);
14367     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType,
14368                    sizeof(VkExternalFenceHandleTypeFlagBits));
14369 }
14370 
14371 #endif
14372 #ifdef VK_KHR_pipeline_executable_properties
marshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR * forMarshaling)14373 void marshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
14374     VulkanStream* vkStream, VkStructureType rootType,
14375     const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* forMarshaling) {
14376     (void)rootType;
14377     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14378     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14379         rootType = forMarshaling->sType;
14380     }
14381     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14382     vkStream->write((VkBool32*)&forMarshaling->pipelineExecutableInfo, sizeof(VkBool32));
14383 }
14384 
unmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR * forUnmarshaling)14385 void unmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
14386     VulkanStream* vkStream, VkStructureType rootType,
14387     VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* forUnmarshaling) {
14388     (void)rootType;
14389     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14390     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14391         rootType = forUnmarshaling->sType;
14392     }
14393     size_t pNext_size;
14394     pNext_size = vkStream->getBe32();
14395     forUnmarshaling->pNext = nullptr;
14396     if (pNext_size) {
14397         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14398         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14399         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14400         vkStream->alloc((void**)&forUnmarshaling->pNext,
14401                         goldfish_vk_extension_struct_size_with_stream_features(
14402                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14403         *(VkStructureType*)forUnmarshaling->pNext = extType;
14404         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14405     }
14406     vkStream->read((VkBool32*)&forUnmarshaling->pipelineExecutableInfo, sizeof(VkBool32));
14407 }
14408 
marshal_VkPipelineInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineInfoKHR * forMarshaling)14409 void marshal_VkPipelineInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14410                                const VkPipelineInfoKHR* forMarshaling) {
14411     (void)rootType;
14412     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14413     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14414         rootType = forMarshaling->sType;
14415     }
14416     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14417     uint64_t cgen_var_0;
14418     vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->pipeline, &cgen_var_0, 1);
14419     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
14420 }
14421 
unmarshal_VkPipelineInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineInfoKHR * forUnmarshaling)14422 void unmarshal_VkPipelineInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14423                                  VkPipelineInfoKHR* forUnmarshaling) {
14424     (void)rootType;
14425     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14426     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14427         rootType = forUnmarshaling->sType;
14428     }
14429     size_t pNext_size;
14430     pNext_size = vkStream->getBe32();
14431     forUnmarshaling->pNext = nullptr;
14432     if (pNext_size) {
14433         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14434         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14435         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14436         vkStream->alloc((void**)&forUnmarshaling->pNext,
14437                         goldfish_vk_extension_struct_size_with_stream_features(
14438                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14439         *(VkStructureType*)forUnmarshaling->pNext = extType;
14440         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14441     }
14442     uint64_t cgen_var_0;
14443     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
14444     vkStream->handleMapping()->mapHandles_u64_VkPipeline(
14445         &cgen_var_0, (VkPipeline*)&forUnmarshaling->pipeline, 1);
14446 }
14447 
marshal_VkPipelineExecutablePropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineExecutablePropertiesKHR * forMarshaling)14448 void marshal_VkPipelineExecutablePropertiesKHR(
14449     VulkanStream* vkStream, VkStructureType rootType,
14450     const VkPipelineExecutablePropertiesKHR* forMarshaling) {
14451     (void)rootType;
14452     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14453     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14454         rootType = forMarshaling->sType;
14455     }
14456     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14457     vkStream->write((VkShaderStageFlags*)&forMarshaling->stages, sizeof(VkShaderStageFlags));
14458     vkStream->write((char*)forMarshaling->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14459     vkStream->write((char*)forMarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14460     vkStream->write((uint32_t*)&forMarshaling->subgroupSize, sizeof(uint32_t));
14461 }
14462 
unmarshal_VkPipelineExecutablePropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutablePropertiesKHR * forUnmarshaling)14463 void unmarshal_VkPipelineExecutablePropertiesKHR(
14464     VulkanStream* vkStream, VkStructureType rootType,
14465     VkPipelineExecutablePropertiesKHR* forUnmarshaling) {
14466     (void)rootType;
14467     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14468     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14469         rootType = forUnmarshaling->sType;
14470     }
14471     size_t pNext_size;
14472     pNext_size = vkStream->getBe32();
14473     forUnmarshaling->pNext = nullptr;
14474     if (pNext_size) {
14475         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14476         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14477         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14478         vkStream->alloc((void**)&forUnmarshaling->pNext,
14479                         goldfish_vk_extension_struct_size_with_stream_features(
14480                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14481         *(VkStructureType*)forUnmarshaling->pNext = extType;
14482         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14483     }
14484     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stages, sizeof(VkShaderStageFlags));
14485     vkStream->read((char*)forUnmarshaling->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14486     vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14487     vkStream->read((uint32_t*)&forUnmarshaling->subgroupSize, sizeof(uint32_t));
14488 }
14489 
marshal_VkPipelineExecutableInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineExecutableInfoKHR * forMarshaling)14490 void marshal_VkPipelineExecutableInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14491                                          const VkPipelineExecutableInfoKHR* forMarshaling) {
14492     (void)rootType;
14493     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14494     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14495         rootType = forMarshaling->sType;
14496     }
14497     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14498     uint64_t cgen_var_0;
14499     vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->pipeline, &cgen_var_0, 1);
14500     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
14501     vkStream->write((uint32_t*)&forMarshaling->executableIndex, sizeof(uint32_t));
14502 }
14503 
unmarshal_VkPipelineExecutableInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableInfoKHR * forUnmarshaling)14504 void unmarshal_VkPipelineExecutableInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14505                                            VkPipelineExecutableInfoKHR* forUnmarshaling) {
14506     (void)rootType;
14507     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14508     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14509         rootType = forUnmarshaling->sType;
14510     }
14511     size_t pNext_size;
14512     pNext_size = vkStream->getBe32();
14513     forUnmarshaling->pNext = nullptr;
14514     if (pNext_size) {
14515         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14516         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14517         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14518         vkStream->alloc((void**)&forUnmarshaling->pNext,
14519                         goldfish_vk_extension_struct_size_with_stream_features(
14520                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14521         *(VkStructureType*)forUnmarshaling->pNext = extType;
14522         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14523     }
14524     uint64_t cgen_var_0;
14525     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
14526     vkStream->handleMapping()->mapHandles_u64_VkPipeline(
14527         &cgen_var_0, (VkPipeline*)&forUnmarshaling->pipeline, 1);
14528     vkStream->read((uint32_t*)&forUnmarshaling->executableIndex, sizeof(uint32_t));
14529 }
14530 
marshal_VkPipelineExecutableStatisticValueKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineExecutableStatisticValueKHR * forMarshaling)14531 void marshal_VkPipelineExecutableStatisticValueKHR(
14532     VulkanStream* vkStream, VkStructureType rootType,
14533     const VkPipelineExecutableStatisticValueKHR* forMarshaling) {
14534     (void)rootType;
14535     vkStream->write((VkBool32*)&forMarshaling->b32, sizeof(VkBool32));
14536 }
14537 
unmarshal_VkPipelineExecutableStatisticValueKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableStatisticValueKHR * forUnmarshaling)14538 void unmarshal_VkPipelineExecutableStatisticValueKHR(
14539     VulkanStream* vkStream, VkStructureType rootType,
14540     VkPipelineExecutableStatisticValueKHR* forUnmarshaling) {
14541     (void)rootType;
14542     vkStream->read((VkBool32*)&forUnmarshaling->b32, sizeof(VkBool32));
14543 }
14544 
marshal_VkPipelineExecutableStatisticKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineExecutableStatisticKHR * forMarshaling)14545 void marshal_VkPipelineExecutableStatisticKHR(
14546     VulkanStream* vkStream, VkStructureType rootType,
14547     const VkPipelineExecutableStatisticKHR* forMarshaling) {
14548     (void)rootType;
14549     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14550     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14551         rootType = forMarshaling->sType;
14552     }
14553     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14554     vkStream->write((char*)forMarshaling->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14555     vkStream->write((char*)forMarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14556     vkStream->write((VkPipelineExecutableStatisticFormatKHR*)&forMarshaling->format,
14557                     sizeof(VkPipelineExecutableStatisticFormatKHR));
14558     marshal_VkPipelineExecutableStatisticValueKHR(
14559         vkStream, rootType, (VkPipelineExecutableStatisticValueKHR*)(&forMarshaling->value));
14560 }
14561 
unmarshal_VkPipelineExecutableStatisticKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableStatisticKHR * forUnmarshaling)14562 void unmarshal_VkPipelineExecutableStatisticKHR(VulkanStream* vkStream, VkStructureType rootType,
14563                                                 VkPipelineExecutableStatisticKHR* forUnmarshaling) {
14564     (void)rootType;
14565     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14566     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14567         rootType = forUnmarshaling->sType;
14568     }
14569     size_t pNext_size;
14570     pNext_size = vkStream->getBe32();
14571     forUnmarshaling->pNext = nullptr;
14572     if (pNext_size) {
14573         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14574         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14575         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14576         vkStream->alloc((void**)&forUnmarshaling->pNext,
14577                         goldfish_vk_extension_struct_size_with_stream_features(
14578                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14579         *(VkStructureType*)forUnmarshaling->pNext = extType;
14580         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14581     }
14582     vkStream->read((char*)forUnmarshaling->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14583     vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14584     vkStream->read((VkPipelineExecutableStatisticFormatKHR*)&forUnmarshaling->format,
14585                    sizeof(VkPipelineExecutableStatisticFormatKHR));
14586     unmarshal_VkPipelineExecutableStatisticValueKHR(
14587         vkStream, rootType, (VkPipelineExecutableStatisticValueKHR*)(&forUnmarshaling->value));
14588 }
14589 
marshal_VkPipelineExecutableInternalRepresentationKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineExecutableInternalRepresentationKHR * forMarshaling)14590 void marshal_VkPipelineExecutableInternalRepresentationKHR(
14591     VulkanStream* vkStream, VkStructureType rootType,
14592     const VkPipelineExecutableInternalRepresentationKHR* forMarshaling) {
14593     (void)rootType;
14594     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14595     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14596         rootType = forMarshaling->sType;
14597     }
14598     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14599     vkStream->write((char*)forMarshaling->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14600     vkStream->write((char*)forMarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14601     vkStream->write((VkBool32*)&forMarshaling->isText, sizeof(VkBool32));
14602     uint64_t cgen_var_0 = (uint64_t)forMarshaling->dataSize;
14603     vkStream->putBe64(cgen_var_0);
14604     // WARNING PTR CHECK
14605     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pData;
14606     vkStream->putBe64(cgen_var_1);
14607     if (forMarshaling->pData) {
14608         vkStream->write((void*)forMarshaling->pData, forMarshaling->dataSize * sizeof(uint8_t));
14609     }
14610 }
14611 
unmarshal_VkPipelineExecutableInternalRepresentationKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableInternalRepresentationKHR * forUnmarshaling)14612 void unmarshal_VkPipelineExecutableInternalRepresentationKHR(
14613     VulkanStream* vkStream, VkStructureType rootType,
14614     VkPipelineExecutableInternalRepresentationKHR* forUnmarshaling) {
14615     (void)rootType;
14616     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14617     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14618         rootType = forUnmarshaling->sType;
14619     }
14620     size_t pNext_size;
14621     pNext_size = vkStream->getBe32();
14622     forUnmarshaling->pNext = nullptr;
14623     if (pNext_size) {
14624         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14625         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14626         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14627         vkStream->alloc((void**)&forUnmarshaling->pNext,
14628                         goldfish_vk_extension_struct_size_with_stream_features(
14629                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14630         *(VkStructureType*)forUnmarshaling->pNext = extType;
14631         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14632     }
14633     vkStream->read((char*)forUnmarshaling->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14634     vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
14635     vkStream->read((VkBool32*)&forUnmarshaling->isText, sizeof(VkBool32));
14636     forUnmarshaling->dataSize = (size_t)vkStream->getBe64();
14637     // WARNING PTR CHECK
14638     forUnmarshaling->pData = (void*)(uintptr_t)vkStream->getBe64();
14639     if (forUnmarshaling->pData) {
14640         vkStream->alloc((void**)&forUnmarshaling->pData,
14641                         forUnmarshaling->dataSize * sizeof(uint8_t));
14642         vkStream->read((void*)forUnmarshaling->pData, forUnmarshaling->dataSize * sizeof(uint8_t));
14643     }
14644 }
14645 
14646 #endif
14647 #ifdef VK_KHR_pipeline_library
marshal_VkPipelineLibraryCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineLibraryCreateInfoKHR * forMarshaling)14648 void marshal_VkPipelineLibraryCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14649                                             const VkPipelineLibraryCreateInfoKHR* forMarshaling) {
14650     (void)rootType;
14651     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14652     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14653         rootType = forMarshaling->sType;
14654     }
14655     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14656     vkStream->write((uint32_t*)&forMarshaling->libraryCount, sizeof(uint32_t));
14657     if (forMarshaling->libraryCount) {
14658         uint64_t* cgen_var_0;
14659         vkStream->alloc((void**)&cgen_var_0, forMarshaling->libraryCount * 8);
14660         vkStream->handleMapping()->mapHandles_VkPipeline_u64(forMarshaling->pLibraries, cgen_var_0,
14661                                                              forMarshaling->libraryCount);
14662         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->libraryCount * 8);
14663     }
14664 }
14665 
unmarshal_VkPipelineLibraryCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineLibraryCreateInfoKHR * forUnmarshaling)14666 void unmarshal_VkPipelineLibraryCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14667                                               VkPipelineLibraryCreateInfoKHR* forUnmarshaling) {
14668     (void)rootType;
14669     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14670     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14671         rootType = forUnmarshaling->sType;
14672     }
14673     size_t pNext_size;
14674     pNext_size = vkStream->getBe32();
14675     forUnmarshaling->pNext = nullptr;
14676     if (pNext_size) {
14677         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14678         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14679         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14680         vkStream->alloc((void**)&forUnmarshaling->pNext,
14681                         goldfish_vk_extension_struct_size_with_stream_features(
14682                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14683         *(VkStructureType*)forUnmarshaling->pNext = extType;
14684         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14685     }
14686     vkStream->read((uint32_t*)&forUnmarshaling->libraryCount, sizeof(uint32_t));
14687     vkStream->alloc((void**)&forUnmarshaling->pLibraries,
14688                     forUnmarshaling->libraryCount * sizeof(const VkPipeline));
14689     if (forUnmarshaling->libraryCount) {
14690         uint64_t* cgen_var_0;
14691         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->libraryCount * 8);
14692         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->libraryCount * 8);
14693         vkStream->handleMapping()->mapHandles_u64_VkPipeline(
14694             cgen_var_0, (VkPipeline*)forUnmarshaling->pLibraries, forUnmarshaling->libraryCount);
14695     }
14696 }
14697 
14698 #endif
14699 #ifdef VK_KHR_synchronization2
marshal_VkQueueFamilyCheckpointProperties2NV(VulkanStream * vkStream,VkStructureType rootType,const VkQueueFamilyCheckpointProperties2NV * forMarshaling)14700 void marshal_VkQueueFamilyCheckpointProperties2NV(
14701     VulkanStream* vkStream, VkStructureType rootType,
14702     const VkQueueFamilyCheckpointProperties2NV* forMarshaling) {
14703     (void)rootType;
14704     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14705     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14706         rootType = forMarshaling->sType;
14707     }
14708     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14709     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->checkpointExecutionStageMask,
14710                     sizeof(VkPipelineStageFlags2));
14711 }
14712 
unmarshal_VkQueueFamilyCheckpointProperties2NV(VulkanStream * vkStream,VkStructureType rootType,VkQueueFamilyCheckpointProperties2NV * forUnmarshaling)14713 void unmarshal_VkQueueFamilyCheckpointProperties2NV(
14714     VulkanStream* vkStream, VkStructureType rootType,
14715     VkQueueFamilyCheckpointProperties2NV* forUnmarshaling) {
14716     (void)rootType;
14717     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14718     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14719         rootType = forUnmarshaling->sType;
14720     }
14721     size_t pNext_size;
14722     pNext_size = vkStream->getBe32();
14723     forUnmarshaling->pNext = nullptr;
14724     if (pNext_size) {
14725         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14726         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14727         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14728         vkStream->alloc((void**)&forUnmarshaling->pNext,
14729                         goldfish_vk_extension_struct_size_with_stream_features(
14730                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14731         *(VkStructureType*)forUnmarshaling->pNext = extType;
14732         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14733     }
14734     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->checkpointExecutionStageMask,
14735                    sizeof(VkPipelineStageFlags2));
14736 }
14737 
marshal_VkCheckpointData2NV(VulkanStream * vkStream,VkStructureType rootType,const VkCheckpointData2NV * forMarshaling)14738 void marshal_VkCheckpointData2NV(VulkanStream* vkStream, VkStructureType rootType,
14739                                  const VkCheckpointData2NV* forMarshaling) {
14740     (void)rootType;
14741     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14742     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14743         rootType = forMarshaling->sType;
14744     }
14745     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14746     vkStream->write((VkPipelineStageFlags2*)&forMarshaling->stage, sizeof(VkPipelineStageFlags2));
14747     // WARNING PTR CHECK
14748     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pCheckpointMarker;
14749     vkStream->putBe64(cgen_var_0);
14750     if (forMarshaling->pCheckpointMarker) {
14751         vkStream->write((void*)forMarshaling->pCheckpointMarker, sizeof(uint8_t));
14752     }
14753 }
14754 
unmarshal_VkCheckpointData2NV(VulkanStream * vkStream,VkStructureType rootType,VkCheckpointData2NV * forUnmarshaling)14755 void unmarshal_VkCheckpointData2NV(VulkanStream* vkStream, VkStructureType rootType,
14756                                    VkCheckpointData2NV* forUnmarshaling) {
14757     (void)rootType;
14758     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14759     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14760         rootType = forUnmarshaling->sType;
14761     }
14762     size_t pNext_size;
14763     pNext_size = vkStream->getBe32();
14764     forUnmarshaling->pNext = nullptr;
14765     if (pNext_size) {
14766         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14767         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14768         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14769         vkStream->alloc((void**)&forUnmarshaling->pNext,
14770                         goldfish_vk_extension_struct_size_with_stream_features(
14771                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14772         *(VkStructureType*)forUnmarshaling->pNext = extType;
14773         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14774     }
14775     vkStream->read((VkPipelineStageFlags2*)&forUnmarshaling->stage, sizeof(VkPipelineStageFlags2));
14776     // WARNING PTR CHECK
14777     forUnmarshaling->pCheckpointMarker = (void*)(uintptr_t)vkStream->getBe64();
14778     if (forUnmarshaling->pCheckpointMarker) {
14779         vkStream->alloc((void**)&forUnmarshaling->pCheckpointMarker, sizeof(uint8_t));
14780         vkStream->read((void*)forUnmarshaling->pCheckpointMarker, sizeof(uint8_t));
14781     }
14782 }
14783 
14784 #endif
14785 #ifdef VK_KHR_maintenance5
marshal_VkPhysicalDeviceMaintenance5FeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMaintenance5FeaturesKHR * forMarshaling)14786 void marshal_VkPhysicalDeviceMaintenance5FeaturesKHR(
14787     VulkanStream* vkStream, VkStructureType rootType,
14788     const VkPhysicalDeviceMaintenance5FeaturesKHR* forMarshaling) {
14789     (void)rootType;
14790     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14791     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14792         rootType = forMarshaling->sType;
14793     }
14794     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14795     vkStream->write((VkBool32*)&forMarshaling->maintenance5, sizeof(VkBool32));
14796 }
14797 
unmarshal_VkPhysicalDeviceMaintenance5FeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance5FeaturesKHR * forUnmarshaling)14798 void unmarshal_VkPhysicalDeviceMaintenance5FeaturesKHR(
14799     VulkanStream* vkStream, VkStructureType rootType,
14800     VkPhysicalDeviceMaintenance5FeaturesKHR* forUnmarshaling) {
14801     (void)rootType;
14802     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14803     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14804         rootType = forUnmarshaling->sType;
14805     }
14806     size_t pNext_size;
14807     pNext_size = vkStream->getBe32();
14808     forUnmarshaling->pNext = nullptr;
14809     if (pNext_size) {
14810         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14811         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14812         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14813         vkStream->alloc((void**)&forUnmarshaling->pNext,
14814                         goldfish_vk_extension_struct_size_with_stream_features(
14815                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14816         *(VkStructureType*)forUnmarshaling->pNext = extType;
14817         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14818     }
14819     vkStream->read((VkBool32*)&forUnmarshaling->maintenance5, sizeof(VkBool32));
14820 }
14821 
marshal_VkPhysicalDeviceMaintenance5PropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceMaintenance5PropertiesKHR * forMarshaling)14822 void marshal_VkPhysicalDeviceMaintenance5PropertiesKHR(
14823     VulkanStream* vkStream, VkStructureType rootType,
14824     const VkPhysicalDeviceMaintenance5PropertiesKHR* forMarshaling) {
14825     (void)rootType;
14826     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14827     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14828         rootType = forMarshaling->sType;
14829     }
14830     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14831     vkStream->write((VkBool32*)&forMarshaling->earlyFragmentMultisampleCoverageAfterSampleCounting,
14832                     sizeof(VkBool32));
14833     vkStream->write((VkBool32*)&forMarshaling->earlyFragmentSampleMaskTestBeforeSampleCounting,
14834                     sizeof(VkBool32));
14835     vkStream->write((VkBool32*)&forMarshaling->depthStencilSwizzleOneSupport, sizeof(VkBool32));
14836     vkStream->write((VkBool32*)&forMarshaling->polygonModePointSize, sizeof(VkBool32));
14837     vkStream->write((VkBool32*)&forMarshaling->nonStrictSinglePixelWideLinesUseParallelogram,
14838                     sizeof(VkBool32));
14839     vkStream->write((VkBool32*)&forMarshaling->nonStrictWideLinesUseParallelogram,
14840                     sizeof(VkBool32));
14841 }
14842 
unmarshal_VkPhysicalDeviceMaintenance5PropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance5PropertiesKHR * forUnmarshaling)14843 void unmarshal_VkPhysicalDeviceMaintenance5PropertiesKHR(
14844     VulkanStream* vkStream, VkStructureType rootType,
14845     VkPhysicalDeviceMaintenance5PropertiesKHR* forUnmarshaling) {
14846     (void)rootType;
14847     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14848     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14849         rootType = forUnmarshaling->sType;
14850     }
14851     size_t pNext_size;
14852     pNext_size = vkStream->getBe32();
14853     forUnmarshaling->pNext = nullptr;
14854     if (pNext_size) {
14855         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14856         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14857         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14858         vkStream->alloc((void**)&forUnmarshaling->pNext,
14859                         goldfish_vk_extension_struct_size_with_stream_features(
14860                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14861         *(VkStructureType*)forUnmarshaling->pNext = extType;
14862         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14863     }
14864     vkStream->read((VkBool32*)&forUnmarshaling->earlyFragmentMultisampleCoverageAfterSampleCounting,
14865                    sizeof(VkBool32));
14866     vkStream->read((VkBool32*)&forUnmarshaling->earlyFragmentSampleMaskTestBeforeSampleCounting,
14867                    sizeof(VkBool32));
14868     vkStream->read((VkBool32*)&forUnmarshaling->depthStencilSwizzleOneSupport, sizeof(VkBool32));
14869     vkStream->read((VkBool32*)&forUnmarshaling->polygonModePointSize, sizeof(VkBool32));
14870     vkStream->read((VkBool32*)&forUnmarshaling->nonStrictSinglePixelWideLinesUseParallelogram,
14871                    sizeof(VkBool32));
14872     vkStream->read((VkBool32*)&forUnmarshaling->nonStrictWideLinesUseParallelogram,
14873                    sizeof(VkBool32));
14874 }
14875 
marshal_VkRenderingAreaInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkRenderingAreaInfoKHR * forMarshaling)14876 void marshal_VkRenderingAreaInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14877                                     const VkRenderingAreaInfoKHR* forMarshaling) {
14878     (void)rootType;
14879     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14880     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14881         rootType = forMarshaling->sType;
14882     }
14883     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14884     vkStream->write((uint32_t*)&forMarshaling->viewMask, sizeof(uint32_t));
14885     vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
14886     // WARNING PTR CHECK
14887     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pColorAttachmentFormats;
14888     vkStream->putBe64(cgen_var_0);
14889     if (forMarshaling->pColorAttachmentFormats) {
14890         vkStream->write((const VkFormat*)forMarshaling->pColorAttachmentFormats,
14891                         forMarshaling->colorAttachmentCount * sizeof(const VkFormat));
14892     }
14893     vkStream->write((VkFormat*)&forMarshaling->depthAttachmentFormat, sizeof(VkFormat));
14894     vkStream->write((VkFormat*)&forMarshaling->stencilAttachmentFormat, sizeof(VkFormat));
14895 }
14896 
unmarshal_VkRenderingAreaInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRenderingAreaInfoKHR * forUnmarshaling)14897 void unmarshal_VkRenderingAreaInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14898                                       VkRenderingAreaInfoKHR* forUnmarshaling) {
14899     (void)rootType;
14900     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14901     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14902         rootType = forUnmarshaling->sType;
14903     }
14904     size_t pNext_size;
14905     pNext_size = vkStream->getBe32();
14906     forUnmarshaling->pNext = nullptr;
14907     if (pNext_size) {
14908         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14909         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14910         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14911         vkStream->alloc((void**)&forUnmarshaling->pNext,
14912                         goldfish_vk_extension_struct_size_with_stream_features(
14913                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14914         *(VkStructureType*)forUnmarshaling->pNext = extType;
14915         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14916     }
14917     vkStream->read((uint32_t*)&forUnmarshaling->viewMask, sizeof(uint32_t));
14918     vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
14919     // WARNING PTR CHECK
14920     forUnmarshaling->pColorAttachmentFormats = (const VkFormat*)(uintptr_t)vkStream->getBe64();
14921     if (forUnmarshaling->pColorAttachmentFormats) {
14922         vkStream->alloc((void**)&forUnmarshaling->pColorAttachmentFormats,
14923                         forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
14924         vkStream->read((VkFormat*)forUnmarshaling->pColorAttachmentFormats,
14925                        forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
14926     }
14927     vkStream->read((VkFormat*)&forUnmarshaling->depthAttachmentFormat, sizeof(VkFormat));
14928     vkStream->read((VkFormat*)&forUnmarshaling->stencilAttachmentFormat, sizeof(VkFormat));
14929 }
14930 
marshal_VkImageSubresource2KHR(VulkanStream * vkStream,VkStructureType rootType,const VkImageSubresource2KHR * forMarshaling)14931 void marshal_VkImageSubresource2KHR(VulkanStream* vkStream, VkStructureType rootType,
14932                                     const VkImageSubresource2KHR* forMarshaling) {
14933     (void)rootType;
14934     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14935     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14936         rootType = forMarshaling->sType;
14937     }
14938     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14939     marshal_VkImageSubresource(vkStream, rootType,
14940                                (VkImageSubresource*)(&forMarshaling->imageSubresource));
14941 }
14942 
unmarshal_VkImageSubresource2KHR(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresource2KHR * forUnmarshaling)14943 void unmarshal_VkImageSubresource2KHR(VulkanStream* vkStream, VkStructureType rootType,
14944                                       VkImageSubresource2KHR* forUnmarshaling) {
14945     (void)rootType;
14946     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14947     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14948         rootType = forUnmarshaling->sType;
14949     }
14950     size_t pNext_size;
14951     pNext_size = vkStream->getBe32();
14952     forUnmarshaling->pNext = nullptr;
14953     if (pNext_size) {
14954         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14955         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14956         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14957         vkStream->alloc((void**)&forUnmarshaling->pNext,
14958                         goldfish_vk_extension_struct_size_with_stream_features(
14959                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14960         *(VkStructureType*)forUnmarshaling->pNext = extType;
14961         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
14962     }
14963     unmarshal_VkImageSubresource(vkStream, rootType,
14964                                  (VkImageSubresource*)(&forUnmarshaling->imageSubresource));
14965 }
14966 
marshal_VkDeviceImageSubresourceInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceImageSubresourceInfoKHR * forMarshaling)14967 void marshal_VkDeviceImageSubresourceInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14968                                              const VkDeviceImageSubresourceInfoKHR* forMarshaling) {
14969     (void)rootType;
14970     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
14971     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14972         rootType = forMarshaling->sType;
14973     }
14974     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
14975     marshal_VkImageCreateInfo(vkStream, rootType,
14976                               (const VkImageCreateInfo*)(forMarshaling->pCreateInfo));
14977     marshal_VkImageSubresource2KHR(vkStream, rootType,
14978                                    (const VkImageSubresource2KHR*)(forMarshaling->pSubresource));
14979 }
14980 
unmarshal_VkDeviceImageSubresourceInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceImageSubresourceInfoKHR * forUnmarshaling)14981 void unmarshal_VkDeviceImageSubresourceInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
14982                                                VkDeviceImageSubresourceInfoKHR* forUnmarshaling) {
14983     (void)rootType;
14984     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
14985     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14986         rootType = forUnmarshaling->sType;
14987     }
14988     size_t pNext_size;
14989     pNext_size = vkStream->getBe32();
14990     forUnmarshaling->pNext = nullptr;
14991     if (pNext_size) {
14992         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14993         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
14994         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14995         vkStream->alloc((void**)&forUnmarshaling->pNext,
14996                         goldfish_vk_extension_struct_size_with_stream_features(
14997                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14998         *(VkStructureType*)forUnmarshaling->pNext = extType;
14999         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15000     }
15001     vkStream->alloc((void**)&forUnmarshaling->pCreateInfo, sizeof(const VkImageCreateInfo));
15002     unmarshal_VkImageCreateInfo(vkStream, rootType,
15003                                 (VkImageCreateInfo*)(forUnmarshaling->pCreateInfo));
15004     vkStream->alloc((void**)&forUnmarshaling->pSubresource, sizeof(const VkImageSubresource2KHR));
15005     unmarshal_VkImageSubresource2KHR(vkStream, rootType,
15006                                      (VkImageSubresource2KHR*)(forUnmarshaling->pSubresource));
15007 }
15008 
marshal_VkSubresourceLayout2KHR(VulkanStream * vkStream,VkStructureType rootType,const VkSubresourceLayout2KHR * forMarshaling)15009 void marshal_VkSubresourceLayout2KHR(VulkanStream* vkStream, VkStructureType rootType,
15010                                      const VkSubresourceLayout2KHR* forMarshaling) {
15011     (void)rootType;
15012     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15013     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15014         rootType = forMarshaling->sType;
15015     }
15016     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15017     marshal_VkSubresourceLayout(vkStream, rootType,
15018                                 (VkSubresourceLayout*)(&forMarshaling->subresourceLayout));
15019 }
15020 
unmarshal_VkSubresourceLayout2KHR(VulkanStream * vkStream,VkStructureType rootType,VkSubresourceLayout2KHR * forUnmarshaling)15021 void unmarshal_VkSubresourceLayout2KHR(VulkanStream* vkStream, VkStructureType rootType,
15022                                        VkSubresourceLayout2KHR* forUnmarshaling) {
15023     (void)rootType;
15024     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15025     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15026         rootType = forUnmarshaling->sType;
15027     }
15028     size_t pNext_size;
15029     pNext_size = vkStream->getBe32();
15030     forUnmarshaling->pNext = nullptr;
15031     if (pNext_size) {
15032         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15033         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15034         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15035         vkStream->alloc((void**)&forUnmarshaling->pNext,
15036                         goldfish_vk_extension_struct_size_with_stream_features(
15037                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15038         *(VkStructureType*)forUnmarshaling->pNext = extType;
15039         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15040     }
15041     unmarshal_VkSubresourceLayout(vkStream, rootType,
15042                                   (VkSubresourceLayout*)(&forUnmarshaling->subresourceLayout));
15043 }
15044 
marshal_VkPipelineCreateFlags2CreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineCreateFlags2CreateInfoKHR * forMarshaling)15045 void marshal_VkPipelineCreateFlags2CreateInfoKHR(
15046     VulkanStream* vkStream, VkStructureType rootType,
15047     const VkPipelineCreateFlags2CreateInfoKHR* forMarshaling) {
15048     (void)rootType;
15049     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15050     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15051         rootType = forMarshaling->sType;
15052     }
15053     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15054     vkStream->write((VkPipelineCreateFlags2KHR*)&forMarshaling->flags,
15055                     sizeof(VkPipelineCreateFlags2KHR));
15056 }
15057 
unmarshal_VkPipelineCreateFlags2CreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCreateFlags2CreateInfoKHR * forUnmarshaling)15058 void unmarshal_VkPipelineCreateFlags2CreateInfoKHR(
15059     VulkanStream* vkStream, VkStructureType rootType,
15060     VkPipelineCreateFlags2CreateInfoKHR* forUnmarshaling) {
15061     (void)rootType;
15062     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15063     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15064         rootType = forUnmarshaling->sType;
15065     }
15066     size_t pNext_size;
15067     pNext_size = vkStream->getBe32();
15068     forUnmarshaling->pNext = nullptr;
15069     if (pNext_size) {
15070         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15071         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15072         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15073         vkStream->alloc((void**)&forUnmarshaling->pNext,
15074                         goldfish_vk_extension_struct_size_with_stream_features(
15075                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15076         *(VkStructureType*)forUnmarshaling->pNext = extType;
15077         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15078     }
15079     vkStream->read((VkPipelineCreateFlags2KHR*)&forUnmarshaling->flags,
15080                    sizeof(VkPipelineCreateFlags2KHR));
15081 }
15082 
marshal_VkBufferUsageFlags2CreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkBufferUsageFlags2CreateInfoKHR * forMarshaling)15083 void marshal_VkBufferUsageFlags2CreateInfoKHR(
15084     VulkanStream* vkStream, VkStructureType rootType,
15085     const VkBufferUsageFlags2CreateInfoKHR* forMarshaling) {
15086     (void)rootType;
15087     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15088     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15089         rootType = forMarshaling->sType;
15090     }
15091     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15092     vkStream->write((VkBufferUsageFlags2KHR*)&forMarshaling->usage, sizeof(VkBufferUsageFlags2KHR));
15093 }
15094 
unmarshal_VkBufferUsageFlags2CreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkBufferUsageFlags2CreateInfoKHR * forUnmarshaling)15095 void unmarshal_VkBufferUsageFlags2CreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
15096                                                 VkBufferUsageFlags2CreateInfoKHR* forUnmarshaling) {
15097     (void)rootType;
15098     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15099     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15100         rootType = forUnmarshaling->sType;
15101     }
15102     size_t pNext_size;
15103     pNext_size = vkStream->getBe32();
15104     forUnmarshaling->pNext = nullptr;
15105     if (pNext_size) {
15106         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15107         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15108         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15109         vkStream->alloc((void**)&forUnmarshaling->pNext,
15110                         goldfish_vk_extension_struct_size_with_stream_features(
15111                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15112         *(VkStructureType*)forUnmarshaling->pNext = extType;
15113         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15114     }
15115     vkStream->read((VkBufferUsageFlags2KHR*)&forUnmarshaling->usage,
15116                    sizeof(VkBufferUsageFlags2KHR));
15117 }
15118 
15119 #endif
15120 #ifdef VK_KHR_line_rasterization
marshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceLineRasterizationFeaturesKHR * forMarshaling)15121 void marshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(
15122     VulkanStream* vkStream, VkStructureType rootType,
15123     const VkPhysicalDeviceLineRasterizationFeaturesKHR* forMarshaling) {
15124     (void)rootType;
15125     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15126     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15127         rootType = forMarshaling->sType;
15128     }
15129     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15130     vkStream->write((VkBool32*)&forMarshaling->rectangularLines, sizeof(VkBool32));
15131     vkStream->write((VkBool32*)&forMarshaling->bresenhamLines, sizeof(VkBool32));
15132     vkStream->write((VkBool32*)&forMarshaling->smoothLines, sizeof(VkBool32));
15133     vkStream->write((VkBool32*)&forMarshaling->stippledRectangularLines, sizeof(VkBool32));
15134     vkStream->write((VkBool32*)&forMarshaling->stippledBresenhamLines, sizeof(VkBool32));
15135     vkStream->write((VkBool32*)&forMarshaling->stippledSmoothLines, sizeof(VkBool32));
15136 }
15137 
unmarshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceLineRasterizationFeaturesKHR * forUnmarshaling)15138 void unmarshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(
15139     VulkanStream* vkStream, VkStructureType rootType,
15140     VkPhysicalDeviceLineRasterizationFeaturesKHR* forUnmarshaling) {
15141     (void)rootType;
15142     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15143     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15144         rootType = forUnmarshaling->sType;
15145     }
15146     size_t pNext_size;
15147     pNext_size = vkStream->getBe32();
15148     forUnmarshaling->pNext = nullptr;
15149     if (pNext_size) {
15150         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15151         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15152         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15153         vkStream->alloc((void**)&forUnmarshaling->pNext,
15154                         goldfish_vk_extension_struct_size_with_stream_features(
15155                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15156         *(VkStructureType*)forUnmarshaling->pNext = extType;
15157         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15158     }
15159     vkStream->read((VkBool32*)&forUnmarshaling->rectangularLines, sizeof(VkBool32));
15160     vkStream->read((VkBool32*)&forUnmarshaling->bresenhamLines, sizeof(VkBool32));
15161     vkStream->read((VkBool32*)&forUnmarshaling->smoothLines, sizeof(VkBool32));
15162     vkStream->read((VkBool32*)&forUnmarshaling->stippledRectangularLines, sizeof(VkBool32));
15163     vkStream->read((VkBool32*)&forUnmarshaling->stippledBresenhamLines, sizeof(VkBool32));
15164     vkStream->read((VkBool32*)&forUnmarshaling->stippledSmoothLines, sizeof(VkBool32));
15165 }
15166 
marshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceLineRasterizationPropertiesKHR * forMarshaling)15167 void marshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(
15168     VulkanStream* vkStream, VkStructureType rootType,
15169     const VkPhysicalDeviceLineRasterizationPropertiesKHR* forMarshaling) {
15170     (void)rootType;
15171     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15172     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15173         rootType = forMarshaling->sType;
15174     }
15175     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15176     vkStream->write((uint32_t*)&forMarshaling->lineSubPixelPrecisionBits, sizeof(uint32_t));
15177 }
15178 
unmarshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceLineRasterizationPropertiesKHR * forUnmarshaling)15179 void unmarshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(
15180     VulkanStream* vkStream, VkStructureType rootType,
15181     VkPhysicalDeviceLineRasterizationPropertiesKHR* forUnmarshaling) {
15182     (void)rootType;
15183     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15184     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15185         rootType = forUnmarshaling->sType;
15186     }
15187     size_t pNext_size;
15188     pNext_size = vkStream->getBe32();
15189     forUnmarshaling->pNext = nullptr;
15190     if (pNext_size) {
15191         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15192         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15193         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15194         vkStream->alloc((void**)&forUnmarshaling->pNext,
15195                         goldfish_vk_extension_struct_size_with_stream_features(
15196                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15197         *(VkStructureType*)forUnmarshaling->pNext = extType;
15198         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15199     }
15200     vkStream->read((uint32_t*)&forUnmarshaling->lineSubPixelPrecisionBits, sizeof(uint32_t));
15201 }
15202 
marshal_VkPipelineRasterizationLineStateCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineRasterizationLineStateCreateInfoKHR * forMarshaling)15203 void marshal_VkPipelineRasterizationLineStateCreateInfoKHR(
15204     VulkanStream* vkStream, VkStructureType rootType,
15205     const VkPipelineRasterizationLineStateCreateInfoKHR* forMarshaling) {
15206     (void)rootType;
15207     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15208     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15209         rootType = forMarshaling->sType;
15210     }
15211     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15212     vkStream->write((VkLineRasterizationModeKHR*)&forMarshaling->lineRasterizationMode,
15213                     sizeof(VkLineRasterizationModeKHR));
15214     vkStream->write((VkBool32*)&forMarshaling->stippledLineEnable, sizeof(VkBool32));
15215     vkStream->write((uint32_t*)&forMarshaling->lineStippleFactor, sizeof(uint32_t));
15216     vkStream->write((uint16_t*)&forMarshaling->lineStipplePattern, sizeof(uint16_t));
15217 }
15218 
unmarshal_VkPipelineRasterizationLineStateCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationLineStateCreateInfoKHR * forUnmarshaling)15219 void unmarshal_VkPipelineRasterizationLineStateCreateInfoKHR(
15220     VulkanStream* vkStream, VkStructureType rootType,
15221     VkPipelineRasterizationLineStateCreateInfoKHR* forUnmarshaling) {
15222     (void)rootType;
15223     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15224     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15225         rootType = forUnmarshaling->sType;
15226     }
15227     size_t pNext_size;
15228     pNext_size = vkStream->getBe32();
15229     forUnmarshaling->pNext = nullptr;
15230     if (pNext_size) {
15231         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15232         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15233         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15234         vkStream->alloc((void**)&forUnmarshaling->pNext,
15235                         goldfish_vk_extension_struct_size_with_stream_features(
15236                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15237         *(VkStructureType*)forUnmarshaling->pNext = extType;
15238         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15239     }
15240     vkStream->read((VkLineRasterizationModeKHR*)&forUnmarshaling->lineRasterizationMode,
15241                    sizeof(VkLineRasterizationModeKHR));
15242     vkStream->read((VkBool32*)&forUnmarshaling->stippledLineEnable, sizeof(VkBool32));
15243     vkStream->read((uint32_t*)&forUnmarshaling->lineStippleFactor, sizeof(uint32_t));
15244     vkStream->read((uint16_t*)&forUnmarshaling->lineStipplePattern, sizeof(uint16_t));
15245 }
15246 
15247 #endif
15248 #ifdef VK_ANDROID_native_buffer
marshal_VkNativeBufferUsage2ANDROID(VulkanStream * vkStream,VkStructureType rootType,const VkNativeBufferUsage2ANDROID * forMarshaling)15249 void marshal_VkNativeBufferUsage2ANDROID(VulkanStream* vkStream, VkStructureType rootType,
15250                                          const VkNativeBufferUsage2ANDROID* forMarshaling) {
15251     (void)rootType;
15252     vkStream->write((uint64_t*)&forMarshaling->consumer, sizeof(uint64_t));
15253     vkStream->write((uint64_t*)&forMarshaling->producer, sizeof(uint64_t));
15254 }
15255 
unmarshal_VkNativeBufferUsage2ANDROID(VulkanStream * vkStream,VkStructureType rootType,VkNativeBufferUsage2ANDROID * forUnmarshaling)15256 void unmarshal_VkNativeBufferUsage2ANDROID(VulkanStream* vkStream, VkStructureType rootType,
15257                                            VkNativeBufferUsage2ANDROID* forUnmarshaling) {
15258     (void)rootType;
15259     vkStream->read((uint64_t*)&forUnmarshaling->consumer, sizeof(uint64_t));
15260     vkStream->read((uint64_t*)&forUnmarshaling->producer, sizeof(uint64_t));
15261 }
15262 
marshal_VkNativeBufferANDROID(VulkanStream * vkStream,VkStructureType rootType,const VkNativeBufferANDROID * forMarshaling)15263 void marshal_VkNativeBufferANDROID(VulkanStream* vkStream, VkStructureType rootType,
15264                                    const VkNativeBufferANDROID* forMarshaling) {
15265     (void)rootType;
15266     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15267     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15268         rootType = forMarshaling->sType;
15269     }
15270     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15271     // WARNING PTR CHECK
15272     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->handle;
15273     vkStream->putBe64(cgen_var_0);
15274     if (forMarshaling->handle) {
15275         vkStream->write((const uint32_t*)forMarshaling->handle, sizeof(const uint32_t));
15276     }
15277     vkStream->write((int*)&forMarshaling->stride, sizeof(int));
15278     vkStream->write((int*)&forMarshaling->format, sizeof(int));
15279     vkStream->write((int*)&forMarshaling->usage, sizeof(int));
15280     marshal_VkNativeBufferUsage2ANDROID(vkStream, rootType,
15281                                         (VkNativeBufferUsage2ANDROID*)(&forMarshaling->usage2));
15282 }
15283 
unmarshal_VkNativeBufferANDROID(VulkanStream * vkStream,VkStructureType rootType,VkNativeBufferANDROID * forUnmarshaling)15284 void unmarshal_VkNativeBufferANDROID(VulkanStream* vkStream, VkStructureType rootType,
15285                                      VkNativeBufferANDROID* forUnmarshaling) {
15286     (void)rootType;
15287     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15288     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15289         rootType = forUnmarshaling->sType;
15290     }
15291     size_t pNext_size;
15292     pNext_size = vkStream->getBe32();
15293     forUnmarshaling->pNext = nullptr;
15294     if (pNext_size) {
15295         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15296         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15297         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15298         vkStream->alloc((void**)&forUnmarshaling->pNext,
15299                         goldfish_vk_extension_struct_size_with_stream_features(
15300                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15301         *(VkStructureType*)forUnmarshaling->pNext = extType;
15302         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15303     }
15304     // WARNING PTR CHECK
15305     forUnmarshaling->handle = (const uint32_t*)(uintptr_t)vkStream->getBe64();
15306     if (forUnmarshaling->handle) {
15307         vkStream->alloc((void**)&forUnmarshaling->handle, sizeof(const uint32_t));
15308         vkStream->read((uint32_t*)forUnmarshaling->handle, sizeof(const uint32_t));
15309     }
15310     vkStream->read((int*)&forUnmarshaling->stride, sizeof(int));
15311     vkStream->read((int*)&forUnmarshaling->format, sizeof(int));
15312     vkStream->read((int*)&forUnmarshaling->usage, sizeof(int));
15313     unmarshal_VkNativeBufferUsage2ANDROID(vkStream, rootType,
15314                                           (VkNativeBufferUsage2ANDROID*)(&forUnmarshaling->usage2));
15315 }
15316 
marshal_VkSwapchainImageCreateInfoANDROID(VulkanStream * vkStream,VkStructureType rootType,const VkSwapchainImageCreateInfoANDROID * forMarshaling)15317 void marshal_VkSwapchainImageCreateInfoANDROID(
15318     VulkanStream* vkStream, VkStructureType rootType,
15319     const VkSwapchainImageCreateInfoANDROID* forMarshaling) {
15320     (void)rootType;
15321     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15322     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15323         rootType = forMarshaling->sType;
15324     }
15325     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15326     vkStream->write((VkSwapchainImageUsageFlagsANDROID*)&forMarshaling->usage,
15327                     sizeof(VkSwapchainImageUsageFlagsANDROID));
15328 }
15329 
unmarshal_VkSwapchainImageCreateInfoANDROID(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainImageCreateInfoANDROID * forUnmarshaling)15330 void unmarshal_VkSwapchainImageCreateInfoANDROID(
15331     VulkanStream* vkStream, VkStructureType rootType,
15332     VkSwapchainImageCreateInfoANDROID* forUnmarshaling) {
15333     (void)rootType;
15334     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15335     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15336         rootType = forUnmarshaling->sType;
15337     }
15338     size_t pNext_size;
15339     pNext_size = vkStream->getBe32();
15340     forUnmarshaling->pNext = nullptr;
15341     if (pNext_size) {
15342         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15343         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15344         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15345         vkStream->alloc((void**)&forUnmarshaling->pNext,
15346                         goldfish_vk_extension_struct_size_with_stream_features(
15347                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15348         *(VkStructureType*)forUnmarshaling->pNext = extType;
15349         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15350     }
15351     vkStream->read((VkSwapchainImageUsageFlagsANDROID*)&forUnmarshaling->usage,
15352                    sizeof(VkSwapchainImageUsageFlagsANDROID));
15353 }
15354 
marshal_VkPhysicalDevicePresentationPropertiesANDROID(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevicePresentationPropertiesANDROID * forMarshaling)15355 void marshal_VkPhysicalDevicePresentationPropertiesANDROID(
15356     VulkanStream* vkStream, VkStructureType rootType,
15357     const VkPhysicalDevicePresentationPropertiesANDROID* forMarshaling) {
15358     (void)rootType;
15359     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15360     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15361         rootType = forMarshaling->sType;
15362     }
15363     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15364     vkStream->write((VkBool32*)&forMarshaling->sharedImage, sizeof(VkBool32));
15365 }
15366 
unmarshal_VkPhysicalDevicePresentationPropertiesANDROID(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePresentationPropertiesANDROID * forUnmarshaling)15367 void unmarshal_VkPhysicalDevicePresentationPropertiesANDROID(
15368     VulkanStream* vkStream, VkStructureType rootType,
15369     VkPhysicalDevicePresentationPropertiesANDROID* forUnmarshaling) {
15370     (void)rootType;
15371     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15372     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15373         rootType = forUnmarshaling->sType;
15374     }
15375     size_t pNext_size;
15376     pNext_size = vkStream->getBe32();
15377     forUnmarshaling->pNext = nullptr;
15378     if (pNext_size) {
15379         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15380         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15381         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15382         vkStream->alloc((void**)&forUnmarshaling->pNext,
15383                         goldfish_vk_extension_struct_size_with_stream_features(
15384                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15385         *(VkStructureType*)forUnmarshaling->pNext = extType;
15386         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15387     }
15388     vkStream->read((VkBool32*)&forUnmarshaling->sharedImage, sizeof(VkBool32));
15389 }
15390 
15391 #endif
15392 #ifdef VK_EXT_debug_report
marshal_VkDebugReportCallbackCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDebugReportCallbackCreateInfoEXT * forMarshaling)15393 void marshal_VkDebugReportCallbackCreateInfoEXT(
15394     VulkanStream* vkStream, VkStructureType rootType,
15395     const VkDebugReportCallbackCreateInfoEXT* forMarshaling) {
15396     (void)rootType;
15397     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15398     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15399         rootType = forMarshaling->sType;
15400     }
15401     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15402     vkStream->write((VkDebugReportFlagsEXT*)&forMarshaling->flags, sizeof(VkDebugReportFlagsEXT));
15403     uint64_t cgen_var_0 = (uint64_t)forMarshaling->pfnCallback;
15404     vkStream->putBe64(cgen_var_0);
15405     // WARNING PTR CHECK
15406     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
15407     vkStream->putBe64(cgen_var_1);
15408     if (forMarshaling->pUserData) {
15409         vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
15410     }
15411 }
15412 
unmarshal_VkDebugReportCallbackCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugReportCallbackCreateInfoEXT * forUnmarshaling)15413 void unmarshal_VkDebugReportCallbackCreateInfoEXT(
15414     VulkanStream* vkStream, VkStructureType rootType,
15415     VkDebugReportCallbackCreateInfoEXT* forUnmarshaling) {
15416     (void)rootType;
15417     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15418     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15419         rootType = forUnmarshaling->sType;
15420     }
15421     size_t pNext_size;
15422     pNext_size = vkStream->getBe32();
15423     forUnmarshaling->pNext = nullptr;
15424     if (pNext_size) {
15425         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15426         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15427         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15428         vkStream->alloc((void**)&forUnmarshaling->pNext,
15429                         goldfish_vk_extension_struct_size_with_stream_features(
15430                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15431         *(VkStructureType*)forUnmarshaling->pNext = extType;
15432         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15433     }
15434     vkStream->read((VkDebugReportFlagsEXT*)&forUnmarshaling->flags, sizeof(VkDebugReportFlagsEXT));
15435     forUnmarshaling->pfnCallback = (PFN_vkDebugReportCallbackEXT)vkStream->getBe64();
15436     // WARNING PTR CHECK
15437     forUnmarshaling->pUserData = (void*)(uintptr_t)vkStream->getBe64();
15438     if (forUnmarshaling->pUserData) {
15439         vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
15440         vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
15441     }
15442 }
15443 
15444 #endif
15445 #ifdef VK_EXT_transform_feedback
marshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTransformFeedbackFeaturesEXT * forMarshaling)15446 void marshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
15447     VulkanStream* vkStream, VkStructureType rootType,
15448     const VkPhysicalDeviceTransformFeedbackFeaturesEXT* forMarshaling) {
15449     (void)rootType;
15450     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15451     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15452         rootType = forMarshaling->sType;
15453     }
15454     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15455     vkStream->write((VkBool32*)&forMarshaling->transformFeedback, sizeof(VkBool32));
15456     vkStream->write((VkBool32*)&forMarshaling->geometryStreams, sizeof(VkBool32));
15457 }
15458 
unmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTransformFeedbackFeaturesEXT * forUnmarshaling)15459 void unmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
15460     VulkanStream* vkStream, VkStructureType rootType,
15461     VkPhysicalDeviceTransformFeedbackFeaturesEXT* forUnmarshaling) {
15462     (void)rootType;
15463     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15464     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15465         rootType = forUnmarshaling->sType;
15466     }
15467     size_t pNext_size;
15468     pNext_size = vkStream->getBe32();
15469     forUnmarshaling->pNext = nullptr;
15470     if (pNext_size) {
15471         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15472         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15473         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15474         vkStream->alloc((void**)&forUnmarshaling->pNext,
15475                         goldfish_vk_extension_struct_size_with_stream_features(
15476                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15477         *(VkStructureType*)forUnmarshaling->pNext = extType;
15478         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15479     }
15480     vkStream->read((VkBool32*)&forUnmarshaling->transformFeedback, sizeof(VkBool32));
15481     vkStream->read((VkBool32*)&forUnmarshaling->geometryStreams, sizeof(VkBool32));
15482 }
15483 
marshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTransformFeedbackPropertiesEXT * forMarshaling)15484 void marshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
15485     VulkanStream* vkStream, VkStructureType rootType,
15486     const VkPhysicalDeviceTransformFeedbackPropertiesEXT* forMarshaling) {
15487     (void)rootType;
15488     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15489     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15490         rootType = forMarshaling->sType;
15491     }
15492     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15493     vkStream->write((uint32_t*)&forMarshaling->maxTransformFeedbackStreams, sizeof(uint32_t));
15494     vkStream->write((uint32_t*)&forMarshaling->maxTransformFeedbackBuffers, sizeof(uint32_t));
15495     vkStream->write((VkDeviceSize*)&forMarshaling->maxTransformFeedbackBufferSize,
15496                     sizeof(VkDeviceSize));
15497     vkStream->write((uint32_t*)&forMarshaling->maxTransformFeedbackStreamDataSize,
15498                     sizeof(uint32_t));
15499     vkStream->write((uint32_t*)&forMarshaling->maxTransformFeedbackBufferDataSize,
15500                     sizeof(uint32_t));
15501     vkStream->write((uint32_t*)&forMarshaling->maxTransformFeedbackBufferDataStride,
15502                     sizeof(uint32_t));
15503     vkStream->write((VkBool32*)&forMarshaling->transformFeedbackQueries, sizeof(VkBool32));
15504     vkStream->write((VkBool32*)&forMarshaling->transformFeedbackStreamsLinesTriangles,
15505                     sizeof(VkBool32));
15506     vkStream->write((VkBool32*)&forMarshaling->transformFeedbackRasterizationStreamSelect,
15507                     sizeof(VkBool32));
15508     vkStream->write((VkBool32*)&forMarshaling->transformFeedbackDraw, sizeof(VkBool32));
15509 }
15510 
unmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTransformFeedbackPropertiesEXT * forUnmarshaling)15511 void unmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
15512     VulkanStream* vkStream, VkStructureType rootType,
15513     VkPhysicalDeviceTransformFeedbackPropertiesEXT* forUnmarshaling) {
15514     (void)rootType;
15515     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15516     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15517         rootType = forUnmarshaling->sType;
15518     }
15519     size_t pNext_size;
15520     pNext_size = vkStream->getBe32();
15521     forUnmarshaling->pNext = nullptr;
15522     if (pNext_size) {
15523         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15524         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15525         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15526         vkStream->alloc((void**)&forUnmarshaling->pNext,
15527                         goldfish_vk_extension_struct_size_with_stream_features(
15528                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15529         *(VkStructureType*)forUnmarshaling->pNext = extType;
15530         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15531     }
15532     vkStream->read((uint32_t*)&forUnmarshaling->maxTransformFeedbackStreams, sizeof(uint32_t));
15533     vkStream->read((uint32_t*)&forUnmarshaling->maxTransformFeedbackBuffers, sizeof(uint32_t));
15534     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxTransformFeedbackBufferSize,
15535                    sizeof(VkDeviceSize));
15536     vkStream->read((uint32_t*)&forUnmarshaling->maxTransformFeedbackStreamDataSize,
15537                    sizeof(uint32_t));
15538     vkStream->read((uint32_t*)&forUnmarshaling->maxTransformFeedbackBufferDataSize,
15539                    sizeof(uint32_t));
15540     vkStream->read((uint32_t*)&forUnmarshaling->maxTransformFeedbackBufferDataStride,
15541                    sizeof(uint32_t));
15542     vkStream->read((VkBool32*)&forUnmarshaling->transformFeedbackQueries, sizeof(VkBool32));
15543     vkStream->read((VkBool32*)&forUnmarshaling->transformFeedbackStreamsLinesTriangles,
15544                    sizeof(VkBool32));
15545     vkStream->read((VkBool32*)&forUnmarshaling->transformFeedbackRasterizationStreamSelect,
15546                    sizeof(VkBool32));
15547     vkStream->read((VkBool32*)&forUnmarshaling->transformFeedbackDraw, sizeof(VkBool32));
15548 }
15549 
marshal_VkPipelineRasterizationStateStreamCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineRasterizationStateStreamCreateInfoEXT * forMarshaling)15550 void marshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
15551     VulkanStream* vkStream, VkStructureType rootType,
15552     const VkPipelineRasterizationStateStreamCreateInfoEXT* forMarshaling) {
15553     (void)rootType;
15554     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15555     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15556         rootType = forMarshaling->sType;
15557     }
15558     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15559     vkStream->write((VkPipelineRasterizationStateStreamCreateFlagsEXT*)&forMarshaling->flags,
15560                     sizeof(VkPipelineRasterizationStateStreamCreateFlagsEXT));
15561     vkStream->write((uint32_t*)&forMarshaling->rasterizationStream, sizeof(uint32_t));
15562 }
15563 
unmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationStateStreamCreateInfoEXT * forUnmarshaling)15564 void unmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
15565     VulkanStream* vkStream, VkStructureType rootType,
15566     VkPipelineRasterizationStateStreamCreateInfoEXT* forUnmarshaling) {
15567     (void)rootType;
15568     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15569     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15570         rootType = forUnmarshaling->sType;
15571     }
15572     size_t pNext_size;
15573     pNext_size = vkStream->getBe32();
15574     forUnmarshaling->pNext = nullptr;
15575     if (pNext_size) {
15576         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15577         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15578         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15579         vkStream->alloc((void**)&forUnmarshaling->pNext,
15580                         goldfish_vk_extension_struct_size_with_stream_features(
15581                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15582         *(VkStructureType*)forUnmarshaling->pNext = extType;
15583         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15584     }
15585     vkStream->read((VkPipelineRasterizationStateStreamCreateFlagsEXT*)&forUnmarshaling->flags,
15586                    sizeof(VkPipelineRasterizationStateStreamCreateFlagsEXT));
15587     vkStream->read((uint32_t*)&forUnmarshaling->rasterizationStream, sizeof(uint32_t));
15588 }
15589 
15590 #endif
15591 #ifdef VK_EXT_depth_clip_enable
marshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDepthClipEnableFeaturesEXT * forMarshaling)15592 void marshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
15593     VulkanStream* vkStream, VkStructureType rootType,
15594     const VkPhysicalDeviceDepthClipEnableFeaturesEXT* forMarshaling) {
15595     (void)rootType;
15596     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15597     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15598         rootType = forMarshaling->sType;
15599     }
15600     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15601     vkStream->write((VkBool32*)&forMarshaling->depthClipEnable, sizeof(VkBool32));
15602 }
15603 
unmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDepthClipEnableFeaturesEXT * forUnmarshaling)15604 void unmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
15605     VulkanStream* vkStream, VkStructureType rootType,
15606     VkPhysicalDeviceDepthClipEnableFeaturesEXT* forUnmarshaling) {
15607     (void)rootType;
15608     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15609     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15610         rootType = forUnmarshaling->sType;
15611     }
15612     size_t pNext_size;
15613     pNext_size = vkStream->getBe32();
15614     forUnmarshaling->pNext = nullptr;
15615     if (pNext_size) {
15616         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15617         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15618         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15619         vkStream->alloc((void**)&forUnmarshaling->pNext,
15620                         goldfish_vk_extension_struct_size_with_stream_features(
15621                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15622         *(VkStructureType*)forUnmarshaling->pNext = extType;
15623         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15624     }
15625     vkStream->read((VkBool32*)&forUnmarshaling->depthClipEnable, sizeof(VkBool32));
15626 }
15627 
marshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineRasterizationDepthClipStateCreateInfoEXT * forMarshaling)15628 void marshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
15629     VulkanStream* vkStream, VkStructureType rootType,
15630     const VkPipelineRasterizationDepthClipStateCreateInfoEXT* forMarshaling) {
15631     (void)rootType;
15632     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15633     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15634         rootType = forMarshaling->sType;
15635     }
15636     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15637     vkStream->write((VkPipelineRasterizationDepthClipStateCreateFlagsEXT*)&forMarshaling->flags,
15638                     sizeof(VkPipelineRasterizationDepthClipStateCreateFlagsEXT));
15639     vkStream->write((VkBool32*)&forMarshaling->depthClipEnable, sizeof(VkBool32));
15640 }
15641 
unmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationDepthClipStateCreateInfoEXT * forUnmarshaling)15642 void unmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
15643     VulkanStream* vkStream, VkStructureType rootType,
15644     VkPipelineRasterizationDepthClipStateCreateInfoEXT* forUnmarshaling) {
15645     (void)rootType;
15646     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15647     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15648         rootType = forUnmarshaling->sType;
15649     }
15650     size_t pNext_size;
15651     pNext_size = vkStream->getBe32();
15652     forUnmarshaling->pNext = nullptr;
15653     if (pNext_size) {
15654         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15655         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15656         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15657         vkStream->alloc((void**)&forUnmarshaling->pNext,
15658                         goldfish_vk_extension_struct_size_with_stream_features(
15659                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15660         *(VkStructureType*)forUnmarshaling->pNext = extType;
15661         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15662     }
15663     vkStream->read((VkPipelineRasterizationDepthClipStateCreateFlagsEXT*)&forUnmarshaling->flags,
15664                    sizeof(VkPipelineRasterizationDepthClipStateCreateFlagsEXT));
15665     vkStream->read((VkBool32*)&forUnmarshaling->depthClipEnable, sizeof(VkBool32));
15666 }
15667 
15668 #endif
15669 #ifdef VK_EXT_debug_utils
marshal_VkDebugUtilsLabelEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDebugUtilsLabelEXT * forMarshaling)15670 void marshal_VkDebugUtilsLabelEXT(VulkanStream* vkStream, VkStructureType rootType,
15671                                   const VkDebugUtilsLabelEXT* forMarshaling) {
15672     (void)rootType;
15673     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15674     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15675         rootType = forMarshaling->sType;
15676     }
15677     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15678     vkStream->putString(forMarshaling->pLabelName);
15679     vkStream->write((float*)forMarshaling->color, 4 * sizeof(float));
15680 }
15681 
unmarshal_VkDebugUtilsLabelEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsLabelEXT * forUnmarshaling)15682 void unmarshal_VkDebugUtilsLabelEXT(VulkanStream* vkStream, VkStructureType rootType,
15683                                     VkDebugUtilsLabelEXT* forUnmarshaling) {
15684     (void)rootType;
15685     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15686     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15687         rootType = forUnmarshaling->sType;
15688     }
15689     size_t pNext_size;
15690     pNext_size = vkStream->getBe32();
15691     forUnmarshaling->pNext = nullptr;
15692     if (pNext_size) {
15693         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15694         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15695         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15696         vkStream->alloc((void**)&forUnmarshaling->pNext,
15697                         goldfish_vk_extension_struct_size_with_stream_features(
15698                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15699         *(VkStructureType*)forUnmarshaling->pNext = extType;
15700         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15701     }
15702     vkStream->loadStringInPlace((char**)&forUnmarshaling->pLabelName);
15703     vkStream->read((float*)forUnmarshaling->color, 4 * sizeof(float));
15704 }
15705 
marshal_VkDebugUtilsObjectNameInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDebugUtilsObjectNameInfoEXT * forMarshaling)15706 void marshal_VkDebugUtilsObjectNameInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
15707                                            const VkDebugUtilsObjectNameInfoEXT* forMarshaling) {
15708     (void)rootType;
15709     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15710     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15711         rootType = forMarshaling->sType;
15712     }
15713     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15714     vkStream->write((VkObjectType*)&forMarshaling->objectType, sizeof(VkObjectType));
15715     vkStream->write((uint64_t*)&forMarshaling->objectHandle, sizeof(uint64_t));
15716     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
15717         // WARNING PTR CHECK
15718         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pObjectName;
15719         vkStream->putBe64(cgen_var_0);
15720         if (forMarshaling->pObjectName) {
15721             vkStream->putString(forMarshaling->pObjectName);
15722         }
15723     } else {
15724         vkStream->putString(forMarshaling->pObjectName);
15725     }
15726 }
15727 
unmarshal_VkDebugUtilsObjectNameInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsObjectNameInfoEXT * forUnmarshaling)15728 void unmarshal_VkDebugUtilsObjectNameInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
15729                                              VkDebugUtilsObjectNameInfoEXT* forUnmarshaling) {
15730     (void)rootType;
15731     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15732     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15733         rootType = forUnmarshaling->sType;
15734     }
15735     size_t pNext_size;
15736     pNext_size = vkStream->getBe32();
15737     forUnmarshaling->pNext = nullptr;
15738     if (pNext_size) {
15739         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15740         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15741         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15742         vkStream->alloc((void**)&forUnmarshaling->pNext,
15743                         goldfish_vk_extension_struct_size_with_stream_features(
15744                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15745         *(VkStructureType*)forUnmarshaling->pNext = extType;
15746         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15747     }
15748     vkStream->read((VkObjectType*)&forUnmarshaling->objectType, sizeof(VkObjectType));
15749     vkStream->read((uint64_t*)&forUnmarshaling->objectHandle, sizeof(uint64_t));
15750     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
15751         // WARNING PTR CHECK
15752         forUnmarshaling->pObjectName = (const char*)(uintptr_t)vkStream->getBe64();
15753         if (forUnmarshaling->pObjectName) {
15754             vkStream->loadStringInPlace((char**)&forUnmarshaling->pObjectName);
15755         }
15756     } else {
15757         vkStream->loadStringInPlace((char**)&forUnmarshaling->pObjectName);
15758     }
15759 }
15760 
marshal_VkDebugUtilsMessengerCallbackDataEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDebugUtilsMessengerCallbackDataEXT * forMarshaling)15761 void marshal_VkDebugUtilsMessengerCallbackDataEXT(
15762     VulkanStream* vkStream, VkStructureType rootType,
15763     const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling) {
15764     (void)rootType;
15765     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15766     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15767         rootType = forMarshaling->sType;
15768     }
15769     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15770     vkStream->write((VkDebugUtilsMessengerCallbackDataFlagsEXT*)&forMarshaling->flags,
15771                     sizeof(VkDebugUtilsMessengerCallbackDataFlagsEXT));
15772     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
15773         // WARNING PTR CHECK
15774         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pMessageIdName;
15775         vkStream->putBe64(cgen_var_0);
15776         if (forMarshaling->pMessageIdName) {
15777             vkStream->putString(forMarshaling->pMessageIdName);
15778         }
15779     } else {
15780         vkStream->putString(forMarshaling->pMessageIdName);
15781     }
15782     vkStream->write((int32_t*)&forMarshaling->messageIdNumber, sizeof(int32_t));
15783     vkStream->putString(forMarshaling->pMessage);
15784     vkStream->write((uint32_t*)&forMarshaling->queueLabelCount, sizeof(uint32_t));
15785     if (forMarshaling) {
15786         for (uint32_t i = 0; i < (uint32_t)forMarshaling->queueLabelCount; ++i) {
15787             marshal_VkDebugUtilsLabelEXT(
15788                 vkStream, rootType, (const VkDebugUtilsLabelEXT*)(forMarshaling->pQueueLabels + i));
15789         }
15790     }
15791     vkStream->write((uint32_t*)&forMarshaling->cmdBufLabelCount, sizeof(uint32_t));
15792     if (forMarshaling) {
15793         for (uint32_t i = 0; i < (uint32_t)forMarshaling->cmdBufLabelCount; ++i) {
15794             marshal_VkDebugUtilsLabelEXT(
15795                 vkStream, rootType,
15796                 (const VkDebugUtilsLabelEXT*)(forMarshaling->pCmdBufLabels + i));
15797         }
15798     }
15799     vkStream->write((uint32_t*)&forMarshaling->objectCount, sizeof(uint32_t));
15800     if (forMarshaling) {
15801         for (uint32_t i = 0; i < (uint32_t)forMarshaling->objectCount; ++i) {
15802             marshal_VkDebugUtilsObjectNameInfoEXT(
15803                 vkStream, rootType,
15804                 (const VkDebugUtilsObjectNameInfoEXT*)(forMarshaling->pObjects + i));
15805         }
15806     }
15807 }
15808 
unmarshal_VkDebugUtilsMessengerCallbackDataEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsMessengerCallbackDataEXT * forUnmarshaling)15809 void unmarshal_VkDebugUtilsMessengerCallbackDataEXT(
15810     VulkanStream* vkStream, VkStructureType rootType,
15811     VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling) {
15812     (void)rootType;
15813     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15814     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15815         rootType = forUnmarshaling->sType;
15816     }
15817     size_t pNext_size;
15818     pNext_size = vkStream->getBe32();
15819     forUnmarshaling->pNext = nullptr;
15820     if (pNext_size) {
15821         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15822         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15823         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15824         vkStream->alloc((void**)&forUnmarshaling->pNext,
15825                         goldfish_vk_extension_struct_size_with_stream_features(
15826                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15827         *(VkStructureType*)forUnmarshaling->pNext = extType;
15828         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15829     }
15830     vkStream->read((VkDebugUtilsMessengerCallbackDataFlagsEXT*)&forUnmarshaling->flags,
15831                    sizeof(VkDebugUtilsMessengerCallbackDataFlagsEXT));
15832     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
15833         // WARNING PTR CHECK
15834         forUnmarshaling->pMessageIdName = (const char*)(uintptr_t)vkStream->getBe64();
15835         if (forUnmarshaling->pMessageIdName) {
15836             vkStream->loadStringInPlace((char**)&forUnmarshaling->pMessageIdName);
15837         }
15838     } else {
15839         vkStream->loadStringInPlace((char**)&forUnmarshaling->pMessageIdName);
15840     }
15841     vkStream->read((int32_t*)&forUnmarshaling->messageIdNumber, sizeof(int32_t));
15842     vkStream->loadStringInPlace((char**)&forUnmarshaling->pMessage);
15843     vkStream->read((uint32_t*)&forUnmarshaling->queueLabelCount, sizeof(uint32_t));
15844     vkStream->alloc((void**)&forUnmarshaling->pQueueLabels,
15845                     forUnmarshaling->queueLabelCount * sizeof(const VkDebugUtilsLabelEXT));
15846     if (forUnmarshaling) {
15847         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->queueLabelCount; ++i) {
15848             unmarshal_VkDebugUtilsLabelEXT(
15849                 vkStream, rootType, (VkDebugUtilsLabelEXT*)(forUnmarshaling->pQueueLabels + i));
15850         }
15851     }
15852     vkStream->read((uint32_t*)&forUnmarshaling->cmdBufLabelCount, sizeof(uint32_t));
15853     vkStream->alloc((void**)&forUnmarshaling->pCmdBufLabels,
15854                     forUnmarshaling->cmdBufLabelCount * sizeof(const VkDebugUtilsLabelEXT));
15855     if (forUnmarshaling) {
15856         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->cmdBufLabelCount; ++i) {
15857             unmarshal_VkDebugUtilsLabelEXT(
15858                 vkStream, rootType, (VkDebugUtilsLabelEXT*)(forUnmarshaling->pCmdBufLabels + i));
15859         }
15860     }
15861     vkStream->read((uint32_t*)&forUnmarshaling->objectCount, sizeof(uint32_t));
15862     vkStream->alloc((void**)&forUnmarshaling->pObjects,
15863                     forUnmarshaling->objectCount * sizeof(const VkDebugUtilsObjectNameInfoEXT));
15864     if (forUnmarshaling) {
15865         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->objectCount; ++i) {
15866             unmarshal_VkDebugUtilsObjectNameInfoEXT(
15867                 vkStream, rootType,
15868                 (VkDebugUtilsObjectNameInfoEXT*)(forUnmarshaling->pObjects + i));
15869         }
15870     }
15871 }
15872 
marshal_VkDebugUtilsMessengerCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDebugUtilsMessengerCreateInfoEXT * forMarshaling)15873 void marshal_VkDebugUtilsMessengerCreateInfoEXT(
15874     VulkanStream* vkStream, VkStructureType rootType,
15875     const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling) {
15876     (void)rootType;
15877     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15878     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15879         rootType = forMarshaling->sType;
15880     }
15881     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15882     vkStream->write((VkDebugUtilsMessengerCreateFlagsEXT*)&forMarshaling->flags,
15883                     sizeof(VkDebugUtilsMessengerCreateFlagsEXT));
15884     vkStream->write((VkDebugUtilsMessageSeverityFlagsEXT*)&forMarshaling->messageSeverity,
15885                     sizeof(VkDebugUtilsMessageSeverityFlagsEXT));
15886     vkStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&forMarshaling->messageType,
15887                     sizeof(VkDebugUtilsMessageTypeFlagsEXT));
15888     uint64_t cgen_var_0 = (uint64_t)forMarshaling->pfnUserCallback;
15889     vkStream->putBe64(cgen_var_0);
15890     // WARNING PTR CHECK
15891     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
15892     vkStream->putBe64(cgen_var_1);
15893     if (forMarshaling->pUserData) {
15894         vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
15895     }
15896 }
15897 
unmarshal_VkDebugUtilsMessengerCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsMessengerCreateInfoEXT * forUnmarshaling)15898 void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
15899     VulkanStream* vkStream, VkStructureType rootType,
15900     VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling) {
15901     (void)rootType;
15902     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15903     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15904         rootType = forUnmarshaling->sType;
15905     }
15906     size_t pNext_size;
15907     pNext_size = vkStream->getBe32();
15908     forUnmarshaling->pNext = nullptr;
15909     if (pNext_size) {
15910         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15911         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15912         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15913         vkStream->alloc((void**)&forUnmarshaling->pNext,
15914                         goldfish_vk_extension_struct_size_with_stream_features(
15915                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15916         *(VkStructureType*)forUnmarshaling->pNext = extType;
15917         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15918     }
15919     vkStream->read((VkDebugUtilsMessengerCreateFlagsEXT*)&forUnmarshaling->flags,
15920                    sizeof(VkDebugUtilsMessengerCreateFlagsEXT));
15921     vkStream->read((VkDebugUtilsMessageSeverityFlagsEXT*)&forUnmarshaling->messageSeverity,
15922                    sizeof(VkDebugUtilsMessageSeverityFlagsEXT));
15923     vkStream->read((VkDebugUtilsMessageTypeFlagsEXT*)&forUnmarshaling->messageType,
15924                    sizeof(VkDebugUtilsMessageTypeFlagsEXT));
15925     forUnmarshaling->pfnUserCallback = (PFN_vkDebugUtilsMessengerCallbackEXT)vkStream->getBe64();
15926     // WARNING PTR CHECK
15927     forUnmarshaling->pUserData = (void*)(uintptr_t)vkStream->getBe64();
15928     if (forUnmarshaling->pUserData) {
15929         vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
15930         vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
15931     }
15932 }
15933 
marshal_VkDebugUtilsObjectTagInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDebugUtilsObjectTagInfoEXT * forMarshaling)15934 void marshal_VkDebugUtilsObjectTagInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
15935                                           const VkDebugUtilsObjectTagInfoEXT* forMarshaling) {
15936     (void)rootType;
15937     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
15938     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15939         rootType = forMarshaling->sType;
15940     }
15941     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
15942     vkStream->write((VkObjectType*)&forMarshaling->objectType, sizeof(VkObjectType));
15943     vkStream->write((uint64_t*)&forMarshaling->objectHandle, sizeof(uint64_t));
15944     vkStream->write((uint64_t*)&forMarshaling->tagName, sizeof(uint64_t));
15945     uint64_t cgen_var_0 = (uint64_t)forMarshaling->tagSize;
15946     vkStream->putBe64(cgen_var_0);
15947     vkStream->write((const void*)forMarshaling->pTag,
15948                     forMarshaling->tagSize * sizeof(const uint8_t));
15949 }
15950 
unmarshal_VkDebugUtilsObjectTagInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsObjectTagInfoEXT * forUnmarshaling)15951 void unmarshal_VkDebugUtilsObjectTagInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
15952                                             VkDebugUtilsObjectTagInfoEXT* forUnmarshaling) {
15953     (void)rootType;
15954     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
15955     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
15956         rootType = forUnmarshaling->sType;
15957     }
15958     size_t pNext_size;
15959     pNext_size = vkStream->getBe32();
15960     forUnmarshaling->pNext = nullptr;
15961     if (pNext_size) {
15962         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
15963         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
15964         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
15965         vkStream->alloc((void**)&forUnmarshaling->pNext,
15966                         goldfish_vk_extension_struct_size_with_stream_features(
15967                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
15968         *(VkStructureType*)forUnmarshaling->pNext = extType;
15969         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
15970     }
15971     vkStream->read((VkObjectType*)&forUnmarshaling->objectType, sizeof(VkObjectType));
15972     vkStream->read((uint64_t*)&forUnmarshaling->objectHandle, sizeof(uint64_t));
15973     vkStream->read((uint64_t*)&forUnmarshaling->tagName, sizeof(uint64_t));
15974     forUnmarshaling->tagSize = (size_t)vkStream->getBe64();
15975     vkStream->alloc((void**)&forUnmarshaling->pTag,
15976                     forUnmarshaling->tagSize * sizeof(const uint8_t));
15977     vkStream->read((void*)forUnmarshaling->pTag, forUnmarshaling->tagSize * sizeof(const uint8_t));
15978 }
15979 
15980 #endif
15981 #ifdef VK_EXT_image_drm_format_modifier
marshal_VkDrmFormatModifierPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDrmFormatModifierPropertiesEXT * forMarshaling)15982 void marshal_VkDrmFormatModifierPropertiesEXT(
15983     VulkanStream* vkStream, VkStructureType rootType,
15984     const VkDrmFormatModifierPropertiesEXT* forMarshaling) {
15985     (void)rootType;
15986     vkStream->write((uint64_t*)&forMarshaling->drmFormatModifier, sizeof(uint64_t));
15987     vkStream->write((uint32_t*)&forMarshaling->drmFormatModifierPlaneCount, sizeof(uint32_t));
15988     vkStream->write((VkFormatFeatureFlags*)&forMarshaling->drmFormatModifierTilingFeatures,
15989                     sizeof(VkFormatFeatureFlags));
15990 }
15991 
unmarshal_VkDrmFormatModifierPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierPropertiesEXT * forUnmarshaling)15992 void unmarshal_VkDrmFormatModifierPropertiesEXT(VulkanStream* vkStream, VkStructureType rootType,
15993                                                 VkDrmFormatModifierPropertiesEXT* forUnmarshaling) {
15994     (void)rootType;
15995     vkStream->read((uint64_t*)&forUnmarshaling->drmFormatModifier, sizeof(uint64_t));
15996     vkStream->read((uint32_t*)&forUnmarshaling->drmFormatModifierPlaneCount, sizeof(uint32_t));
15997     vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->drmFormatModifierTilingFeatures,
15998                    sizeof(VkFormatFeatureFlags));
15999 }
16000 
marshal_VkDrmFormatModifierPropertiesListEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDrmFormatModifierPropertiesListEXT * forMarshaling)16001 void marshal_VkDrmFormatModifierPropertiesListEXT(
16002     VulkanStream* vkStream, VkStructureType rootType,
16003     const VkDrmFormatModifierPropertiesListEXT* forMarshaling) {
16004     (void)rootType;
16005     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16006     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16007         rootType = forMarshaling->sType;
16008     }
16009     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16010     vkStream->write((uint32_t*)&forMarshaling->drmFormatModifierCount, sizeof(uint32_t));
16011     // WARNING PTR CHECK
16012     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pDrmFormatModifierProperties;
16013     vkStream->putBe64(cgen_var_0);
16014     if (forMarshaling->pDrmFormatModifierProperties) {
16015         if (forMarshaling) {
16016             for (uint32_t i = 0; i < (uint32_t)forMarshaling->drmFormatModifierCount; ++i) {
16017                 marshal_VkDrmFormatModifierPropertiesEXT(
16018                     vkStream, rootType,
16019                     (VkDrmFormatModifierPropertiesEXT*)(forMarshaling
16020                                                             ->pDrmFormatModifierProperties +
16021                                                         i));
16022             }
16023         }
16024     }
16025 }
16026 
unmarshal_VkDrmFormatModifierPropertiesListEXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierPropertiesListEXT * forUnmarshaling)16027 void unmarshal_VkDrmFormatModifierPropertiesListEXT(
16028     VulkanStream* vkStream, VkStructureType rootType,
16029     VkDrmFormatModifierPropertiesListEXT* forUnmarshaling) {
16030     (void)rootType;
16031     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16032     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16033         rootType = forUnmarshaling->sType;
16034     }
16035     size_t pNext_size;
16036     pNext_size = vkStream->getBe32();
16037     forUnmarshaling->pNext = nullptr;
16038     if (pNext_size) {
16039         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16040         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16041         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16042         vkStream->alloc((void**)&forUnmarshaling->pNext,
16043                         goldfish_vk_extension_struct_size_with_stream_features(
16044                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16045         *(VkStructureType*)forUnmarshaling->pNext = extType;
16046         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16047     }
16048     vkStream->read((uint32_t*)&forUnmarshaling->drmFormatModifierCount, sizeof(uint32_t));
16049     // WARNING PTR CHECK
16050     forUnmarshaling->pDrmFormatModifierProperties =
16051         (VkDrmFormatModifierPropertiesEXT*)(uintptr_t)vkStream->getBe64();
16052     if (forUnmarshaling->pDrmFormatModifierProperties) {
16053         vkStream->alloc(
16054             (void**)&forUnmarshaling->pDrmFormatModifierProperties,
16055             forUnmarshaling->drmFormatModifierCount * sizeof(VkDrmFormatModifierPropertiesEXT));
16056         if (forUnmarshaling) {
16057             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->drmFormatModifierCount; ++i) {
16058                 unmarshal_VkDrmFormatModifierPropertiesEXT(
16059                     vkStream, rootType,
16060                     (VkDrmFormatModifierPropertiesEXT*)(forUnmarshaling
16061                                                             ->pDrmFormatModifierProperties +
16062                                                         i));
16063             }
16064         }
16065     }
16066 }
16067 
marshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceImageDrmFormatModifierInfoEXT * forMarshaling)16068 void marshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
16069     VulkanStream* vkStream, VkStructureType rootType,
16070     const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* forMarshaling) {
16071     (void)rootType;
16072     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16073     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16074         rootType = forMarshaling->sType;
16075     }
16076     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16077     vkStream->write((uint64_t*)&forMarshaling->drmFormatModifier, sizeof(uint64_t));
16078     vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
16079     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
16080     // WARNING PTR CHECK
16081     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
16082     vkStream->putBe64(cgen_var_0);
16083     if (forMarshaling->pQueueFamilyIndices) {
16084         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices,
16085                         forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
16086     }
16087 }
16088 
unmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageDrmFormatModifierInfoEXT * forUnmarshaling)16089 void unmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
16090     VulkanStream* vkStream, VkStructureType rootType,
16091     VkPhysicalDeviceImageDrmFormatModifierInfoEXT* forUnmarshaling) {
16092     (void)rootType;
16093     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16094     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16095         rootType = forUnmarshaling->sType;
16096     }
16097     size_t pNext_size;
16098     pNext_size = vkStream->getBe32();
16099     forUnmarshaling->pNext = nullptr;
16100     if (pNext_size) {
16101         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16102         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16103         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16104         vkStream->alloc((void**)&forUnmarshaling->pNext,
16105                         goldfish_vk_extension_struct_size_with_stream_features(
16106                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16107         *(VkStructureType*)forUnmarshaling->pNext = extType;
16108         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16109     }
16110     vkStream->read((uint64_t*)&forUnmarshaling->drmFormatModifier, sizeof(uint64_t));
16111     vkStream->read((VkSharingMode*)&forUnmarshaling->sharingMode, sizeof(VkSharingMode));
16112     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
16113     // WARNING PTR CHECK
16114     forUnmarshaling->pQueueFamilyIndices = (const uint32_t*)(uintptr_t)vkStream->getBe64();
16115     if (forUnmarshaling->pQueueFamilyIndices) {
16116         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
16117                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
16118         vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices,
16119                        forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
16120     }
16121 }
16122 
marshal_VkImageDrmFormatModifierListCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImageDrmFormatModifierListCreateInfoEXT * forMarshaling)16123 void marshal_VkImageDrmFormatModifierListCreateInfoEXT(
16124     VulkanStream* vkStream, VkStructureType rootType,
16125     const VkImageDrmFormatModifierListCreateInfoEXT* forMarshaling) {
16126     (void)rootType;
16127     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16128     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16129         rootType = forMarshaling->sType;
16130     }
16131     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16132     vkStream->write((uint32_t*)&forMarshaling->drmFormatModifierCount, sizeof(uint32_t));
16133     vkStream->write((const uint64_t*)forMarshaling->pDrmFormatModifiers,
16134                     forMarshaling->drmFormatModifierCount * sizeof(const uint64_t));
16135 }
16136 
unmarshal_VkImageDrmFormatModifierListCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageDrmFormatModifierListCreateInfoEXT * forUnmarshaling)16137 void unmarshal_VkImageDrmFormatModifierListCreateInfoEXT(
16138     VulkanStream* vkStream, VkStructureType rootType,
16139     VkImageDrmFormatModifierListCreateInfoEXT* forUnmarshaling) {
16140     (void)rootType;
16141     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16142     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16143         rootType = forUnmarshaling->sType;
16144     }
16145     size_t pNext_size;
16146     pNext_size = vkStream->getBe32();
16147     forUnmarshaling->pNext = nullptr;
16148     if (pNext_size) {
16149         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16150         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16151         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16152         vkStream->alloc((void**)&forUnmarshaling->pNext,
16153                         goldfish_vk_extension_struct_size_with_stream_features(
16154                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16155         *(VkStructureType*)forUnmarshaling->pNext = extType;
16156         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16157     }
16158     vkStream->read((uint32_t*)&forUnmarshaling->drmFormatModifierCount, sizeof(uint32_t));
16159     vkStream->alloc((void**)&forUnmarshaling->pDrmFormatModifiers,
16160                     forUnmarshaling->drmFormatModifierCount * sizeof(const uint64_t));
16161     vkStream->read((uint64_t*)forUnmarshaling->pDrmFormatModifiers,
16162                    forUnmarshaling->drmFormatModifierCount * sizeof(const uint64_t));
16163 }
16164 
marshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImageDrmFormatModifierExplicitCreateInfoEXT * forMarshaling)16165 void marshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
16166     VulkanStream* vkStream, VkStructureType rootType,
16167     const VkImageDrmFormatModifierExplicitCreateInfoEXT* forMarshaling) {
16168     (void)rootType;
16169     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16170     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16171         rootType = forMarshaling->sType;
16172     }
16173     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16174     vkStream->write((uint64_t*)&forMarshaling->drmFormatModifier, sizeof(uint64_t));
16175     vkStream->write((uint32_t*)&forMarshaling->drmFormatModifierPlaneCount, sizeof(uint32_t));
16176     if (forMarshaling) {
16177         for (uint32_t i = 0; i < (uint32_t)forMarshaling->drmFormatModifierPlaneCount; ++i) {
16178             marshal_VkSubresourceLayout(
16179                 vkStream, rootType, (const VkSubresourceLayout*)(forMarshaling->pPlaneLayouts + i));
16180         }
16181     }
16182 }
16183 
unmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageDrmFormatModifierExplicitCreateInfoEXT * forUnmarshaling)16184 void unmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
16185     VulkanStream* vkStream, VkStructureType rootType,
16186     VkImageDrmFormatModifierExplicitCreateInfoEXT* forUnmarshaling) {
16187     (void)rootType;
16188     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16189     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16190         rootType = forUnmarshaling->sType;
16191     }
16192     size_t pNext_size;
16193     pNext_size = vkStream->getBe32();
16194     forUnmarshaling->pNext = nullptr;
16195     if (pNext_size) {
16196         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16197         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16198         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16199         vkStream->alloc((void**)&forUnmarshaling->pNext,
16200                         goldfish_vk_extension_struct_size_with_stream_features(
16201                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16202         *(VkStructureType*)forUnmarshaling->pNext = extType;
16203         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16204     }
16205     vkStream->read((uint64_t*)&forUnmarshaling->drmFormatModifier, sizeof(uint64_t));
16206     vkStream->read((uint32_t*)&forUnmarshaling->drmFormatModifierPlaneCount, sizeof(uint32_t));
16207     vkStream->alloc(
16208         (void**)&forUnmarshaling->pPlaneLayouts,
16209         forUnmarshaling->drmFormatModifierPlaneCount * sizeof(const VkSubresourceLayout));
16210     if (forUnmarshaling) {
16211         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->drmFormatModifierPlaneCount; ++i) {
16212             unmarshal_VkSubresourceLayout(
16213                 vkStream, rootType, (VkSubresourceLayout*)(forUnmarshaling->pPlaneLayouts + i));
16214         }
16215     }
16216 }
16217 
marshal_VkImageDrmFormatModifierPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImageDrmFormatModifierPropertiesEXT * forMarshaling)16218 void marshal_VkImageDrmFormatModifierPropertiesEXT(
16219     VulkanStream* vkStream, VkStructureType rootType,
16220     const VkImageDrmFormatModifierPropertiesEXT* forMarshaling) {
16221     (void)rootType;
16222     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16223     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16224         rootType = forMarshaling->sType;
16225     }
16226     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16227     vkStream->write((uint64_t*)&forMarshaling->drmFormatModifier, sizeof(uint64_t));
16228 }
16229 
unmarshal_VkImageDrmFormatModifierPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageDrmFormatModifierPropertiesEXT * forUnmarshaling)16230 void unmarshal_VkImageDrmFormatModifierPropertiesEXT(
16231     VulkanStream* vkStream, VkStructureType rootType,
16232     VkImageDrmFormatModifierPropertiesEXT* forUnmarshaling) {
16233     (void)rootType;
16234     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16235     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16236         rootType = forUnmarshaling->sType;
16237     }
16238     size_t pNext_size;
16239     pNext_size = vkStream->getBe32();
16240     forUnmarshaling->pNext = nullptr;
16241     if (pNext_size) {
16242         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16243         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16244         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16245         vkStream->alloc((void**)&forUnmarshaling->pNext,
16246                         goldfish_vk_extension_struct_size_with_stream_features(
16247                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16248         *(VkStructureType*)forUnmarshaling->pNext = extType;
16249         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16250     }
16251     vkStream->read((uint64_t*)&forUnmarshaling->drmFormatModifier, sizeof(uint64_t));
16252 }
16253 
marshal_VkDrmFormatModifierProperties2EXT(VulkanStream * vkStream,VkStructureType rootType,const VkDrmFormatModifierProperties2EXT * forMarshaling)16254 void marshal_VkDrmFormatModifierProperties2EXT(
16255     VulkanStream* vkStream, VkStructureType rootType,
16256     const VkDrmFormatModifierProperties2EXT* forMarshaling) {
16257     (void)rootType;
16258     vkStream->write((uint64_t*)&forMarshaling->drmFormatModifier, sizeof(uint64_t));
16259     vkStream->write((uint32_t*)&forMarshaling->drmFormatModifierPlaneCount, sizeof(uint32_t));
16260     vkStream->write((VkFormatFeatureFlags2*)&forMarshaling->drmFormatModifierTilingFeatures,
16261                     sizeof(VkFormatFeatureFlags2));
16262 }
16263 
unmarshal_VkDrmFormatModifierProperties2EXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierProperties2EXT * forUnmarshaling)16264 void unmarshal_VkDrmFormatModifierProperties2EXT(
16265     VulkanStream* vkStream, VkStructureType rootType,
16266     VkDrmFormatModifierProperties2EXT* forUnmarshaling) {
16267     (void)rootType;
16268     vkStream->read((uint64_t*)&forUnmarshaling->drmFormatModifier, sizeof(uint64_t));
16269     vkStream->read((uint32_t*)&forUnmarshaling->drmFormatModifierPlaneCount, sizeof(uint32_t));
16270     vkStream->read((VkFormatFeatureFlags2*)&forUnmarshaling->drmFormatModifierTilingFeatures,
16271                    sizeof(VkFormatFeatureFlags2));
16272 }
16273 
marshal_VkDrmFormatModifierPropertiesList2EXT(VulkanStream * vkStream,VkStructureType rootType,const VkDrmFormatModifierPropertiesList2EXT * forMarshaling)16274 void marshal_VkDrmFormatModifierPropertiesList2EXT(
16275     VulkanStream* vkStream, VkStructureType rootType,
16276     const VkDrmFormatModifierPropertiesList2EXT* forMarshaling) {
16277     (void)rootType;
16278     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16279     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16280         rootType = forMarshaling->sType;
16281     }
16282     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16283     vkStream->write((uint32_t*)&forMarshaling->drmFormatModifierCount, sizeof(uint32_t));
16284     // WARNING PTR CHECK
16285     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pDrmFormatModifierProperties;
16286     vkStream->putBe64(cgen_var_0);
16287     if (forMarshaling->pDrmFormatModifierProperties) {
16288         if (forMarshaling) {
16289             for (uint32_t i = 0; i < (uint32_t)forMarshaling->drmFormatModifierCount; ++i) {
16290                 marshal_VkDrmFormatModifierProperties2EXT(
16291                     vkStream, rootType,
16292                     (VkDrmFormatModifierProperties2EXT*)(forMarshaling
16293                                                              ->pDrmFormatModifierProperties +
16294                                                          i));
16295             }
16296         }
16297     }
16298 }
16299 
unmarshal_VkDrmFormatModifierPropertiesList2EXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierPropertiesList2EXT * forUnmarshaling)16300 void unmarshal_VkDrmFormatModifierPropertiesList2EXT(
16301     VulkanStream* vkStream, VkStructureType rootType,
16302     VkDrmFormatModifierPropertiesList2EXT* forUnmarshaling) {
16303     (void)rootType;
16304     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16305     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16306         rootType = forUnmarshaling->sType;
16307     }
16308     size_t pNext_size;
16309     pNext_size = vkStream->getBe32();
16310     forUnmarshaling->pNext = nullptr;
16311     if (pNext_size) {
16312         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16313         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16314         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16315         vkStream->alloc((void**)&forUnmarshaling->pNext,
16316                         goldfish_vk_extension_struct_size_with_stream_features(
16317                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16318         *(VkStructureType*)forUnmarshaling->pNext = extType;
16319         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16320     }
16321     vkStream->read((uint32_t*)&forUnmarshaling->drmFormatModifierCount, sizeof(uint32_t));
16322     // WARNING PTR CHECK
16323     forUnmarshaling->pDrmFormatModifierProperties =
16324         (VkDrmFormatModifierProperties2EXT*)(uintptr_t)vkStream->getBe64();
16325     if (forUnmarshaling->pDrmFormatModifierProperties) {
16326         vkStream->alloc(
16327             (void**)&forUnmarshaling->pDrmFormatModifierProperties,
16328             forUnmarshaling->drmFormatModifierCount * sizeof(VkDrmFormatModifierProperties2EXT));
16329         if (forUnmarshaling) {
16330             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->drmFormatModifierCount; ++i) {
16331                 unmarshal_VkDrmFormatModifierProperties2EXT(
16332                     vkStream, rootType,
16333                     (VkDrmFormatModifierProperties2EXT*)(forUnmarshaling
16334                                                              ->pDrmFormatModifierProperties +
16335                                                          i));
16336             }
16337         }
16338     }
16339 }
16340 
16341 #endif
16342 #ifdef VK_EXT_external_memory_host
marshal_VkImportMemoryHostPointerInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImportMemoryHostPointerInfoEXT * forMarshaling)16343 void marshal_VkImportMemoryHostPointerInfoEXT(
16344     VulkanStream* vkStream, VkStructureType rootType,
16345     const VkImportMemoryHostPointerInfoEXT* forMarshaling) {
16346     (void)rootType;
16347     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16348     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16349         rootType = forMarshaling->sType;
16350     }
16351     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16352     vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType,
16353                     sizeof(VkExternalMemoryHandleTypeFlagBits));
16354     vkStream->write((void*)forMarshaling->pHostPointer, sizeof(uint8_t));
16355 }
16356 
unmarshal_VkImportMemoryHostPointerInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkImportMemoryHostPointerInfoEXT * forUnmarshaling)16357 void unmarshal_VkImportMemoryHostPointerInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
16358                                                 VkImportMemoryHostPointerInfoEXT* forUnmarshaling) {
16359     (void)rootType;
16360     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16361     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16362         rootType = forUnmarshaling->sType;
16363     }
16364     size_t pNext_size;
16365     pNext_size = vkStream->getBe32();
16366     forUnmarshaling->pNext = nullptr;
16367     if (pNext_size) {
16368         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16369         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16370         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16371         vkStream->alloc((void**)&forUnmarshaling->pNext,
16372                         goldfish_vk_extension_struct_size_with_stream_features(
16373                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16374         *(VkStructureType*)forUnmarshaling->pNext = extType;
16375         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16376     }
16377     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType,
16378                    sizeof(VkExternalMemoryHandleTypeFlagBits));
16379     vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(uint8_t));
16380     vkStream->read((void*)forUnmarshaling->pHostPointer, sizeof(uint8_t));
16381 }
16382 
marshal_VkMemoryHostPointerPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryHostPointerPropertiesEXT * forMarshaling)16383 void marshal_VkMemoryHostPointerPropertiesEXT(
16384     VulkanStream* vkStream, VkStructureType rootType,
16385     const VkMemoryHostPointerPropertiesEXT* forMarshaling) {
16386     (void)rootType;
16387     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16388     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16389         rootType = forMarshaling->sType;
16390     }
16391     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16392     vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
16393 }
16394 
unmarshal_VkMemoryHostPointerPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkMemoryHostPointerPropertiesEXT * forUnmarshaling)16395 void unmarshal_VkMemoryHostPointerPropertiesEXT(VulkanStream* vkStream, VkStructureType rootType,
16396                                                 VkMemoryHostPointerPropertiesEXT* forUnmarshaling) {
16397     (void)rootType;
16398     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16399     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16400         rootType = forUnmarshaling->sType;
16401     }
16402     size_t pNext_size;
16403     pNext_size = vkStream->getBe32();
16404     forUnmarshaling->pNext = nullptr;
16405     if (pNext_size) {
16406         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16407         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16408         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16409         vkStream->alloc((void**)&forUnmarshaling->pNext,
16410                         goldfish_vk_extension_struct_size_with_stream_features(
16411                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16412         *(VkStructureType*)forUnmarshaling->pNext = extType;
16413         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16414     }
16415     vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
16416 }
16417 
marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExternalMemoryHostPropertiesEXT * forMarshaling)16418 void marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
16419     VulkanStream* vkStream, VkStructureType rootType,
16420     const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling) {
16421     (void)rootType;
16422     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16423     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16424         rootType = forMarshaling->sType;
16425     }
16426     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16427     vkStream->write((VkDeviceSize*)&forMarshaling->minImportedHostPointerAlignment,
16428                     sizeof(VkDeviceSize));
16429 }
16430 
unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalMemoryHostPropertiesEXT * forUnmarshaling)16431 void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
16432     VulkanStream* vkStream, VkStructureType rootType,
16433     VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling) {
16434     (void)rootType;
16435     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16436     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16437         rootType = forUnmarshaling->sType;
16438     }
16439     size_t pNext_size;
16440     pNext_size = vkStream->getBe32();
16441     forUnmarshaling->pNext = nullptr;
16442     if (pNext_size) {
16443         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16444         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16445         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16446         vkStream->alloc((void**)&forUnmarshaling->pNext,
16447                         goldfish_vk_extension_struct_size_with_stream_features(
16448                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16449         *(VkStructureType*)forUnmarshaling->pNext = extType;
16450         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16451     }
16452     vkStream->read((VkDeviceSize*)&forUnmarshaling->minImportedHostPointerAlignment,
16453                    sizeof(VkDeviceSize));
16454 }
16455 
16456 #endif
16457 #ifdef VK_EXT_vertex_attribute_divisor
marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT * forMarshaling)16458 void marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
16459     VulkanStream* vkStream, VkStructureType rootType,
16460     const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling) {
16461     (void)rootType;
16462     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16463     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16464         rootType = forMarshaling->sType;
16465     }
16466     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16467     vkStream->write((uint32_t*)&forMarshaling->maxVertexAttribDivisor, sizeof(uint32_t));
16468 }
16469 
unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT * forUnmarshaling)16470 void unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
16471     VulkanStream* vkStream, VkStructureType rootType,
16472     VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling) {
16473     (void)rootType;
16474     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16475     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16476         rootType = forUnmarshaling->sType;
16477     }
16478     size_t pNext_size;
16479     pNext_size = vkStream->getBe32();
16480     forUnmarshaling->pNext = nullptr;
16481     if (pNext_size) {
16482         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16483         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16484         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16485         vkStream->alloc((void**)&forUnmarshaling->pNext,
16486                         goldfish_vk_extension_struct_size_with_stream_features(
16487                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16488         *(VkStructureType*)forUnmarshaling->pNext = extType;
16489         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16490     }
16491     vkStream->read((uint32_t*)&forUnmarshaling->maxVertexAttribDivisor, sizeof(uint32_t));
16492 }
16493 
marshal_VkVertexInputBindingDivisorDescriptionEXT(VulkanStream * vkStream,VkStructureType rootType,const VkVertexInputBindingDivisorDescriptionEXT * forMarshaling)16494 void marshal_VkVertexInputBindingDivisorDescriptionEXT(
16495     VulkanStream* vkStream, VkStructureType rootType,
16496     const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling) {
16497     (void)rootType;
16498     vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
16499     vkStream->write((uint32_t*)&forMarshaling->divisor, sizeof(uint32_t));
16500 }
16501 
unmarshal_VkVertexInputBindingDivisorDescriptionEXT(VulkanStream * vkStream,VkStructureType rootType,VkVertexInputBindingDivisorDescriptionEXT * forUnmarshaling)16502 void unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
16503     VulkanStream* vkStream, VkStructureType rootType,
16504     VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling) {
16505     (void)rootType;
16506     vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
16507     vkStream->read((uint32_t*)&forUnmarshaling->divisor, sizeof(uint32_t));
16508 }
16509 
marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineVertexInputDivisorStateCreateInfoEXT * forMarshaling)16510 void marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
16511     VulkanStream* vkStream, VkStructureType rootType,
16512     const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling) {
16513     (void)rootType;
16514     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16515     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16516         rootType = forMarshaling->sType;
16517     }
16518     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16519     vkStream->write((uint32_t*)&forMarshaling->vertexBindingDivisorCount, sizeof(uint32_t));
16520     if (forMarshaling) {
16521         for (uint32_t i = 0; i < (uint32_t)forMarshaling->vertexBindingDivisorCount; ++i) {
16522             marshal_VkVertexInputBindingDivisorDescriptionEXT(
16523                 vkStream, rootType,
16524                 (const VkVertexInputBindingDivisorDescriptionEXT*)(forMarshaling
16525                                                                        ->pVertexBindingDivisors +
16526                                                                    i));
16527         }
16528     }
16529 }
16530 
unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineVertexInputDivisorStateCreateInfoEXT * forUnmarshaling)16531 void unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
16532     VulkanStream* vkStream, VkStructureType rootType,
16533     VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling) {
16534     (void)rootType;
16535     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16536     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16537         rootType = forUnmarshaling->sType;
16538     }
16539     size_t pNext_size;
16540     pNext_size = vkStream->getBe32();
16541     forUnmarshaling->pNext = nullptr;
16542     if (pNext_size) {
16543         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16544         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16545         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16546         vkStream->alloc((void**)&forUnmarshaling->pNext,
16547                         goldfish_vk_extension_struct_size_with_stream_features(
16548                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16549         *(VkStructureType*)forUnmarshaling->pNext = extType;
16550         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16551     }
16552     vkStream->read((uint32_t*)&forUnmarshaling->vertexBindingDivisorCount, sizeof(uint32_t));
16553     vkStream->alloc((void**)&forUnmarshaling->pVertexBindingDivisors,
16554                     forUnmarshaling->vertexBindingDivisorCount *
16555                         sizeof(const VkVertexInputBindingDivisorDescriptionEXT));
16556     if (forUnmarshaling) {
16557         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexBindingDivisorCount; ++i) {
16558             unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
16559                 vkStream, rootType,
16560                 (VkVertexInputBindingDivisorDescriptionEXT*)(forUnmarshaling
16561                                                                  ->pVertexBindingDivisors +
16562                                                              i));
16563         }
16564     }
16565 }
16566 
marshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT * forMarshaling)16567 void marshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
16568     VulkanStream* vkStream, VkStructureType rootType,
16569     const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* forMarshaling) {
16570     (void)rootType;
16571     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16572     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16573         rootType = forMarshaling->sType;
16574     }
16575     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16576     vkStream->write((VkBool32*)&forMarshaling->vertexAttributeInstanceRateDivisor,
16577                     sizeof(VkBool32));
16578     vkStream->write((VkBool32*)&forMarshaling->vertexAttributeInstanceRateZeroDivisor,
16579                     sizeof(VkBool32));
16580 }
16581 
unmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT * forUnmarshaling)16582 void unmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
16583     VulkanStream* vkStream, VkStructureType rootType,
16584     VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* forUnmarshaling) {
16585     (void)rootType;
16586     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16587     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16588         rootType = forUnmarshaling->sType;
16589     }
16590     size_t pNext_size;
16591     pNext_size = vkStream->getBe32();
16592     forUnmarshaling->pNext = nullptr;
16593     if (pNext_size) {
16594         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16595         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16596         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16597         vkStream->alloc((void**)&forUnmarshaling->pNext,
16598                         goldfish_vk_extension_struct_size_with_stream_features(
16599                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16600         *(VkStructureType*)forUnmarshaling->pNext = extType;
16601         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16602     }
16603     vkStream->read((VkBool32*)&forUnmarshaling->vertexAttributeInstanceRateDivisor,
16604                    sizeof(VkBool32));
16605     vkStream->read((VkBool32*)&forUnmarshaling->vertexAttributeInstanceRateZeroDivisor,
16606                    sizeof(VkBool32));
16607 }
16608 
16609 #endif
16610 #ifdef VK_EXT_fragment_density_map
marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceFragmentDensityMapFeaturesEXT * forMarshaling)16611 void marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
16612     VulkanStream* vkStream, VkStructureType rootType,
16613     const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling) {
16614     (void)rootType;
16615     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16616     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16617         rootType = forMarshaling->sType;
16618     }
16619     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16620     vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMap, sizeof(VkBool32));
16621     vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
16622     vkStream->write((VkBool32*)&forMarshaling->fragmentDensityMapNonSubsampledImages,
16623                     sizeof(VkBool32));
16624 }
16625 
unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFragmentDensityMapFeaturesEXT * forUnmarshaling)16626 void unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
16627     VulkanStream* vkStream, VkStructureType rootType,
16628     VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling) {
16629     (void)rootType;
16630     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16631     forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
16632     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16633         rootType = forUnmarshaling->sType;
16634     }
16635     size_t pNext_size;
16636     pNext_size = vkStream->getBe32();
16637     forUnmarshaling->pNext = nullptr;
16638     if (pNext_size) {
16639         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16640         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16641         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16642         vkStream->alloc((void**)&forUnmarshaling->pNext,
16643                         goldfish_vk_extension_struct_size_with_stream_features(
16644                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16645         *(VkStructureType*)forUnmarshaling->pNext = extType;
16646         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16647     }
16648     vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMap, sizeof(VkBool32));
16649     vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMapDynamic, sizeof(VkBool32));
16650     vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityMapNonSubsampledImages,
16651                    sizeof(VkBool32));
16652 }
16653 
marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceFragmentDensityMapPropertiesEXT * forMarshaling)16654 void marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
16655     VulkanStream* vkStream, VkStructureType rootType,
16656     const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling) {
16657     (void)rootType;
16658     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16659     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16660         rootType = forMarshaling->sType;
16661     }
16662     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16663     marshal_VkExtent2D(vkStream, rootType,
16664                        (VkExtent2D*)(&forMarshaling->minFragmentDensityTexelSize));
16665     marshal_VkExtent2D(vkStream, rootType,
16666                        (VkExtent2D*)(&forMarshaling->maxFragmentDensityTexelSize));
16667     vkStream->write((VkBool32*)&forMarshaling->fragmentDensityInvocations, sizeof(VkBool32));
16668 }
16669 
unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFragmentDensityMapPropertiesEXT * forUnmarshaling)16670 void unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
16671     VulkanStream* vkStream, VkStructureType rootType,
16672     VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling) {
16673     (void)rootType;
16674     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16675     forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
16676     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16677         rootType = forUnmarshaling->sType;
16678     }
16679     size_t pNext_size;
16680     pNext_size = vkStream->getBe32();
16681     forUnmarshaling->pNext = nullptr;
16682     if (pNext_size) {
16683         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16684         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16685         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16686         vkStream->alloc((void**)&forUnmarshaling->pNext,
16687                         goldfish_vk_extension_struct_size_with_stream_features(
16688                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16689         *(VkStructureType*)forUnmarshaling->pNext = extType;
16690         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16691     }
16692     unmarshal_VkExtent2D(vkStream, rootType,
16693                          (VkExtent2D*)(&forUnmarshaling->minFragmentDensityTexelSize));
16694     unmarshal_VkExtent2D(vkStream, rootType,
16695                          (VkExtent2D*)(&forUnmarshaling->maxFragmentDensityTexelSize));
16696     vkStream->read((VkBool32*)&forUnmarshaling->fragmentDensityInvocations, sizeof(VkBool32));
16697 }
16698 
marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkRenderPassFragmentDensityMapCreateInfoEXT * forMarshaling)16699 void marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
16700     VulkanStream* vkStream, VkStructureType rootType,
16701     const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling) {
16702     (void)rootType;
16703     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16704     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16705         rootType = forMarshaling->sType;
16706     }
16707     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16708     marshal_VkAttachmentReference(
16709         vkStream, rootType, (VkAttachmentReference*)(&forMarshaling->fragmentDensityMapAttachment));
16710 }
16711 
unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassFragmentDensityMapCreateInfoEXT * forUnmarshaling)16712 void unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
16713     VulkanStream* vkStream, VkStructureType rootType,
16714     VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling) {
16715     (void)rootType;
16716     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16717     forUnmarshaling->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
16718     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16719         rootType = forUnmarshaling->sType;
16720     }
16721     size_t pNext_size;
16722     pNext_size = vkStream->getBe32();
16723     forUnmarshaling->pNext = nullptr;
16724     if (pNext_size) {
16725         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16726         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16727         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16728         vkStream->alloc((void**)&forUnmarshaling->pNext,
16729                         goldfish_vk_extension_struct_size_with_stream_features(
16730                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16731         *(VkStructureType*)forUnmarshaling->pNext = extType;
16732         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16733     }
16734     unmarshal_VkAttachmentReference(
16735         vkStream, rootType,
16736         (VkAttachmentReference*)(&forUnmarshaling->fragmentDensityMapAttachment));
16737 }
16738 
16739 #endif
16740 #ifdef VK_EXT_validation_features
marshal_VkValidationFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkValidationFeaturesEXT * forMarshaling)16741 void marshal_VkValidationFeaturesEXT(VulkanStream* vkStream, VkStructureType rootType,
16742                                      const VkValidationFeaturesEXT* forMarshaling) {
16743     (void)rootType;
16744     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16745     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16746         rootType = forMarshaling->sType;
16747     }
16748     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16749     vkStream->write((uint32_t*)&forMarshaling->enabledValidationFeatureCount, sizeof(uint32_t));
16750     vkStream->write(
16751         (const VkValidationFeatureEnableEXT*)forMarshaling->pEnabledValidationFeatures,
16752         forMarshaling->enabledValidationFeatureCount * sizeof(const VkValidationFeatureEnableEXT));
16753     vkStream->write((uint32_t*)&forMarshaling->disabledValidationFeatureCount, sizeof(uint32_t));
16754     vkStream->write(
16755         (const VkValidationFeatureDisableEXT*)forMarshaling->pDisabledValidationFeatures,
16756         forMarshaling->disabledValidationFeatureCount *
16757             sizeof(const VkValidationFeatureDisableEXT));
16758 }
16759 
unmarshal_VkValidationFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkValidationFeaturesEXT * forUnmarshaling)16760 void unmarshal_VkValidationFeaturesEXT(VulkanStream* vkStream, VkStructureType rootType,
16761                                        VkValidationFeaturesEXT* forUnmarshaling) {
16762     (void)rootType;
16763     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16764     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16765         rootType = forUnmarshaling->sType;
16766     }
16767     size_t pNext_size;
16768     pNext_size = vkStream->getBe32();
16769     forUnmarshaling->pNext = nullptr;
16770     if (pNext_size) {
16771         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16772         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16773         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16774         vkStream->alloc((void**)&forUnmarshaling->pNext,
16775                         goldfish_vk_extension_struct_size_with_stream_features(
16776                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16777         *(VkStructureType*)forUnmarshaling->pNext = extType;
16778         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16779     }
16780     vkStream->read((uint32_t*)&forUnmarshaling->enabledValidationFeatureCount, sizeof(uint32_t));
16781     vkStream->alloc((void**)&forUnmarshaling->pEnabledValidationFeatures,
16782                     forUnmarshaling->enabledValidationFeatureCount *
16783                         sizeof(const VkValidationFeatureEnableEXT));
16784     vkStream->read((VkValidationFeatureEnableEXT*)forUnmarshaling->pEnabledValidationFeatures,
16785                    forUnmarshaling->enabledValidationFeatureCount *
16786                        sizeof(const VkValidationFeatureEnableEXT));
16787     vkStream->read((uint32_t*)&forUnmarshaling->disabledValidationFeatureCount, sizeof(uint32_t));
16788     vkStream->alloc((void**)&forUnmarshaling->pDisabledValidationFeatures,
16789                     forUnmarshaling->disabledValidationFeatureCount *
16790                         sizeof(const VkValidationFeatureDisableEXT));
16791     vkStream->read((VkValidationFeatureDisableEXT*)forUnmarshaling->pDisabledValidationFeatures,
16792                    forUnmarshaling->disabledValidationFeatureCount *
16793                        sizeof(const VkValidationFeatureDisableEXT));
16794 }
16795 
16796 #endif
16797 #ifdef VK_EXT_provoking_vertex
marshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceProvokingVertexFeaturesEXT * forMarshaling)16798 void marshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
16799     VulkanStream* vkStream, VkStructureType rootType,
16800     const VkPhysicalDeviceProvokingVertexFeaturesEXT* forMarshaling) {
16801     (void)rootType;
16802     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16803     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16804         rootType = forMarshaling->sType;
16805     }
16806     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16807     vkStream->write((VkBool32*)&forMarshaling->provokingVertexLast, sizeof(VkBool32));
16808     vkStream->write((VkBool32*)&forMarshaling->transformFeedbackPreservesProvokingVertex,
16809                     sizeof(VkBool32));
16810 }
16811 
unmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProvokingVertexFeaturesEXT * forUnmarshaling)16812 void unmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
16813     VulkanStream* vkStream, VkStructureType rootType,
16814     VkPhysicalDeviceProvokingVertexFeaturesEXT* forUnmarshaling) {
16815     (void)rootType;
16816     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16817     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16818         rootType = forUnmarshaling->sType;
16819     }
16820     size_t pNext_size;
16821     pNext_size = vkStream->getBe32();
16822     forUnmarshaling->pNext = nullptr;
16823     if (pNext_size) {
16824         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16825         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16826         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16827         vkStream->alloc((void**)&forUnmarshaling->pNext,
16828                         goldfish_vk_extension_struct_size_with_stream_features(
16829                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16830         *(VkStructureType*)forUnmarshaling->pNext = extType;
16831         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16832     }
16833     vkStream->read((VkBool32*)&forUnmarshaling->provokingVertexLast, sizeof(VkBool32));
16834     vkStream->read((VkBool32*)&forUnmarshaling->transformFeedbackPreservesProvokingVertex,
16835                    sizeof(VkBool32));
16836 }
16837 
marshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceProvokingVertexPropertiesEXT * forMarshaling)16838 void marshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
16839     VulkanStream* vkStream, VkStructureType rootType,
16840     const VkPhysicalDeviceProvokingVertexPropertiesEXT* forMarshaling) {
16841     (void)rootType;
16842     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16843     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16844         rootType = forMarshaling->sType;
16845     }
16846     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16847     vkStream->write((VkBool32*)&forMarshaling->provokingVertexModePerPipeline, sizeof(VkBool32));
16848     vkStream->write((VkBool32*)&forMarshaling->transformFeedbackPreservesTriangleFanProvokingVertex,
16849                     sizeof(VkBool32));
16850 }
16851 
unmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProvokingVertexPropertiesEXT * forUnmarshaling)16852 void unmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
16853     VulkanStream* vkStream, VkStructureType rootType,
16854     VkPhysicalDeviceProvokingVertexPropertiesEXT* forUnmarshaling) {
16855     (void)rootType;
16856     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16857     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16858         rootType = forUnmarshaling->sType;
16859     }
16860     size_t pNext_size;
16861     pNext_size = vkStream->getBe32();
16862     forUnmarshaling->pNext = nullptr;
16863     if (pNext_size) {
16864         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16865         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16866         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16867         vkStream->alloc((void**)&forUnmarshaling->pNext,
16868                         goldfish_vk_extension_struct_size_with_stream_features(
16869                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16870         *(VkStructureType*)forUnmarshaling->pNext = extType;
16871         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16872     }
16873     vkStream->read((VkBool32*)&forUnmarshaling->provokingVertexModePerPipeline, sizeof(VkBool32));
16874     vkStream->read(
16875         (VkBool32*)&forUnmarshaling->transformFeedbackPreservesTriangleFanProvokingVertex,
16876         sizeof(VkBool32));
16877 }
16878 
marshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT * forMarshaling)16879 void marshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
16880     VulkanStream* vkStream, VkStructureType rootType,
16881     const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* forMarshaling) {
16882     (void)rootType;
16883     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16884     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16885         rootType = forMarshaling->sType;
16886     }
16887     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16888     vkStream->write((VkProvokingVertexModeEXT*)&forMarshaling->provokingVertexMode,
16889                     sizeof(VkProvokingVertexModeEXT));
16890 }
16891 
unmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationProvokingVertexStateCreateInfoEXT * forUnmarshaling)16892 void unmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
16893     VulkanStream* vkStream, VkStructureType rootType,
16894     VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* forUnmarshaling) {
16895     (void)rootType;
16896     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16897     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16898         rootType = forUnmarshaling->sType;
16899     }
16900     size_t pNext_size;
16901     pNext_size = vkStream->getBe32();
16902     forUnmarshaling->pNext = nullptr;
16903     if (pNext_size) {
16904         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16905         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16906         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16907         vkStream->alloc((void**)&forUnmarshaling->pNext,
16908                         goldfish_vk_extension_struct_size_with_stream_features(
16909                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16910         *(VkStructureType*)forUnmarshaling->pNext = extType;
16911         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16912     }
16913     vkStream->read((VkProvokingVertexModeEXT*)&forUnmarshaling->provokingVertexMode,
16914                    sizeof(VkProvokingVertexModeEXT));
16915 }
16916 
16917 #endif
16918 #ifdef VK_EXT_index_type_uint8
marshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceIndexTypeUint8FeaturesEXT * forMarshaling)16919 void marshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
16920     VulkanStream* vkStream, VkStructureType rootType,
16921     const VkPhysicalDeviceIndexTypeUint8FeaturesEXT* forMarshaling) {
16922     (void)rootType;
16923     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16924     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16925         rootType = forMarshaling->sType;
16926     }
16927     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16928     vkStream->write((VkBool32*)&forMarshaling->indexTypeUint8, sizeof(VkBool32));
16929 }
16930 
unmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceIndexTypeUint8FeaturesEXT * forUnmarshaling)16931 void unmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
16932     VulkanStream* vkStream, VkStructureType rootType,
16933     VkPhysicalDeviceIndexTypeUint8FeaturesEXT* forUnmarshaling) {
16934     (void)rootType;
16935     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16936     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16937         rootType = forUnmarshaling->sType;
16938     }
16939     size_t pNext_size;
16940     pNext_size = vkStream->getBe32();
16941     forUnmarshaling->pNext = nullptr;
16942     if (pNext_size) {
16943         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16944         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16945         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16946         vkStream->alloc((void**)&forUnmarshaling->pNext,
16947                         goldfish_vk_extension_struct_size_with_stream_features(
16948                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16949         *(VkStructureType*)forUnmarshaling->pNext = extType;
16950         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16951     }
16952     vkStream->read((VkBool32*)&forUnmarshaling->indexTypeUint8, sizeof(VkBool32));
16953 }
16954 
16955 #endif
16956 #ifdef VK_EXT_extended_dynamic_state
marshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT * forMarshaling)16957 void marshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
16958     VulkanStream* vkStream, VkStructureType rootType,
16959     const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* forMarshaling) {
16960     (void)rootType;
16961     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
16962     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16963         rootType = forMarshaling->sType;
16964     }
16965     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
16966     vkStream->write((VkBool32*)&forMarshaling->extendedDynamicState, sizeof(VkBool32));
16967 }
16968 
unmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExtendedDynamicStateFeaturesEXT * forUnmarshaling)16969 void unmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
16970     VulkanStream* vkStream, VkStructureType rootType,
16971     VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* forUnmarshaling) {
16972     (void)rootType;
16973     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
16974     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
16975         rootType = forUnmarshaling->sType;
16976     }
16977     size_t pNext_size;
16978     pNext_size = vkStream->getBe32();
16979     forUnmarshaling->pNext = nullptr;
16980     if (pNext_size) {
16981         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
16982         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
16983         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
16984         vkStream->alloc((void**)&forUnmarshaling->pNext,
16985                         goldfish_vk_extension_struct_size_with_stream_features(
16986                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
16987         *(VkStructureType*)forUnmarshaling->pNext = extType;
16988         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
16989     }
16990     vkStream->read((VkBool32*)&forUnmarshaling->extendedDynamicState, sizeof(VkBool32));
16991 }
16992 
16993 #endif
16994 #ifdef VK_EXT_host_image_copy
marshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceHostImageCopyFeaturesEXT * forMarshaling)16995 void marshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(
16996     VulkanStream* vkStream, VkStructureType rootType,
16997     const VkPhysicalDeviceHostImageCopyFeaturesEXT* forMarshaling) {
16998     (void)rootType;
16999     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17000     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17001         rootType = forMarshaling->sType;
17002     }
17003     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17004     vkStream->write((VkBool32*)&forMarshaling->hostImageCopy, sizeof(VkBool32));
17005 }
17006 
unmarshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceHostImageCopyFeaturesEXT * forUnmarshaling)17007 void unmarshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(
17008     VulkanStream* vkStream, VkStructureType rootType,
17009     VkPhysicalDeviceHostImageCopyFeaturesEXT* forUnmarshaling) {
17010     (void)rootType;
17011     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17012     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17013         rootType = forUnmarshaling->sType;
17014     }
17015     size_t pNext_size;
17016     pNext_size = vkStream->getBe32();
17017     forUnmarshaling->pNext = nullptr;
17018     if (pNext_size) {
17019         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17020         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17021         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17022         vkStream->alloc((void**)&forUnmarshaling->pNext,
17023                         goldfish_vk_extension_struct_size_with_stream_features(
17024                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17025         *(VkStructureType*)forUnmarshaling->pNext = extType;
17026         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17027     }
17028     vkStream->read((VkBool32*)&forUnmarshaling->hostImageCopy, sizeof(VkBool32));
17029 }
17030 
marshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceHostImageCopyPropertiesEXT * forMarshaling)17031 void marshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(
17032     VulkanStream* vkStream, VkStructureType rootType,
17033     const VkPhysicalDeviceHostImageCopyPropertiesEXT* forMarshaling) {
17034     (void)rootType;
17035     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17036     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17037         rootType = forMarshaling->sType;
17038     }
17039     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17040     vkStream->write((uint32_t*)&forMarshaling->copySrcLayoutCount, sizeof(uint32_t));
17041     // WARNING PTR CHECK
17042     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pCopySrcLayouts;
17043     vkStream->putBe64(cgen_var_0);
17044     if (forMarshaling->pCopySrcLayouts) {
17045         vkStream->write((VkImageLayout*)forMarshaling->pCopySrcLayouts,
17046                         forMarshaling->copySrcLayoutCount * sizeof(VkImageLayout));
17047     }
17048     vkStream->write((uint32_t*)&forMarshaling->copyDstLayoutCount, sizeof(uint32_t));
17049     // WARNING PTR CHECK
17050     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pCopyDstLayouts;
17051     vkStream->putBe64(cgen_var_1);
17052     if (forMarshaling->pCopyDstLayouts) {
17053         vkStream->write((VkImageLayout*)forMarshaling->pCopyDstLayouts,
17054                         forMarshaling->copyDstLayoutCount * sizeof(VkImageLayout));
17055     }
17056     vkStream->write((uint8_t*)forMarshaling->optimalTilingLayoutUUID,
17057                     VK_UUID_SIZE * sizeof(uint8_t));
17058     vkStream->write((VkBool32*)&forMarshaling->identicalMemoryTypeRequirements, sizeof(VkBool32));
17059 }
17060 
unmarshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceHostImageCopyPropertiesEXT * forUnmarshaling)17061 void unmarshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(
17062     VulkanStream* vkStream, VkStructureType rootType,
17063     VkPhysicalDeviceHostImageCopyPropertiesEXT* forUnmarshaling) {
17064     (void)rootType;
17065     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17066     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17067         rootType = forUnmarshaling->sType;
17068     }
17069     size_t pNext_size;
17070     pNext_size = vkStream->getBe32();
17071     forUnmarshaling->pNext = nullptr;
17072     if (pNext_size) {
17073         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17074         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17075         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17076         vkStream->alloc((void**)&forUnmarshaling->pNext,
17077                         goldfish_vk_extension_struct_size_with_stream_features(
17078                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17079         *(VkStructureType*)forUnmarshaling->pNext = extType;
17080         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17081     }
17082     vkStream->read((uint32_t*)&forUnmarshaling->copySrcLayoutCount, sizeof(uint32_t));
17083     // WARNING PTR CHECK
17084     forUnmarshaling->pCopySrcLayouts = (VkImageLayout*)(uintptr_t)vkStream->getBe64();
17085     if (forUnmarshaling->pCopySrcLayouts) {
17086         vkStream->alloc((void**)&forUnmarshaling->pCopySrcLayouts,
17087                         forUnmarshaling->copySrcLayoutCount * sizeof(VkImageLayout));
17088         vkStream->read((VkImageLayout*)forUnmarshaling->pCopySrcLayouts,
17089                        forUnmarshaling->copySrcLayoutCount * sizeof(VkImageLayout));
17090     }
17091     vkStream->read((uint32_t*)&forUnmarshaling->copyDstLayoutCount, sizeof(uint32_t));
17092     // WARNING PTR CHECK
17093     forUnmarshaling->pCopyDstLayouts = (VkImageLayout*)(uintptr_t)vkStream->getBe64();
17094     if (forUnmarshaling->pCopyDstLayouts) {
17095         vkStream->alloc((void**)&forUnmarshaling->pCopyDstLayouts,
17096                         forUnmarshaling->copyDstLayoutCount * sizeof(VkImageLayout));
17097         vkStream->read((VkImageLayout*)forUnmarshaling->pCopyDstLayouts,
17098                        forUnmarshaling->copyDstLayoutCount * sizeof(VkImageLayout));
17099     }
17100     vkStream->read((uint8_t*)forUnmarshaling->optimalTilingLayoutUUID,
17101                    VK_UUID_SIZE * sizeof(uint8_t));
17102     vkStream->read((VkBool32*)&forUnmarshaling->identicalMemoryTypeRequirements, sizeof(VkBool32));
17103 }
17104 
marshal_VkMemoryToImageCopyEXT(VulkanStream * vkStream,VkStructureType rootType,const VkMemoryToImageCopyEXT * forMarshaling)17105 void marshal_VkMemoryToImageCopyEXT(VulkanStream* vkStream, VkStructureType rootType,
17106                                     const VkMemoryToImageCopyEXT* forMarshaling) {
17107     (void)rootType;
17108     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17109     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17110         rootType = forMarshaling->sType;
17111     }
17112     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17113     vkStream->write((const void*)forMarshaling->pHostPointer, sizeof(const uint8_t));
17114     vkStream->write((uint32_t*)&forMarshaling->memoryRowLength, sizeof(uint32_t));
17115     vkStream->write((uint32_t*)&forMarshaling->memoryImageHeight, sizeof(uint32_t));
17116     marshal_VkImageSubresourceLayers(vkStream, rootType,
17117                                      (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
17118     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->imageOffset));
17119     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->imageExtent));
17120 }
17121 
unmarshal_VkMemoryToImageCopyEXT(VulkanStream * vkStream,VkStructureType rootType,VkMemoryToImageCopyEXT * forUnmarshaling)17122 void unmarshal_VkMemoryToImageCopyEXT(VulkanStream* vkStream, VkStructureType rootType,
17123                                       VkMemoryToImageCopyEXT* forUnmarshaling) {
17124     (void)rootType;
17125     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17126     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17127         rootType = forUnmarshaling->sType;
17128     }
17129     size_t pNext_size;
17130     pNext_size = vkStream->getBe32();
17131     forUnmarshaling->pNext = nullptr;
17132     if (pNext_size) {
17133         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17134         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17135         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17136         vkStream->alloc((void**)&forUnmarshaling->pNext,
17137                         goldfish_vk_extension_struct_size_with_stream_features(
17138                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17139         *(VkStructureType*)forUnmarshaling->pNext = extType;
17140         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17141     }
17142     vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(const uint8_t));
17143     vkStream->read((void*)forUnmarshaling->pHostPointer, sizeof(const uint8_t));
17144     vkStream->read((uint32_t*)&forUnmarshaling->memoryRowLength, sizeof(uint32_t));
17145     vkStream->read((uint32_t*)&forUnmarshaling->memoryImageHeight, sizeof(uint32_t));
17146     unmarshal_VkImageSubresourceLayers(
17147         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
17148     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset));
17149     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent));
17150 }
17151 
marshal_VkImageToMemoryCopyEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImageToMemoryCopyEXT * forMarshaling)17152 void marshal_VkImageToMemoryCopyEXT(VulkanStream* vkStream, VkStructureType rootType,
17153                                     const VkImageToMemoryCopyEXT* forMarshaling) {
17154     (void)rootType;
17155     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17156     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17157         rootType = forMarshaling->sType;
17158     }
17159     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17160     vkStream->write((void*)forMarshaling->pHostPointer, sizeof(uint8_t));
17161     vkStream->write((uint32_t*)&forMarshaling->memoryRowLength, sizeof(uint32_t));
17162     vkStream->write((uint32_t*)&forMarshaling->memoryImageHeight, sizeof(uint32_t));
17163     marshal_VkImageSubresourceLayers(vkStream, rootType,
17164                                      (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
17165     marshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forMarshaling->imageOffset));
17166     marshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forMarshaling->imageExtent));
17167 }
17168 
unmarshal_VkImageToMemoryCopyEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageToMemoryCopyEXT * forUnmarshaling)17169 void unmarshal_VkImageToMemoryCopyEXT(VulkanStream* vkStream, VkStructureType rootType,
17170                                       VkImageToMemoryCopyEXT* forUnmarshaling) {
17171     (void)rootType;
17172     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17173     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17174         rootType = forUnmarshaling->sType;
17175     }
17176     size_t pNext_size;
17177     pNext_size = vkStream->getBe32();
17178     forUnmarshaling->pNext = nullptr;
17179     if (pNext_size) {
17180         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17181         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17182         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17183         vkStream->alloc((void**)&forUnmarshaling->pNext,
17184                         goldfish_vk_extension_struct_size_with_stream_features(
17185                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17186         *(VkStructureType*)forUnmarshaling->pNext = extType;
17187         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17188     }
17189     vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(uint8_t));
17190     vkStream->read((void*)forUnmarshaling->pHostPointer, sizeof(uint8_t));
17191     vkStream->read((uint32_t*)&forUnmarshaling->memoryRowLength, sizeof(uint32_t));
17192     vkStream->read((uint32_t*)&forUnmarshaling->memoryImageHeight, sizeof(uint32_t));
17193     unmarshal_VkImageSubresourceLayers(
17194         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
17195     unmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset));
17196     unmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent));
17197 }
17198 
marshal_VkCopyMemoryToImageInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkCopyMemoryToImageInfoEXT * forMarshaling)17199 void marshal_VkCopyMemoryToImageInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17200                                         const VkCopyMemoryToImageInfoEXT* forMarshaling) {
17201     (void)rootType;
17202     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17203     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17204         rootType = forMarshaling->sType;
17205     }
17206     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17207     vkStream->write((VkHostImageCopyFlagsEXT*)&forMarshaling->flags,
17208                     sizeof(VkHostImageCopyFlagsEXT));
17209     uint64_t cgen_var_0;
17210     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->dstImage, &cgen_var_0, 1);
17211     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
17212     vkStream->write((VkImageLayout*)&forMarshaling->dstImageLayout, sizeof(VkImageLayout));
17213     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
17214     if (forMarshaling) {
17215         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
17216             marshal_VkMemoryToImageCopyEXT(
17217                 vkStream, rootType, (const VkMemoryToImageCopyEXT*)(forMarshaling->pRegions + i));
17218         }
17219     }
17220 }
17221 
unmarshal_VkCopyMemoryToImageInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkCopyMemoryToImageInfoEXT * forUnmarshaling)17222 void unmarshal_VkCopyMemoryToImageInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17223                                           VkCopyMemoryToImageInfoEXT* forUnmarshaling) {
17224     (void)rootType;
17225     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17226     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17227         rootType = forUnmarshaling->sType;
17228     }
17229     size_t pNext_size;
17230     pNext_size = vkStream->getBe32();
17231     forUnmarshaling->pNext = nullptr;
17232     if (pNext_size) {
17233         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17234         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17235         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17236         vkStream->alloc((void**)&forUnmarshaling->pNext,
17237                         goldfish_vk_extension_struct_size_with_stream_features(
17238                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17239         *(VkStructureType*)forUnmarshaling->pNext = extType;
17240         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17241     }
17242     vkStream->read((VkHostImageCopyFlagsEXT*)&forUnmarshaling->flags,
17243                    sizeof(VkHostImageCopyFlagsEXT));
17244     uint64_t cgen_var_0;
17245     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
17246     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
17247                                                       (VkImage*)&forUnmarshaling->dstImage, 1);
17248     vkStream->read((VkImageLayout*)&forUnmarshaling->dstImageLayout, sizeof(VkImageLayout));
17249     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
17250     vkStream->alloc((void**)&forUnmarshaling->pRegions,
17251                     forUnmarshaling->regionCount * sizeof(const VkMemoryToImageCopyEXT));
17252     if (forUnmarshaling) {
17253         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
17254             unmarshal_VkMemoryToImageCopyEXT(
17255                 vkStream, rootType, (VkMemoryToImageCopyEXT*)(forUnmarshaling->pRegions + i));
17256         }
17257     }
17258 }
17259 
marshal_VkCopyImageToMemoryInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkCopyImageToMemoryInfoEXT * forMarshaling)17260 void marshal_VkCopyImageToMemoryInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17261                                         const VkCopyImageToMemoryInfoEXT* forMarshaling) {
17262     (void)rootType;
17263     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17264     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17265         rootType = forMarshaling->sType;
17266     }
17267     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17268     vkStream->write((VkHostImageCopyFlagsEXT*)&forMarshaling->flags,
17269                     sizeof(VkHostImageCopyFlagsEXT));
17270     uint64_t cgen_var_0;
17271     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->srcImage, &cgen_var_0, 1);
17272     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
17273     vkStream->write((VkImageLayout*)&forMarshaling->srcImageLayout, sizeof(VkImageLayout));
17274     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
17275     if (forMarshaling) {
17276         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
17277             marshal_VkImageToMemoryCopyEXT(
17278                 vkStream, rootType, (const VkImageToMemoryCopyEXT*)(forMarshaling->pRegions + i));
17279         }
17280     }
17281 }
17282 
unmarshal_VkCopyImageToMemoryInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageToMemoryInfoEXT * forUnmarshaling)17283 void unmarshal_VkCopyImageToMemoryInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17284                                           VkCopyImageToMemoryInfoEXT* forUnmarshaling) {
17285     (void)rootType;
17286     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17287     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17288         rootType = forUnmarshaling->sType;
17289     }
17290     size_t pNext_size;
17291     pNext_size = vkStream->getBe32();
17292     forUnmarshaling->pNext = nullptr;
17293     if (pNext_size) {
17294         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17295         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17296         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17297         vkStream->alloc((void**)&forUnmarshaling->pNext,
17298                         goldfish_vk_extension_struct_size_with_stream_features(
17299                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17300         *(VkStructureType*)forUnmarshaling->pNext = extType;
17301         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17302     }
17303     vkStream->read((VkHostImageCopyFlagsEXT*)&forUnmarshaling->flags,
17304                    sizeof(VkHostImageCopyFlagsEXT));
17305     uint64_t cgen_var_0;
17306     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
17307     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
17308                                                       (VkImage*)&forUnmarshaling->srcImage, 1);
17309     vkStream->read((VkImageLayout*)&forUnmarshaling->srcImageLayout, sizeof(VkImageLayout));
17310     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
17311     vkStream->alloc((void**)&forUnmarshaling->pRegions,
17312                     forUnmarshaling->regionCount * sizeof(const VkImageToMemoryCopyEXT));
17313     if (forUnmarshaling) {
17314         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
17315             unmarshal_VkImageToMemoryCopyEXT(
17316                 vkStream, rootType, (VkImageToMemoryCopyEXT*)(forUnmarshaling->pRegions + i));
17317         }
17318     }
17319 }
17320 
marshal_VkCopyImageToImageInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkCopyImageToImageInfoEXT * forMarshaling)17321 void marshal_VkCopyImageToImageInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17322                                        const VkCopyImageToImageInfoEXT* forMarshaling) {
17323     (void)rootType;
17324     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17325     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17326         rootType = forMarshaling->sType;
17327     }
17328     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17329     vkStream->write((VkHostImageCopyFlagsEXT*)&forMarshaling->flags,
17330                     sizeof(VkHostImageCopyFlagsEXT));
17331     uint64_t cgen_var_0;
17332     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->srcImage, &cgen_var_0, 1);
17333     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
17334     vkStream->write((VkImageLayout*)&forMarshaling->srcImageLayout, sizeof(VkImageLayout));
17335     uint64_t cgen_var_1;
17336     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->dstImage, &cgen_var_1, 1);
17337     vkStream->write((uint64_t*)&cgen_var_1, 1 * 8);
17338     vkStream->write((VkImageLayout*)&forMarshaling->dstImageLayout, sizeof(VkImageLayout));
17339     vkStream->write((uint32_t*)&forMarshaling->regionCount, sizeof(uint32_t));
17340     if (forMarshaling) {
17341         for (uint32_t i = 0; i < (uint32_t)forMarshaling->regionCount; ++i) {
17342             marshal_VkImageCopy2(vkStream, rootType,
17343                                  (const VkImageCopy2*)(forMarshaling->pRegions + i));
17344         }
17345     }
17346 }
17347 
unmarshal_VkCopyImageToImageInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageToImageInfoEXT * forUnmarshaling)17348 void unmarshal_VkCopyImageToImageInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17349                                          VkCopyImageToImageInfoEXT* forUnmarshaling) {
17350     (void)rootType;
17351     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17352     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17353         rootType = forUnmarshaling->sType;
17354     }
17355     size_t pNext_size;
17356     pNext_size = vkStream->getBe32();
17357     forUnmarshaling->pNext = nullptr;
17358     if (pNext_size) {
17359         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17360         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17361         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17362         vkStream->alloc((void**)&forUnmarshaling->pNext,
17363                         goldfish_vk_extension_struct_size_with_stream_features(
17364                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17365         *(VkStructureType*)forUnmarshaling->pNext = extType;
17366         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17367     }
17368     vkStream->read((VkHostImageCopyFlagsEXT*)&forUnmarshaling->flags,
17369                    sizeof(VkHostImageCopyFlagsEXT));
17370     uint64_t cgen_var_0;
17371     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
17372     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
17373                                                       (VkImage*)&forUnmarshaling->srcImage, 1);
17374     vkStream->read((VkImageLayout*)&forUnmarshaling->srcImageLayout, sizeof(VkImageLayout));
17375     uint64_t cgen_var_1;
17376     vkStream->read((uint64_t*)&cgen_var_1, 1 * 8);
17377     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_1,
17378                                                       (VkImage*)&forUnmarshaling->dstImage, 1);
17379     vkStream->read((VkImageLayout*)&forUnmarshaling->dstImageLayout, sizeof(VkImageLayout));
17380     vkStream->read((uint32_t*)&forUnmarshaling->regionCount, sizeof(uint32_t));
17381     vkStream->alloc((void**)&forUnmarshaling->pRegions,
17382                     forUnmarshaling->regionCount * sizeof(const VkImageCopy2));
17383     if (forUnmarshaling) {
17384         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
17385             unmarshal_VkImageCopy2(vkStream, rootType,
17386                                    (VkImageCopy2*)(forUnmarshaling->pRegions + i));
17387         }
17388     }
17389 }
17390 
marshal_VkHostImageLayoutTransitionInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkHostImageLayoutTransitionInfoEXT * forMarshaling)17391 void marshal_VkHostImageLayoutTransitionInfoEXT(
17392     VulkanStream* vkStream, VkStructureType rootType,
17393     const VkHostImageLayoutTransitionInfoEXT* forMarshaling) {
17394     (void)rootType;
17395     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17396     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17397         rootType = forMarshaling->sType;
17398     }
17399     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17400     uint64_t cgen_var_0;
17401     vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_0, 1);
17402     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
17403     vkStream->write((VkImageLayout*)&forMarshaling->oldLayout, sizeof(VkImageLayout));
17404     vkStream->write((VkImageLayout*)&forMarshaling->newLayout, sizeof(VkImageLayout));
17405     marshal_VkImageSubresourceRange(vkStream, rootType,
17406                                     (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
17407 }
17408 
unmarshal_VkHostImageLayoutTransitionInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkHostImageLayoutTransitionInfoEXT * forUnmarshaling)17409 void unmarshal_VkHostImageLayoutTransitionInfoEXT(
17410     VulkanStream* vkStream, VkStructureType rootType,
17411     VkHostImageLayoutTransitionInfoEXT* forUnmarshaling) {
17412     (void)rootType;
17413     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17414     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17415         rootType = forUnmarshaling->sType;
17416     }
17417     size_t pNext_size;
17418     pNext_size = vkStream->getBe32();
17419     forUnmarshaling->pNext = nullptr;
17420     if (pNext_size) {
17421         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17422         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17423         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17424         vkStream->alloc((void**)&forUnmarshaling->pNext,
17425                         goldfish_vk_extension_struct_size_with_stream_features(
17426                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17427         *(VkStructureType*)forUnmarshaling->pNext = extType;
17428         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17429     }
17430     uint64_t cgen_var_0;
17431     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
17432     vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_0,
17433                                                       (VkImage*)&forUnmarshaling->image, 1);
17434     vkStream->read((VkImageLayout*)&forUnmarshaling->oldLayout, sizeof(VkImageLayout));
17435     vkStream->read((VkImageLayout*)&forUnmarshaling->newLayout, sizeof(VkImageLayout));
17436     unmarshal_VkImageSubresourceRange(
17437         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
17438 }
17439 
marshal_VkSubresourceHostMemcpySizeEXT(VulkanStream * vkStream,VkStructureType rootType,const VkSubresourceHostMemcpySizeEXT * forMarshaling)17440 void marshal_VkSubresourceHostMemcpySizeEXT(VulkanStream* vkStream, VkStructureType rootType,
17441                                             const VkSubresourceHostMemcpySizeEXT* forMarshaling) {
17442     (void)rootType;
17443     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17444     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17445         rootType = forMarshaling->sType;
17446     }
17447     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17448     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
17449 }
17450 
unmarshal_VkSubresourceHostMemcpySizeEXT(VulkanStream * vkStream,VkStructureType rootType,VkSubresourceHostMemcpySizeEXT * forUnmarshaling)17451 void unmarshal_VkSubresourceHostMemcpySizeEXT(VulkanStream* vkStream, VkStructureType rootType,
17452                                               VkSubresourceHostMemcpySizeEXT* forUnmarshaling) {
17453     (void)rootType;
17454     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17455     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17456         rootType = forUnmarshaling->sType;
17457     }
17458     size_t pNext_size;
17459     pNext_size = vkStream->getBe32();
17460     forUnmarshaling->pNext = nullptr;
17461     if (pNext_size) {
17462         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17463         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17464         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17465         vkStream->alloc((void**)&forUnmarshaling->pNext,
17466                         goldfish_vk_extension_struct_size_with_stream_features(
17467                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17468         *(VkStructureType*)forUnmarshaling->pNext = extType;
17469         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17470     }
17471     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
17472 }
17473 
marshal_VkHostImageCopyDevicePerformanceQueryEXT(VulkanStream * vkStream,VkStructureType rootType,const VkHostImageCopyDevicePerformanceQueryEXT * forMarshaling)17474 void marshal_VkHostImageCopyDevicePerformanceQueryEXT(
17475     VulkanStream* vkStream, VkStructureType rootType,
17476     const VkHostImageCopyDevicePerformanceQueryEXT* forMarshaling) {
17477     (void)rootType;
17478     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17479     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17480         rootType = forMarshaling->sType;
17481     }
17482     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17483     vkStream->write((VkBool32*)&forMarshaling->optimalDeviceAccess, sizeof(VkBool32));
17484     vkStream->write((VkBool32*)&forMarshaling->identicalMemoryLayout, sizeof(VkBool32));
17485 }
17486 
unmarshal_VkHostImageCopyDevicePerformanceQueryEXT(VulkanStream * vkStream,VkStructureType rootType,VkHostImageCopyDevicePerformanceQueryEXT * forUnmarshaling)17487 void unmarshal_VkHostImageCopyDevicePerformanceQueryEXT(
17488     VulkanStream* vkStream, VkStructureType rootType,
17489     VkHostImageCopyDevicePerformanceQueryEXT* forUnmarshaling) {
17490     (void)rootType;
17491     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17492     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17493         rootType = forUnmarshaling->sType;
17494     }
17495     size_t pNext_size;
17496     pNext_size = vkStream->getBe32();
17497     forUnmarshaling->pNext = nullptr;
17498     if (pNext_size) {
17499         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17500         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17501         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17502         vkStream->alloc((void**)&forUnmarshaling->pNext,
17503                         goldfish_vk_extension_struct_size_with_stream_features(
17504                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17505         *(VkStructureType*)forUnmarshaling->pNext = extType;
17506         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17507     }
17508     vkStream->read((VkBool32*)&forUnmarshaling->optimalDeviceAccess, sizeof(VkBool32));
17509     vkStream->read((VkBool32*)&forUnmarshaling->identicalMemoryLayout, sizeof(VkBool32));
17510 }
17511 
17512 #endif
17513 #ifdef VK_EXT_swapchain_maintenance1
marshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT * forMarshaling)17514 void marshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(
17515     VulkanStream* vkStream, VkStructureType rootType,
17516     const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT* forMarshaling) {
17517     (void)rootType;
17518     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17519     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17520         rootType = forMarshaling->sType;
17521     }
17522     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17523     vkStream->write((VkBool32*)&forMarshaling->swapchainMaintenance1, sizeof(VkBool32));
17524 }
17525 
unmarshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT * forUnmarshaling)17526 void unmarshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(
17527     VulkanStream* vkStream, VkStructureType rootType,
17528     VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT* forUnmarshaling) {
17529     (void)rootType;
17530     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17531     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17532         rootType = forUnmarshaling->sType;
17533     }
17534     size_t pNext_size;
17535     pNext_size = vkStream->getBe32();
17536     forUnmarshaling->pNext = nullptr;
17537     if (pNext_size) {
17538         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17539         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17540         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17541         vkStream->alloc((void**)&forUnmarshaling->pNext,
17542                         goldfish_vk_extension_struct_size_with_stream_features(
17543                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17544         *(VkStructureType*)forUnmarshaling->pNext = extType;
17545         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17546     }
17547     vkStream->read((VkBool32*)&forUnmarshaling->swapchainMaintenance1, sizeof(VkBool32));
17548 }
17549 
marshal_VkSwapchainPresentFenceInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkSwapchainPresentFenceInfoEXT * forMarshaling)17550 void marshal_VkSwapchainPresentFenceInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17551                                             const VkSwapchainPresentFenceInfoEXT* forMarshaling) {
17552     (void)rootType;
17553     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17554     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17555         rootType = forMarshaling->sType;
17556     }
17557     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17558     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
17559     if (forMarshaling->swapchainCount) {
17560         uint64_t* cgen_var_0;
17561         vkStream->alloc((void**)&cgen_var_0, forMarshaling->swapchainCount * 8);
17562         vkStream->handleMapping()->mapHandles_VkFence_u64(forMarshaling->pFences, cgen_var_0,
17563                                                           forMarshaling->swapchainCount);
17564         vkStream->write((uint64_t*)cgen_var_0, forMarshaling->swapchainCount * 8);
17565     }
17566 }
17567 
unmarshal_VkSwapchainPresentFenceInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentFenceInfoEXT * forUnmarshaling)17568 void unmarshal_VkSwapchainPresentFenceInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17569                                               VkSwapchainPresentFenceInfoEXT* forUnmarshaling) {
17570     (void)rootType;
17571     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17572     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17573         rootType = forUnmarshaling->sType;
17574     }
17575     size_t pNext_size;
17576     pNext_size = vkStream->getBe32();
17577     forUnmarshaling->pNext = nullptr;
17578     if (pNext_size) {
17579         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17580         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17581         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17582         vkStream->alloc((void**)&forUnmarshaling->pNext,
17583                         goldfish_vk_extension_struct_size_with_stream_features(
17584                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17585         *(VkStructureType*)forUnmarshaling->pNext = extType;
17586         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17587     }
17588     vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
17589     vkStream->alloc((void**)&forUnmarshaling->pFences,
17590                     forUnmarshaling->swapchainCount * sizeof(const VkFence));
17591     if (forUnmarshaling->swapchainCount) {
17592         uint64_t* cgen_var_0;
17593         vkStream->alloc((void**)&cgen_var_0, forUnmarshaling->swapchainCount * 8);
17594         vkStream->read((uint64_t*)cgen_var_0, forUnmarshaling->swapchainCount * 8);
17595         vkStream->handleMapping()->mapHandles_u64_VkFence(
17596             cgen_var_0, (VkFence*)forUnmarshaling->pFences, forUnmarshaling->swapchainCount);
17597     }
17598 }
17599 
marshal_VkSwapchainPresentModesCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkSwapchainPresentModesCreateInfoEXT * forMarshaling)17600 void marshal_VkSwapchainPresentModesCreateInfoEXT(
17601     VulkanStream* vkStream, VkStructureType rootType,
17602     const VkSwapchainPresentModesCreateInfoEXT* forMarshaling) {
17603     (void)rootType;
17604     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17605     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17606         rootType = forMarshaling->sType;
17607     }
17608     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17609     vkStream->write((uint32_t*)&forMarshaling->presentModeCount, sizeof(uint32_t));
17610     vkStream->write((const VkPresentModeKHR*)forMarshaling->pPresentModes,
17611                     forMarshaling->presentModeCount * sizeof(const VkPresentModeKHR));
17612 }
17613 
unmarshal_VkSwapchainPresentModesCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentModesCreateInfoEXT * forUnmarshaling)17614 void unmarshal_VkSwapchainPresentModesCreateInfoEXT(
17615     VulkanStream* vkStream, VkStructureType rootType,
17616     VkSwapchainPresentModesCreateInfoEXT* forUnmarshaling) {
17617     (void)rootType;
17618     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17619     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17620         rootType = forUnmarshaling->sType;
17621     }
17622     size_t pNext_size;
17623     pNext_size = vkStream->getBe32();
17624     forUnmarshaling->pNext = nullptr;
17625     if (pNext_size) {
17626         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17627         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17628         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17629         vkStream->alloc((void**)&forUnmarshaling->pNext,
17630                         goldfish_vk_extension_struct_size_with_stream_features(
17631                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17632         *(VkStructureType*)forUnmarshaling->pNext = extType;
17633         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17634     }
17635     vkStream->read((uint32_t*)&forUnmarshaling->presentModeCount, sizeof(uint32_t));
17636     vkStream->alloc((void**)&forUnmarshaling->pPresentModes,
17637                     forUnmarshaling->presentModeCount * sizeof(const VkPresentModeKHR));
17638     vkStream->read((VkPresentModeKHR*)forUnmarshaling->pPresentModes,
17639                    forUnmarshaling->presentModeCount * sizeof(const VkPresentModeKHR));
17640 }
17641 
marshal_VkSwapchainPresentModeInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkSwapchainPresentModeInfoEXT * forMarshaling)17642 void marshal_VkSwapchainPresentModeInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17643                                            const VkSwapchainPresentModeInfoEXT* forMarshaling) {
17644     (void)rootType;
17645     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17646     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17647         rootType = forMarshaling->sType;
17648     }
17649     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17650     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
17651     vkStream->write((const VkPresentModeKHR*)forMarshaling->pPresentModes,
17652                     forMarshaling->swapchainCount * sizeof(const VkPresentModeKHR));
17653 }
17654 
unmarshal_VkSwapchainPresentModeInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentModeInfoEXT * forUnmarshaling)17655 void unmarshal_VkSwapchainPresentModeInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17656                                              VkSwapchainPresentModeInfoEXT* forUnmarshaling) {
17657     (void)rootType;
17658     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17659     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17660         rootType = forUnmarshaling->sType;
17661     }
17662     size_t pNext_size;
17663     pNext_size = vkStream->getBe32();
17664     forUnmarshaling->pNext = nullptr;
17665     if (pNext_size) {
17666         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17667         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17668         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17669         vkStream->alloc((void**)&forUnmarshaling->pNext,
17670                         goldfish_vk_extension_struct_size_with_stream_features(
17671                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17672         *(VkStructureType*)forUnmarshaling->pNext = extType;
17673         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17674     }
17675     vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
17676     vkStream->alloc((void**)&forUnmarshaling->pPresentModes,
17677                     forUnmarshaling->swapchainCount * sizeof(const VkPresentModeKHR));
17678     vkStream->read((VkPresentModeKHR*)forUnmarshaling->pPresentModes,
17679                    forUnmarshaling->swapchainCount * sizeof(const VkPresentModeKHR));
17680 }
17681 
marshal_VkSwapchainPresentScalingCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkSwapchainPresentScalingCreateInfoEXT * forMarshaling)17682 void marshal_VkSwapchainPresentScalingCreateInfoEXT(
17683     VulkanStream* vkStream, VkStructureType rootType,
17684     const VkSwapchainPresentScalingCreateInfoEXT* forMarshaling) {
17685     (void)rootType;
17686     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17687     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17688         rootType = forMarshaling->sType;
17689     }
17690     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17691     vkStream->write((VkPresentScalingFlagsEXT*)&forMarshaling->scalingBehavior,
17692                     sizeof(VkPresentScalingFlagsEXT));
17693     vkStream->write((VkPresentGravityFlagsEXT*)&forMarshaling->presentGravityX,
17694                     sizeof(VkPresentGravityFlagsEXT));
17695     vkStream->write((VkPresentGravityFlagsEXT*)&forMarshaling->presentGravityY,
17696                     sizeof(VkPresentGravityFlagsEXT));
17697 }
17698 
unmarshal_VkSwapchainPresentScalingCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentScalingCreateInfoEXT * forUnmarshaling)17699 void unmarshal_VkSwapchainPresentScalingCreateInfoEXT(
17700     VulkanStream* vkStream, VkStructureType rootType,
17701     VkSwapchainPresentScalingCreateInfoEXT* forUnmarshaling) {
17702     (void)rootType;
17703     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17704     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17705         rootType = forUnmarshaling->sType;
17706     }
17707     size_t pNext_size;
17708     pNext_size = vkStream->getBe32();
17709     forUnmarshaling->pNext = nullptr;
17710     if (pNext_size) {
17711         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17712         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17713         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17714         vkStream->alloc((void**)&forUnmarshaling->pNext,
17715                         goldfish_vk_extension_struct_size_with_stream_features(
17716                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17717         *(VkStructureType*)forUnmarshaling->pNext = extType;
17718         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17719     }
17720     vkStream->read((VkPresentScalingFlagsEXT*)&forUnmarshaling->scalingBehavior,
17721                    sizeof(VkPresentScalingFlagsEXT));
17722     vkStream->read((VkPresentGravityFlagsEXT*)&forUnmarshaling->presentGravityX,
17723                    sizeof(VkPresentGravityFlagsEXT));
17724     vkStream->read((VkPresentGravityFlagsEXT*)&forUnmarshaling->presentGravityY,
17725                    sizeof(VkPresentGravityFlagsEXT));
17726 }
17727 
marshal_VkReleaseSwapchainImagesInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkReleaseSwapchainImagesInfoEXT * forMarshaling)17728 void marshal_VkReleaseSwapchainImagesInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17729                                              const VkReleaseSwapchainImagesInfoEXT* forMarshaling) {
17730     (void)rootType;
17731     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17732     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17733         rootType = forMarshaling->sType;
17734     }
17735     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17736     uint64_t cgen_var_0;
17737     vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_0,
17738                                                              1);
17739     vkStream->write((uint64_t*)&cgen_var_0, 1 * 8);
17740     vkStream->write((uint32_t*)&forMarshaling->imageIndexCount, sizeof(uint32_t));
17741     vkStream->write((const uint32_t*)forMarshaling->pImageIndices,
17742                     forMarshaling->imageIndexCount * sizeof(const uint32_t));
17743 }
17744 
unmarshal_VkReleaseSwapchainImagesInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkReleaseSwapchainImagesInfoEXT * forUnmarshaling)17745 void unmarshal_VkReleaseSwapchainImagesInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
17746                                                VkReleaseSwapchainImagesInfoEXT* forUnmarshaling) {
17747     (void)rootType;
17748     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17749     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17750         rootType = forUnmarshaling->sType;
17751     }
17752     size_t pNext_size;
17753     pNext_size = vkStream->getBe32();
17754     forUnmarshaling->pNext = nullptr;
17755     if (pNext_size) {
17756         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17757         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17758         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17759         vkStream->alloc((void**)&forUnmarshaling->pNext,
17760                         goldfish_vk_extension_struct_size_with_stream_features(
17761                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17762         *(VkStructureType*)forUnmarshaling->pNext = extType;
17763         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17764     }
17765     uint64_t cgen_var_0;
17766     vkStream->read((uint64_t*)&cgen_var_0, 1 * 8);
17767     vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(
17768         &cgen_var_0, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
17769     vkStream->read((uint32_t*)&forUnmarshaling->imageIndexCount, sizeof(uint32_t));
17770     vkStream->alloc((void**)&forUnmarshaling->pImageIndices,
17771                     forUnmarshaling->imageIndexCount * sizeof(const uint32_t));
17772     vkStream->read((uint32_t*)forUnmarshaling->pImageIndices,
17773                    forUnmarshaling->imageIndexCount * sizeof(const uint32_t));
17774 }
17775 
17776 #endif
17777 #ifdef VK_EXT_texel_buffer_alignment
marshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT * forMarshaling)17778 void marshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
17779     VulkanStream* vkStream, VkStructureType rootType,
17780     const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* forMarshaling) {
17781     (void)rootType;
17782     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17783     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17784         rootType = forMarshaling->sType;
17785     }
17786     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17787     vkStream->write((VkBool32*)&forMarshaling->texelBufferAlignment, sizeof(VkBool32));
17788 }
17789 
unmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT * forUnmarshaling)17790 void unmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
17791     VulkanStream* vkStream, VkStructureType rootType,
17792     VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* forUnmarshaling) {
17793     (void)rootType;
17794     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17795     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17796         rootType = forUnmarshaling->sType;
17797     }
17798     size_t pNext_size;
17799     pNext_size = vkStream->getBe32();
17800     forUnmarshaling->pNext = nullptr;
17801     if (pNext_size) {
17802         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17803         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17804         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17805         vkStream->alloc((void**)&forUnmarshaling->pNext,
17806                         goldfish_vk_extension_struct_size_with_stream_features(
17807                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17808         *(VkStructureType*)forUnmarshaling->pNext = extType;
17809         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17810     }
17811     vkStream->read((VkBool32*)&forUnmarshaling->texelBufferAlignment, sizeof(VkBool32));
17812 }
17813 
17814 #endif
17815 #ifdef VK_EXT_device_memory_report
marshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT * forMarshaling)17816 void marshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
17817     VulkanStream* vkStream, VkStructureType rootType,
17818     const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* forMarshaling) {
17819     (void)rootType;
17820     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17821     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17822         rootType = forMarshaling->sType;
17823     }
17824     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17825     vkStream->write((VkBool32*)&forMarshaling->deviceMemoryReport, sizeof(VkBool32));
17826 }
17827 
unmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDeviceMemoryReportFeaturesEXT * forUnmarshaling)17828 void unmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
17829     VulkanStream* vkStream, VkStructureType rootType,
17830     VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* forUnmarshaling) {
17831     (void)rootType;
17832     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17833     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17834         rootType = forUnmarshaling->sType;
17835     }
17836     size_t pNext_size;
17837     pNext_size = vkStream->getBe32();
17838     forUnmarshaling->pNext = nullptr;
17839     if (pNext_size) {
17840         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17841         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17842         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17843         vkStream->alloc((void**)&forUnmarshaling->pNext,
17844                         goldfish_vk_extension_struct_size_with_stream_features(
17845                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17846         *(VkStructureType*)forUnmarshaling->pNext = extType;
17847         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17848     }
17849     vkStream->read((VkBool32*)&forUnmarshaling->deviceMemoryReport, sizeof(VkBool32));
17850 }
17851 
marshal_VkDeviceMemoryReportCallbackDataEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceMemoryReportCallbackDataEXT * forMarshaling)17852 void marshal_VkDeviceMemoryReportCallbackDataEXT(
17853     VulkanStream* vkStream, VkStructureType rootType,
17854     const VkDeviceMemoryReportCallbackDataEXT* forMarshaling) {
17855     (void)rootType;
17856     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17857     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17858         rootType = forMarshaling->sType;
17859     }
17860     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17861     vkStream->write((VkDeviceMemoryReportFlagsEXT*)&forMarshaling->flags,
17862                     sizeof(VkDeviceMemoryReportFlagsEXT));
17863     vkStream->write((VkDeviceMemoryReportEventTypeEXT*)&forMarshaling->type,
17864                     sizeof(VkDeviceMemoryReportEventTypeEXT));
17865     vkStream->write((uint64_t*)&forMarshaling->memoryObjectId, sizeof(uint64_t));
17866     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
17867     vkStream->write((VkObjectType*)&forMarshaling->objectType, sizeof(VkObjectType));
17868     vkStream->write((uint64_t*)&forMarshaling->objectHandle, sizeof(uint64_t));
17869     vkStream->write((uint32_t*)&forMarshaling->heapIndex, sizeof(uint32_t));
17870 }
17871 
unmarshal_VkDeviceMemoryReportCallbackDataEXT(VulkanStream * vkStream,VkStructureType rootType,VkDeviceMemoryReportCallbackDataEXT * forUnmarshaling)17872 void unmarshal_VkDeviceMemoryReportCallbackDataEXT(
17873     VulkanStream* vkStream, VkStructureType rootType,
17874     VkDeviceMemoryReportCallbackDataEXT* forUnmarshaling) {
17875     (void)rootType;
17876     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17877     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17878         rootType = forUnmarshaling->sType;
17879     }
17880     size_t pNext_size;
17881     pNext_size = vkStream->getBe32();
17882     forUnmarshaling->pNext = nullptr;
17883     if (pNext_size) {
17884         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17885         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17886         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17887         vkStream->alloc((void**)&forUnmarshaling->pNext,
17888                         goldfish_vk_extension_struct_size_with_stream_features(
17889                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17890         *(VkStructureType*)forUnmarshaling->pNext = extType;
17891         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17892     }
17893     vkStream->read((VkDeviceMemoryReportFlagsEXT*)&forUnmarshaling->flags,
17894                    sizeof(VkDeviceMemoryReportFlagsEXT));
17895     vkStream->read((VkDeviceMemoryReportEventTypeEXT*)&forUnmarshaling->type,
17896                    sizeof(VkDeviceMemoryReportEventTypeEXT));
17897     vkStream->read((uint64_t*)&forUnmarshaling->memoryObjectId, sizeof(uint64_t));
17898     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
17899     vkStream->read((VkObjectType*)&forUnmarshaling->objectType, sizeof(VkObjectType));
17900     vkStream->read((uint64_t*)&forUnmarshaling->objectHandle, sizeof(uint64_t));
17901     vkStream->read((uint32_t*)&forUnmarshaling->heapIndex, sizeof(uint32_t));
17902 }
17903 
marshal_VkDeviceDeviceMemoryReportCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkDeviceDeviceMemoryReportCreateInfoEXT * forMarshaling)17904 void marshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
17905     VulkanStream* vkStream, VkStructureType rootType,
17906     const VkDeviceDeviceMemoryReportCreateInfoEXT* forMarshaling) {
17907     (void)rootType;
17908     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17909     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17910         rootType = forMarshaling->sType;
17911     }
17912     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17913     vkStream->write((VkDeviceMemoryReportFlagsEXT*)&forMarshaling->flags,
17914                     sizeof(VkDeviceMemoryReportFlagsEXT));
17915     uint64_t cgen_var_0 = (uint64_t)forMarshaling->pfnUserCallback;
17916     vkStream->putBe64(cgen_var_0);
17917     vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
17918 }
17919 
unmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDeviceDeviceMemoryReportCreateInfoEXT * forUnmarshaling)17920 void unmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
17921     VulkanStream* vkStream, VkStructureType rootType,
17922     VkDeviceDeviceMemoryReportCreateInfoEXT* forUnmarshaling) {
17923     (void)rootType;
17924     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17925     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17926         rootType = forUnmarshaling->sType;
17927     }
17928     size_t pNext_size;
17929     pNext_size = vkStream->getBe32();
17930     forUnmarshaling->pNext = nullptr;
17931     if (pNext_size) {
17932         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17933         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17934         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17935         vkStream->alloc((void**)&forUnmarshaling->pNext,
17936                         goldfish_vk_extension_struct_size_with_stream_features(
17937                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17938         *(VkStructureType*)forUnmarshaling->pNext = extType;
17939         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17940     }
17941     vkStream->read((VkDeviceMemoryReportFlagsEXT*)&forUnmarshaling->flags,
17942                    sizeof(VkDeviceMemoryReportFlagsEXT));
17943     forUnmarshaling->pfnUserCallback = (PFN_vkDeviceMemoryReportCallbackEXT)vkStream->getBe64();
17944     vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
17945     vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
17946 }
17947 
17948 #endif
17949 #ifdef VK_EXT_robustness2
marshal_VkPhysicalDeviceRobustness2FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceRobustness2FeaturesEXT * forMarshaling)17950 void marshal_VkPhysicalDeviceRobustness2FeaturesEXT(
17951     VulkanStream* vkStream, VkStructureType rootType,
17952     const VkPhysicalDeviceRobustness2FeaturesEXT* forMarshaling) {
17953     (void)rootType;
17954     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17955     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17956         rootType = forMarshaling->sType;
17957     }
17958     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17959     vkStream->write((VkBool32*)&forMarshaling->robustBufferAccess2, sizeof(VkBool32));
17960     vkStream->write((VkBool32*)&forMarshaling->robustImageAccess2, sizeof(VkBool32));
17961     vkStream->write((VkBool32*)&forMarshaling->nullDescriptor, sizeof(VkBool32));
17962 }
17963 
unmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRobustness2FeaturesEXT * forUnmarshaling)17964 void unmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(
17965     VulkanStream* vkStream, VkStructureType rootType,
17966     VkPhysicalDeviceRobustness2FeaturesEXT* forUnmarshaling) {
17967     (void)rootType;
17968     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
17969     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17970         rootType = forUnmarshaling->sType;
17971     }
17972     size_t pNext_size;
17973     pNext_size = vkStream->getBe32();
17974     forUnmarshaling->pNext = nullptr;
17975     if (pNext_size) {
17976         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
17977         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
17978         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
17979         vkStream->alloc((void**)&forUnmarshaling->pNext,
17980                         goldfish_vk_extension_struct_size_with_stream_features(
17981                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
17982         *(VkStructureType*)forUnmarshaling->pNext = extType;
17983         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
17984     }
17985     vkStream->read((VkBool32*)&forUnmarshaling->robustBufferAccess2, sizeof(VkBool32));
17986     vkStream->read((VkBool32*)&forUnmarshaling->robustImageAccess2, sizeof(VkBool32));
17987     vkStream->read((VkBool32*)&forUnmarshaling->nullDescriptor, sizeof(VkBool32));
17988 }
17989 
marshal_VkPhysicalDeviceRobustness2PropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceRobustness2PropertiesEXT * forMarshaling)17990 void marshal_VkPhysicalDeviceRobustness2PropertiesEXT(
17991     VulkanStream* vkStream, VkStructureType rootType,
17992     const VkPhysicalDeviceRobustness2PropertiesEXT* forMarshaling) {
17993     (void)rootType;
17994     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
17995     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
17996         rootType = forMarshaling->sType;
17997     }
17998     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
17999     vkStream->write((VkDeviceSize*)&forMarshaling->robustStorageBufferAccessSizeAlignment,
18000                     sizeof(VkDeviceSize));
18001     vkStream->write((VkDeviceSize*)&forMarshaling->robustUniformBufferAccessSizeAlignment,
18002                     sizeof(VkDeviceSize));
18003 }
18004 
unmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRobustness2PropertiesEXT * forUnmarshaling)18005 void unmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(
18006     VulkanStream* vkStream, VkStructureType rootType,
18007     VkPhysicalDeviceRobustness2PropertiesEXT* forUnmarshaling) {
18008     (void)rootType;
18009     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18010     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18011         rootType = forUnmarshaling->sType;
18012     }
18013     size_t pNext_size;
18014     pNext_size = vkStream->getBe32();
18015     forUnmarshaling->pNext = nullptr;
18016     if (pNext_size) {
18017         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18018         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18019         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18020         vkStream->alloc((void**)&forUnmarshaling->pNext,
18021                         goldfish_vk_extension_struct_size_with_stream_features(
18022                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18023         *(VkStructureType*)forUnmarshaling->pNext = extType;
18024         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18025     }
18026     vkStream->read((VkDeviceSize*)&forUnmarshaling->robustStorageBufferAccessSizeAlignment,
18027                    sizeof(VkDeviceSize));
18028     vkStream->read((VkDeviceSize*)&forUnmarshaling->robustUniformBufferAccessSizeAlignment,
18029                    sizeof(VkDeviceSize));
18030 }
18031 
18032 #endif
18033 #ifdef VK_EXT_custom_border_color
marshal_VkSamplerCustomBorderColorCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkSamplerCustomBorderColorCreateInfoEXT * forMarshaling)18034 void marshal_VkSamplerCustomBorderColorCreateInfoEXT(
18035     VulkanStream* vkStream, VkStructureType rootType,
18036     const VkSamplerCustomBorderColorCreateInfoEXT* forMarshaling) {
18037     (void)rootType;
18038     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18039     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18040         rootType = forMarshaling->sType;
18041     }
18042     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18043     marshal_VkClearColorValue(vkStream, rootType,
18044                               (VkClearColorValue*)(&forMarshaling->customBorderColor));
18045     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
18046 }
18047 
unmarshal_VkSamplerCustomBorderColorCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSamplerCustomBorderColorCreateInfoEXT * forUnmarshaling)18048 void unmarshal_VkSamplerCustomBorderColorCreateInfoEXT(
18049     VulkanStream* vkStream, VkStructureType rootType,
18050     VkSamplerCustomBorderColorCreateInfoEXT* forUnmarshaling) {
18051     (void)rootType;
18052     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18053     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18054         rootType = forUnmarshaling->sType;
18055     }
18056     size_t pNext_size;
18057     pNext_size = vkStream->getBe32();
18058     forUnmarshaling->pNext = nullptr;
18059     if (pNext_size) {
18060         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18061         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18062         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18063         vkStream->alloc((void**)&forUnmarshaling->pNext,
18064                         goldfish_vk_extension_struct_size_with_stream_features(
18065                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18066         *(VkStructureType*)forUnmarshaling->pNext = extType;
18067         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18068     }
18069     unmarshal_VkClearColorValue(vkStream, rootType,
18070                                 (VkClearColorValue*)(&forUnmarshaling->customBorderColor));
18071     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
18072 }
18073 
marshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceCustomBorderColorPropertiesEXT * forMarshaling)18074 void marshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
18075     VulkanStream* vkStream, VkStructureType rootType,
18076     const VkPhysicalDeviceCustomBorderColorPropertiesEXT* forMarshaling) {
18077     (void)rootType;
18078     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18079     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18080         rootType = forMarshaling->sType;
18081     }
18082     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18083     vkStream->write((uint32_t*)&forMarshaling->maxCustomBorderColorSamplers, sizeof(uint32_t));
18084 }
18085 
unmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceCustomBorderColorPropertiesEXT * forUnmarshaling)18086 void unmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
18087     VulkanStream* vkStream, VkStructureType rootType,
18088     VkPhysicalDeviceCustomBorderColorPropertiesEXT* forUnmarshaling) {
18089     (void)rootType;
18090     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18091     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18092         rootType = forUnmarshaling->sType;
18093     }
18094     size_t pNext_size;
18095     pNext_size = vkStream->getBe32();
18096     forUnmarshaling->pNext = nullptr;
18097     if (pNext_size) {
18098         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18099         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18100         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18101         vkStream->alloc((void**)&forUnmarshaling->pNext,
18102                         goldfish_vk_extension_struct_size_with_stream_features(
18103                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18104         *(VkStructureType*)forUnmarshaling->pNext = extType;
18105         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18106     }
18107     vkStream->read((uint32_t*)&forUnmarshaling->maxCustomBorderColorSamplers, sizeof(uint32_t));
18108 }
18109 
marshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceCustomBorderColorFeaturesEXT * forMarshaling)18110 void marshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
18111     VulkanStream* vkStream, VkStructureType rootType,
18112     const VkPhysicalDeviceCustomBorderColorFeaturesEXT* forMarshaling) {
18113     (void)rootType;
18114     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18115     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18116         rootType = forMarshaling->sType;
18117     }
18118     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18119     vkStream->write((VkBool32*)&forMarshaling->customBorderColors, sizeof(VkBool32));
18120     vkStream->write((VkBool32*)&forMarshaling->customBorderColorWithoutFormat, sizeof(VkBool32));
18121 }
18122 
unmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceCustomBorderColorFeaturesEXT * forUnmarshaling)18123 void unmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
18124     VulkanStream* vkStream, VkStructureType rootType,
18125     VkPhysicalDeviceCustomBorderColorFeaturesEXT* forUnmarshaling) {
18126     (void)rootType;
18127     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18128     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18129         rootType = forUnmarshaling->sType;
18130     }
18131     size_t pNext_size;
18132     pNext_size = vkStream->getBe32();
18133     forUnmarshaling->pNext = nullptr;
18134     if (pNext_size) {
18135         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18136         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18137         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18138         vkStream->alloc((void**)&forUnmarshaling->pNext,
18139                         goldfish_vk_extension_struct_size_with_stream_features(
18140                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18141         *(VkStructureType*)forUnmarshaling->pNext = extType;
18142         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18143     }
18144     vkStream->read((VkBool32*)&forUnmarshaling->customBorderColors, sizeof(VkBool32));
18145     vkStream->read((VkBool32*)&forUnmarshaling->customBorderColorWithoutFormat, sizeof(VkBool32));
18146 }
18147 
18148 #endif
18149 #ifdef VK_EXT_graphics_pipeline_library
marshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT * forMarshaling)18150 void marshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(
18151     VulkanStream* vkStream, VkStructureType rootType,
18152     const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT* forMarshaling) {
18153     (void)rootType;
18154     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18155     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18156         rootType = forMarshaling->sType;
18157     }
18158     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18159     vkStream->write((VkBool32*)&forMarshaling->graphicsPipelineLibrary, sizeof(VkBool32));
18160 }
18161 
unmarshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT * forUnmarshaling)18162 void unmarshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(
18163     VulkanStream* vkStream, VkStructureType rootType,
18164     VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT* forUnmarshaling) {
18165     (void)rootType;
18166     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18167     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18168         rootType = forUnmarshaling->sType;
18169     }
18170     size_t pNext_size;
18171     pNext_size = vkStream->getBe32();
18172     forUnmarshaling->pNext = nullptr;
18173     if (pNext_size) {
18174         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18175         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18176         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18177         vkStream->alloc((void**)&forUnmarshaling->pNext,
18178                         goldfish_vk_extension_struct_size_with_stream_features(
18179                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18180         *(VkStructureType*)forUnmarshaling->pNext = extType;
18181         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18182     }
18183     vkStream->read((VkBool32*)&forUnmarshaling->graphicsPipelineLibrary, sizeof(VkBool32));
18184 }
18185 
marshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT * forMarshaling)18186 void marshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(
18187     VulkanStream* vkStream, VkStructureType rootType,
18188     const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT* forMarshaling) {
18189     (void)rootType;
18190     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18191     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18192         rootType = forMarshaling->sType;
18193     }
18194     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18195     vkStream->write((VkBool32*)&forMarshaling->graphicsPipelineLibraryFastLinking,
18196                     sizeof(VkBool32));
18197     vkStream->write(
18198         (VkBool32*)&forMarshaling->graphicsPipelineLibraryIndependentInterpolationDecoration,
18199         sizeof(VkBool32));
18200 }
18201 
unmarshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT * forUnmarshaling)18202 void unmarshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(
18203     VulkanStream* vkStream, VkStructureType rootType,
18204     VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT* forUnmarshaling) {
18205     (void)rootType;
18206     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18207     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18208         rootType = forUnmarshaling->sType;
18209     }
18210     size_t pNext_size;
18211     pNext_size = vkStream->getBe32();
18212     forUnmarshaling->pNext = nullptr;
18213     if (pNext_size) {
18214         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18215         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18216         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18217         vkStream->alloc((void**)&forUnmarshaling->pNext,
18218                         goldfish_vk_extension_struct_size_with_stream_features(
18219                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18220         *(VkStructureType*)forUnmarshaling->pNext = extType;
18221         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18222     }
18223     vkStream->read((VkBool32*)&forUnmarshaling->graphicsPipelineLibraryFastLinking,
18224                    sizeof(VkBool32));
18225     vkStream->read(
18226         (VkBool32*)&forUnmarshaling->graphicsPipelineLibraryIndependentInterpolationDecoration,
18227         sizeof(VkBool32));
18228 }
18229 
marshal_VkGraphicsPipelineLibraryCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkGraphicsPipelineLibraryCreateInfoEXT * forMarshaling)18230 void marshal_VkGraphicsPipelineLibraryCreateInfoEXT(
18231     VulkanStream* vkStream, VkStructureType rootType,
18232     const VkGraphicsPipelineLibraryCreateInfoEXT* forMarshaling) {
18233     (void)rootType;
18234     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18235     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18236         rootType = forMarshaling->sType;
18237     }
18238     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18239     vkStream->write((VkGraphicsPipelineLibraryFlagsEXT*)&forMarshaling->flags,
18240                     sizeof(VkGraphicsPipelineLibraryFlagsEXT));
18241 }
18242 
unmarshal_VkGraphicsPipelineLibraryCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkGraphicsPipelineLibraryCreateInfoEXT * forUnmarshaling)18243 void unmarshal_VkGraphicsPipelineLibraryCreateInfoEXT(
18244     VulkanStream* vkStream, VkStructureType rootType,
18245     VkGraphicsPipelineLibraryCreateInfoEXT* forUnmarshaling) {
18246     (void)rootType;
18247     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18248     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18249         rootType = forUnmarshaling->sType;
18250     }
18251     size_t pNext_size;
18252     pNext_size = vkStream->getBe32();
18253     forUnmarshaling->pNext = nullptr;
18254     if (pNext_size) {
18255         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18256         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18257         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18258         vkStream->alloc((void**)&forUnmarshaling->pNext,
18259                         goldfish_vk_extension_struct_size_with_stream_features(
18260                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18261         *(VkStructureType*)forUnmarshaling->pNext = extType;
18262         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18263     }
18264     vkStream->read((VkGraphicsPipelineLibraryFlagsEXT*)&forUnmarshaling->flags,
18265                    sizeof(VkGraphicsPipelineLibraryFlagsEXT));
18266 }
18267 
18268 #endif
18269 #ifdef VK_EXT_ycbcr_2plane_444_formats
marshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT * forMarshaling)18270 void marshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
18271     VulkanStream* vkStream, VkStructureType rootType,
18272     const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* forMarshaling) {
18273     (void)rootType;
18274     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18275     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18276         rootType = forMarshaling->sType;
18277     }
18278     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18279     vkStream->write((VkBool32*)&forMarshaling->ycbcr2plane444Formats, sizeof(VkBool32));
18280 }
18281 
unmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT * forUnmarshaling)18282 void unmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
18283     VulkanStream* vkStream, VkStructureType rootType,
18284     VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* forUnmarshaling) {
18285     (void)rootType;
18286     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18287     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18288         rootType = forUnmarshaling->sType;
18289     }
18290     size_t pNext_size;
18291     pNext_size = vkStream->getBe32();
18292     forUnmarshaling->pNext = nullptr;
18293     if (pNext_size) {
18294         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18295         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18296         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18297         vkStream->alloc((void**)&forUnmarshaling->pNext,
18298                         goldfish_vk_extension_struct_size_with_stream_features(
18299                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18300         *(VkStructureType*)forUnmarshaling->pNext = extType;
18301         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18302     }
18303     vkStream->read((VkBool32*)&forUnmarshaling->ycbcr2plane444Formats, sizeof(VkBool32));
18304 }
18305 
18306 #endif
18307 #ifdef VK_EXT_image_compression_control
marshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceImageCompressionControlFeaturesEXT * forMarshaling)18308 void marshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(
18309     VulkanStream* vkStream, VkStructureType rootType,
18310     const VkPhysicalDeviceImageCompressionControlFeaturesEXT* forMarshaling) {
18311     (void)rootType;
18312     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18313     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18314         rootType = forMarshaling->sType;
18315     }
18316     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18317     vkStream->write((VkBool32*)&forMarshaling->imageCompressionControl, sizeof(VkBool32));
18318 }
18319 
unmarshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageCompressionControlFeaturesEXT * forUnmarshaling)18320 void unmarshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(
18321     VulkanStream* vkStream, VkStructureType rootType,
18322     VkPhysicalDeviceImageCompressionControlFeaturesEXT* forUnmarshaling) {
18323     (void)rootType;
18324     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18325     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18326         rootType = forUnmarshaling->sType;
18327     }
18328     size_t pNext_size;
18329     pNext_size = vkStream->getBe32();
18330     forUnmarshaling->pNext = nullptr;
18331     if (pNext_size) {
18332         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18333         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18334         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18335         vkStream->alloc((void**)&forUnmarshaling->pNext,
18336                         goldfish_vk_extension_struct_size_with_stream_features(
18337                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18338         *(VkStructureType*)forUnmarshaling->pNext = extType;
18339         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18340     }
18341     vkStream->read((VkBool32*)&forUnmarshaling->imageCompressionControl, sizeof(VkBool32));
18342 }
18343 
marshal_VkImageCompressionControlEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImageCompressionControlEXT * forMarshaling)18344 void marshal_VkImageCompressionControlEXT(VulkanStream* vkStream, VkStructureType rootType,
18345                                           const VkImageCompressionControlEXT* forMarshaling) {
18346     (void)rootType;
18347     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18348     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18349         rootType = forMarshaling->sType;
18350     }
18351     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18352     vkStream->write((VkImageCompressionFlagsEXT*)&forMarshaling->flags,
18353                     sizeof(VkImageCompressionFlagsEXT));
18354     vkStream->write((uint32_t*)&forMarshaling->compressionControlPlaneCount, sizeof(uint32_t));
18355     // WARNING PTR CHECK
18356     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pFixedRateFlags;
18357     vkStream->putBe64(cgen_var_0);
18358     if (forMarshaling->pFixedRateFlags) {
18359         vkStream->write((VkImageCompressionFixedRateFlagsEXT*)forMarshaling->pFixedRateFlags,
18360                         forMarshaling->compressionControlPlaneCount *
18361                             sizeof(VkImageCompressionFixedRateFlagsEXT));
18362     }
18363 }
18364 
unmarshal_VkImageCompressionControlEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageCompressionControlEXT * forUnmarshaling)18365 void unmarshal_VkImageCompressionControlEXT(VulkanStream* vkStream, VkStructureType rootType,
18366                                             VkImageCompressionControlEXT* forUnmarshaling) {
18367     (void)rootType;
18368     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18369     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18370         rootType = forUnmarshaling->sType;
18371     }
18372     size_t pNext_size;
18373     pNext_size = vkStream->getBe32();
18374     forUnmarshaling->pNext = nullptr;
18375     if (pNext_size) {
18376         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18377         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18378         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18379         vkStream->alloc((void**)&forUnmarshaling->pNext,
18380                         goldfish_vk_extension_struct_size_with_stream_features(
18381                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18382         *(VkStructureType*)forUnmarshaling->pNext = extType;
18383         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18384     }
18385     vkStream->read((VkImageCompressionFlagsEXT*)&forUnmarshaling->flags,
18386                    sizeof(VkImageCompressionFlagsEXT));
18387     vkStream->read((uint32_t*)&forUnmarshaling->compressionControlPlaneCount, sizeof(uint32_t));
18388     // WARNING PTR CHECK
18389     forUnmarshaling->pFixedRateFlags =
18390         (VkImageCompressionFixedRateFlagsEXT*)(uintptr_t)vkStream->getBe64();
18391     if (forUnmarshaling->pFixedRateFlags) {
18392         vkStream->alloc((void**)&forUnmarshaling->pFixedRateFlags,
18393                         forUnmarshaling->compressionControlPlaneCount *
18394                             sizeof(VkImageCompressionFixedRateFlagsEXT));
18395         vkStream->read((VkImageCompressionFixedRateFlagsEXT*)forUnmarshaling->pFixedRateFlags,
18396                        forUnmarshaling->compressionControlPlaneCount *
18397                            sizeof(VkImageCompressionFixedRateFlagsEXT));
18398     }
18399 }
18400 
marshal_VkImageCompressionPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkImageCompressionPropertiesEXT * forMarshaling)18401 void marshal_VkImageCompressionPropertiesEXT(VulkanStream* vkStream, VkStructureType rootType,
18402                                              const VkImageCompressionPropertiesEXT* forMarshaling) {
18403     (void)rootType;
18404     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18405     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18406         rootType = forMarshaling->sType;
18407     }
18408     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18409     vkStream->write((VkImageCompressionFlagsEXT*)&forMarshaling->imageCompressionFlags,
18410                     sizeof(VkImageCompressionFlagsEXT));
18411     vkStream->write(
18412         (VkImageCompressionFixedRateFlagsEXT*)&forMarshaling->imageCompressionFixedRateFlags,
18413         sizeof(VkImageCompressionFixedRateFlagsEXT));
18414 }
18415 
unmarshal_VkImageCompressionPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageCompressionPropertiesEXT * forUnmarshaling)18416 void unmarshal_VkImageCompressionPropertiesEXT(VulkanStream* vkStream, VkStructureType rootType,
18417                                                VkImageCompressionPropertiesEXT* forUnmarshaling) {
18418     (void)rootType;
18419     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18420     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18421         rootType = forUnmarshaling->sType;
18422     }
18423     size_t pNext_size;
18424     pNext_size = vkStream->getBe32();
18425     forUnmarshaling->pNext = nullptr;
18426     if (pNext_size) {
18427         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18428         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18429         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18430         vkStream->alloc((void**)&forUnmarshaling->pNext,
18431                         goldfish_vk_extension_struct_size_with_stream_features(
18432                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18433         *(VkStructureType*)forUnmarshaling->pNext = extType;
18434         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18435     }
18436     vkStream->read((VkImageCompressionFlagsEXT*)&forUnmarshaling->imageCompressionFlags,
18437                    sizeof(VkImageCompressionFlagsEXT));
18438     vkStream->read(
18439         (VkImageCompressionFixedRateFlagsEXT*)&forUnmarshaling->imageCompressionFixedRateFlags,
18440         sizeof(VkImageCompressionFixedRateFlagsEXT));
18441 }
18442 
18443 #endif
18444 #ifdef VK_EXT_4444_formats
marshal_VkPhysicalDevice4444FormatsFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevice4444FormatsFeaturesEXT * forMarshaling)18445 void marshal_VkPhysicalDevice4444FormatsFeaturesEXT(
18446     VulkanStream* vkStream, VkStructureType rootType,
18447     const VkPhysicalDevice4444FormatsFeaturesEXT* forMarshaling) {
18448     (void)rootType;
18449     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18450     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18451         rootType = forMarshaling->sType;
18452     }
18453     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18454     vkStream->write((VkBool32*)&forMarshaling->formatA4R4G4B4, sizeof(VkBool32));
18455     vkStream->write((VkBool32*)&forMarshaling->formatA4B4G4R4, sizeof(VkBool32));
18456 }
18457 
unmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevice4444FormatsFeaturesEXT * forUnmarshaling)18458 void unmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(
18459     VulkanStream* vkStream, VkStructureType rootType,
18460     VkPhysicalDevice4444FormatsFeaturesEXT* forUnmarshaling) {
18461     (void)rootType;
18462     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18463     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18464         rootType = forUnmarshaling->sType;
18465     }
18466     size_t pNext_size;
18467     pNext_size = vkStream->getBe32();
18468     forUnmarshaling->pNext = nullptr;
18469     if (pNext_size) {
18470         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18471         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18472         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18473         vkStream->alloc((void**)&forUnmarshaling->pNext,
18474                         goldfish_vk_extension_struct_size_with_stream_features(
18475                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18476         *(VkStructureType*)forUnmarshaling->pNext = extType;
18477         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18478     }
18479     vkStream->read((VkBool32*)&forUnmarshaling->formatA4R4G4B4, sizeof(VkBool32));
18480     vkStream->read((VkBool32*)&forUnmarshaling->formatA4B4G4R4, sizeof(VkBool32));
18481 }
18482 
18483 #endif
18484 #ifdef VK_EXT_primitive_topology_list_restart
marshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT * forMarshaling)18485 void marshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
18486     VulkanStream* vkStream, VkStructureType rootType,
18487     const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* forMarshaling) {
18488     (void)rootType;
18489     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18490     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18491         rootType = forMarshaling->sType;
18492     }
18493     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18494     vkStream->write((VkBool32*)&forMarshaling->primitiveTopologyListRestart, sizeof(VkBool32));
18495     vkStream->write((VkBool32*)&forMarshaling->primitiveTopologyPatchListRestart, sizeof(VkBool32));
18496 }
18497 
unmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT * forUnmarshaling)18498 void unmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
18499     VulkanStream* vkStream, VkStructureType rootType,
18500     VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* forUnmarshaling) {
18501     (void)rootType;
18502     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18503     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18504         rootType = forUnmarshaling->sType;
18505     }
18506     size_t pNext_size;
18507     pNext_size = vkStream->getBe32();
18508     forUnmarshaling->pNext = nullptr;
18509     if (pNext_size) {
18510         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18511         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18512         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18513         vkStream->alloc((void**)&forUnmarshaling->pNext,
18514                         goldfish_vk_extension_struct_size_with_stream_features(
18515                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18516         *(VkStructureType*)forUnmarshaling->pNext = extType;
18517         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18518     }
18519     vkStream->read((VkBool32*)&forUnmarshaling->primitiveTopologyListRestart, sizeof(VkBool32));
18520     vkStream->read((VkBool32*)&forUnmarshaling->primitiveTopologyPatchListRestart,
18521                    sizeof(VkBool32));
18522 }
18523 
18524 #endif
18525 #ifdef VK_EXT_extended_dynamic_state2
marshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT * forMarshaling)18526 void marshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
18527     VulkanStream* vkStream, VkStructureType rootType,
18528     const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* forMarshaling) {
18529     (void)rootType;
18530     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18531     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18532         rootType = forMarshaling->sType;
18533     }
18534     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18535     vkStream->write((VkBool32*)&forMarshaling->extendedDynamicState2, sizeof(VkBool32));
18536     vkStream->write((VkBool32*)&forMarshaling->extendedDynamicState2LogicOp, sizeof(VkBool32));
18537     vkStream->write((VkBool32*)&forMarshaling->extendedDynamicState2PatchControlPoints,
18538                     sizeof(VkBool32));
18539 }
18540 
unmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExtendedDynamicState2FeaturesEXT * forUnmarshaling)18541 void unmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
18542     VulkanStream* vkStream, VkStructureType rootType,
18543     VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* forUnmarshaling) {
18544     (void)rootType;
18545     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18546     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18547         rootType = forUnmarshaling->sType;
18548     }
18549     size_t pNext_size;
18550     pNext_size = vkStream->getBe32();
18551     forUnmarshaling->pNext = nullptr;
18552     if (pNext_size) {
18553         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18554         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18555         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18556         vkStream->alloc((void**)&forUnmarshaling->pNext,
18557                         goldfish_vk_extension_struct_size_with_stream_features(
18558                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18559         *(VkStructureType*)forUnmarshaling->pNext = extType;
18560         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18561     }
18562     vkStream->read((VkBool32*)&forUnmarshaling->extendedDynamicState2, sizeof(VkBool32));
18563     vkStream->read((VkBool32*)&forUnmarshaling->extendedDynamicState2LogicOp, sizeof(VkBool32));
18564     vkStream->read((VkBool32*)&forUnmarshaling->extendedDynamicState2PatchControlPoints,
18565                    sizeof(VkBool32));
18566 }
18567 
18568 #endif
18569 #ifdef VK_EXT_color_write_enable
marshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceColorWriteEnableFeaturesEXT * forMarshaling)18570 void marshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
18571     VulkanStream* vkStream, VkStructureType rootType,
18572     const VkPhysicalDeviceColorWriteEnableFeaturesEXT* forMarshaling) {
18573     (void)rootType;
18574     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18575     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18576         rootType = forMarshaling->sType;
18577     }
18578     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18579     vkStream->write((VkBool32*)&forMarshaling->colorWriteEnable, sizeof(VkBool32));
18580 }
18581 
unmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceColorWriteEnableFeaturesEXT * forUnmarshaling)18582 void unmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
18583     VulkanStream* vkStream, VkStructureType rootType,
18584     VkPhysicalDeviceColorWriteEnableFeaturesEXT* forUnmarshaling) {
18585     (void)rootType;
18586     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18587     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18588         rootType = forUnmarshaling->sType;
18589     }
18590     size_t pNext_size;
18591     pNext_size = vkStream->getBe32();
18592     forUnmarshaling->pNext = nullptr;
18593     if (pNext_size) {
18594         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18595         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18596         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18597         vkStream->alloc((void**)&forUnmarshaling->pNext,
18598                         goldfish_vk_extension_struct_size_with_stream_features(
18599                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18600         *(VkStructureType*)forUnmarshaling->pNext = extType;
18601         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18602     }
18603     vkStream->read((VkBool32*)&forUnmarshaling->colorWriteEnable, sizeof(VkBool32));
18604 }
18605 
marshal_VkPipelineColorWriteCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPipelineColorWriteCreateInfoEXT * forMarshaling)18606 void marshal_VkPipelineColorWriteCreateInfoEXT(
18607     VulkanStream* vkStream, VkStructureType rootType,
18608     const VkPipelineColorWriteCreateInfoEXT* forMarshaling) {
18609     (void)rootType;
18610     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18611     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18612         rootType = forMarshaling->sType;
18613     }
18614     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18615     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
18616     vkStream->write((const VkBool32*)forMarshaling->pColorWriteEnables,
18617                     forMarshaling->attachmentCount * sizeof(const VkBool32));
18618 }
18619 
unmarshal_VkPipelineColorWriteCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineColorWriteCreateInfoEXT * forUnmarshaling)18620 void unmarshal_VkPipelineColorWriteCreateInfoEXT(
18621     VulkanStream* vkStream, VkStructureType rootType,
18622     VkPipelineColorWriteCreateInfoEXT* forUnmarshaling) {
18623     (void)rootType;
18624     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18625     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18626         rootType = forUnmarshaling->sType;
18627     }
18628     size_t pNext_size;
18629     pNext_size = vkStream->getBe32();
18630     forUnmarshaling->pNext = nullptr;
18631     if (pNext_size) {
18632         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18633         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18634         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18635         vkStream->alloc((void**)&forUnmarshaling->pNext,
18636                         goldfish_vk_extension_struct_size_with_stream_features(
18637                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18638         *(VkStructureType*)forUnmarshaling->pNext = extType;
18639         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18640     }
18641     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
18642     vkStream->alloc((void**)&forUnmarshaling->pColorWriteEnables,
18643                     forUnmarshaling->attachmentCount * sizeof(const VkBool32));
18644     vkStream->read((VkBool32*)forUnmarshaling->pColorWriteEnables,
18645                    forUnmarshaling->attachmentCount * sizeof(const VkBool32));
18646 }
18647 
18648 #endif
18649 #ifdef VK_GOOGLE_gfxstream
marshal_VkImportColorBufferGOOGLE(VulkanStream * vkStream,VkStructureType rootType,const VkImportColorBufferGOOGLE * forMarshaling)18650 void marshal_VkImportColorBufferGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
18651                                        const VkImportColorBufferGOOGLE* forMarshaling) {
18652     (void)rootType;
18653     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18654     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18655         rootType = forMarshaling->sType;
18656     }
18657     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18658     vkStream->write((uint32_t*)&forMarshaling->colorBuffer, sizeof(uint32_t));
18659 }
18660 
unmarshal_VkImportColorBufferGOOGLE(VulkanStream * vkStream,VkStructureType rootType,VkImportColorBufferGOOGLE * forUnmarshaling)18661 void unmarshal_VkImportColorBufferGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
18662                                          VkImportColorBufferGOOGLE* forUnmarshaling) {
18663     (void)rootType;
18664     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18665     forUnmarshaling->sType = VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE;
18666     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18667         rootType = forUnmarshaling->sType;
18668     }
18669     size_t pNext_size;
18670     pNext_size = vkStream->getBe32();
18671     forUnmarshaling->pNext = nullptr;
18672     if (pNext_size) {
18673         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18674         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18675         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18676         vkStream->alloc((void**)&forUnmarshaling->pNext,
18677                         goldfish_vk_extension_struct_size_with_stream_features(
18678                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18679         *(VkStructureType*)forUnmarshaling->pNext = extType;
18680         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18681     }
18682     vkStream->read((uint32_t*)&forUnmarshaling->colorBuffer, sizeof(uint32_t));
18683 }
18684 
marshal_VkImportBufferGOOGLE(VulkanStream * vkStream,VkStructureType rootType,const VkImportBufferGOOGLE * forMarshaling)18685 void marshal_VkImportBufferGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
18686                                   const VkImportBufferGOOGLE* forMarshaling) {
18687     (void)rootType;
18688     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18689     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18690         rootType = forMarshaling->sType;
18691     }
18692     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18693     vkStream->write((uint32_t*)&forMarshaling->buffer, sizeof(uint32_t));
18694 }
18695 
unmarshal_VkImportBufferGOOGLE(VulkanStream * vkStream,VkStructureType rootType,VkImportBufferGOOGLE * forUnmarshaling)18696 void unmarshal_VkImportBufferGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
18697                                     VkImportBufferGOOGLE* forUnmarshaling) {
18698     (void)rootType;
18699     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18700     forUnmarshaling->sType = VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE;
18701     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18702         rootType = forUnmarshaling->sType;
18703     }
18704     size_t pNext_size;
18705     pNext_size = vkStream->getBe32();
18706     forUnmarshaling->pNext = nullptr;
18707     if (pNext_size) {
18708         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18709         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18710         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18711         vkStream->alloc((void**)&forUnmarshaling->pNext,
18712                         goldfish_vk_extension_struct_size_with_stream_features(
18713                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18714         *(VkStructureType*)forUnmarshaling->pNext = extType;
18715         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18716     }
18717     vkStream->read((uint32_t*)&forUnmarshaling->buffer, sizeof(uint32_t));
18718 }
18719 
marshal_VkCreateBlobGOOGLE(VulkanStream * vkStream,VkStructureType rootType,const VkCreateBlobGOOGLE * forMarshaling)18720 void marshal_VkCreateBlobGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
18721                                 const VkCreateBlobGOOGLE* forMarshaling) {
18722     (void)rootType;
18723     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18724     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18725         rootType = forMarshaling->sType;
18726     }
18727     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18728     vkStream->write((uint32_t*)&forMarshaling->blobMem, sizeof(uint32_t));
18729     vkStream->write((uint32_t*)&forMarshaling->blobFlags, sizeof(uint32_t));
18730     vkStream->write((uint64_t*)&forMarshaling->blobId, sizeof(uint64_t));
18731 }
18732 
unmarshal_VkCreateBlobGOOGLE(VulkanStream * vkStream,VkStructureType rootType,VkCreateBlobGOOGLE * forUnmarshaling)18733 void unmarshal_VkCreateBlobGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
18734                                   VkCreateBlobGOOGLE* forUnmarshaling) {
18735     (void)rootType;
18736     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18737     forUnmarshaling->sType = VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE;
18738     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18739         rootType = forUnmarshaling->sType;
18740     }
18741     size_t pNext_size;
18742     pNext_size = vkStream->getBe32();
18743     forUnmarshaling->pNext = nullptr;
18744     if (pNext_size) {
18745         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18746         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18747         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18748         vkStream->alloc((void**)&forUnmarshaling->pNext,
18749                         goldfish_vk_extension_struct_size_with_stream_features(
18750                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18751         *(VkStructureType*)forUnmarshaling->pNext = extType;
18752         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18753     }
18754     vkStream->read((uint32_t*)&forUnmarshaling->blobMem, sizeof(uint32_t));
18755     vkStream->read((uint32_t*)&forUnmarshaling->blobFlags, sizeof(uint32_t));
18756     vkStream->read((uint64_t*)&forUnmarshaling->blobId, sizeof(uint64_t));
18757 }
18758 
18759 #endif
18760 #ifdef VK_EXT_image_compression_control_swapchain
marshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT * forMarshaling)18761 void marshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
18762     VulkanStream* vkStream, VkStructureType rootType,
18763     const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT* forMarshaling) {
18764     (void)rootType;
18765     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18766     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18767         rootType = forMarshaling->sType;
18768     }
18769     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18770     vkStream->write((VkBool32*)&forMarshaling->imageCompressionControlSwapchain, sizeof(VkBool32));
18771 }
18772 
unmarshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT * forUnmarshaling)18773 void unmarshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
18774     VulkanStream* vkStream, VkStructureType rootType,
18775     VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT* forUnmarshaling) {
18776     (void)rootType;
18777     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18778     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18779         rootType = forUnmarshaling->sType;
18780     }
18781     size_t pNext_size;
18782     pNext_size = vkStream->getBe32();
18783     forUnmarshaling->pNext = nullptr;
18784     if (pNext_size) {
18785         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18786         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18787         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18788         vkStream->alloc((void**)&forUnmarshaling->pNext,
18789                         goldfish_vk_extension_struct_size_with_stream_features(
18790                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18791         *(VkStructureType*)forUnmarshaling->pNext = extType;
18792         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18793     }
18794     vkStream->read((VkBool32*)&forUnmarshaling->imageCompressionControlSwapchain, sizeof(VkBool32));
18795 }
18796 
18797 #endif
18798 #ifdef VK_KHR_ray_tracing_pipeline
marshal_VkRayTracingShaderGroupCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkRayTracingShaderGroupCreateInfoKHR * forMarshaling)18799 void marshal_VkRayTracingShaderGroupCreateInfoKHR(
18800     VulkanStream* vkStream, VkStructureType rootType,
18801     const VkRayTracingShaderGroupCreateInfoKHR* forMarshaling) {
18802     (void)rootType;
18803     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18804     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18805         rootType = forMarshaling->sType;
18806     }
18807     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18808     vkStream->write((VkRayTracingShaderGroupTypeKHR*)&forMarshaling->type,
18809                     sizeof(VkRayTracingShaderGroupTypeKHR));
18810     vkStream->write((uint32_t*)&forMarshaling->generalShader, sizeof(uint32_t));
18811     vkStream->write((uint32_t*)&forMarshaling->closestHitShader, sizeof(uint32_t));
18812     vkStream->write((uint32_t*)&forMarshaling->anyHitShader, sizeof(uint32_t));
18813     vkStream->write((uint32_t*)&forMarshaling->intersectionShader, sizeof(uint32_t));
18814     // WARNING PTR CHECK
18815     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pShaderGroupCaptureReplayHandle;
18816     vkStream->putBe64(cgen_var_0);
18817     if (forMarshaling->pShaderGroupCaptureReplayHandle) {
18818         vkStream->write((const void*)forMarshaling->pShaderGroupCaptureReplayHandle,
18819                         sizeof(const uint8_t));
18820     }
18821 }
18822 
unmarshal_VkRayTracingShaderGroupCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRayTracingShaderGroupCreateInfoKHR * forUnmarshaling)18823 void unmarshal_VkRayTracingShaderGroupCreateInfoKHR(
18824     VulkanStream* vkStream, VkStructureType rootType,
18825     VkRayTracingShaderGroupCreateInfoKHR* forUnmarshaling) {
18826     (void)rootType;
18827     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18828     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18829         rootType = forUnmarshaling->sType;
18830     }
18831     size_t pNext_size;
18832     pNext_size = vkStream->getBe32();
18833     forUnmarshaling->pNext = nullptr;
18834     if (pNext_size) {
18835         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18836         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18837         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18838         vkStream->alloc((void**)&forUnmarshaling->pNext,
18839                         goldfish_vk_extension_struct_size_with_stream_features(
18840                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18841         *(VkStructureType*)forUnmarshaling->pNext = extType;
18842         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18843     }
18844     vkStream->read((VkRayTracingShaderGroupTypeKHR*)&forUnmarshaling->type,
18845                    sizeof(VkRayTracingShaderGroupTypeKHR));
18846     vkStream->read((uint32_t*)&forUnmarshaling->generalShader, sizeof(uint32_t));
18847     vkStream->read((uint32_t*)&forUnmarshaling->closestHitShader, sizeof(uint32_t));
18848     vkStream->read((uint32_t*)&forUnmarshaling->anyHitShader, sizeof(uint32_t));
18849     vkStream->read((uint32_t*)&forUnmarshaling->intersectionShader, sizeof(uint32_t));
18850     // WARNING PTR CHECK
18851     forUnmarshaling->pShaderGroupCaptureReplayHandle = (const void*)(uintptr_t)vkStream->getBe64();
18852     if (forUnmarshaling->pShaderGroupCaptureReplayHandle) {
18853         vkStream->alloc((void**)&forUnmarshaling->pShaderGroupCaptureReplayHandle,
18854                         sizeof(const uint8_t));
18855         vkStream->read((void*)forUnmarshaling->pShaderGroupCaptureReplayHandle,
18856                        sizeof(const uint8_t));
18857     }
18858 }
18859 
marshal_VkRayTracingPipelineInterfaceCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkRayTracingPipelineInterfaceCreateInfoKHR * forMarshaling)18860 void marshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
18861     VulkanStream* vkStream, VkStructureType rootType,
18862     const VkRayTracingPipelineInterfaceCreateInfoKHR* forMarshaling) {
18863     (void)rootType;
18864     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18865     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18866         rootType = forMarshaling->sType;
18867     }
18868     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18869     vkStream->write((uint32_t*)&forMarshaling->maxPipelineRayPayloadSize, sizeof(uint32_t));
18870     vkStream->write((uint32_t*)&forMarshaling->maxPipelineRayHitAttributeSize, sizeof(uint32_t));
18871 }
18872 
unmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRayTracingPipelineInterfaceCreateInfoKHR * forUnmarshaling)18873 void unmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
18874     VulkanStream* vkStream, VkStructureType rootType,
18875     VkRayTracingPipelineInterfaceCreateInfoKHR* forUnmarshaling) {
18876     (void)rootType;
18877     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18878     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18879         rootType = forUnmarshaling->sType;
18880     }
18881     size_t pNext_size;
18882     pNext_size = vkStream->getBe32();
18883     forUnmarshaling->pNext = nullptr;
18884     if (pNext_size) {
18885         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18886         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18887         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18888         vkStream->alloc((void**)&forUnmarshaling->pNext,
18889                         goldfish_vk_extension_struct_size_with_stream_features(
18890                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18891         *(VkStructureType*)forUnmarshaling->pNext = extType;
18892         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18893     }
18894     vkStream->read((uint32_t*)&forUnmarshaling->maxPipelineRayPayloadSize, sizeof(uint32_t));
18895     vkStream->read((uint32_t*)&forUnmarshaling->maxPipelineRayHitAttributeSize, sizeof(uint32_t));
18896 }
18897 
marshal_VkRayTracingPipelineCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,const VkRayTracingPipelineCreateInfoKHR * forMarshaling)18898 void marshal_VkRayTracingPipelineCreateInfoKHR(
18899     VulkanStream* vkStream, VkStructureType rootType,
18900     const VkRayTracingPipelineCreateInfoKHR* forMarshaling) {
18901     (void)rootType;
18902     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
18903     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18904         rootType = forMarshaling->sType;
18905     }
18906     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
18907     vkStream->write((VkPipelineCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCreateFlags));
18908     vkStream->write((uint32_t*)&forMarshaling->stageCount, sizeof(uint32_t));
18909     if (forMarshaling) {
18910         for (uint32_t i = 0; i < (uint32_t)forMarshaling->stageCount; ++i) {
18911             marshal_VkPipelineShaderStageCreateInfo(
18912                 vkStream, rootType,
18913                 (const VkPipelineShaderStageCreateInfo*)(forMarshaling->pStages + i));
18914         }
18915     }
18916     vkStream->write((uint32_t*)&forMarshaling->groupCount, sizeof(uint32_t));
18917     if (forMarshaling) {
18918         for (uint32_t i = 0; i < (uint32_t)forMarshaling->groupCount; ++i) {
18919             marshal_VkRayTracingShaderGroupCreateInfoKHR(
18920                 vkStream, rootType,
18921                 (const VkRayTracingShaderGroupCreateInfoKHR*)(forMarshaling->pGroups + i));
18922         }
18923     }
18924     vkStream->write((uint32_t*)&forMarshaling->maxPipelineRayRecursionDepth, sizeof(uint32_t));
18925     // WARNING PTR CHECK
18926     uint64_t cgen_var_0 = (uint64_t)(uintptr_t)forMarshaling->pLibraryInfo;
18927     vkStream->putBe64(cgen_var_0);
18928     if (forMarshaling->pLibraryInfo) {
18929         marshal_VkPipelineLibraryCreateInfoKHR(
18930             vkStream, rootType,
18931             (const VkPipelineLibraryCreateInfoKHR*)(forMarshaling->pLibraryInfo));
18932     }
18933     // WARNING PTR CHECK
18934     uint64_t cgen_var_1 = (uint64_t)(uintptr_t)forMarshaling->pLibraryInterface;
18935     vkStream->putBe64(cgen_var_1);
18936     if (forMarshaling->pLibraryInterface) {
18937         marshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
18938             vkStream, rootType,
18939             (const VkRayTracingPipelineInterfaceCreateInfoKHR*)(forMarshaling->pLibraryInterface));
18940     }
18941     // WARNING PTR CHECK
18942     uint64_t cgen_var_2 = (uint64_t)(uintptr_t)forMarshaling->pDynamicState;
18943     vkStream->putBe64(cgen_var_2);
18944     if (forMarshaling->pDynamicState) {
18945         marshal_VkPipelineDynamicStateCreateInfo(
18946             vkStream, rootType,
18947             (const VkPipelineDynamicStateCreateInfo*)(forMarshaling->pDynamicState));
18948     }
18949     uint64_t cgen_var_3;
18950     vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->layout, &cgen_var_3,
18951                                                                1);
18952     vkStream->write((uint64_t*)&cgen_var_3, 1 * 8);
18953     uint64_t cgen_var_4;
18954     vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->basePipelineHandle,
18955                                                          &cgen_var_4, 1);
18956     vkStream->write((uint64_t*)&cgen_var_4, 1 * 8);
18957     vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
18958 }
18959 
unmarshal_VkRayTracingPipelineCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRayTracingPipelineCreateInfoKHR * forUnmarshaling)18960 void unmarshal_VkRayTracingPipelineCreateInfoKHR(
18961     VulkanStream* vkStream, VkStructureType rootType,
18962     VkRayTracingPipelineCreateInfoKHR* forUnmarshaling) {
18963     (void)rootType;
18964     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
18965     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
18966         rootType = forUnmarshaling->sType;
18967     }
18968     size_t pNext_size;
18969     pNext_size = vkStream->getBe32();
18970     forUnmarshaling->pNext = nullptr;
18971     if (pNext_size) {
18972         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
18973         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
18974         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
18975         vkStream->alloc((void**)&forUnmarshaling->pNext,
18976                         goldfish_vk_extension_struct_size_with_stream_features(
18977                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
18978         *(VkStructureType*)forUnmarshaling->pNext = extType;
18979         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
18980     }
18981     vkStream->read((VkPipelineCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCreateFlags));
18982     vkStream->read((uint32_t*)&forUnmarshaling->stageCount, sizeof(uint32_t));
18983     vkStream->alloc((void**)&forUnmarshaling->pStages,
18984                     forUnmarshaling->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
18985     if (forUnmarshaling) {
18986         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->stageCount; ++i) {
18987             unmarshal_VkPipelineShaderStageCreateInfo(
18988                 vkStream, rootType,
18989                 (VkPipelineShaderStageCreateInfo*)(forUnmarshaling->pStages + i));
18990         }
18991     }
18992     vkStream->read((uint32_t*)&forUnmarshaling->groupCount, sizeof(uint32_t));
18993     vkStream->alloc(
18994         (void**)&forUnmarshaling->pGroups,
18995         forUnmarshaling->groupCount * sizeof(const VkRayTracingShaderGroupCreateInfoKHR));
18996     if (forUnmarshaling) {
18997         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->groupCount; ++i) {
18998             unmarshal_VkRayTracingShaderGroupCreateInfoKHR(
18999                 vkStream, rootType,
19000                 (VkRayTracingShaderGroupCreateInfoKHR*)(forUnmarshaling->pGroups + i));
19001         }
19002     }
19003     vkStream->read((uint32_t*)&forUnmarshaling->maxPipelineRayRecursionDepth, sizeof(uint32_t));
19004     // WARNING PTR CHECK
19005     forUnmarshaling->pLibraryInfo =
19006         (const VkPipelineLibraryCreateInfoKHR*)(uintptr_t)vkStream->getBe64();
19007     if (forUnmarshaling->pLibraryInfo) {
19008         vkStream->alloc((void**)&forUnmarshaling->pLibraryInfo,
19009                         sizeof(const VkPipelineLibraryCreateInfoKHR));
19010         unmarshal_VkPipelineLibraryCreateInfoKHR(
19011             vkStream, rootType, (VkPipelineLibraryCreateInfoKHR*)(forUnmarshaling->pLibraryInfo));
19012     }
19013     // WARNING PTR CHECK
19014     forUnmarshaling->pLibraryInterface =
19015         (const VkRayTracingPipelineInterfaceCreateInfoKHR*)(uintptr_t)vkStream->getBe64();
19016     if (forUnmarshaling->pLibraryInterface) {
19017         vkStream->alloc((void**)&forUnmarshaling->pLibraryInterface,
19018                         sizeof(const VkRayTracingPipelineInterfaceCreateInfoKHR));
19019         unmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
19020             vkStream, rootType,
19021             (VkRayTracingPipelineInterfaceCreateInfoKHR*)(forUnmarshaling->pLibraryInterface));
19022     }
19023     // WARNING PTR CHECK
19024     forUnmarshaling->pDynamicState =
19025         (const VkPipelineDynamicStateCreateInfo*)(uintptr_t)vkStream->getBe64();
19026     if (forUnmarshaling->pDynamicState) {
19027         vkStream->alloc((void**)&forUnmarshaling->pDynamicState,
19028                         sizeof(const VkPipelineDynamicStateCreateInfo));
19029         unmarshal_VkPipelineDynamicStateCreateInfo(
19030             vkStream, rootType,
19031             (VkPipelineDynamicStateCreateInfo*)(forUnmarshaling->pDynamicState));
19032     }
19033     uint64_t cgen_var_3;
19034     vkStream->read((uint64_t*)&cgen_var_3, 1 * 8);
19035     vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(
19036         &cgen_var_3, (VkPipelineLayout*)&forUnmarshaling->layout, 1);
19037     uint64_t cgen_var_4;
19038     vkStream->read((uint64_t*)&cgen_var_4, 1 * 8);
19039     vkStream->handleMapping()->mapHandles_u64_VkPipeline(
19040         &cgen_var_4, (VkPipeline*)&forUnmarshaling->basePipelineHandle, 1);
19041     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
19042 }
19043 
marshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceRayTracingPipelineFeaturesKHR * forMarshaling)19044 void marshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
19045     VulkanStream* vkStream, VkStructureType rootType,
19046     const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* forMarshaling) {
19047     (void)rootType;
19048     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
19049     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
19050         rootType = forMarshaling->sType;
19051     }
19052     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
19053     vkStream->write((VkBool32*)&forMarshaling->rayTracingPipeline, sizeof(VkBool32));
19054     vkStream->write((VkBool32*)&forMarshaling->rayTracingPipelineShaderGroupHandleCaptureReplay,
19055                     sizeof(VkBool32));
19056     vkStream->write(
19057         (VkBool32*)&forMarshaling->rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
19058         sizeof(VkBool32));
19059     vkStream->write((VkBool32*)&forMarshaling->rayTracingPipelineTraceRaysIndirect,
19060                     sizeof(VkBool32));
19061     vkStream->write((VkBool32*)&forMarshaling->rayTraversalPrimitiveCulling, sizeof(VkBool32));
19062 }
19063 
unmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRayTracingPipelineFeaturesKHR * forUnmarshaling)19064 void unmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
19065     VulkanStream* vkStream, VkStructureType rootType,
19066     VkPhysicalDeviceRayTracingPipelineFeaturesKHR* forUnmarshaling) {
19067     (void)rootType;
19068     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
19069     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
19070         rootType = forUnmarshaling->sType;
19071     }
19072     size_t pNext_size;
19073     pNext_size = vkStream->getBe32();
19074     forUnmarshaling->pNext = nullptr;
19075     if (pNext_size) {
19076         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
19077         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
19078         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
19079         vkStream->alloc((void**)&forUnmarshaling->pNext,
19080                         goldfish_vk_extension_struct_size_with_stream_features(
19081                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
19082         *(VkStructureType*)forUnmarshaling->pNext = extType;
19083         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
19084     }
19085     vkStream->read((VkBool32*)&forUnmarshaling->rayTracingPipeline, sizeof(VkBool32));
19086     vkStream->read((VkBool32*)&forUnmarshaling->rayTracingPipelineShaderGroupHandleCaptureReplay,
19087                    sizeof(VkBool32));
19088     vkStream->read(
19089         (VkBool32*)&forUnmarshaling->rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
19090         sizeof(VkBool32));
19091     vkStream->read((VkBool32*)&forUnmarshaling->rayTracingPipelineTraceRaysIndirect,
19092                    sizeof(VkBool32));
19093     vkStream->read((VkBool32*)&forUnmarshaling->rayTraversalPrimitiveCulling, sizeof(VkBool32));
19094 }
19095 
marshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,const VkPhysicalDeviceRayTracingPipelinePropertiesKHR * forMarshaling)19096 void marshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
19097     VulkanStream* vkStream, VkStructureType rootType,
19098     const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* forMarshaling) {
19099     (void)rootType;
19100     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
19101     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
19102         rootType = forMarshaling->sType;
19103     }
19104     marshal_extension_struct(vkStream, rootType, forMarshaling->pNext);
19105     vkStream->write((uint32_t*)&forMarshaling->shaderGroupHandleSize, sizeof(uint32_t));
19106     vkStream->write((uint32_t*)&forMarshaling->maxRayRecursionDepth, sizeof(uint32_t));
19107     vkStream->write((uint32_t*)&forMarshaling->maxShaderGroupStride, sizeof(uint32_t));
19108     vkStream->write((uint32_t*)&forMarshaling->shaderGroupBaseAlignment, sizeof(uint32_t));
19109     vkStream->write((uint32_t*)&forMarshaling->shaderGroupHandleCaptureReplaySize,
19110                     sizeof(uint32_t));
19111     vkStream->write((uint32_t*)&forMarshaling->maxRayDispatchInvocationCount, sizeof(uint32_t));
19112     vkStream->write((uint32_t*)&forMarshaling->shaderGroupHandleAlignment, sizeof(uint32_t));
19113     vkStream->write((uint32_t*)&forMarshaling->maxRayHitAttributeSize, sizeof(uint32_t));
19114 }
19115 
unmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRayTracingPipelinePropertiesKHR * forUnmarshaling)19116 void unmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
19117     VulkanStream* vkStream, VkStructureType rootType,
19118     VkPhysicalDeviceRayTracingPipelinePropertiesKHR* forUnmarshaling) {
19119     (void)rootType;
19120     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
19121     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
19122         rootType = forUnmarshaling->sType;
19123     }
19124     size_t pNext_size;
19125     pNext_size = vkStream->getBe32();
19126     forUnmarshaling->pNext = nullptr;
19127     if (pNext_size) {
19128         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
19129         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
19130         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
19131         vkStream->alloc((void**)&forUnmarshaling->pNext,
19132                         goldfish_vk_extension_struct_size_with_stream_features(
19133                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
19134         *(VkStructureType*)forUnmarshaling->pNext = extType;
19135         unmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext));
19136     }
19137     vkStream->read((uint32_t*)&forUnmarshaling->shaderGroupHandleSize, sizeof(uint32_t));
19138     vkStream->read((uint32_t*)&forUnmarshaling->maxRayRecursionDepth, sizeof(uint32_t));
19139     vkStream->read((uint32_t*)&forUnmarshaling->maxShaderGroupStride, sizeof(uint32_t));
19140     vkStream->read((uint32_t*)&forUnmarshaling->shaderGroupBaseAlignment, sizeof(uint32_t));
19141     vkStream->read((uint32_t*)&forUnmarshaling->shaderGroupHandleCaptureReplaySize,
19142                    sizeof(uint32_t));
19143     vkStream->read((uint32_t*)&forUnmarshaling->maxRayDispatchInvocationCount, sizeof(uint32_t));
19144     vkStream->read((uint32_t*)&forUnmarshaling->shaderGroupHandleAlignment, sizeof(uint32_t));
19145     vkStream->read((uint32_t*)&forUnmarshaling->maxRayHitAttributeSize, sizeof(uint32_t));
19146 }
19147 
marshal_VkStridedDeviceAddressRegionKHR(VulkanStream * vkStream,VkStructureType rootType,const VkStridedDeviceAddressRegionKHR * forMarshaling)19148 void marshal_VkStridedDeviceAddressRegionKHR(VulkanStream* vkStream, VkStructureType rootType,
19149                                              const VkStridedDeviceAddressRegionKHR* forMarshaling) {
19150     (void)rootType;
19151     vkStream->write((VkDeviceAddress*)&forMarshaling->deviceAddress, sizeof(VkDeviceAddress));
19152     vkStream->write((VkDeviceSize*)&forMarshaling->stride, sizeof(VkDeviceSize));
19153     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
19154 }
19155 
unmarshal_VkStridedDeviceAddressRegionKHR(VulkanStream * vkStream,VkStructureType rootType,VkStridedDeviceAddressRegionKHR * forUnmarshaling)19156 void unmarshal_VkStridedDeviceAddressRegionKHR(VulkanStream* vkStream, VkStructureType rootType,
19157                                                VkStridedDeviceAddressRegionKHR* forUnmarshaling) {
19158     (void)rootType;
19159     vkStream->read((VkDeviceAddress*)&forUnmarshaling->deviceAddress, sizeof(VkDeviceAddress));
19160     vkStream->read((VkDeviceSize*)&forUnmarshaling->stride, sizeof(VkDeviceSize));
19161     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
19162 }
19163 
marshal_VkTraceRaysIndirectCommandKHR(VulkanStream * vkStream,VkStructureType rootType,const VkTraceRaysIndirectCommandKHR * forMarshaling)19164 void marshal_VkTraceRaysIndirectCommandKHR(VulkanStream* vkStream, VkStructureType rootType,
19165                                            const VkTraceRaysIndirectCommandKHR* forMarshaling) {
19166     (void)rootType;
19167     vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
19168     vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
19169     vkStream->write((uint32_t*)&forMarshaling->depth, sizeof(uint32_t));
19170 }
19171 
unmarshal_VkTraceRaysIndirectCommandKHR(VulkanStream * vkStream,VkStructureType rootType,VkTraceRaysIndirectCommandKHR * forUnmarshaling)19172 void unmarshal_VkTraceRaysIndirectCommandKHR(VulkanStream* vkStream, VkStructureType rootType,
19173                                              VkTraceRaysIndirectCommandKHR* forUnmarshaling) {
19174     (void)rootType;
19175     vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
19176     vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
19177     vkStream->read((uint32_t*)&forUnmarshaling->depth, sizeof(uint32_t));
19178 }
19179 
19180 #endif
marshal_extension_struct(VulkanStream * vkStream,VkStructureType rootType,const void * structExtension)19181 void marshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
19182                               const void* structExtension) {
19183     VkInstanceCreateInfo* structAccess = (VkInstanceCreateInfo*)(structExtension);
19184     size_t currExtSize = goldfish_vk_extension_struct_size_with_stream_features(
19185         vkStream->getFeatureBits(), rootType, structExtension);
19186     if (!currExtSize && structExtension) {
19187         // unknown struct extension; skip and call on its pNext field
19188         marshal_extension_struct(vkStream, rootType, (void*)structAccess->pNext);
19189         return;
19190     } else {
19191         // known or null extension struct
19192         vkStream->putBe32(currExtSize);
19193         if (!currExtSize) {
19194             // exit if this was a null extension struct (size == 0 in this branch)
19195             return;
19196         }
19197     }
19198     vkStream->write(structExtension, sizeof(VkStructureType));
19199     if (!structExtension) {
19200         return;
19201     }
19202     uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension);
19203     switch (structType) {
19204 #ifdef VK_VERSION_1_0
19205         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: {
19206             marshal_VkShaderModuleCreateInfo(
19207                 vkStream, rootType,
19208                 reinterpret_cast<const VkShaderModuleCreateInfo*>(structExtension));
19209             break;
19210         }
19211 #endif
19212 #ifdef VK_VERSION_1_1
19213         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
19214             marshal_VkPhysicalDeviceSubgroupProperties(
19215                 vkStream, rootType,
19216                 reinterpret_cast<const VkPhysicalDeviceSubgroupProperties*>(structExtension));
19217             break;
19218         }
19219         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
19220             marshal_VkPhysicalDevice16BitStorageFeatures(
19221                 vkStream, rootType,
19222                 reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(structExtension));
19223             break;
19224         }
19225         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
19226             marshal_VkMemoryDedicatedRequirements(
19227                 vkStream, rootType,
19228                 reinterpret_cast<const VkMemoryDedicatedRequirements*>(structExtension));
19229             break;
19230         }
19231         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
19232             marshal_VkMemoryDedicatedAllocateInfo(
19233                 vkStream, rootType,
19234                 reinterpret_cast<const VkMemoryDedicatedAllocateInfo*>(structExtension));
19235             break;
19236         }
19237         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
19238             marshal_VkMemoryAllocateFlagsInfo(
19239                 vkStream, rootType,
19240                 reinterpret_cast<const VkMemoryAllocateFlagsInfo*>(structExtension));
19241             break;
19242         }
19243         case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
19244             marshal_VkDeviceGroupRenderPassBeginInfo(
19245                 vkStream, rootType,
19246                 reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo*>(structExtension));
19247             break;
19248         }
19249         case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
19250             marshal_VkDeviceGroupCommandBufferBeginInfo(
19251                 vkStream, rootType,
19252                 reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo*>(structExtension));
19253             break;
19254         }
19255         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
19256             marshal_VkDeviceGroupSubmitInfo(
19257                 vkStream, rootType,
19258                 reinterpret_cast<const VkDeviceGroupSubmitInfo*>(structExtension));
19259             break;
19260         }
19261         case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
19262             marshal_VkDeviceGroupBindSparseInfo(
19263                 vkStream, rootType,
19264                 reinterpret_cast<const VkDeviceGroupBindSparseInfo*>(structExtension));
19265             break;
19266         }
19267         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
19268             marshal_VkBindBufferMemoryDeviceGroupInfo(
19269                 vkStream, rootType,
19270                 reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo*>(structExtension));
19271             break;
19272         }
19273         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
19274             marshal_VkBindImageMemoryDeviceGroupInfo(
19275                 vkStream, rootType,
19276                 reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo*>(structExtension));
19277             break;
19278         }
19279         case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
19280             marshal_VkDeviceGroupDeviceCreateInfo(
19281                 vkStream, rootType,
19282                 reinterpret_cast<const VkDeviceGroupDeviceCreateInfo*>(structExtension));
19283             break;
19284         }
19285         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
19286             marshal_VkPhysicalDeviceFeatures2(
19287                 vkStream, rootType,
19288                 reinterpret_cast<const VkPhysicalDeviceFeatures2*>(structExtension));
19289             break;
19290         }
19291         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
19292             marshal_VkPhysicalDevicePointClippingProperties(
19293                 vkStream, rootType,
19294                 reinterpret_cast<const VkPhysicalDevicePointClippingProperties*>(structExtension));
19295             break;
19296         }
19297         case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
19298             marshal_VkRenderPassInputAttachmentAspectCreateInfo(
19299                 vkStream, rootType,
19300                 reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>(
19301                     structExtension));
19302             break;
19303         }
19304         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
19305             marshal_VkImageViewUsageCreateInfo(
19306                 vkStream, rootType,
19307                 reinterpret_cast<const VkImageViewUsageCreateInfo*>(structExtension));
19308             break;
19309         }
19310         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
19311             marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
19312                 vkStream, rootType,
19313                 reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo*>(
19314                     structExtension));
19315             break;
19316         }
19317         case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
19318             marshal_VkRenderPassMultiviewCreateInfo(
19319                 vkStream, rootType,
19320                 reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>(structExtension));
19321             break;
19322         }
19323         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
19324             marshal_VkPhysicalDeviceMultiviewFeatures(
19325                 vkStream, rootType,
19326                 reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(structExtension));
19327             break;
19328         }
19329         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
19330             marshal_VkPhysicalDeviceMultiviewProperties(
19331                 vkStream, rootType,
19332                 reinterpret_cast<const VkPhysicalDeviceMultiviewProperties*>(structExtension));
19333             break;
19334         }
19335         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
19336             marshal_VkPhysicalDeviceVariablePointersFeatures(
19337                 vkStream, rootType,
19338                 reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>(structExtension));
19339             break;
19340         }
19341         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
19342             marshal_VkPhysicalDeviceProtectedMemoryFeatures(
19343                 vkStream, rootType,
19344                 reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension));
19345             break;
19346         }
19347         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
19348             marshal_VkPhysicalDeviceProtectedMemoryProperties(
19349                 vkStream, rootType,
19350                 reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties*>(
19351                     structExtension));
19352             break;
19353         }
19354         case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
19355             marshal_VkProtectedSubmitInfo(
19356                 vkStream, rootType,
19357                 reinterpret_cast<const VkProtectedSubmitInfo*>(structExtension));
19358             break;
19359         }
19360         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
19361             marshal_VkSamplerYcbcrConversionInfo(
19362                 vkStream, rootType,
19363                 reinterpret_cast<const VkSamplerYcbcrConversionInfo*>(structExtension));
19364             break;
19365         }
19366         case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
19367             marshal_VkBindImagePlaneMemoryInfo(
19368                 vkStream, rootType,
19369                 reinterpret_cast<const VkBindImagePlaneMemoryInfo*>(structExtension));
19370             break;
19371         }
19372         case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
19373             marshal_VkImagePlaneMemoryRequirementsInfo(
19374                 vkStream, rootType,
19375                 reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo*>(structExtension));
19376             break;
19377         }
19378         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
19379             marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
19380                 vkStream, rootType,
19381                 reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(
19382                     structExtension));
19383             break;
19384         }
19385         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
19386             marshal_VkSamplerYcbcrConversionImageFormatProperties(
19387                 vkStream, rootType,
19388                 reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties*>(
19389                     structExtension));
19390             break;
19391         }
19392         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
19393             marshal_VkPhysicalDeviceExternalImageFormatInfo(
19394                 vkStream, rootType,
19395                 reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>(structExtension));
19396             break;
19397         }
19398         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
19399             marshal_VkExternalImageFormatProperties(
19400                 vkStream, rootType,
19401                 reinterpret_cast<const VkExternalImageFormatProperties*>(structExtension));
19402             break;
19403         }
19404         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
19405             marshal_VkPhysicalDeviceIDProperties(
19406                 vkStream, rootType,
19407                 reinterpret_cast<const VkPhysicalDeviceIDProperties*>(structExtension));
19408             break;
19409         }
19410         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
19411             marshal_VkExternalMemoryImageCreateInfo(
19412                 vkStream, rootType,
19413                 reinterpret_cast<const VkExternalMemoryImageCreateInfo*>(structExtension));
19414             break;
19415         }
19416         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
19417             marshal_VkExternalMemoryBufferCreateInfo(
19418                 vkStream, rootType,
19419                 reinterpret_cast<const VkExternalMemoryBufferCreateInfo*>(structExtension));
19420             break;
19421         }
19422         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
19423             marshal_VkExportMemoryAllocateInfo(
19424                 vkStream, rootType,
19425                 reinterpret_cast<const VkExportMemoryAllocateInfo*>(structExtension));
19426             break;
19427         }
19428         case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
19429             marshal_VkExportFenceCreateInfo(
19430                 vkStream, rootType,
19431                 reinterpret_cast<const VkExportFenceCreateInfo*>(structExtension));
19432             break;
19433         }
19434         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
19435             marshal_VkExportSemaphoreCreateInfo(
19436                 vkStream, rootType,
19437                 reinterpret_cast<const VkExportSemaphoreCreateInfo*>(structExtension));
19438             break;
19439         }
19440         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
19441             marshal_VkPhysicalDeviceMaintenance3Properties(
19442                 vkStream, rootType,
19443                 reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties*>(structExtension));
19444             break;
19445         }
19446         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
19447             marshal_VkPhysicalDeviceShaderDrawParametersFeatures(
19448                 vkStream, rootType,
19449                 reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>(
19450                     structExtension));
19451             break;
19452         }
19453 #endif
19454 #ifdef VK_VERSION_1_2
19455         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
19456             marshal_VkPhysicalDeviceVulkan11Features(
19457                 vkStream, rootType,
19458                 reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>(structExtension));
19459             break;
19460         }
19461         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: {
19462             marshal_VkPhysicalDeviceVulkan11Properties(
19463                 vkStream, rootType,
19464                 reinterpret_cast<const VkPhysicalDeviceVulkan11Properties*>(structExtension));
19465             break;
19466         }
19467         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
19468             marshal_VkPhysicalDeviceVulkan12Features(
19469                 vkStream, rootType,
19470                 reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>(structExtension));
19471             break;
19472         }
19473         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: {
19474             marshal_VkPhysicalDeviceVulkan12Properties(
19475                 vkStream, rootType,
19476                 reinterpret_cast<const VkPhysicalDeviceVulkan12Properties*>(structExtension));
19477             break;
19478         }
19479         case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: {
19480             marshal_VkImageFormatListCreateInfo(
19481                 vkStream, rootType,
19482                 reinterpret_cast<const VkImageFormatListCreateInfo*>(structExtension));
19483             break;
19484         }
19485         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: {
19486             marshal_VkPhysicalDevice8BitStorageFeatures(
19487                 vkStream, rootType,
19488                 reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>(structExtension));
19489             break;
19490         }
19491         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: {
19492             marshal_VkPhysicalDeviceDriverProperties(
19493                 vkStream, rootType,
19494                 reinterpret_cast<const VkPhysicalDeviceDriverProperties*>(structExtension));
19495             break;
19496         }
19497         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: {
19498             marshal_VkPhysicalDeviceShaderAtomicInt64Features(
19499                 vkStream, rootType,
19500                 reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>(
19501                     structExtension));
19502             break;
19503         }
19504         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: {
19505             marshal_VkPhysicalDeviceShaderFloat16Int8Features(
19506                 vkStream, rootType,
19507                 reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>(
19508                     structExtension));
19509             break;
19510         }
19511         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: {
19512             marshal_VkPhysicalDeviceFloatControlsProperties(
19513                 vkStream, rootType,
19514                 reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties*>(structExtension));
19515             break;
19516         }
19517         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: {
19518             marshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
19519                 vkStream, rootType,
19520                 reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo*>(
19521                     structExtension));
19522             break;
19523         }
19524         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: {
19525             marshal_VkPhysicalDeviceDescriptorIndexingFeatures(
19526                 vkStream, rootType,
19527                 reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>(
19528                     structExtension));
19529             break;
19530         }
19531         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: {
19532             marshal_VkPhysicalDeviceDescriptorIndexingProperties(
19533                 vkStream, rootType,
19534                 reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties*>(
19535                     structExtension));
19536             break;
19537         }
19538         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: {
19539             marshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
19540                 vkStream, rootType,
19541                 reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo*>(
19542                     structExtension));
19543             break;
19544         }
19545         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: {
19546             marshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
19547                 vkStream, rootType,
19548                 reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport*>(
19549                     structExtension));
19550             break;
19551         }
19552         case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: {
19553             marshal_VkSubpassDescriptionDepthStencilResolve(
19554                 vkStream, rootType,
19555                 reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve*>(structExtension));
19556             break;
19557         }
19558         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: {
19559             marshal_VkPhysicalDeviceDepthStencilResolveProperties(
19560                 vkStream, rootType,
19561                 reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties*>(
19562                     structExtension));
19563             break;
19564         }
19565         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
19566             marshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
19567                 vkStream, rootType,
19568                 reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>(
19569                     structExtension));
19570             break;
19571         }
19572         case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: {
19573             marshal_VkImageStencilUsageCreateInfo(
19574                 vkStream, rootType,
19575                 reinterpret_cast<const VkImageStencilUsageCreateInfo*>(structExtension));
19576             break;
19577         }
19578         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: {
19579             marshal_VkSamplerReductionModeCreateInfo(
19580                 vkStream, rootType,
19581                 reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(structExtension));
19582             break;
19583         }
19584         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: {
19585             marshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
19586                 vkStream, rootType,
19587                 reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties*>(
19588                     structExtension));
19589             break;
19590         }
19591         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: {
19592             marshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
19593                 vkStream, rootType,
19594                 reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>(
19595                     structExtension));
19596             break;
19597         }
19598         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: {
19599             marshal_VkPhysicalDeviceImagelessFramebufferFeatures(
19600                 vkStream, rootType,
19601                 reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>(
19602                     structExtension));
19603             break;
19604         }
19605         case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: {
19606             marshal_VkFramebufferAttachmentsCreateInfo(
19607                 vkStream, rootType,
19608                 reinterpret_cast<const VkFramebufferAttachmentsCreateInfo*>(structExtension));
19609             break;
19610         }
19611         case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: {
19612             marshal_VkRenderPassAttachmentBeginInfo(
19613                 vkStream, rootType,
19614                 reinterpret_cast<const VkRenderPassAttachmentBeginInfo*>(structExtension));
19615             break;
19616         }
19617         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: {
19618             marshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
19619                 vkStream, rootType,
19620                 reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(
19621                     structExtension));
19622             break;
19623         }
19624         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: {
19625             marshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
19626                 vkStream, rootType,
19627                 reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(
19628                     structExtension));
19629             break;
19630         }
19631         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: {
19632             marshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
19633                 vkStream, rootType,
19634                 reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(
19635                     structExtension));
19636             break;
19637         }
19638         case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: {
19639             marshal_VkAttachmentReferenceStencilLayout(
19640                 vkStream, rootType,
19641                 reinterpret_cast<const VkAttachmentReferenceStencilLayout*>(structExtension));
19642             break;
19643         }
19644         case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: {
19645             marshal_VkAttachmentDescriptionStencilLayout(
19646                 vkStream, rootType,
19647                 reinterpret_cast<const VkAttachmentDescriptionStencilLayout*>(structExtension));
19648             break;
19649         }
19650         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: {
19651             marshal_VkPhysicalDeviceHostQueryResetFeatures(
19652                 vkStream, rootType,
19653                 reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>(structExtension));
19654             break;
19655         }
19656         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: {
19657             marshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
19658                 vkStream, rootType,
19659                 reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>(
19660                     structExtension));
19661             break;
19662         }
19663         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: {
19664             marshal_VkPhysicalDeviceTimelineSemaphoreProperties(
19665                 vkStream, rootType,
19666                 reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties*>(
19667                     structExtension));
19668             break;
19669         }
19670         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: {
19671             marshal_VkSemaphoreTypeCreateInfo(
19672                 vkStream, rootType,
19673                 reinterpret_cast<const VkSemaphoreTypeCreateInfo*>(structExtension));
19674             break;
19675         }
19676         case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: {
19677             marshal_VkTimelineSemaphoreSubmitInfo(
19678                 vkStream, rootType,
19679                 reinterpret_cast<const VkTimelineSemaphoreSubmitInfo*>(structExtension));
19680             break;
19681         }
19682         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: {
19683             marshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
19684                 vkStream, rootType,
19685                 reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>(
19686                     structExtension));
19687             break;
19688         }
19689         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: {
19690             marshal_VkBufferOpaqueCaptureAddressCreateInfo(
19691                 vkStream, rootType,
19692                 reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension));
19693             break;
19694         }
19695         case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: {
19696             marshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
19697                 vkStream, rootType,
19698                 reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension));
19699             break;
19700         }
19701 #endif
19702 #ifdef VK_VERSION_1_3
19703         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: {
19704             marshal_VkPhysicalDeviceVulkan13Features(
19705                 vkStream, rootType,
19706                 reinterpret_cast<const VkPhysicalDeviceVulkan13Features*>(structExtension));
19707             break;
19708         }
19709         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: {
19710             marshal_VkPhysicalDeviceVulkan13Properties(
19711                 vkStream, rootType,
19712                 reinterpret_cast<const VkPhysicalDeviceVulkan13Properties*>(structExtension));
19713             break;
19714         }
19715         case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: {
19716             marshal_VkPipelineCreationFeedbackCreateInfo(
19717                 vkStream, rootType,
19718                 reinterpret_cast<const VkPipelineCreationFeedbackCreateInfo*>(structExtension));
19719             break;
19720         }
19721         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: {
19722             marshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(
19723                 vkStream, rootType,
19724                 reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeatures*>(
19725                     structExtension));
19726             break;
19727         }
19728         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: {
19729             marshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
19730                 vkStream, rootType,
19731                 reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>(
19732                     structExtension));
19733             break;
19734         }
19735         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: {
19736             marshal_VkPhysicalDevicePrivateDataFeatures(
19737                 vkStream, rootType,
19738                 reinterpret_cast<const VkPhysicalDevicePrivateDataFeatures*>(structExtension));
19739             break;
19740         }
19741         case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: {
19742             marshal_VkDevicePrivateDataCreateInfo(
19743                 vkStream, rootType,
19744                 reinterpret_cast<const VkDevicePrivateDataCreateInfo*>(structExtension));
19745             break;
19746         }
19747         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: {
19748             marshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(
19749                 vkStream, rootType,
19750                 reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeatures*>(
19751                     structExtension));
19752             break;
19753         }
19754         case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: {
19755             marshal_VkMemoryBarrier2(vkStream, rootType,
19756                                      reinterpret_cast<const VkMemoryBarrier2*>(structExtension));
19757             break;
19758         }
19759         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
19760             marshal_VkPhysicalDeviceSynchronization2Features(
19761                 vkStream, rootType,
19762                 reinterpret_cast<const VkPhysicalDeviceSynchronization2Features*>(structExtension));
19763             break;
19764         }
19765         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: {
19766             marshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
19767                 vkStream, rootType,
19768                 reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>(
19769                     structExtension));
19770             break;
19771         }
19772         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: {
19773             marshal_VkPhysicalDeviceImageRobustnessFeatures(
19774                 vkStream, rootType,
19775                 reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeatures*>(structExtension));
19776             break;
19777         }
19778         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
19779             marshal_VkPhysicalDeviceSubgroupSizeControlFeatures(
19780                 vkStream, rootType,
19781                 reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeatures*>(
19782                     structExtension));
19783             break;
19784         }
19785         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: {
19786             marshal_VkPhysicalDeviceSubgroupSizeControlProperties(
19787                 vkStream, rootType,
19788                 reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlProperties*>(
19789                     structExtension));
19790             break;
19791         }
19792         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: {
19793             marshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(
19794                 vkStream, rootType,
19795                 reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo*>(
19796                     structExtension));
19797             break;
19798         }
19799         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: {
19800             marshal_VkPhysicalDeviceInlineUniformBlockFeatures(
19801                 vkStream, rootType,
19802                 reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeatures*>(
19803                     structExtension));
19804             break;
19805         }
19806         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: {
19807             marshal_VkPhysicalDeviceInlineUniformBlockProperties(
19808                 vkStream, rootType,
19809                 reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockProperties*>(
19810                     structExtension));
19811             break;
19812         }
19813         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: {
19814             marshal_VkWriteDescriptorSetInlineUniformBlock(
19815                 vkStream, rootType,
19816                 reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlock*>(structExtension));
19817             break;
19818         }
19819         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: {
19820             marshal_VkDescriptorPoolInlineUniformBlockCreateInfo(
19821                 vkStream, rootType,
19822                 reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfo*>(
19823                     structExtension));
19824             break;
19825         }
19826         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
19827             marshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(
19828                 vkStream, rootType,
19829                 reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>(
19830                     structExtension));
19831             break;
19832         }
19833         case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: {
19834             marshal_VkPipelineRenderingCreateInfo(
19835                 vkStream, rootType,
19836                 reinterpret_cast<const VkPipelineRenderingCreateInfo*>(structExtension));
19837             break;
19838         }
19839         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
19840             marshal_VkPhysicalDeviceDynamicRenderingFeatures(
19841                 vkStream, rootType,
19842                 reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeatures*>(structExtension));
19843             break;
19844         }
19845         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: {
19846             marshal_VkCommandBufferInheritanceRenderingInfo(
19847                 vkStream, rootType,
19848                 reinterpret_cast<const VkCommandBufferInheritanceRenderingInfo*>(structExtension));
19849             break;
19850         }
19851         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: {
19852             marshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(
19853                 vkStream, rootType,
19854                 reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeatures*>(
19855                     structExtension));
19856             break;
19857         }
19858         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: {
19859             marshal_VkPhysicalDeviceShaderIntegerDotProductProperties(
19860                 vkStream, rootType,
19861                 reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductProperties*>(
19862                     structExtension));
19863             break;
19864         }
19865         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: {
19866             marshal_VkPhysicalDeviceTexelBufferAlignmentProperties(
19867                 vkStream, rootType,
19868                 reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentProperties*>(
19869                     structExtension));
19870             break;
19871         }
19872         case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: {
19873             marshal_VkFormatProperties3(
19874                 vkStream, rootType, reinterpret_cast<const VkFormatProperties3*>(structExtension));
19875             break;
19876         }
19877         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
19878             marshal_VkPhysicalDeviceMaintenance4Features(
19879                 vkStream, rootType,
19880                 reinterpret_cast<const VkPhysicalDeviceMaintenance4Features*>(structExtension));
19881             break;
19882         }
19883         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: {
19884             marshal_VkPhysicalDeviceMaintenance4Properties(
19885                 vkStream, rootType,
19886                 reinterpret_cast<const VkPhysicalDeviceMaintenance4Properties*>(structExtension));
19887             break;
19888         }
19889 #endif
19890 #ifdef VK_KHR_swapchain
19891         case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: {
19892             marshal_VkImageSwapchainCreateInfoKHR(
19893                 vkStream, rootType,
19894                 reinterpret_cast<const VkImageSwapchainCreateInfoKHR*>(structExtension));
19895             break;
19896         }
19897         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
19898             marshal_VkBindImageMemorySwapchainInfoKHR(
19899                 vkStream, rootType,
19900                 reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR*>(structExtension));
19901             break;
19902         }
19903         case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: {
19904             marshal_VkDeviceGroupPresentInfoKHR(
19905                 vkStream, rootType,
19906                 reinterpret_cast<const VkDeviceGroupPresentInfoKHR*>(structExtension));
19907             break;
19908         }
19909         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: {
19910             marshal_VkDeviceGroupSwapchainCreateInfoKHR(
19911                 vkStream, rootType,
19912                 reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension));
19913             break;
19914         }
19915 #endif
19916 #ifdef VK_KHR_dynamic_rendering
19917         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: {
19918             marshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
19919                 vkStream, rootType,
19920                 reinterpret_cast<const VkRenderingFragmentShadingRateAttachmentInfoKHR*>(
19921                     structExtension));
19922             break;
19923         }
19924         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
19925             marshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
19926                 vkStream, rootType,
19927                 reinterpret_cast<const VkRenderingFragmentDensityMapAttachmentInfoEXT*>(
19928                     structExtension));
19929             break;
19930         }
19931         case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: {
19932             marshal_VkAttachmentSampleCountInfoAMD(
19933                 vkStream, rootType,
19934                 reinterpret_cast<const VkAttachmentSampleCountInfoAMD*>(structExtension));
19935             break;
19936         }
19937         case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: {
19938             marshal_VkMultiviewPerViewAttributesInfoNVX(
19939                 vkStream, rootType,
19940                 reinterpret_cast<const VkMultiviewPerViewAttributesInfoNVX*>(structExtension));
19941             break;
19942         }
19943 #endif
19944 #ifdef VK_KHR_incremental_present
19945         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
19946             marshal_VkPresentRegionsKHR(
19947                 vkStream, rootType, reinterpret_cast<const VkPresentRegionsKHR*>(structExtension));
19948             break;
19949         }
19950 #endif
19951 #ifdef VK_KHR_pipeline_executable_properties
19952         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
19953             marshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
19954                 vkStream, rootType,
19955                 reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(
19956                     structExtension));
19957             break;
19958         }
19959 #endif
19960 #ifdef VK_KHR_pipeline_library
19961         case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: {
19962             marshal_VkPipelineLibraryCreateInfoKHR(
19963                 vkStream, rootType,
19964                 reinterpret_cast<const VkPipelineLibraryCreateInfoKHR*>(structExtension));
19965             break;
19966         }
19967 #endif
19968 #ifdef VK_KHR_synchronization2
19969         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: {
19970             marshal_VkQueueFamilyCheckpointProperties2NV(
19971                 vkStream, rootType,
19972                 reinterpret_cast<const VkQueueFamilyCheckpointProperties2NV*>(structExtension));
19973             break;
19974         }
19975 #endif
19976 #ifdef VK_KHR_maintenance5
19977         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR: {
19978             marshal_VkPhysicalDeviceMaintenance5FeaturesKHR(
19979                 vkStream, rootType,
19980                 reinterpret_cast<const VkPhysicalDeviceMaintenance5FeaturesKHR*>(structExtension));
19981             break;
19982         }
19983         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR: {
19984             marshal_VkPhysicalDeviceMaintenance5PropertiesKHR(
19985                 vkStream, rootType,
19986                 reinterpret_cast<const VkPhysicalDeviceMaintenance5PropertiesKHR*>(
19987                     structExtension));
19988             break;
19989         }
19990         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR: {
19991             marshal_VkPipelineCreateFlags2CreateInfoKHR(
19992                 vkStream, rootType,
19993                 reinterpret_cast<const VkPipelineCreateFlags2CreateInfoKHR*>(structExtension));
19994             break;
19995         }
19996         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR: {
19997             marshal_VkBufferUsageFlags2CreateInfoKHR(
19998                 vkStream, rootType,
19999                 reinterpret_cast<const VkBufferUsageFlags2CreateInfoKHR*>(structExtension));
20000             break;
20001         }
20002 #endif
20003 #ifdef VK_KHR_line_rasterization
20004         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR: {
20005             marshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(
20006                 vkStream, rootType,
20007                 reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesKHR*>(
20008                     structExtension));
20009             break;
20010         }
20011         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR: {
20012             marshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(
20013                 vkStream, rootType,
20014                 reinterpret_cast<const VkPhysicalDeviceLineRasterizationPropertiesKHR*>(
20015                     structExtension));
20016             break;
20017         }
20018         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR: {
20019             marshal_VkPipelineRasterizationLineStateCreateInfoKHR(
20020                 vkStream, rootType,
20021                 reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfoKHR*>(
20022                     structExtension));
20023             break;
20024         }
20025 #endif
20026 #ifdef VK_ANDROID_native_buffer
20027         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
20028             marshal_VkNativeBufferANDROID(
20029                 vkStream, rootType,
20030                 reinterpret_cast<const VkNativeBufferANDROID*>(structExtension));
20031             break;
20032         }
20033 #endif
20034 #ifdef VK_EXT_debug_report
20035         case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: {
20036             marshal_VkDebugReportCallbackCreateInfoEXT(
20037                 vkStream, rootType,
20038                 reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(structExtension));
20039             break;
20040         }
20041 #endif
20042 #ifdef VK_EXT_transform_feedback
20043         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
20044             marshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
20045                 vkStream, rootType,
20046                 reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(
20047                     structExtension));
20048             break;
20049         }
20050         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
20051             marshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
20052                 vkStream, rootType,
20053                 reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(
20054                     structExtension));
20055             break;
20056         }
20057         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
20058             marshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
20059                 vkStream, rootType,
20060                 reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT*>(
20061                     structExtension));
20062             break;
20063         }
20064 #endif
20065 #ifdef VK_EXT_depth_clip_enable
20066         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
20067             marshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
20068                 vkStream, rootType,
20069                 reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(
20070                     structExtension));
20071             break;
20072         }
20073         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
20074             marshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
20075                 vkStream, rootType,
20076                 reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(
20077                     structExtension));
20078             break;
20079         }
20080 #endif
20081 #ifdef VK_EXT_debug_utils
20082         case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: {
20083             marshal_VkDebugUtilsObjectNameInfoEXT(
20084                 vkStream, rootType,
20085                 reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>(structExtension));
20086             break;
20087         }
20088         case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: {
20089             marshal_VkDebugUtilsMessengerCreateInfoEXT(
20090                 vkStream, rootType,
20091                 reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>(structExtension));
20092             break;
20093         }
20094 #endif
20095 #ifdef VK_EXT_image_drm_format_modifier
20096         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
20097             marshal_VkDrmFormatModifierPropertiesListEXT(
20098                 vkStream, rootType,
20099                 reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT*>(structExtension));
20100             break;
20101         }
20102         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
20103             marshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
20104                 vkStream, rootType,
20105                 reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(
20106                     structExtension));
20107             break;
20108         }
20109         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
20110             marshal_VkImageDrmFormatModifierListCreateInfoEXT(
20111                 vkStream, rootType,
20112                 reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT*>(
20113                     structExtension));
20114             break;
20115         }
20116         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
20117             marshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
20118                 vkStream, rootType,
20119                 reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT*>(
20120                     structExtension));
20121             break;
20122         }
20123         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
20124             marshal_VkDrmFormatModifierPropertiesList2EXT(
20125                 vkStream, rootType,
20126                 reinterpret_cast<const VkDrmFormatModifierPropertiesList2EXT*>(structExtension));
20127             break;
20128         }
20129 #endif
20130 #ifdef VK_EXT_external_memory_host
20131         case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: {
20132             marshal_VkImportMemoryHostPointerInfoEXT(
20133                 vkStream, rootType,
20134                 reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(structExtension));
20135             break;
20136         }
20137         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: {
20138             marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
20139                 vkStream, rootType,
20140                 reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(
20141                     structExtension));
20142             break;
20143         }
20144 #endif
20145 #ifdef VK_EXT_vertex_attribute_divisor
20146         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
20147             marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
20148                 vkStream, rootType,
20149                 reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(
20150                     structExtension));
20151             break;
20152         }
20153         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: {
20154             marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
20155                 vkStream, rootType,
20156                 reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT*>(
20157                     structExtension));
20158             break;
20159         }
20160         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
20161             marshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
20162                 vkStream, rootType,
20163                 reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(
20164                     structExtension));
20165             break;
20166         }
20167 #endif
20168 #ifdef VK_EXT_fragment_density_map
20169         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
20170             switch (rootType) {
20171                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
20172                     marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
20173                         vkStream, rootType,
20174                         reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
20175                             structExtension));
20176                     break;
20177                 }
20178                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
20179                     marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
20180                         vkStream, rootType,
20181                         reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
20182                             structExtension));
20183                     break;
20184                 }
20185                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
20186                     marshal_VkImportColorBufferGOOGLE(
20187                         vkStream, rootType,
20188                         reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension));
20189                     break;
20190                 }
20191                 default: {
20192                     marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
20193                         vkStream, rootType,
20194                         reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
20195                             structExtension));
20196                     break;
20197                 }
20198             }
20199             break;
20200         }
20201         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
20202             switch (rootType) {
20203                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
20204                     marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
20205                         vkStream, rootType,
20206                         reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
20207                             structExtension));
20208                     break;
20209                 }
20210                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
20211                     marshal_VkCreateBlobGOOGLE(
20212                         vkStream, rootType,
20213                         reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension));
20214                     break;
20215                 }
20216                 default: {
20217                     marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
20218                         vkStream, rootType,
20219                         reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
20220                             structExtension));
20221                     break;
20222                 }
20223             }
20224             break;
20225         }
20226         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
20227             switch (rootType) {
20228                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
20229                     marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
20230                         vkStream, rootType,
20231                         reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
20232                             structExtension));
20233                     break;
20234                 }
20235                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
20236                     marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
20237                         vkStream, rootType,
20238                         reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
20239                             structExtension));
20240                     break;
20241                 }
20242                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
20243                     marshal_VkImportBufferGOOGLE(
20244                         vkStream, rootType,
20245                         reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension));
20246                     break;
20247                 }
20248                 default: {
20249                     marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
20250                         vkStream, rootType,
20251                         reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(
20252                             structExtension));
20253                     break;
20254                 }
20255             }
20256             break;
20257         }
20258 #endif
20259 #ifdef VK_EXT_validation_features
20260         case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: {
20261             marshal_VkValidationFeaturesEXT(
20262                 vkStream, rootType,
20263                 reinterpret_cast<const VkValidationFeaturesEXT*>(structExtension));
20264             break;
20265         }
20266 #endif
20267 #ifdef VK_EXT_provoking_vertex
20268         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
20269             marshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
20270                 vkStream, rootType,
20271                 reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT*>(
20272                     structExtension));
20273             break;
20274         }
20275         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
20276             marshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
20277                 vkStream, rootType,
20278                 reinterpret_cast<const VkPhysicalDeviceProvokingVertexPropertiesEXT*>(
20279                     structExtension));
20280             break;
20281         }
20282         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
20283             marshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
20284                 vkStream, rootType,
20285                 reinterpret_cast<const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT*>(
20286                     structExtension));
20287             break;
20288         }
20289 #endif
20290 #ifdef VK_EXT_index_type_uint8
20291         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: {
20292             marshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
20293                 vkStream, rootType,
20294                 reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(
20295                     structExtension));
20296             break;
20297         }
20298 #endif
20299 #ifdef VK_EXT_extended_dynamic_state
20300         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
20301             marshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
20302                 vkStream, rootType,
20303                 reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(
20304                     structExtension));
20305             break;
20306         }
20307 #endif
20308 #ifdef VK_EXT_host_image_copy
20309         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT: {
20310             marshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(
20311                 vkStream, rootType,
20312                 reinterpret_cast<const VkPhysicalDeviceHostImageCopyFeaturesEXT*>(structExtension));
20313             break;
20314         }
20315         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT: {
20316             marshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(
20317                 vkStream, rootType,
20318                 reinterpret_cast<const VkPhysicalDeviceHostImageCopyPropertiesEXT*>(
20319                     structExtension));
20320             break;
20321         }
20322         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT: {
20323             marshal_VkSubresourceHostMemcpySizeEXT(
20324                 vkStream, rootType,
20325                 reinterpret_cast<const VkSubresourceHostMemcpySizeEXT*>(structExtension));
20326             break;
20327         }
20328         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT: {
20329             marshal_VkHostImageCopyDevicePerformanceQueryEXT(
20330                 vkStream, rootType,
20331                 reinterpret_cast<const VkHostImageCopyDevicePerformanceQueryEXT*>(structExtension));
20332             break;
20333         }
20334 #endif
20335 #ifdef VK_EXT_swapchain_maintenance1
20336         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: {
20337             marshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(
20338                 vkStream, rootType,
20339                 reinterpret_cast<const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT*>(
20340                     structExtension));
20341             break;
20342         }
20343         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: {
20344             marshal_VkSwapchainPresentFenceInfoEXT(
20345                 vkStream, rootType,
20346                 reinterpret_cast<const VkSwapchainPresentFenceInfoEXT*>(structExtension));
20347             break;
20348         }
20349         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: {
20350             marshal_VkSwapchainPresentModesCreateInfoEXT(
20351                 vkStream, rootType,
20352                 reinterpret_cast<const VkSwapchainPresentModesCreateInfoEXT*>(structExtension));
20353             break;
20354         }
20355         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: {
20356             marshal_VkSwapchainPresentModeInfoEXT(
20357                 vkStream, rootType,
20358                 reinterpret_cast<const VkSwapchainPresentModeInfoEXT*>(structExtension));
20359             break;
20360         }
20361         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: {
20362             marshal_VkSwapchainPresentScalingCreateInfoEXT(
20363                 vkStream, rootType,
20364                 reinterpret_cast<const VkSwapchainPresentScalingCreateInfoEXT*>(structExtension));
20365             break;
20366         }
20367 #endif
20368 #ifdef VK_EXT_texel_buffer_alignment
20369         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
20370             marshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
20371                 vkStream, rootType,
20372                 reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(
20373                     structExtension));
20374             break;
20375         }
20376 #endif
20377 #ifdef VK_EXT_device_memory_report
20378         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
20379             marshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
20380                 vkStream, rootType,
20381                 reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(
20382                     structExtension));
20383             break;
20384         }
20385         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
20386             marshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
20387                 vkStream, rootType,
20388                 reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension));
20389             break;
20390         }
20391 #endif
20392 #ifdef VK_EXT_robustness2
20393         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
20394             marshal_VkPhysicalDeviceRobustness2FeaturesEXT(
20395                 vkStream, rootType,
20396                 reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension));
20397             break;
20398         }
20399         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
20400             marshal_VkPhysicalDeviceRobustness2PropertiesEXT(
20401                 vkStream, rootType,
20402                 reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension));
20403             break;
20404         }
20405 #endif
20406 #ifdef VK_EXT_custom_border_color
20407         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
20408             marshal_VkSamplerCustomBorderColorCreateInfoEXT(
20409                 vkStream, rootType,
20410                 reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension));
20411             break;
20412         }
20413         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
20414             marshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
20415                 vkStream, rootType,
20416                 reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(
20417                     structExtension));
20418             break;
20419         }
20420         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
20421             marshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
20422                 vkStream, rootType,
20423                 reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(
20424                     structExtension));
20425             break;
20426         }
20427 #endif
20428 #ifdef VK_EXT_graphics_pipeline_library
20429         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
20430             marshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(
20431                 vkStream, rootType,
20432                 reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*>(
20433                     structExtension));
20434             break;
20435         }
20436         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
20437             marshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(
20438                 vkStream, rootType,
20439                 reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT*>(
20440                     structExtension));
20441             break;
20442         }
20443         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
20444             marshal_VkGraphicsPipelineLibraryCreateInfoEXT(
20445                 vkStream, rootType,
20446                 reinterpret_cast<const VkGraphicsPipelineLibraryCreateInfoEXT*>(structExtension));
20447             break;
20448         }
20449 #endif
20450 #ifdef VK_EXT_ycbcr_2plane_444_formats
20451         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
20452             marshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
20453                 vkStream, rootType,
20454                 reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(
20455                     structExtension));
20456             break;
20457         }
20458 #endif
20459 #ifdef VK_EXT_image_compression_control
20460         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
20461             marshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(
20462                 vkStream, rootType,
20463                 reinterpret_cast<const VkPhysicalDeviceImageCompressionControlFeaturesEXT*>(
20464                     structExtension));
20465             break;
20466         }
20467         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
20468             marshal_VkImageCompressionControlEXT(
20469                 vkStream, rootType,
20470                 reinterpret_cast<const VkImageCompressionControlEXT*>(structExtension));
20471             break;
20472         }
20473         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
20474             marshal_VkImageCompressionPropertiesEXT(
20475                 vkStream, rootType,
20476                 reinterpret_cast<const VkImageCompressionPropertiesEXT*>(structExtension));
20477             break;
20478         }
20479 #endif
20480 #ifdef VK_EXT_4444_formats
20481         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
20482             marshal_VkPhysicalDevice4444FormatsFeaturesEXT(
20483                 vkStream, rootType,
20484                 reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension));
20485             break;
20486         }
20487 #endif
20488 #ifdef VK_EXT_primitive_topology_list_restart
20489         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
20490             marshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
20491                 vkStream, rootType,
20492                 reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(
20493                     structExtension));
20494             break;
20495         }
20496 #endif
20497 #ifdef VK_EXT_extended_dynamic_state2
20498         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
20499             marshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
20500                 vkStream, rootType,
20501                 reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(
20502                     structExtension));
20503             break;
20504         }
20505 #endif
20506 #ifdef VK_EXT_color_write_enable
20507         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
20508             marshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
20509                 vkStream, rootType,
20510                 reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(
20511                     structExtension));
20512             break;
20513         }
20514         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
20515             marshal_VkPipelineColorWriteCreateInfoEXT(
20516                 vkStream, rootType,
20517                 reinterpret_cast<const VkPipelineColorWriteCreateInfoEXT*>(structExtension));
20518             break;
20519         }
20520 #endif
20521 #ifdef VK_GOOGLE_gfxstream
20522         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
20523             marshal_VkImportColorBufferGOOGLE(
20524                 vkStream, rootType,
20525                 reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension));
20526             break;
20527         }
20528         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
20529             marshal_VkImportBufferGOOGLE(
20530                 vkStream, rootType, reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension));
20531             break;
20532         }
20533         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
20534             marshal_VkCreateBlobGOOGLE(
20535                 vkStream, rootType, reinterpret_cast<const VkCreateBlobGOOGLE*>(structExtension));
20536             break;
20537         }
20538 #endif
20539 #ifdef VK_EXT_image_compression_control_swapchain
20540         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
20541             marshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
20542                 vkStream, rootType,
20543                 reinterpret_cast<
20544                     const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*>(
20545                     structExtension));
20546             break;
20547         }
20548 #endif
20549 #ifdef VK_KHR_ray_tracing_pipeline
20550         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: {
20551             marshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
20552                 vkStream, rootType,
20553                 reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(
20554                     structExtension));
20555             break;
20556         }
20557         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: {
20558             marshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
20559                 vkStream, rootType,
20560                 reinterpret_cast<const VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(
20561                     structExtension));
20562             break;
20563         }
20564 #endif
20565         default: {
20566             // fatal; the switch is only taken if the extension struct is known
20567             fprintf(stderr, " %s, Unhandled Vulkan structure type %s [%d], aborting.\n", __func__,
20568                     string_VkStructureType(VkStructureType(structType)), structType);
20569             abort();
20570         }
20571     }
20572 }
20573 
unmarshal_extension_struct(VulkanStream * vkStream,VkStructureType rootType,void * structExtension_out)20574 void unmarshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
20575                                 void* structExtension_out) {
20576     VkInstanceCreateInfo* structAccess = (VkInstanceCreateInfo*)(structExtension_out);
20577     size_t currExtSize = goldfish_vk_extension_struct_size_with_stream_features(
20578         vkStream->getFeatureBits(), rootType, structExtension_out);
20579     if (!currExtSize && structExtension_out) {
20580         // unknown struct extension; skip and call on its pNext field
20581         unmarshal_extension_struct(vkStream, rootType, (void*)structAccess->pNext);
20582         return;
20583     } else {
20584         // known or null extension struct
20585         if (!currExtSize) {
20586             // exit if this was a null extension struct (size == 0 in this branch)
20587             return;
20588         }
20589     }
20590     if (!structExtension_out) {
20591         return;
20592     }
20593     uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension_out);
20594     switch (structType) {
20595 #ifdef VK_VERSION_1_0
20596         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: {
20597             unmarshal_VkShaderModuleCreateInfo(
20598                 vkStream, rootType,
20599                 reinterpret_cast<VkShaderModuleCreateInfo*>(structExtension_out));
20600             break;
20601         }
20602 #endif
20603 #ifdef VK_VERSION_1_1
20604         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
20605             unmarshal_VkPhysicalDeviceSubgroupProperties(
20606                 vkStream, rootType,
20607                 reinterpret_cast<VkPhysicalDeviceSubgroupProperties*>(structExtension_out));
20608             break;
20609         }
20610         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
20611             unmarshal_VkPhysicalDevice16BitStorageFeatures(
20612                 vkStream, rootType,
20613                 reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(structExtension_out));
20614             break;
20615         }
20616         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
20617             unmarshal_VkMemoryDedicatedRequirements(
20618                 vkStream, rootType,
20619                 reinterpret_cast<VkMemoryDedicatedRequirements*>(structExtension_out));
20620             break;
20621         }
20622         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
20623             unmarshal_VkMemoryDedicatedAllocateInfo(
20624                 vkStream, rootType,
20625                 reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(structExtension_out));
20626             break;
20627         }
20628         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
20629             unmarshal_VkMemoryAllocateFlagsInfo(
20630                 vkStream, rootType,
20631                 reinterpret_cast<VkMemoryAllocateFlagsInfo*>(structExtension_out));
20632             break;
20633         }
20634         case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
20635             unmarshal_VkDeviceGroupRenderPassBeginInfo(
20636                 vkStream, rootType,
20637                 reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(structExtension_out));
20638             break;
20639         }
20640         case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
20641             unmarshal_VkDeviceGroupCommandBufferBeginInfo(
20642                 vkStream, rootType,
20643                 reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(structExtension_out));
20644             break;
20645         }
20646         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
20647             unmarshal_VkDeviceGroupSubmitInfo(
20648                 vkStream, rootType,
20649                 reinterpret_cast<VkDeviceGroupSubmitInfo*>(structExtension_out));
20650             break;
20651         }
20652         case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
20653             unmarshal_VkDeviceGroupBindSparseInfo(
20654                 vkStream, rootType,
20655                 reinterpret_cast<VkDeviceGroupBindSparseInfo*>(structExtension_out));
20656             break;
20657         }
20658         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
20659             unmarshal_VkBindBufferMemoryDeviceGroupInfo(
20660                 vkStream, rootType,
20661                 reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(structExtension_out));
20662             break;
20663         }
20664         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
20665             unmarshal_VkBindImageMemoryDeviceGroupInfo(
20666                 vkStream, rootType,
20667                 reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(structExtension_out));
20668             break;
20669         }
20670         case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
20671             unmarshal_VkDeviceGroupDeviceCreateInfo(
20672                 vkStream, rootType,
20673                 reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(structExtension_out));
20674             break;
20675         }
20676         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
20677             unmarshal_VkPhysicalDeviceFeatures2(
20678                 vkStream, rootType,
20679                 reinterpret_cast<VkPhysicalDeviceFeatures2*>(structExtension_out));
20680             break;
20681         }
20682         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
20683             unmarshal_VkPhysicalDevicePointClippingProperties(
20684                 vkStream, rootType,
20685                 reinterpret_cast<VkPhysicalDevicePointClippingProperties*>(structExtension_out));
20686             break;
20687         }
20688         case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
20689             unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
20690                 vkStream, rootType,
20691                 reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(
20692                     structExtension_out));
20693             break;
20694         }
20695         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
20696             unmarshal_VkImageViewUsageCreateInfo(
20697                 vkStream, rootType,
20698                 reinterpret_cast<VkImageViewUsageCreateInfo*>(structExtension_out));
20699             break;
20700         }
20701         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
20702             unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
20703                 vkStream, rootType,
20704                 reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(
20705                     structExtension_out));
20706             break;
20707         }
20708         case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
20709             unmarshal_VkRenderPassMultiviewCreateInfo(
20710                 vkStream, rootType,
20711                 reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(structExtension_out));
20712             break;
20713         }
20714         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
20715             unmarshal_VkPhysicalDeviceMultiviewFeatures(
20716                 vkStream, rootType,
20717                 reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(structExtension_out));
20718             break;
20719         }
20720         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
20721             unmarshal_VkPhysicalDeviceMultiviewProperties(
20722                 vkStream, rootType,
20723                 reinterpret_cast<VkPhysicalDeviceMultiviewProperties*>(structExtension_out));
20724             break;
20725         }
20726         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
20727             unmarshal_VkPhysicalDeviceVariablePointersFeatures(
20728                 vkStream, rootType,
20729                 reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>(structExtension_out));
20730             break;
20731         }
20732         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
20733             unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
20734                 vkStream, rootType,
20735                 reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension_out));
20736             break;
20737         }
20738         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
20739             unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
20740                 vkStream, rootType,
20741                 reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties*>(structExtension_out));
20742             break;
20743         }
20744         case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
20745             unmarshal_VkProtectedSubmitInfo(
20746                 vkStream, rootType, reinterpret_cast<VkProtectedSubmitInfo*>(structExtension_out));
20747             break;
20748         }
20749         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
20750             unmarshal_VkSamplerYcbcrConversionInfo(
20751                 vkStream, rootType,
20752                 reinterpret_cast<VkSamplerYcbcrConversionInfo*>(structExtension_out));
20753             break;
20754         }
20755         case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
20756             unmarshal_VkBindImagePlaneMemoryInfo(
20757                 vkStream, rootType,
20758                 reinterpret_cast<VkBindImagePlaneMemoryInfo*>(structExtension_out));
20759             break;
20760         }
20761         case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
20762             unmarshal_VkImagePlaneMemoryRequirementsInfo(
20763                 vkStream, rootType,
20764                 reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(structExtension_out));
20765             break;
20766         }
20767         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
20768             unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
20769                 vkStream, rootType,
20770                 reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(
20771                     structExtension_out));
20772             break;
20773         }
20774         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
20775             unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
20776                 vkStream, rootType,
20777                 reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>(
20778                     structExtension_out));
20779             break;
20780         }
20781         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
20782             unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
20783                 vkStream, rootType,
20784                 reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out));
20785             break;
20786         }
20787         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
20788             unmarshal_VkExternalImageFormatProperties(
20789                 vkStream, rootType,
20790                 reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out));
20791             break;
20792         }
20793         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
20794             unmarshal_VkPhysicalDeviceIDProperties(
20795                 vkStream, rootType,
20796                 reinterpret_cast<VkPhysicalDeviceIDProperties*>(structExtension_out));
20797             break;
20798         }
20799         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
20800             unmarshal_VkExternalMemoryImageCreateInfo(
20801                 vkStream, rootType,
20802                 reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out));
20803             break;
20804         }
20805         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
20806             unmarshal_VkExternalMemoryBufferCreateInfo(
20807                 vkStream, rootType,
20808                 reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out));
20809             break;
20810         }
20811         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
20812             unmarshal_VkExportMemoryAllocateInfo(
20813                 vkStream, rootType,
20814                 reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out));
20815             break;
20816         }
20817         case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
20818             unmarshal_VkExportFenceCreateInfo(
20819                 vkStream, rootType,
20820                 reinterpret_cast<VkExportFenceCreateInfo*>(structExtension_out));
20821             break;
20822         }
20823         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
20824             unmarshal_VkExportSemaphoreCreateInfo(
20825                 vkStream, rootType,
20826                 reinterpret_cast<VkExportSemaphoreCreateInfo*>(structExtension_out));
20827             break;
20828         }
20829         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
20830             unmarshal_VkPhysicalDeviceMaintenance3Properties(
20831                 vkStream, rootType,
20832                 reinterpret_cast<VkPhysicalDeviceMaintenance3Properties*>(structExtension_out));
20833             break;
20834         }
20835         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
20836             unmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(
20837                 vkStream, rootType,
20838                 reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>(
20839                     structExtension_out));
20840             break;
20841         }
20842 #endif
20843 #ifdef VK_VERSION_1_2
20844         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
20845             unmarshal_VkPhysicalDeviceVulkan11Features(
20846                 vkStream, rootType,
20847                 reinterpret_cast<VkPhysicalDeviceVulkan11Features*>(structExtension_out));
20848             break;
20849         }
20850         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: {
20851             unmarshal_VkPhysicalDeviceVulkan11Properties(
20852                 vkStream, rootType,
20853                 reinterpret_cast<VkPhysicalDeviceVulkan11Properties*>(structExtension_out));
20854             break;
20855         }
20856         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
20857             unmarshal_VkPhysicalDeviceVulkan12Features(
20858                 vkStream, rootType,
20859                 reinterpret_cast<VkPhysicalDeviceVulkan12Features*>(structExtension_out));
20860             break;
20861         }
20862         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: {
20863             unmarshal_VkPhysicalDeviceVulkan12Properties(
20864                 vkStream, rootType,
20865                 reinterpret_cast<VkPhysicalDeviceVulkan12Properties*>(structExtension_out));
20866             break;
20867         }
20868         case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: {
20869             unmarshal_VkImageFormatListCreateInfo(
20870                 vkStream, rootType,
20871                 reinterpret_cast<VkImageFormatListCreateInfo*>(structExtension_out));
20872             break;
20873         }
20874         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: {
20875             unmarshal_VkPhysicalDevice8BitStorageFeatures(
20876                 vkStream, rootType,
20877                 reinterpret_cast<VkPhysicalDevice8BitStorageFeatures*>(structExtension_out));
20878             break;
20879         }
20880         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: {
20881             unmarshal_VkPhysicalDeviceDriverProperties(
20882                 vkStream, rootType,
20883                 reinterpret_cast<VkPhysicalDeviceDriverProperties*>(structExtension_out));
20884             break;
20885         }
20886         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: {
20887             unmarshal_VkPhysicalDeviceShaderAtomicInt64Features(
20888                 vkStream, rootType,
20889                 reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features*>(structExtension_out));
20890             break;
20891         }
20892         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: {
20893             unmarshal_VkPhysicalDeviceShaderFloat16Int8Features(
20894                 vkStream, rootType,
20895                 reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features*>(structExtension_out));
20896             break;
20897         }
20898         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: {
20899             unmarshal_VkPhysicalDeviceFloatControlsProperties(
20900                 vkStream, rootType,
20901                 reinterpret_cast<VkPhysicalDeviceFloatControlsProperties*>(structExtension_out));
20902             break;
20903         }
20904         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: {
20905             unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
20906                 vkStream, rootType,
20907                 reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo*>(
20908                     structExtension_out));
20909             break;
20910         }
20911         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: {
20912             unmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(
20913                 vkStream, rootType,
20914                 reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures*>(structExtension_out));
20915             break;
20916         }
20917         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: {
20918             unmarshal_VkPhysicalDeviceDescriptorIndexingProperties(
20919                 vkStream, rootType,
20920                 reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties*>(
20921                     structExtension_out));
20922             break;
20923         }
20924         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: {
20925             unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
20926                 vkStream, rootType,
20927                 reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo*>(
20928                     structExtension_out));
20929             break;
20930         }
20931         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: {
20932             unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
20933                 vkStream, rootType,
20934                 reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport*>(
20935                     structExtension_out));
20936             break;
20937         }
20938         case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: {
20939             unmarshal_VkSubpassDescriptionDepthStencilResolve(
20940                 vkStream, rootType,
20941                 reinterpret_cast<VkSubpassDescriptionDepthStencilResolve*>(structExtension_out));
20942             break;
20943         }
20944         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: {
20945             unmarshal_VkPhysicalDeviceDepthStencilResolveProperties(
20946                 vkStream, rootType,
20947                 reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties*>(
20948                     structExtension_out));
20949             break;
20950         }
20951         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
20952             unmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
20953                 vkStream, rootType,
20954                 reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures*>(structExtension_out));
20955             break;
20956         }
20957         case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: {
20958             unmarshal_VkImageStencilUsageCreateInfo(
20959                 vkStream, rootType,
20960                 reinterpret_cast<VkImageStencilUsageCreateInfo*>(structExtension_out));
20961             break;
20962         }
20963         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: {
20964             unmarshal_VkSamplerReductionModeCreateInfo(
20965                 vkStream, rootType,
20966                 reinterpret_cast<VkSamplerReductionModeCreateInfo*>(structExtension_out));
20967             break;
20968         }
20969         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: {
20970             unmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
20971                 vkStream, rootType,
20972                 reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties*>(
20973                     structExtension_out));
20974             break;
20975         }
20976         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: {
20977             unmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
20978                 vkStream, rootType,
20979                 reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures*>(structExtension_out));
20980             break;
20981         }
20982         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: {
20983             unmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(
20984                 vkStream, rootType,
20985                 reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures*>(
20986                     structExtension_out));
20987             break;
20988         }
20989         case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: {
20990             unmarshal_VkFramebufferAttachmentsCreateInfo(
20991                 vkStream, rootType,
20992                 reinterpret_cast<VkFramebufferAttachmentsCreateInfo*>(structExtension_out));
20993             break;
20994         }
20995         case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: {
20996             unmarshal_VkRenderPassAttachmentBeginInfo(
20997                 vkStream, rootType,
20998                 reinterpret_cast<VkRenderPassAttachmentBeginInfo*>(structExtension_out));
20999             break;
21000         }
21001         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: {
21002             unmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
21003                 vkStream, rootType,
21004                 reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(
21005                     structExtension_out));
21006             break;
21007         }
21008         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: {
21009             unmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
21010                 vkStream, rootType,
21011                 reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(
21012                     structExtension_out));
21013             break;
21014         }
21015         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: {
21016             unmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
21017                 vkStream, rootType,
21018                 reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(
21019                     structExtension_out));
21020             break;
21021         }
21022         case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: {
21023             unmarshal_VkAttachmentReferenceStencilLayout(
21024                 vkStream, rootType,
21025                 reinterpret_cast<VkAttachmentReferenceStencilLayout*>(structExtension_out));
21026             break;
21027         }
21028         case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: {
21029             unmarshal_VkAttachmentDescriptionStencilLayout(
21030                 vkStream, rootType,
21031                 reinterpret_cast<VkAttachmentDescriptionStencilLayout*>(structExtension_out));
21032             break;
21033         }
21034         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: {
21035             unmarshal_VkPhysicalDeviceHostQueryResetFeatures(
21036                 vkStream, rootType,
21037                 reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures*>(structExtension_out));
21038             break;
21039         }
21040         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: {
21041             unmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
21042                 vkStream, rootType,
21043                 reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures*>(structExtension_out));
21044             break;
21045         }
21046         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: {
21047             unmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(
21048                 vkStream, rootType,
21049                 reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties*>(
21050                     structExtension_out));
21051             break;
21052         }
21053         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: {
21054             unmarshal_VkSemaphoreTypeCreateInfo(
21055                 vkStream, rootType,
21056                 reinterpret_cast<VkSemaphoreTypeCreateInfo*>(structExtension_out));
21057             break;
21058         }
21059         case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: {
21060             unmarshal_VkTimelineSemaphoreSubmitInfo(
21061                 vkStream, rootType,
21062                 reinterpret_cast<VkTimelineSemaphoreSubmitInfo*>(structExtension_out));
21063             break;
21064         }
21065         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: {
21066             unmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
21067                 vkStream, rootType,
21068                 reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures*>(
21069                     structExtension_out));
21070             break;
21071         }
21072         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: {
21073             unmarshal_VkBufferOpaqueCaptureAddressCreateInfo(
21074                 vkStream, rootType,
21075                 reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension_out));
21076             break;
21077         }
21078         case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: {
21079             unmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
21080                 vkStream, rootType,
21081                 reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension_out));
21082             break;
21083         }
21084 #endif
21085 #ifdef VK_VERSION_1_3
21086         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: {
21087             unmarshal_VkPhysicalDeviceVulkan13Features(
21088                 vkStream, rootType,
21089                 reinterpret_cast<VkPhysicalDeviceVulkan13Features*>(structExtension_out));
21090             break;
21091         }
21092         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: {
21093             unmarshal_VkPhysicalDeviceVulkan13Properties(
21094                 vkStream, rootType,
21095                 reinterpret_cast<VkPhysicalDeviceVulkan13Properties*>(structExtension_out));
21096             break;
21097         }
21098         case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: {
21099             unmarshal_VkPipelineCreationFeedbackCreateInfo(
21100                 vkStream, rootType,
21101                 reinterpret_cast<VkPipelineCreationFeedbackCreateInfo*>(structExtension_out));
21102             break;
21103         }
21104         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: {
21105             unmarshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(
21106                 vkStream, rootType,
21107                 reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeatures*>(
21108                     structExtension_out));
21109             break;
21110         }
21111         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: {
21112             unmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
21113                 vkStream, rootType,
21114                 reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>(
21115                     structExtension_out));
21116             break;
21117         }
21118         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: {
21119             unmarshal_VkPhysicalDevicePrivateDataFeatures(
21120                 vkStream, rootType,
21121                 reinterpret_cast<VkPhysicalDevicePrivateDataFeatures*>(structExtension_out));
21122             break;
21123         }
21124         case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: {
21125             unmarshal_VkDevicePrivateDataCreateInfo(
21126                 vkStream, rootType,
21127                 reinterpret_cast<VkDevicePrivateDataCreateInfo*>(structExtension_out));
21128             break;
21129         }
21130         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: {
21131             unmarshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(
21132                 vkStream, rootType,
21133                 reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeatures*>(
21134                     structExtension_out));
21135             break;
21136         }
21137         case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: {
21138             unmarshal_VkMemoryBarrier2(vkStream, rootType,
21139                                        reinterpret_cast<VkMemoryBarrier2*>(structExtension_out));
21140             break;
21141         }
21142         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
21143             unmarshal_VkPhysicalDeviceSynchronization2Features(
21144                 vkStream, rootType,
21145                 reinterpret_cast<VkPhysicalDeviceSynchronization2Features*>(structExtension_out));
21146             break;
21147         }
21148         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: {
21149             unmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
21150                 vkStream, rootType,
21151                 reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>(
21152                     structExtension_out));
21153             break;
21154         }
21155         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: {
21156             unmarshal_VkPhysicalDeviceImageRobustnessFeatures(
21157                 vkStream, rootType,
21158                 reinterpret_cast<VkPhysicalDeviceImageRobustnessFeatures*>(structExtension_out));
21159             break;
21160         }
21161         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
21162             unmarshal_VkPhysicalDeviceSubgroupSizeControlFeatures(
21163                 vkStream, rootType,
21164                 reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeatures*>(
21165                     structExtension_out));
21166             break;
21167         }
21168         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: {
21169             unmarshal_VkPhysicalDeviceSubgroupSizeControlProperties(
21170                 vkStream, rootType,
21171                 reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlProperties*>(
21172                     structExtension_out));
21173             break;
21174         }
21175         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: {
21176             unmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(
21177                 vkStream, rootType,
21178                 reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfo*>(
21179                     structExtension_out));
21180             break;
21181         }
21182         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: {
21183             unmarshal_VkPhysicalDeviceInlineUniformBlockFeatures(
21184                 vkStream, rootType,
21185                 reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeatures*>(structExtension_out));
21186             break;
21187         }
21188         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: {
21189             unmarshal_VkPhysicalDeviceInlineUniformBlockProperties(
21190                 vkStream, rootType,
21191                 reinterpret_cast<VkPhysicalDeviceInlineUniformBlockProperties*>(
21192                     structExtension_out));
21193             break;
21194         }
21195         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: {
21196             unmarshal_VkWriteDescriptorSetInlineUniformBlock(
21197                 vkStream, rootType,
21198                 reinterpret_cast<VkWriteDescriptorSetInlineUniformBlock*>(structExtension_out));
21199             break;
21200         }
21201         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: {
21202             unmarshal_VkDescriptorPoolInlineUniformBlockCreateInfo(
21203                 vkStream, rootType,
21204                 reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfo*>(
21205                     structExtension_out));
21206             break;
21207         }
21208         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
21209             unmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(
21210                 vkStream, rootType,
21211                 reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>(
21212                     structExtension_out));
21213             break;
21214         }
21215         case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: {
21216             unmarshal_VkPipelineRenderingCreateInfo(
21217                 vkStream, rootType,
21218                 reinterpret_cast<VkPipelineRenderingCreateInfo*>(structExtension_out));
21219             break;
21220         }
21221         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
21222             unmarshal_VkPhysicalDeviceDynamicRenderingFeatures(
21223                 vkStream, rootType,
21224                 reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeatures*>(structExtension_out));
21225             break;
21226         }
21227         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: {
21228             unmarshal_VkCommandBufferInheritanceRenderingInfo(
21229                 vkStream, rootType,
21230                 reinterpret_cast<VkCommandBufferInheritanceRenderingInfo*>(structExtension_out));
21231             break;
21232         }
21233         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: {
21234             unmarshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(
21235                 vkStream, rootType,
21236                 reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeatures*>(
21237                     structExtension_out));
21238             break;
21239         }
21240         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: {
21241             unmarshal_VkPhysicalDeviceShaderIntegerDotProductProperties(
21242                 vkStream, rootType,
21243                 reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductProperties*>(
21244                     structExtension_out));
21245             break;
21246         }
21247         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: {
21248             unmarshal_VkPhysicalDeviceTexelBufferAlignmentProperties(
21249                 vkStream, rootType,
21250                 reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentProperties*>(
21251                     structExtension_out));
21252             break;
21253         }
21254         case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: {
21255             unmarshal_VkFormatProperties3(
21256                 vkStream, rootType, reinterpret_cast<VkFormatProperties3*>(structExtension_out));
21257             break;
21258         }
21259         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
21260             unmarshal_VkPhysicalDeviceMaintenance4Features(
21261                 vkStream, rootType,
21262                 reinterpret_cast<VkPhysicalDeviceMaintenance4Features*>(structExtension_out));
21263             break;
21264         }
21265         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: {
21266             unmarshal_VkPhysicalDeviceMaintenance4Properties(
21267                 vkStream, rootType,
21268                 reinterpret_cast<VkPhysicalDeviceMaintenance4Properties*>(structExtension_out));
21269             break;
21270         }
21271 #endif
21272 #ifdef VK_KHR_swapchain
21273         case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: {
21274             unmarshal_VkImageSwapchainCreateInfoKHR(
21275                 vkStream, rootType,
21276                 reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(structExtension_out));
21277             break;
21278         }
21279         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
21280             unmarshal_VkBindImageMemorySwapchainInfoKHR(
21281                 vkStream, rootType,
21282                 reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(structExtension_out));
21283             break;
21284         }
21285         case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: {
21286             unmarshal_VkDeviceGroupPresentInfoKHR(
21287                 vkStream, rootType,
21288                 reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(structExtension_out));
21289             break;
21290         }
21291         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: {
21292             unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
21293                 vkStream, rootType,
21294                 reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension_out));
21295             break;
21296         }
21297 #endif
21298 #ifdef VK_KHR_dynamic_rendering
21299         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: {
21300             unmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
21301                 vkStream, rootType,
21302                 reinterpret_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR*>(
21303                     structExtension_out));
21304             break;
21305         }
21306         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
21307             unmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
21308                 vkStream, rootType,
21309                 reinterpret_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT*>(
21310                     structExtension_out));
21311             break;
21312         }
21313         case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: {
21314             unmarshal_VkAttachmentSampleCountInfoAMD(
21315                 vkStream, rootType,
21316                 reinterpret_cast<VkAttachmentSampleCountInfoAMD*>(structExtension_out));
21317             break;
21318         }
21319         case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: {
21320             unmarshal_VkMultiviewPerViewAttributesInfoNVX(
21321                 vkStream, rootType,
21322                 reinterpret_cast<VkMultiviewPerViewAttributesInfoNVX*>(structExtension_out));
21323             break;
21324         }
21325 #endif
21326 #ifdef VK_KHR_incremental_present
21327         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
21328             unmarshal_VkPresentRegionsKHR(
21329                 vkStream, rootType, reinterpret_cast<VkPresentRegionsKHR*>(structExtension_out));
21330             break;
21331         }
21332 #endif
21333 #ifdef VK_KHR_pipeline_executable_properties
21334         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
21335             unmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
21336                 vkStream, rootType,
21337                 reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(
21338                     structExtension_out));
21339             break;
21340         }
21341 #endif
21342 #ifdef VK_KHR_pipeline_library
21343         case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: {
21344             unmarshal_VkPipelineLibraryCreateInfoKHR(
21345                 vkStream, rootType,
21346                 reinterpret_cast<VkPipelineLibraryCreateInfoKHR*>(structExtension_out));
21347             break;
21348         }
21349 #endif
21350 #ifdef VK_KHR_synchronization2
21351         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: {
21352             unmarshal_VkQueueFamilyCheckpointProperties2NV(
21353                 vkStream, rootType,
21354                 reinterpret_cast<VkQueueFamilyCheckpointProperties2NV*>(structExtension_out));
21355             break;
21356         }
21357 #endif
21358 #ifdef VK_KHR_maintenance5
21359         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR: {
21360             unmarshal_VkPhysicalDeviceMaintenance5FeaturesKHR(
21361                 vkStream, rootType,
21362                 reinterpret_cast<VkPhysicalDeviceMaintenance5FeaturesKHR*>(structExtension_out));
21363             break;
21364         }
21365         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR: {
21366             unmarshal_VkPhysicalDeviceMaintenance5PropertiesKHR(
21367                 vkStream, rootType,
21368                 reinterpret_cast<VkPhysicalDeviceMaintenance5PropertiesKHR*>(structExtension_out));
21369             break;
21370         }
21371         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR: {
21372             unmarshal_VkPipelineCreateFlags2CreateInfoKHR(
21373                 vkStream, rootType,
21374                 reinterpret_cast<VkPipelineCreateFlags2CreateInfoKHR*>(structExtension_out));
21375             break;
21376         }
21377         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR: {
21378             unmarshal_VkBufferUsageFlags2CreateInfoKHR(
21379                 vkStream, rootType,
21380                 reinterpret_cast<VkBufferUsageFlags2CreateInfoKHR*>(structExtension_out));
21381             break;
21382         }
21383 #endif
21384 #ifdef VK_KHR_line_rasterization
21385         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR: {
21386             unmarshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(
21387                 vkStream, rootType,
21388                 reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesKHR*>(
21389                     structExtension_out));
21390             break;
21391         }
21392         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR: {
21393             unmarshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(
21394                 vkStream, rootType,
21395                 reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesKHR*>(
21396                     structExtension_out));
21397             break;
21398         }
21399         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR: {
21400             unmarshal_VkPipelineRasterizationLineStateCreateInfoKHR(
21401                 vkStream, rootType,
21402                 reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoKHR*>(
21403                     structExtension_out));
21404             break;
21405         }
21406 #endif
21407 #ifdef VK_ANDROID_native_buffer
21408         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
21409             unmarshal_VkNativeBufferANDROID(
21410                 vkStream, rootType, reinterpret_cast<VkNativeBufferANDROID*>(structExtension_out));
21411             break;
21412         }
21413 #endif
21414 #ifdef VK_EXT_debug_report
21415         case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: {
21416             unmarshal_VkDebugReportCallbackCreateInfoEXT(
21417                 vkStream, rootType,
21418                 reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(structExtension_out));
21419             break;
21420         }
21421 #endif
21422 #ifdef VK_EXT_transform_feedback
21423         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
21424             unmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
21425                 vkStream, rootType,
21426                 reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(
21427                     structExtension_out));
21428             break;
21429         }
21430         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
21431             unmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
21432                 vkStream, rootType,
21433                 reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(
21434                     structExtension_out));
21435             break;
21436         }
21437         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
21438             unmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
21439                 vkStream, rootType,
21440                 reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(
21441                     structExtension_out));
21442             break;
21443         }
21444 #endif
21445 #ifdef VK_EXT_depth_clip_enable
21446         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
21447             unmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
21448                 vkStream, rootType,
21449                 reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(structExtension_out));
21450             break;
21451         }
21452         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
21453             unmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
21454                 vkStream, rootType,
21455                 reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(
21456                     structExtension_out));
21457             break;
21458         }
21459 #endif
21460 #ifdef VK_EXT_debug_utils
21461         case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: {
21462             unmarshal_VkDebugUtilsObjectNameInfoEXT(
21463                 vkStream, rootType,
21464                 reinterpret_cast<VkDebugUtilsObjectNameInfoEXT*>(structExtension_out));
21465             break;
21466         }
21467         case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: {
21468             unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
21469                 vkStream, rootType,
21470                 reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(structExtension_out));
21471             break;
21472         }
21473 #endif
21474 #ifdef VK_EXT_image_drm_format_modifier
21475         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
21476             unmarshal_VkDrmFormatModifierPropertiesListEXT(
21477                 vkStream, rootType,
21478                 reinterpret_cast<VkDrmFormatModifierPropertiesListEXT*>(structExtension_out));
21479             break;
21480         }
21481         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
21482             unmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
21483                 vkStream, rootType,
21484                 reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(
21485                     structExtension_out));
21486             break;
21487         }
21488         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
21489             unmarshal_VkImageDrmFormatModifierListCreateInfoEXT(
21490                 vkStream, rootType,
21491                 reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(structExtension_out));
21492             break;
21493         }
21494         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
21495             unmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
21496                 vkStream, rootType,
21497                 reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(
21498                     structExtension_out));
21499             break;
21500         }
21501         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
21502             unmarshal_VkDrmFormatModifierPropertiesList2EXT(
21503                 vkStream, rootType,
21504                 reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT*>(structExtension_out));
21505             break;
21506         }
21507 #endif
21508 #ifdef VK_EXT_external_memory_host
21509         case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: {
21510             unmarshal_VkImportMemoryHostPointerInfoEXT(
21511                 vkStream, rootType,
21512                 reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(structExtension_out));
21513             break;
21514         }
21515         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: {
21516             unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
21517                 vkStream, rootType,
21518                 reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(
21519                     structExtension_out));
21520             break;
21521         }
21522 #endif
21523 #ifdef VK_EXT_vertex_attribute_divisor
21524         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
21525             unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
21526                 vkStream, rootType,
21527                 reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(
21528                     structExtension_out));
21529             break;
21530         }
21531         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: {
21532             unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
21533                 vkStream, rootType,
21534                 reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(
21535                     structExtension_out));
21536             break;
21537         }
21538         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
21539             unmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
21540                 vkStream, rootType,
21541                 reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(
21542                     structExtension_out));
21543             break;
21544         }
21545 #endif
21546 #ifdef VK_EXT_fragment_density_map
21547         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
21548             switch (rootType) {
21549                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
21550                     unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
21551                         vkStream, rootType,
21552                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
21553                             structExtension_out));
21554                     break;
21555                 }
21556                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
21557                     unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
21558                         vkStream, rootType,
21559                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
21560                             structExtension_out));
21561                     break;
21562                 }
21563                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
21564                     unmarshal_VkImportColorBufferGOOGLE(
21565                         vkStream, rootType,
21566                         reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
21567                     break;
21568                 }
21569                 default: {
21570                     unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
21571                         vkStream, rootType,
21572                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
21573                             structExtension_out));
21574                     break;
21575                 }
21576             }
21577             break;
21578         }
21579         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
21580             switch (rootType) {
21581                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
21582                     unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
21583                         vkStream, rootType,
21584                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
21585                             structExtension_out));
21586                     break;
21587                 }
21588                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
21589                     unmarshal_VkCreateBlobGOOGLE(
21590                         vkStream, rootType,
21591                         reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out));
21592                     break;
21593                 }
21594                 default: {
21595                     unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
21596                         vkStream, rootType,
21597                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
21598                             structExtension_out));
21599                     break;
21600                 }
21601             }
21602             break;
21603         }
21604         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
21605             switch (rootType) {
21606                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
21607                     unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
21608                         vkStream, rootType,
21609                         reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
21610                             structExtension_out));
21611                     break;
21612                 }
21613                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
21614                     unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
21615                         vkStream, rootType,
21616                         reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
21617                             structExtension_out));
21618                     break;
21619                 }
21620                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
21621                     unmarshal_VkImportBufferGOOGLE(
21622                         vkStream, rootType,
21623                         reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
21624                     break;
21625                 }
21626                 default: {
21627                     unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
21628                         vkStream, rootType,
21629                         reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
21630                             structExtension_out));
21631                     break;
21632                 }
21633             }
21634             break;
21635         }
21636 #endif
21637 #ifdef VK_EXT_validation_features
21638         case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: {
21639             unmarshal_VkValidationFeaturesEXT(
21640                 vkStream, rootType,
21641                 reinterpret_cast<VkValidationFeaturesEXT*>(structExtension_out));
21642             break;
21643         }
21644 #endif
21645 #ifdef VK_EXT_provoking_vertex
21646         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
21647             unmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
21648                 vkStream, rootType,
21649                 reinterpret_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT*>(structExtension_out));
21650             break;
21651         }
21652         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
21653             unmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
21654                 vkStream, rootType,
21655                 reinterpret_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT*>(
21656                     structExtension_out));
21657             break;
21658         }
21659         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
21660             unmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
21661                 vkStream, rootType,
21662                 reinterpret_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT*>(
21663                     structExtension_out));
21664             break;
21665         }
21666 #endif
21667 #ifdef VK_EXT_index_type_uint8
21668         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: {
21669             unmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
21670                 vkStream, rootType,
21671                 reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(structExtension_out));
21672             break;
21673         }
21674 #endif
21675 #ifdef VK_EXT_extended_dynamic_state
21676         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
21677             unmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
21678                 vkStream, rootType,
21679                 reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(
21680                     structExtension_out));
21681             break;
21682         }
21683 #endif
21684 #ifdef VK_EXT_host_image_copy
21685         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT: {
21686             unmarshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(
21687                 vkStream, rootType,
21688                 reinterpret_cast<VkPhysicalDeviceHostImageCopyFeaturesEXT*>(structExtension_out));
21689             break;
21690         }
21691         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT: {
21692             unmarshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(
21693                 vkStream, rootType,
21694                 reinterpret_cast<VkPhysicalDeviceHostImageCopyPropertiesEXT*>(structExtension_out));
21695             break;
21696         }
21697         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT: {
21698             unmarshal_VkSubresourceHostMemcpySizeEXT(
21699                 vkStream, rootType,
21700                 reinterpret_cast<VkSubresourceHostMemcpySizeEXT*>(structExtension_out));
21701             break;
21702         }
21703         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT: {
21704             unmarshal_VkHostImageCopyDevicePerformanceQueryEXT(
21705                 vkStream, rootType,
21706                 reinterpret_cast<VkHostImageCopyDevicePerformanceQueryEXT*>(structExtension_out));
21707             break;
21708         }
21709 #endif
21710 #ifdef VK_EXT_swapchain_maintenance1
21711         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: {
21712             unmarshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(
21713                 vkStream, rootType,
21714                 reinterpret_cast<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT*>(
21715                     structExtension_out));
21716             break;
21717         }
21718         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: {
21719             unmarshal_VkSwapchainPresentFenceInfoEXT(
21720                 vkStream, rootType,
21721                 reinterpret_cast<VkSwapchainPresentFenceInfoEXT*>(structExtension_out));
21722             break;
21723         }
21724         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: {
21725             unmarshal_VkSwapchainPresentModesCreateInfoEXT(
21726                 vkStream, rootType,
21727                 reinterpret_cast<VkSwapchainPresentModesCreateInfoEXT*>(structExtension_out));
21728             break;
21729         }
21730         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: {
21731             unmarshal_VkSwapchainPresentModeInfoEXT(
21732                 vkStream, rootType,
21733                 reinterpret_cast<VkSwapchainPresentModeInfoEXT*>(structExtension_out));
21734             break;
21735         }
21736         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: {
21737             unmarshal_VkSwapchainPresentScalingCreateInfoEXT(
21738                 vkStream, rootType,
21739                 reinterpret_cast<VkSwapchainPresentScalingCreateInfoEXT*>(structExtension_out));
21740             break;
21741         }
21742 #endif
21743 #ifdef VK_EXT_texel_buffer_alignment
21744         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
21745             unmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
21746                 vkStream, rootType,
21747                 reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(
21748                     structExtension_out));
21749             break;
21750         }
21751 #endif
21752 #ifdef VK_EXT_device_memory_report
21753         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
21754             unmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
21755                 vkStream, rootType,
21756                 reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(
21757                     structExtension_out));
21758             break;
21759         }
21760         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
21761             unmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
21762                 vkStream, rootType,
21763                 reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension_out));
21764             break;
21765         }
21766 #endif
21767 #ifdef VK_EXT_robustness2
21768         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
21769             unmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(
21770                 vkStream, rootType,
21771                 reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension_out));
21772             break;
21773         }
21774         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
21775             unmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(
21776                 vkStream, rootType,
21777                 reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension_out));
21778             break;
21779         }
21780 #endif
21781 #ifdef VK_EXT_custom_border_color
21782         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
21783             unmarshal_VkSamplerCustomBorderColorCreateInfoEXT(
21784                 vkStream, rootType,
21785                 reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension_out));
21786             break;
21787         }
21788         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
21789             unmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
21790                 vkStream, rootType,
21791                 reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(
21792                     structExtension_out));
21793             break;
21794         }
21795         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
21796             unmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
21797                 vkStream, rootType,
21798                 reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(
21799                     structExtension_out));
21800             break;
21801         }
21802 #endif
21803 #ifdef VK_EXT_graphics_pipeline_library
21804         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
21805             unmarshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(
21806                 vkStream, rootType,
21807                 reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*>(
21808                     structExtension_out));
21809             break;
21810         }
21811         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
21812             unmarshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(
21813                 vkStream, rootType,
21814                 reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT*>(
21815                     structExtension_out));
21816             break;
21817         }
21818         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
21819             unmarshal_VkGraphicsPipelineLibraryCreateInfoEXT(
21820                 vkStream, rootType,
21821                 reinterpret_cast<VkGraphicsPipelineLibraryCreateInfoEXT*>(structExtension_out));
21822             break;
21823         }
21824 #endif
21825 #ifdef VK_EXT_ycbcr_2plane_444_formats
21826         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
21827             unmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
21828                 vkStream, rootType,
21829                 reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(
21830                     structExtension_out));
21831             break;
21832         }
21833 #endif
21834 #ifdef VK_EXT_image_compression_control
21835         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
21836             unmarshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(
21837                 vkStream, rootType,
21838                 reinterpret_cast<VkPhysicalDeviceImageCompressionControlFeaturesEXT*>(
21839                     structExtension_out));
21840             break;
21841         }
21842         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
21843             unmarshal_VkImageCompressionControlEXT(
21844                 vkStream, rootType,
21845                 reinterpret_cast<VkImageCompressionControlEXT*>(structExtension_out));
21846             break;
21847         }
21848         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
21849             unmarshal_VkImageCompressionPropertiesEXT(
21850                 vkStream, rootType,
21851                 reinterpret_cast<VkImageCompressionPropertiesEXT*>(structExtension_out));
21852             break;
21853         }
21854 #endif
21855 #ifdef VK_EXT_4444_formats
21856         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
21857             unmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(
21858                 vkStream, rootType,
21859                 reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension_out));
21860             break;
21861         }
21862 #endif
21863 #ifdef VK_EXT_primitive_topology_list_restart
21864         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
21865             unmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
21866                 vkStream, rootType,
21867                 reinterpret_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(
21868                     structExtension_out));
21869             break;
21870         }
21871 #endif
21872 #ifdef VK_EXT_extended_dynamic_state2
21873         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
21874             unmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
21875                 vkStream, rootType,
21876                 reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(
21877                     structExtension_out));
21878             break;
21879         }
21880 #endif
21881 #ifdef VK_EXT_color_write_enable
21882         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
21883             unmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
21884                 vkStream, rootType,
21885                 reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(
21886                     structExtension_out));
21887             break;
21888         }
21889         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
21890             unmarshal_VkPipelineColorWriteCreateInfoEXT(
21891                 vkStream, rootType,
21892                 reinterpret_cast<VkPipelineColorWriteCreateInfoEXT*>(structExtension_out));
21893             break;
21894         }
21895 #endif
21896 #ifdef VK_GOOGLE_gfxstream
21897         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
21898             unmarshal_VkImportColorBufferGOOGLE(
21899                 vkStream, rootType,
21900                 reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
21901             break;
21902         }
21903         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
21904             unmarshal_VkImportBufferGOOGLE(
21905                 vkStream, rootType, reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
21906             break;
21907         }
21908         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
21909             unmarshal_VkCreateBlobGOOGLE(
21910                 vkStream, rootType, reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out));
21911             break;
21912         }
21913 #endif
21914 #ifdef VK_EXT_image_compression_control_swapchain
21915         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
21916             unmarshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
21917                 vkStream, rootType,
21918                 reinterpret_cast<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*>(
21919                     structExtension_out));
21920             break;
21921         }
21922 #endif
21923 #ifdef VK_KHR_ray_tracing_pipeline
21924         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: {
21925             unmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
21926                 vkStream, rootType,
21927                 reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(
21928                     structExtension_out));
21929             break;
21930         }
21931         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: {
21932             unmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
21933                 vkStream, rootType,
21934                 reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(
21935                     structExtension_out));
21936             break;
21937         }
21938 #endif
21939         default: {
21940             // fatal; the switch is only taken if the extension struct is known
21941             fprintf(stderr, " %s, Unhandled Vulkan structure type %s [%d], aborting.\n", __func__,
21942                     string_VkStructureType(VkStructureType(structType)), structType);
21943             abort();
21944         }
21945     }
21946 }
21947 
api_opcode_to_string(const uint32_t opcode)21948 const char* api_opcode_to_string(const uint32_t opcode) {
21949     switch (opcode) {
21950 #ifdef VK_VERSION_1_0
21951         case OP_vkCreateInstance: {
21952             return "OP_vkCreateInstance";
21953         }
21954         case OP_vkDestroyInstance: {
21955             return "OP_vkDestroyInstance";
21956         }
21957         case OP_vkEnumeratePhysicalDevices: {
21958             return "OP_vkEnumeratePhysicalDevices";
21959         }
21960         case OP_vkGetPhysicalDeviceFeatures: {
21961             return "OP_vkGetPhysicalDeviceFeatures";
21962         }
21963         case OP_vkGetPhysicalDeviceFormatProperties: {
21964             return "OP_vkGetPhysicalDeviceFormatProperties";
21965         }
21966         case OP_vkGetPhysicalDeviceImageFormatProperties: {
21967             return "OP_vkGetPhysicalDeviceImageFormatProperties";
21968         }
21969         case OP_vkGetPhysicalDeviceProperties: {
21970             return "OP_vkGetPhysicalDeviceProperties";
21971         }
21972         case OP_vkGetPhysicalDeviceQueueFamilyProperties: {
21973             return "OP_vkGetPhysicalDeviceQueueFamilyProperties";
21974         }
21975         case OP_vkGetPhysicalDeviceMemoryProperties: {
21976             return "OP_vkGetPhysicalDeviceMemoryProperties";
21977         }
21978         case OP_vkGetInstanceProcAddr: {
21979             return "OP_vkGetInstanceProcAddr";
21980         }
21981         case OP_vkGetDeviceProcAddr: {
21982             return "OP_vkGetDeviceProcAddr";
21983         }
21984         case OP_vkCreateDevice: {
21985             return "OP_vkCreateDevice";
21986         }
21987         case OP_vkDestroyDevice: {
21988             return "OP_vkDestroyDevice";
21989         }
21990         case OP_vkEnumerateInstanceExtensionProperties: {
21991             return "OP_vkEnumerateInstanceExtensionProperties";
21992         }
21993         case OP_vkEnumerateDeviceExtensionProperties: {
21994             return "OP_vkEnumerateDeviceExtensionProperties";
21995         }
21996         case OP_vkEnumerateInstanceLayerProperties: {
21997             return "OP_vkEnumerateInstanceLayerProperties";
21998         }
21999         case OP_vkEnumerateDeviceLayerProperties: {
22000             return "OP_vkEnumerateDeviceLayerProperties";
22001         }
22002         case OP_vkGetDeviceQueue: {
22003             return "OP_vkGetDeviceQueue";
22004         }
22005         case OP_vkQueueSubmit: {
22006             return "OP_vkQueueSubmit";
22007         }
22008         case OP_vkQueueWaitIdle: {
22009             return "OP_vkQueueWaitIdle";
22010         }
22011         case OP_vkDeviceWaitIdle: {
22012             return "OP_vkDeviceWaitIdle";
22013         }
22014         case OP_vkAllocateMemory: {
22015             return "OP_vkAllocateMemory";
22016         }
22017         case OP_vkFreeMemory: {
22018             return "OP_vkFreeMemory";
22019         }
22020         case OP_vkMapMemory: {
22021             return "OP_vkMapMemory";
22022         }
22023         case OP_vkUnmapMemory: {
22024             return "OP_vkUnmapMemory";
22025         }
22026         case OP_vkFlushMappedMemoryRanges: {
22027             return "OP_vkFlushMappedMemoryRanges";
22028         }
22029         case OP_vkInvalidateMappedMemoryRanges: {
22030             return "OP_vkInvalidateMappedMemoryRanges";
22031         }
22032         case OP_vkGetDeviceMemoryCommitment: {
22033             return "OP_vkGetDeviceMemoryCommitment";
22034         }
22035         case OP_vkBindBufferMemory: {
22036             return "OP_vkBindBufferMemory";
22037         }
22038         case OP_vkBindImageMemory: {
22039             return "OP_vkBindImageMemory";
22040         }
22041         case OP_vkGetBufferMemoryRequirements: {
22042             return "OP_vkGetBufferMemoryRequirements";
22043         }
22044         case OP_vkGetImageMemoryRequirements: {
22045             return "OP_vkGetImageMemoryRequirements";
22046         }
22047         case OP_vkGetImageSparseMemoryRequirements: {
22048             return "OP_vkGetImageSparseMemoryRequirements";
22049         }
22050         case OP_vkGetPhysicalDeviceSparseImageFormatProperties: {
22051             return "OP_vkGetPhysicalDeviceSparseImageFormatProperties";
22052         }
22053         case OP_vkQueueBindSparse: {
22054             return "OP_vkQueueBindSparse";
22055         }
22056         case OP_vkCreateFence: {
22057             return "OP_vkCreateFence";
22058         }
22059         case OP_vkDestroyFence: {
22060             return "OP_vkDestroyFence";
22061         }
22062         case OP_vkResetFences: {
22063             return "OP_vkResetFences";
22064         }
22065         case OP_vkGetFenceStatus: {
22066             return "OP_vkGetFenceStatus";
22067         }
22068         case OP_vkWaitForFences: {
22069             return "OP_vkWaitForFences";
22070         }
22071         case OP_vkCreateSemaphore: {
22072             return "OP_vkCreateSemaphore";
22073         }
22074         case OP_vkDestroySemaphore: {
22075             return "OP_vkDestroySemaphore";
22076         }
22077         case OP_vkCreateEvent: {
22078             return "OP_vkCreateEvent";
22079         }
22080         case OP_vkDestroyEvent: {
22081             return "OP_vkDestroyEvent";
22082         }
22083         case OP_vkGetEventStatus: {
22084             return "OP_vkGetEventStatus";
22085         }
22086         case OP_vkSetEvent: {
22087             return "OP_vkSetEvent";
22088         }
22089         case OP_vkResetEvent: {
22090             return "OP_vkResetEvent";
22091         }
22092         case OP_vkCreateQueryPool: {
22093             return "OP_vkCreateQueryPool";
22094         }
22095         case OP_vkDestroyQueryPool: {
22096             return "OP_vkDestroyQueryPool";
22097         }
22098         case OP_vkGetQueryPoolResults: {
22099             return "OP_vkGetQueryPoolResults";
22100         }
22101         case OP_vkCreateBuffer: {
22102             return "OP_vkCreateBuffer";
22103         }
22104         case OP_vkDestroyBuffer: {
22105             return "OP_vkDestroyBuffer";
22106         }
22107         case OP_vkCreateBufferView: {
22108             return "OP_vkCreateBufferView";
22109         }
22110         case OP_vkDestroyBufferView: {
22111             return "OP_vkDestroyBufferView";
22112         }
22113         case OP_vkCreateImage: {
22114             return "OP_vkCreateImage";
22115         }
22116         case OP_vkDestroyImage: {
22117             return "OP_vkDestroyImage";
22118         }
22119         case OP_vkGetImageSubresourceLayout: {
22120             return "OP_vkGetImageSubresourceLayout";
22121         }
22122         case OP_vkCreateImageView: {
22123             return "OP_vkCreateImageView";
22124         }
22125         case OP_vkDestroyImageView: {
22126             return "OP_vkDestroyImageView";
22127         }
22128         case OP_vkCreateShaderModule: {
22129             return "OP_vkCreateShaderModule";
22130         }
22131         case OP_vkDestroyShaderModule: {
22132             return "OP_vkDestroyShaderModule";
22133         }
22134         case OP_vkCreatePipelineCache: {
22135             return "OP_vkCreatePipelineCache";
22136         }
22137         case OP_vkDestroyPipelineCache: {
22138             return "OP_vkDestroyPipelineCache";
22139         }
22140         case OP_vkGetPipelineCacheData: {
22141             return "OP_vkGetPipelineCacheData";
22142         }
22143         case OP_vkMergePipelineCaches: {
22144             return "OP_vkMergePipelineCaches";
22145         }
22146         case OP_vkCreateGraphicsPipelines: {
22147             return "OP_vkCreateGraphicsPipelines";
22148         }
22149         case OP_vkCreateComputePipelines: {
22150             return "OP_vkCreateComputePipelines";
22151         }
22152         case OP_vkDestroyPipeline: {
22153             return "OP_vkDestroyPipeline";
22154         }
22155         case OP_vkCreatePipelineLayout: {
22156             return "OP_vkCreatePipelineLayout";
22157         }
22158         case OP_vkDestroyPipelineLayout: {
22159             return "OP_vkDestroyPipelineLayout";
22160         }
22161         case OP_vkCreateSampler: {
22162             return "OP_vkCreateSampler";
22163         }
22164         case OP_vkDestroySampler: {
22165             return "OP_vkDestroySampler";
22166         }
22167         case OP_vkCreateDescriptorSetLayout: {
22168             return "OP_vkCreateDescriptorSetLayout";
22169         }
22170         case OP_vkDestroyDescriptorSetLayout: {
22171             return "OP_vkDestroyDescriptorSetLayout";
22172         }
22173         case OP_vkCreateDescriptorPool: {
22174             return "OP_vkCreateDescriptorPool";
22175         }
22176         case OP_vkDestroyDescriptorPool: {
22177             return "OP_vkDestroyDescriptorPool";
22178         }
22179         case OP_vkResetDescriptorPool: {
22180             return "OP_vkResetDescriptorPool";
22181         }
22182         case OP_vkAllocateDescriptorSets: {
22183             return "OP_vkAllocateDescriptorSets";
22184         }
22185         case OP_vkFreeDescriptorSets: {
22186             return "OP_vkFreeDescriptorSets";
22187         }
22188         case OP_vkUpdateDescriptorSets: {
22189             return "OP_vkUpdateDescriptorSets";
22190         }
22191         case OP_vkCreateFramebuffer: {
22192             return "OP_vkCreateFramebuffer";
22193         }
22194         case OP_vkDestroyFramebuffer: {
22195             return "OP_vkDestroyFramebuffer";
22196         }
22197         case OP_vkCreateRenderPass: {
22198             return "OP_vkCreateRenderPass";
22199         }
22200         case OP_vkDestroyRenderPass: {
22201             return "OP_vkDestroyRenderPass";
22202         }
22203         case OP_vkGetRenderAreaGranularity: {
22204             return "OP_vkGetRenderAreaGranularity";
22205         }
22206         case OP_vkCreateCommandPool: {
22207             return "OP_vkCreateCommandPool";
22208         }
22209         case OP_vkDestroyCommandPool: {
22210             return "OP_vkDestroyCommandPool";
22211         }
22212         case OP_vkResetCommandPool: {
22213             return "OP_vkResetCommandPool";
22214         }
22215         case OP_vkAllocateCommandBuffers: {
22216             return "OP_vkAllocateCommandBuffers";
22217         }
22218         case OP_vkFreeCommandBuffers: {
22219             return "OP_vkFreeCommandBuffers";
22220         }
22221         case OP_vkBeginCommandBuffer: {
22222             return "OP_vkBeginCommandBuffer";
22223         }
22224         case OP_vkEndCommandBuffer: {
22225             return "OP_vkEndCommandBuffer";
22226         }
22227         case OP_vkResetCommandBuffer: {
22228             return "OP_vkResetCommandBuffer";
22229         }
22230         case OP_vkCmdBindPipeline: {
22231             return "OP_vkCmdBindPipeline";
22232         }
22233         case OP_vkCmdSetViewport: {
22234             return "OP_vkCmdSetViewport";
22235         }
22236         case OP_vkCmdSetScissor: {
22237             return "OP_vkCmdSetScissor";
22238         }
22239         case OP_vkCmdSetLineWidth: {
22240             return "OP_vkCmdSetLineWidth";
22241         }
22242         case OP_vkCmdSetDepthBias: {
22243             return "OP_vkCmdSetDepthBias";
22244         }
22245         case OP_vkCmdSetBlendConstants: {
22246             return "OP_vkCmdSetBlendConstants";
22247         }
22248         case OP_vkCmdSetDepthBounds: {
22249             return "OP_vkCmdSetDepthBounds";
22250         }
22251         case OP_vkCmdSetStencilCompareMask: {
22252             return "OP_vkCmdSetStencilCompareMask";
22253         }
22254         case OP_vkCmdSetStencilWriteMask: {
22255             return "OP_vkCmdSetStencilWriteMask";
22256         }
22257         case OP_vkCmdSetStencilReference: {
22258             return "OP_vkCmdSetStencilReference";
22259         }
22260         case OP_vkCmdBindDescriptorSets: {
22261             return "OP_vkCmdBindDescriptorSets";
22262         }
22263         case OP_vkCmdBindIndexBuffer: {
22264             return "OP_vkCmdBindIndexBuffer";
22265         }
22266         case OP_vkCmdBindVertexBuffers: {
22267             return "OP_vkCmdBindVertexBuffers";
22268         }
22269         case OP_vkCmdDraw: {
22270             return "OP_vkCmdDraw";
22271         }
22272         case OP_vkCmdDrawIndexed: {
22273             return "OP_vkCmdDrawIndexed";
22274         }
22275         case OP_vkCmdDrawIndirect: {
22276             return "OP_vkCmdDrawIndirect";
22277         }
22278         case OP_vkCmdDrawIndexedIndirect: {
22279             return "OP_vkCmdDrawIndexedIndirect";
22280         }
22281         case OP_vkCmdDispatch: {
22282             return "OP_vkCmdDispatch";
22283         }
22284         case OP_vkCmdDispatchIndirect: {
22285             return "OP_vkCmdDispatchIndirect";
22286         }
22287         case OP_vkCmdCopyBuffer: {
22288             return "OP_vkCmdCopyBuffer";
22289         }
22290         case OP_vkCmdCopyImage: {
22291             return "OP_vkCmdCopyImage";
22292         }
22293         case OP_vkCmdBlitImage: {
22294             return "OP_vkCmdBlitImage";
22295         }
22296         case OP_vkCmdCopyBufferToImage: {
22297             return "OP_vkCmdCopyBufferToImage";
22298         }
22299         case OP_vkCmdCopyImageToBuffer: {
22300             return "OP_vkCmdCopyImageToBuffer";
22301         }
22302         case OP_vkCmdUpdateBuffer: {
22303             return "OP_vkCmdUpdateBuffer";
22304         }
22305         case OP_vkCmdFillBuffer: {
22306             return "OP_vkCmdFillBuffer";
22307         }
22308         case OP_vkCmdClearColorImage: {
22309             return "OP_vkCmdClearColorImage";
22310         }
22311         case OP_vkCmdClearDepthStencilImage: {
22312             return "OP_vkCmdClearDepthStencilImage";
22313         }
22314         case OP_vkCmdClearAttachments: {
22315             return "OP_vkCmdClearAttachments";
22316         }
22317         case OP_vkCmdResolveImage: {
22318             return "OP_vkCmdResolveImage";
22319         }
22320         case OP_vkCmdSetEvent: {
22321             return "OP_vkCmdSetEvent";
22322         }
22323         case OP_vkCmdResetEvent: {
22324             return "OP_vkCmdResetEvent";
22325         }
22326         case OP_vkCmdWaitEvents: {
22327             return "OP_vkCmdWaitEvents";
22328         }
22329         case OP_vkCmdPipelineBarrier: {
22330             return "OP_vkCmdPipelineBarrier";
22331         }
22332         case OP_vkCmdBeginQuery: {
22333             return "OP_vkCmdBeginQuery";
22334         }
22335         case OP_vkCmdEndQuery: {
22336             return "OP_vkCmdEndQuery";
22337         }
22338         case OP_vkCmdResetQueryPool: {
22339             return "OP_vkCmdResetQueryPool";
22340         }
22341         case OP_vkCmdWriteTimestamp: {
22342             return "OP_vkCmdWriteTimestamp";
22343         }
22344         case OP_vkCmdCopyQueryPoolResults: {
22345             return "OP_vkCmdCopyQueryPoolResults";
22346         }
22347         case OP_vkCmdPushConstants: {
22348             return "OP_vkCmdPushConstants";
22349         }
22350         case OP_vkCmdBeginRenderPass: {
22351             return "OP_vkCmdBeginRenderPass";
22352         }
22353         case OP_vkCmdNextSubpass: {
22354             return "OP_vkCmdNextSubpass";
22355         }
22356         case OP_vkCmdEndRenderPass: {
22357             return "OP_vkCmdEndRenderPass";
22358         }
22359         case OP_vkCmdExecuteCommands: {
22360             return "OP_vkCmdExecuteCommands";
22361         }
22362 #endif
22363 #ifdef VK_VERSION_1_1
22364         case OP_vkEnumerateInstanceVersion: {
22365             return "OP_vkEnumerateInstanceVersion";
22366         }
22367         case OP_vkBindBufferMemory2: {
22368             return "OP_vkBindBufferMemory2";
22369         }
22370         case OP_vkBindImageMemory2: {
22371             return "OP_vkBindImageMemory2";
22372         }
22373         case OP_vkGetDeviceGroupPeerMemoryFeatures: {
22374             return "OP_vkGetDeviceGroupPeerMemoryFeatures";
22375         }
22376         case OP_vkCmdSetDeviceMask: {
22377             return "OP_vkCmdSetDeviceMask";
22378         }
22379         case OP_vkCmdDispatchBase: {
22380             return "OP_vkCmdDispatchBase";
22381         }
22382         case OP_vkEnumeratePhysicalDeviceGroups: {
22383             return "OP_vkEnumeratePhysicalDeviceGroups";
22384         }
22385         case OP_vkGetImageMemoryRequirements2: {
22386             return "OP_vkGetImageMemoryRequirements2";
22387         }
22388         case OP_vkGetBufferMemoryRequirements2: {
22389             return "OP_vkGetBufferMemoryRequirements2";
22390         }
22391         case OP_vkGetImageSparseMemoryRequirements2: {
22392             return "OP_vkGetImageSparseMemoryRequirements2";
22393         }
22394         case OP_vkGetPhysicalDeviceFeatures2: {
22395             return "OP_vkGetPhysicalDeviceFeatures2";
22396         }
22397         case OP_vkGetPhysicalDeviceProperties2: {
22398             return "OP_vkGetPhysicalDeviceProperties2";
22399         }
22400         case OP_vkGetPhysicalDeviceFormatProperties2: {
22401             return "OP_vkGetPhysicalDeviceFormatProperties2";
22402         }
22403         case OP_vkGetPhysicalDeviceImageFormatProperties2: {
22404             return "OP_vkGetPhysicalDeviceImageFormatProperties2";
22405         }
22406         case OP_vkGetPhysicalDeviceQueueFamilyProperties2: {
22407             return "OP_vkGetPhysicalDeviceQueueFamilyProperties2";
22408         }
22409         case OP_vkGetPhysicalDeviceMemoryProperties2: {
22410             return "OP_vkGetPhysicalDeviceMemoryProperties2";
22411         }
22412         case OP_vkGetPhysicalDeviceSparseImageFormatProperties2: {
22413             return "OP_vkGetPhysicalDeviceSparseImageFormatProperties2";
22414         }
22415         case OP_vkTrimCommandPool: {
22416             return "OP_vkTrimCommandPool";
22417         }
22418         case OP_vkGetDeviceQueue2: {
22419             return "OP_vkGetDeviceQueue2";
22420         }
22421         case OP_vkCreateSamplerYcbcrConversion: {
22422             return "OP_vkCreateSamplerYcbcrConversion";
22423         }
22424         case OP_vkDestroySamplerYcbcrConversion: {
22425             return "OP_vkDestroySamplerYcbcrConversion";
22426         }
22427         case OP_vkCreateDescriptorUpdateTemplate: {
22428             return "OP_vkCreateDescriptorUpdateTemplate";
22429         }
22430         case OP_vkDestroyDescriptorUpdateTemplate: {
22431             return "OP_vkDestroyDescriptorUpdateTemplate";
22432         }
22433         case OP_vkUpdateDescriptorSetWithTemplate: {
22434             return "OP_vkUpdateDescriptorSetWithTemplate";
22435         }
22436         case OP_vkGetPhysicalDeviceExternalBufferProperties: {
22437             return "OP_vkGetPhysicalDeviceExternalBufferProperties";
22438         }
22439         case OP_vkGetPhysicalDeviceExternalFenceProperties: {
22440             return "OP_vkGetPhysicalDeviceExternalFenceProperties";
22441         }
22442         case OP_vkGetPhysicalDeviceExternalSemaphoreProperties: {
22443             return "OP_vkGetPhysicalDeviceExternalSemaphoreProperties";
22444         }
22445         case OP_vkGetDescriptorSetLayoutSupport: {
22446             return "OP_vkGetDescriptorSetLayoutSupport";
22447         }
22448 #endif
22449 #ifdef VK_KHR_swapchain
22450         case OP_vkCreateSwapchainKHR: {
22451             return "OP_vkCreateSwapchainKHR";
22452         }
22453         case OP_vkDestroySwapchainKHR: {
22454             return "OP_vkDestroySwapchainKHR";
22455         }
22456         case OP_vkGetSwapchainImagesKHR: {
22457             return "OP_vkGetSwapchainImagesKHR";
22458         }
22459         case OP_vkAcquireNextImageKHR: {
22460             return "OP_vkAcquireNextImageKHR";
22461         }
22462         case OP_vkQueuePresentKHR: {
22463             return "OP_vkQueuePresentKHR";
22464         }
22465         case OP_vkGetDeviceGroupPresentCapabilitiesKHR: {
22466             return "OP_vkGetDeviceGroupPresentCapabilitiesKHR";
22467         }
22468         case OP_vkGetDeviceGroupSurfacePresentModesKHR: {
22469             return "OP_vkGetDeviceGroupSurfacePresentModesKHR";
22470         }
22471         case OP_vkGetPhysicalDevicePresentRectanglesKHR: {
22472             return "OP_vkGetPhysicalDevicePresentRectanglesKHR";
22473         }
22474         case OP_vkAcquireNextImage2KHR: {
22475             return "OP_vkAcquireNextImage2KHR";
22476         }
22477 #endif
22478 #ifdef VK_KHR_get_physical_device_properties2
22479         case OP_vkGetPhysicalDeviceFeatures2KHR: {
22480             return "OP_vkGetPhysicalDeviceFeatures2KHR";
22481         }
22482         case OP_vkGetPhysicalDeviceProperties2KHR: {
22483             return "OP_vkGetPhysicalDeviceProperties2KHR";
22484         }
22485         case OP_vkGetPhysicalDeviceFormatProperties2KHR: {
22486             return "OP_vkGetPhysicalDeviceFormatProperties2KHR";
22487         }
22488         case OP_vkGetPhysicalDeviceImageFormatProperties2KHR: {
22489             return "OP_vkGetPhysicalDeviceImageFormatProperties2KHR";
22490         }
22491         case OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR: {
22492             return "OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR";
22493         }
22494         case OP_vkGetPhysicalDeviceMemoryProperties2KHR: {
22495             return "OP_vkGetPhysicalDeviceMemoryProperties2KHR";
22496         }
22497         case OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR: {
22498             return "OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR";
22499         }
22500 #endif
22501 #ifdef VK_KHR_maintenance1
22502         case OP_vkTrimCommandPoolKHR: {
22503             return "OP_vkTrimCommandPoolKHR";
22504         }
22505 #endif
22506 #ifdef VK_KHR_external_memory_capabilities
22507         case OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR: {
22508             return "OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR";
22509         }
22510 #endif
22511 #ifdef VK_KHR_external_semaphore_capabilities
22512         case OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR: {
22513             return "OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR";
22514         }
22515 #endif
22516 #ifdef VK_KHR_external_semaphore_fd
22517         case OP_vkImportSemaphoreFdKHR: {
22518             return "OP_vkImportSemaphoreFdKHR";
22519         }
22520         case OP_vkGetSemaphoreFdKHR: {
22521             return "OP_vkGetSemaphoreFdKHR";
22522         }
22523 #endif
22524 #ifdef VK_KHR_descriptor_update_template
22525         case OP_vkCreateDescriptorUpdateTemplateKHR: {
22526             return "OP_vkCreateDescriptorUpdateTemplateKHR";
22527         }
22528         case OP_vkDestroyDescriptorUpdateTemplateKHR: {
22529             return "OP_vkDestroyDescriptorUpdateTemplateKHR";
22530         }
22531         case OP_vkUpdateDescriptorSetWithTemplateKHR: {
22532             return "OP_vkUpdateDescriptorSetWithTemplateKHR";
22533         }
22534 #endif
22535 #ifdef VK_KHR_create_renderpass2
22536         case OP_vkCreateRenderPass2KHR: {
22537             return "OP_vkCreateRenderPass2KHR";
22538         }
22539         case OP_vkCmdBeginRenderPass2KHR: {
22540             return "OP_vkCmdBeginRenderPass2KHR";
22541         }
22542         case OP_vkCmdNextSubpass2KHR: {
22543             return "OP_vkCmdNextSubpass2KHR";
22544         }
22545         case OP_vkCmdEndRenderPass2KHR: {
22546             return "OP_vkCmdEndRenderPass2KHR";
22547         }
22548 #endif
22549 #ifdef VK_KHR_external_fence_capabilities
22550         case OP_vkGetPhysicalDeviceExternalFencePropertiesKHR: {
22551             return "OP_vkGetPhysicalDeviceExternalFencePropertiesKHR";
22552         }
22553 #endif
22554 #ifdef VK_KHR_external_fence_fd
22555         case OP_vkImportFenceFdKHR: {
22556             return "OP_vkImportFenceFdKHR";
22557         }
22558         case OP_vkGetFenceFdKHR: {
22559             return "OP_vkGetFenceFdKHR";
22560         }
22561 #endif
22562 #ifdef VK_KHR_get_memory_requirements2
22563         case OP_vkGetImageMemoryRequirements2KHR: {
22564             return "OP_vkGetImageMemoryRequirements2KHR";
22565         }
22566         case OP_vkGetBufferMemoryRequirements2KHR: {
22567             return "OP_vkGetBufferMemoryRequirements2KHR";
22568         }
22569         case OP_vkGetImageSparseMemoryRequirements2KHR: {
22570             return "OP_vkGetImageSparseMemoryRequirements2KHR";
22571         }
22572 #endif
22573 #ifdef VK_KHR_sampler_ycbcr_conversion
22574         case OP_vkCreateSamplerYcbcrConversionKHR: {
22575             return "OP_vkCreateSamplerYcbcrConversionKHR";
22576         }
22577         case OP_vkDestroySamplerYcbcrConversionKHR: {
22578             return "OP_vkDestroySamplerYcbcrConversionKHR";
22579         }
22580 #endif
22581 #ifdef VK_KHR_bind_memory2
22582         case OP_vkBindBufferMemory2KHR: {
22583             return "OP_vkBindBufferMemory2KHR";
22584         }
22585         case OP_vkBindImageMemory2KHR: {
22586             return "OP_vkBindImageMemory2KHR";
22587         }
22588 #endif
22589 #ifdef VK_KHR_maintenance3
22590         case OP_vkGetDescriptorSetLayoutSupportKHR: {
22591             return "OP_vkGetDescriptorSetLayoutSupportKHR";
22592         }
22593 #endif
22594 #ifdef VK_ANDROID_native_buffer
22595         case OP_vkGetSwapchainGrallocUsageANDROID: {
22596             return "OP_vkGetSwapchainGrallocUsageANDROID";
22597         }
22598         case OP_vkAcquireImageANDROID: {
22599             return "OP_vkAcquireImageANDROID";
22600         }
22601         case OP_vkQueueSignalReleaseImageANDROID: {
22602             return "OP_vkQueueSignalReleaseImageANDROID";
22603         }
22604 #endif
22605 #ifdef VK_EXT_debug_report
22606         case OP_vkCreateDebugReportCallbackEXT: {
22607             return "OP_vkCreateDebugReportCallbackEXT";
22608         }
22609         case OP_vkDestroyDebugReportCallbackEXT: {
22610             return "OP_vkDestroyDebugReportCallbackEXT";
22611         }
22612         case OP_vkDebugReportMessageEXT: {
22613             return "OP_vkDebugReportMessageEXT";
22614         }
22615 #endif
22616 #ifdef VK_EXT_debug_utils
22617         case OP_vkSetDebugUtilsObjectNameEXT: {
22618             return "OP_vkSetDebugUtilsObjectNameEXT";
22619         }
22620         case OP_vkSetDebugUtilsObjectTagEXT: {
22621             return "OP_vkSetDebugUtilsObjectTagEXT";
22622         }
22623         case OP_vkQueueBeginDebugUtilsLabelEXT: {
22624             return "OP_vkQueueBeginDebugUtilsLabelEXT";
22625         }
22626         case OP_vkQueueEndDebugUtilsLabelEXT: {
22627             return "OP_vkQueueEndDebugUtilsLabelEXT";
22628         }
22629         case OP_vkQueueInsertDebugUtilsLabelEXT: {
22630             return "OP_vkQueueInsertDebugUtilsLabelEXT";
22631         }
22632         case OP_vkCmdBeginDebugUtilsLabelEXT: {
22633             return "OP_vkCmdBeginDebugUtilsLabelEXT";
22634         }
22635         case OP_vkCmdEndDebugUtilsLabelEXT: {
22636             return "OP_vkCmdEndDebugUtilsLabelEXT";
22637         }
22638         case OP_vkCmdInsertDebugUtilsLabelEXT: {
22639             return "OP_vkCmdInsertDebugUtilsLabelEXT";
22640         }
22641         case OP_vkCreateDebugUtilsMessengerEXT: {
22642             return "OP_vkCreateDebugUtilsMessengerEXT";
22643         }
22644         case OP_vkDestroyDebugUtilsMessengerEXT: {
22645             return "OP_vkDestroyDebugUtilsMessengerEXT";
22646         }
22647         case OP_vkSubmitDebugUtilsMessageEXT: {
22648             return "OP_vkSubmitDebugUtilsMessageEXT";
22649         }
22650 #endif
22651 #ifdef VK_EXT_external_memory_host
22652         case OP_vkGetMemoryHostPointerPropertiesEXT: {
22653             return "OP_vkGetMemoryHostPointerPropertiesEXT";
22654         }
22655 #endif
22656 #ifdef VK_GOOGLE_gfxstream
22657         case OP_vkMapMemoryIntoAddressSpaceGOOGLE: {
22658             return "OP_vkMapMemoryIntoAddressSpaceGOOGLE";
22659         }
22660         case OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE: {
22661             return "OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE";
22662         }
22663         case OP_vkBeginCommandBufferAsyncGOOGLE: {
22664             return "OP_vkBeginCommandBufferAsyncGOOGLE";
22665         }
22666         case OP_vkEndCommandBufferAsyncGOOGLE: {
22667             return "OP_vkEndCommandBufferAsyncGOOGLE";
22668         }
22669         case OP_vkResetCommandBufferAsyncGOOGLE: {
22670             return "OP_vkResetCommandBufferAsyncGOOGLE";
22671         }
22672         case OP_vkCommandBufferHostSyncGOOGLE: {
22673             return "OP_vkCommandBufferHostSyncGOOGLE";
22674         }
22675         case OP_vkCreateImageWithRequirementsGOOGLE: {
22676             return "OP_vkCreateImageWithRequirementsGOOGLE";
22677         }
22678         case OP_vkCreateBufferWithRequirementsGOOGLE: {
22679             return "OP_vkCreateBufferWithRequirementsGOOGLE";
22680         }
22681         case OP_vkGetMemoryHostAddressInfoGOOGLE: {
22682             return "OP_vkGetMemoryHostAddressInfoGOOGLE";
22683         }
22684         case OP_vkFreeMemorySyncGOOGLE: {
22685             return "OP_vkFreeMemorySyncGOOGLE";
22686         }
22687         case OP_vkQueueHostSyncGOOGLE: {
22688             return "OP_vkQueueHostSyncGOOGLE";
22689         }
22690         case OP_vkQueueSubmitAsyncGOOGLE: {
22691             return "OP_vkQueueSubmitAsyncGOOGLE";
22692         }
22693         case OP_vkQueueWaitIdleAsyncGOOGLE: {
22694             return "OP_vkQueueWaitIdleAsyncGOOGLE";
22695         }
22696         case OP_vkQueueBindSparseAsyncGOOGLE: {
22697             return "OP_vkQueueBindSparseAsyncGOOGLE";
22698         }
22699         case OP_vkGetLinearImageLayoutGOOGLE: {
22700             return "OP_vkGetLinearImageLayoutGOOGLE";
22701         }
22702         case OP_vkQueueFlushCommandsGOOGLE: {
22703             return "OP_vkQueueFlushCommandsGOOGLE";
22704         }
22705         case OP_vkGetBlobGOOGLE: {
22706             return "OP_vkGetBlobGOOGLE";
22707         }
22708         case OP_vkGetSemaphoreGOOGLE: {
22709             return "OP_vkGetSemaphoreGOOGLE";
22710         }
22711 #endif
22712 #ifdef VK_KHR_dynamic_rendering
22713         case OP_vkCmdEndRenderingKHR: {
22714             return "OP_vkCmdEndRenderingKHR";
22715         }
22716 #endif
22717 #ifdef VK_KHR_synchronization2
22718         case OP_vkCmdPipelineBarrier2KHR: {
22719             return "OP_vkCmdPipelineBarrier2KHR";
22720         }
22721 #endif
22722 #ifdef VK_KHR_maintenance4
22723         case OP_vkGetDeviceBufferMemoryRequirementsKHR: {
22724             return "OP_vkGetDeviceBufferMemoryRequirementsKHR";
22725         }
22726 #endif
22727 #ifdef VK_EXT_color_write_enable
22728         case OP_vkCmdSetColorWriteEnableEXT: {
22729             return "OP_vkCmdSetColorWriteEnableEXT";
22730         }
22731 #endif
22732 #ifdef VK_KHR_maintenance5
22733         case OP_vkCmdBindIndexBuffer2KHR: {
22734             return "OP_vkCmdBindIndexBuffer2KHR";
22735         }
22736 #endif
22737 #ifdef VK_EXT_extended_dynamic_state
22738         case OP_vkCmdSetScissorWithCountEXT: {
22739             return "OP_vkCmdSetScissorWithCountEXT";
22740         }
22741 #endif
22742 #ifdef VK_EXT_host_image_copy
22743         case OP_vkCopyImageToMemoryEXT: {
22744             return "OP_vkCopyImageToMemoryEXT";
22745         }
22746 #endif
22747 #ifdef VK_KHR_ray_tracing_pipeline
22748         case OP_vkGetRayTracingShaderGroupStackSizeKHR: {
22749             return "OP_vkGetRayTracingShaderGroupStackSizeKHR";
22750         }
22751 #endif
22752 #ifdef VK_EXT_extended_dynamic_state2
22753         case OP_vkCmdSetPatchControlPointsEXT: {
22754             return "OP_vkCmdSetPatchControlPointsEXT";
22755         }
22756 #endif
22757 #ifdef VK_EXT_private_data
22758         case OP_vkDestroyPrivateDataSlotEXT: {
22759             return "OP_vkDestroyPrivateDataSlotEXT";
22760         }
22761 #endif
22762 #ifdef VK_VERSION_1_3
22763         case OP_vkCmdSetDepthTestEnable: {
22764             return "OP_vkCmdSetDepthTestEnable";
22765         }
22766 #endif
22767 #ifdef VK_KHR_ray_tracing_pipeline
22768         case OP_vkCmdTraceRaysIndirectKHR: {
22769             return "OP_vkCmdTraceRaysIndirectKHR";
22770         }
22771 #endif
22772 #ifdef VK_EXT_extended_dynamic_state
22773         case OP_vkCmdSetFrontFaceEXT: {
22774             return "OP_vkCmdSetFrontFaceEXT";
22775         }
22776 #endif
22777 #ifdef VK_GOOGLE_gfxstream
22778         case OP_vkCollectDescriptorPoolIdsGOOGLE: {
22779             return "OP_vkCollectDescriptorPoolIdsGOOGLE";
22780         }
22781 #endif
22782 #ifdef VK_KHR_ray_tracing_pipeline
22783         case OP_vkCmdTraceRaysKHR: {
22784             return "OP_vkCmdTraceRaysKHR";
22785         }
22786 #endif
22787 #ifdef VK_VERSION_1_3
22788         case OP_vkCmdCopyImageToBuffer2: {
22789             return "OP_vkCmdCopyImageToBuffer2";
22790         }
22791 #endif
22792 #ifdef VK_EXT_extended_dynamic_state
22793         case OP_vkCmdSetDepthWriteEnableEXT: {
22794             return "OP_vkCmdSetDepthWriteEnableEXT";
22795         }
22796 #endif
22797 #ifdef VK_EXT_host_image_copy
22798         case OP_vkCopyMemoryToImageEXT: {
22799             return "OP_vkCopyMemoryToImageEXT";
22800         }
22801 #endif
22802 #ifdef VK_KHR_buffer_device_address
22803         case OP_vkGetBufferDeviceAddressKHR: {
22804             return "OP_vkGetBufferDeviceAddressKHR";
22805         }
22806 #endif
22807 #ifdef VK_VERSION_1_3
22808         case OP_vkCmdSetDepthBoundsTestEnable: {
22809             return "OP_vkCmdSetDepthBoundsTestEnable";
22810         }
22811 #endif
22812 #ifdef VK_KHR_line_rasterization
22813         case OP_vkCmdSetLineStippleKHR: {
22814             return "OP_vkCmdSetLineStippleKHR";
22815         }
22816 #endif
22817 #ifdef VK_VERSION_1_3
22818         case OP_vkCmdSetScissorWithCount: {
22819             return "OP_vkCmdSetScissorWithCount";
22820         }
22821         case OP_vkCmdEndRendering: {
22822             return "OP_vkCmdEndRendering";
22823         }
22824 #endif
22825 #ifdef VK_VERSION_1_2
22826         case OP_vkCmdEndRenderPass2: {
22827             return "OP_vkCmdEndRenderPass2";
22828         }
22829 #endif
22830 #ifdef VK_KHR_ray_tracing_pipeline
22831         case OP_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR: {
22832             return "OP_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR";
22833         }
22834 #endif
22835 #ifdef VK_VERSION_1_2
22836         case OP_vkGetBufferDeviceAddress: {
22837             return "OP_vkGetBufferDeviceAddress";
22838         }
22839 #endif
22840 #ifdef VK_VERSION_1_3
22841         case OP_vkCmdSetFrontFace: {
22842             return "OP_vkCmdSetFrontFace";
22843         }
22844 #endif
22845 #ifdef VK_EXT_extended_dynamic_state
22846         case OP_vkCmdSetDepthBoundsTestEnableEXT: {
22847             return "OP_vkCmdSetDepthBoundsTestEnableEXT";
22848         }
22849 #endif
22850 #ifdef VK_EXT_host_image_copy
22851         case OP_vkCopyImageToImageEXT: {
22852             return "OP_vkCopyImageToImageEXT";
22853         }
22854 #endif
22855 #ifdef VK_VERSION_1_3
22856         case OP_vkDestroyPrivateDataSlot: {
22857             return "OP_vkDestroyPrivateDataSlot";
22858         }
22859         case OP_vkCmdSetCullMode: {
22860             return "OP_vkCmdSetCullMode";
22861         }
22862 #endif
22863 #ifdef VK_KHR_synchronization2
22864         case OP_vkCmdWriteBufferMarker2AMD: {
22865             return "OP_vkCmdWriteBufferMarker2AMD";
22866         }
22867 #endif
22868 #ifdef VK_VERSION_1_2
22869         case OP_vkWaitSemaphores: {
22870             return "OP_vkWaitSemaphores";
22871         }
22872 #endif
22873 #ifdef VK_EXT_private_data
22874         case OP_vkSetPrivateDataEXT: {
22875             return "OP_vkSetPrivateDataEXT";
22876         }
22877 #endif
22878 #ifdef VK_KHR_copy_commands2
22879         case OP_vkCmdCopyImage2KHR: {
22880             return "OP_vkCmdCopyImage2KHR";
22881         }
22882 #endif
22883 #ifdef VK_VERSION_1_2
22884         case OP_vkGetBufferOpaqueCaptureAddress: {
22885             return "OP_vkGetBufferOpaqueCaptureAddress";
22886         }
22887 #endif
22888 #ifdef VK_VERSION_1_3
22889         case OP_vkCmdSetPrimitiveRestartEnable: {
22890             return "OP_vkCmdSetPrimitiveRestartEnable";
22891         }
22892 #endif
22893 #ifdef VK_EXT_swapchain_maintenance1
22894         case OP_vkReleaseSwapchainImagesEXT: {
22895             return "OP_vkReleaseSwapchainImagesEXT";
22896         }
22897 #endif
22898 #ifdef VK_VERSION_1_3
22899         case OP_vkCmdSetEvent2: {
22900             return "OP_vkCmdSetEvent2";
22901         }
22902         case OP_vkGetDeviceImageSparseMemoryRequirements: {
22903             return "OP_vkGetDeviceImageSparseMemoryRequirements";
22904         }
22905 #endif
22906 #ifdef VK_EXT_extended_dynamic_state
22907         case OP_vkCmdSetDepthTestEnableEXT: {
22908             return "OP_vkCmdSetDepthTestEnableEXT";
22909         }
22910 #endif
22911 #ifdef VK_VERSION_1_2
22912         case OP_vkCmdBeginRenderPass2: {
22913             return "OP_vkCmdBeginRenderPass2";
22914         }
22915 #endif
22916 #ifdef VK_VERSION_1_3
22917         case OP_vkCmdSetStencilOp: {
22918             return "OP_vkCmdSetStencilOp";
22919         }
22920 #endif
22921 #ifdef VK_EXT_private_data
22922         case OP_vkCreatePrivateDataSlotEXT: {
22923             return "OP_vkCreatePrivateDataSlotEXT";
22924         }
22925 #endif
22926 #ifdef VK_VERSION_1_3
22927         case OP_vkCmdCopyBuffer2: {
22928             return "OP_vkCmdCopyBuffer2";
22929         }
22930         case OP_vkGetPrivateData: {
22931             return "OP_vkGetPrivateData";
22932         }
22933 #endif
22934 #ifdef VK_KHR_maintenance5
22935         case OP_vkGetRenderingAreaGranularityKHR: {
22936             return "OP_vkGetRenderingAreaGranularityKHR";
22937         }
22938 #endif
22939 #ifdef VK_VERSION_1_3
22940         case OP_vkCmdSetDepthWriteEnable: {
22941             return "OP_vkCmdSetDepthWriteEnable";
22942         }
22943         case OP_vkSetPrivateData: {
22944             return "OP_vkSetPrivateData";
22945         }
22946 #endif
22947 #ifdef VK_EXT_host_image_copy
22948         case OP_vkTransitionImageLayoutEXT: {
22949             return "OP_vkTransitionImageLayoutEXT";
22950         }
22951 #endif
22952 #ifdef VK_KHR_maintenance4
22953         case OP_vkGetDeviceImageMemoryRequirementsKHR: {
22954             return "OP_vkGetDeviceImageMemoryRequirementsKHR";
22955         }
22956 #endif
22957 #ifdef VK_KHR_maintenance5
22958         case OP_vkGetImageSubresourceLayout2KHR: {
22959             return "OP_vkGetImageSubresourceLayout2KHR";
22960         }
22961 #endif
22962 #ifdef VK_EXT_extended_dynamic_state
22963         case OP_vkCmdBindVertexBuffers2EXT: {
22964             return "OP_vkCmdBindVertexBuffers2EXT";
22965         }
22966 #endif
22967 #ifdef VK_GOOGLE_gfxstream
22968         case OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE: {
22969             return "OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE";
22970         }
22971 #endif
22972 #ifdef VK_VERSION_1_3
22973         case OP_vkCmdWaitEvents2: {
22974             return "OP_vkCmdWaitEvents2";
22975         }
22976 #endif
22977 #ifdef VK_GOOGLE_gfxstream
22978         case OP_vkUpdateDescriptorSetWithTemplateSized2GOOGLE: {
22979             return "OP_vkUpdateDescriptorSetWithTemplateSized2GOOGLE";
22980         }
22981 #endif
22982 #ifdef VK_VERSION_1_2
22983         case OP_vkCmdNextSubpass2: {
22984             return "OP_vkCmdNextSubpass2";
22985         }
22986 #endif
22987 #ifdef VK_KHR_synchronization2
22988         case OP_vkCmdWaitEvents2KHR: {
22989             return "OP_vkCmdWaitEvents2KHR";
22990         }
22991 #endif
22992 #ifdef VK_VERSION_1_2
22993         case OP_vkCmdDrawIndexedIndirectCount: {
22994             return "OP_vkCmdDrawIndexedIndirectCount";
22995         }
22996 #endif
22997 #ifdef VK_EXT_extended_dynamic_state2
22998         case OP_vkCmdSetRasterizerDiscardEnableEXT: {
22999             return "OP_vkCmdSetRasterizerDiscardEnableEXT";
23000         }
23001 #endif
23002 #ifdef VK_VERSION_1_3
23003         case OP_vkCmdSetDepthCompareOp: {
23004             return "OP_vkCmdSetDepthCompareOp";
23005         }
23006         case OP_vkCmdWriteTimestamp2: {
23007             return "OP_vkCmdWriteTimestamp2";
23008         }
23009         case OP_vkCmdCopyImage2: {
23010             return "OP_vkCmdCopyImage2";
23011         }
23012 #endif
23013 #ifdef VK_KHR_ray_tracing_pipeline
23014         case OP_vkCreateRayTracingPipelinesKHR: {
23015             return "OP_vkCreateRayTracingPipelinesKHR";
23016         }
23017 #endif
23018 #ifdef VK_EXT_extended_dynamic_state
23019         case OP_vkCmdSetDepthCompareOpEXT: {
23020             return "OP_vkCmdSetDepthCompareOpEXT";
23021         }
23022 #endif
23023 #ifdef VK_KHR_copy_commands2
23024         case OP_vkCmdCopyBuffer2KHR: {
23025             return "OP_vkCmdCopyBuffer2KHR";
23026         }
23027         case OP_vkCmdCopyBufferToImage2KHR: {
23028             return "OP_vkCmdCopyBufferToImage2KHR";
23029         }
23030 #endif
23031 #ifdef VK_EXT_image_drm_format_modifier
23032         case OP_vkGetImageDrmFormatModifierPropertiesEXT: {
23033             return "OP_vkGetImageDrmFormatModifierPropertiesEXT";
23034         }
23035 #endif
23036 #ifdef VK_VERSION_1_2
23037         case OP_vkResetQueryPool: {
23038             return "OP_vkResetQueryPool";
23039         }
23040 #endif
23041 #ifdef VK_KHR_copy_commands2
23042         case OP_vkCmdCopyImageToBuffer2KHR: {
23043             return "OP_vkCmdCopyImageToBuffer2KHR";
23044         }
23045 #endif
23046 #ifdef VK_KHR_synchronization2
23047         case OP_vkCmdWriteTimestamp2KHR: {
23048             return "OP_vkCmdWriteTimestamp2KHR";
23049         }
23050 #endif
23051 #ifdef VK_KHR_maintenance5
23052         case OP_vkGetDeviceImageSubresourceLayoutKHR: {
23053             return "OP_vkGetDeviceImageSubresourceLayoutKHR";
23054         }
23055 #endif
23056 #ifdef VK_KHR_copy_commands2
23057         case OP_vkCmdResolveImage2KHR: {
23058             return "OP_vkCmdResolveImage2KHR";
23059         }
23060 #endif
23061 #ifdef VK_EXT_extended_dynamic_state
23062         case OP_vkCmdSetViewportWithCountEXT: {
23063             return "OP_vkCmdSetViewportWithCountEXT";
23064         }
23065 #endif
23066 #ifdef VK_VERSION_1_3
23067         case OP_vkCmdBindVertexBuffers2: {
23068             return "OP_vkCmdBindVertexBuffers2";
23069         }
23070 #endif
23071 #ifdef VK_EXT_extended_dynamic_state2
23072         case OP_vkCmdSetDepthBiasEnableEXT: {
23073             return "OP_vkCmdSetDepthBiasEnableEXT";
23074         }
23075 #endif
23076 #ifdef VK_KHR_copy_commands2
23077         case OP_vkCmdBlitImage2KHR: {
23078             return "OP_vkCmdBlitImage2KHR";
23079         }
23080 #endif
23081 #ifdef VK_KHR_ray_tracing_pipeline
23082         case OP_vkCmdSetRayTracingPipelineStackSizeKHR: {
23083             return "OP_vkCmdSetRayTracingPipelineStackSizeKHR";
23084         }
23085 #endif
23086 #ifdef VK_VERSION_1_2
23087         case OP_vkGetDeviceMemoryOpaqueCaptureAddress: {
23088             return "OP_vkGetDeviceMemoryOpaqueCaptureAddress";
23089         }
23090 #endif
23091 #ifdef VK_EXT_extended_dynamic_state
23092         case OP_vkCmdSetPrimitiveTopologyEXT: {
23093             return "OP_vkCmdSetPrimitiveTopologyEXT";
23094         }
23095 #endif
23096 #ifdef VK_VERSION_1_3
23097         case OP_vkCreatePrivateDataSlot: {
23098             return "OP_vkCreatePrivateDataSlot";
23099         }
23100         case OP_vkCmdSetPrimitiveTopology: {
23101             return "OP_vkCmdSetPrimitiveTopology";
23102         }
23103 #endif
23104 #ifdef VK_EXT_line_rasterization
23105         case OP_vkCmdSetLineStippleEXT: {
23106             return "OP_vkCmdSetLineStippleEXT";
23107         }
23108 #endif
23109 #ifdef VK_EXT_extended_dynamic_state
23110         case OP_vkCmdSetCullModeEXT: {
23111             return "OP_vkCmdSetCullModeEXT";
23112         }
23113 #endif
23114 #ifdef VK_VERSION_1_2
23115         case OP_vkGetSemaphoreCounterValue: {
23116             return "OP_vkGetSemaphoreCounterValue";
23117         }
23118 #endif
23119 #ifdef VK_VERSION_1_3
23120         case OP_vkCmdSetDepthBiasEnable: {
23121             return "OP_vkCmdSetDepthBiasEnable";
23122         }
23123         case OP_vkCmdSetViewportWithCount: {
23124             return "OP_vkCmdSetViewportWithCount";
23125         }
23126 #endif
23127 #ifdef VK_EXT_extended_dynamic_state2
23128         case OP_vkCmdSetLogicOpEXT: {
23129             return "OP_vkCmdSetLogicOpEXT";
23130         }
23131 #endif
23132 #ifdef VK_EXT_transform_feedback
23133         case OP_vkCmdBindTransformFeedbackBuffersEXT: {
23134             return "OP_vkCmdBindTransformFeedbackBuffersEXT";
23135         }
23136 #endif
23137 #ifdef VK_GOOGLE_gfxstream
23138         case OP_vkQueueCommitDescriptorSetUpdatesGOOGLE: {
23139             return "OP_vkQueueCommitDescriptorSetUpdatesGOOGLE";
23140         }
23141 #endif
23142 #ifdef VK_VERSION_1_3
23143         case OP_vkCmdCopyBufferToImage2: {
23144             return "OP_vkCmdCopyBufferToImage2";
23145         }
23146 #endif
23147 #ifdef VK_KHR_pipeline_executable_properties
23148         case OP_vkGetPipelineExecutablePropertiesKHR: {
23149             return "OP_vkGetPipelineExecutablePropertiesKHR";
23150         }
23151 #endif
23152 #ifdef VK_KHR_synchronization2
23153         case OP_vkCmdSetEvent2KHR: {
23154             return "OP_vkCmdSetEvent2KHR";
23155         }
23156 #endif
23157 #ifdef VK_VERSION_1_2
23158         case OP_vkSignalSemaphore: {
23159             return "OP_vkSignalSemaphore";
23160         }
23161 #endif
23162 #ifdef VK_KHR_pipeline_executable_properties
23163         case OP_vkGetPipelineExecutableStatisticsKHR: {
23164             return "OP_vkGetPipelineExecutableStatisticsKHR";
23165         }
23166 #endif
23167 #ifdef VK_VERSION_1_3
23168         case OP_vkCmdResetEvent2: {
23169             return "OP_vkCmdResetEvent2";
23170         }
23171 #endif
23172 #ifdef VK_EXT_transform_feedback
23173         case OP_vkCmdEndTransformFeedbackEXT: {
23174             return "OP_vkCmdEndTransformFeedbackEXT";
23175         }
23176 #endif
23177 #ifdef VK_KHR_pipeline_executable_properties
23178         case OP_vkGetPipelineExecutableInternalRepresentationsKHR: {
23179             return "OP_vkGetPipelineExecutableInternalRepresentationsKHR";
23180         }
23181 #endif
23182 #ifdef VK_VERSION_1_3
23183         case OP_vkCmdBlitImage2: {
23184             return "OP_vkCmdBlitImage2";
23185         }
23186         case OP_vkQueueSubmit2: {
23187             return "OP_vkQueueSubmit2";
23188         }
23189 #endif
23190 #ifdef VK_KHR_maintenance4
23191         case OP_vkGetDeviceImageSparseMemoryRequirementsKHR: {
23192             return "OP_vkGetDeviceImageSparseMemoryRequirementsKHR";
23193         }
23194 #endif
23195 #ifdef VK_EXT_transform_feedback
23196         case OP_vkCmdBeginQueryIndexedEXT: {
23197             return "OP_vkCmdBeginQueryIndexedEXT";
23198         }
23199 #endif
23200 #ifdef VK_VERSION_1_3
23201         case OP_vkCmdSetRasterizerDiscardEnable: {
23202             return "OP_vkCmdSetRasterizerDiscardEnable";
23203         }
23204 #endif
23205 #ifdef VK_EXT_extended_dynamic_state
23206         case OP_vkCmdSetStencilOpEXT: {
23207             return "OP_vkCmdSetStencilOpEXT";
23208         }
23209 #endif
23210 #ifdef VK_VERSION_1_2
23211         case OP_vkCreateRenderPass2: {
23212             return "OP_vkCreateRenderPass2";
23213         }
23214 #endif
23215 #ifdef VK_EXT_transform_feedback
23216         case OP_vkCmdEndQueryIndexedEXT: {
23217             return "OP_vkCmdEndQueryIndexedEXT";
23218         }
23219 #endif
23220 #ifdef VK_EXT_tooling_info
23221         case OP_vkGetPhysicalDeviceToolPropertiesEXT: {
23222             return "OP_vkGetPhysicalDeviceToolPropertiesEXT";
23223         }
23224 #endif
23225 #ifdef VK_GOOGLE_gfxstream
23226         case OP_vkGetLinearImageLayout2GOOGLE: {
23227             return "OP_vkGetLinearImageLayout2GOOGLE";
23228         }
23229 #endif
23230 #ifdef VK_VERSION_1_3
23231         case OP_vkCmdResolveImage2: {
23232             return "OP_vkCmdResolveImage2";
23233         }
23234         case OP_vkGetDeviceImageMemoryRequirements: {
23235             return "OP_vkGetDeviceImageMemoryRequirements";
23236         }
23237 #endif
23238 #ifdef VK_VERSION_1_2
23239         case OP_vkCmdDrawIndirectCount: {
23240             return "OP_vkCmdDrawIndirectCount";
23241         }
23242 #endif
23243 #ifdef VK_KHR_synchronization2
23244         case OP_vkCmdResetEvent2KHR: {
23245             return "OP_vkCmdResetEvent2KHR";
23246         }
23247 #endif
23248 #ifdef VK_EXT_transform_feedback
23249         case OP_vkCmdDrawIndirectByteCountEXT: {
23250             return "OP_vkCmdDrawIndirectByteCountEXT";
23251         }
23252 #endif
23253 #ifdef VK_KHR_buffer_device_address
23254         case OP_vkGetBufferOpaqueCaptureAddressKHR: {
23255             return "OP_vkGetBufferOpaqueCaptureAddressKHR";
23256         }
23257 #endif
23258 #ifdef VK_EXT_extended_dynamic_state
23259         case OP_vkCmdSetStencilTestEnableEXT: {
23260             return "OP_vkCmdSetStencilTestEnableEXT";
23261         }
23262 #endif
23263 #ifdef VK_VERSION_1_3
23264         case OP_vkCmdSetStencilTestEnable: {
23265             return "OP_vkCmdSetStencilTestEnable";
23266         }
23267         case OP_vkGetPhysicalDeviceToolProperties: {
23268             return "OP_vkGetPhysicalDeviceToolProperties";
23269         }
23270 #endif
23271 #ifdef VK_ANDROID_native_buffer
23272         case OP_vkGetSwapchainGrallocUsage2ANDROID: {
23273             return "OP_vkGetSwapchainGrallocUsage2ANDROID";
23274         }
23275 #endif
23276 #ifdef VK_GOOGLE_gfxstream
23277         case OP_vkQueueFlushCommandsFromAuxMemoryGOOGLE: {
23278             return "OP_vkQueueFlushCommandsFromAuxMemoryGOOGLE";
23279         }
23280 #endif
23281 #ifdef VK_EXT_private_data
23282         case OP_vkGetPrivateDataEXT: {
23283             return "OP_vkGetPrivateDataEXT";
23284         }
23285 #endif
23286 #ifdef VK_KHR_synchronization2
23287         case OP_vkGetQueueCheckpointData2NV: {
23288             return "OP_vkGetQueueCheckpointData2NV";
23289         }
23290 #endif
23291 #ifdef VK_GOOGLE_gfxstream
23292         case OP_vkQueueSubmitAsync2GOOGLE: {
23293             return "OP_vkQueueSubmitAsync2GOOGLE";
23294         }
23295 #endif
23296 #ifdef VK_KHR_synchronization2
23297         case OP_vkQueueSubmit2KHR: {
23298             return "OP_vkQueueSubmit2KHR";
23299         }
23300 #endif
23301 #ifdef VK_VERSION_1_3
23302         case OP_vkGetDeviceBufferMemoryRequirements: {
23303             return "OP_vkGetDeviceBufferMemoryRequirements";
23304         }
23305 #endif
23306 #ifdef VK_EXT_transform_feedback
23307         case OP_vkCmdBeginTransformFeedbackEXT: {
23308             return "OP_vkCmdBeginTransformFeedbackEXT";
23309         }
23310 #endif
23311 #ifdef VK_VERSION_1_3
23312         case OP_vkCmdBeginRendering: {
23313             return "OP_vkCmdBeginRendering";
23314         }
23315 #endif
23316 #ifdef VK_KHR_buffer_device_address
23317         case OP_vkGetDeviceMemoryOpaqueCaptureAddressKHR: {
23318             return "OP_vkGetDeviceMemoryOpaqueCaptureAddressKHR";
23319         }
23320 #endif
23321 #ifdef VK_EXT_host_image_copy
23322         case OP_vkGetImageSubresourceLayout2EXT: {
23323             return "OP_vkGetImageSubresourceLayout2EXT";
23324         }
23325 #endif
23326 #ifdef VK_VERSION_1_3
23327         case OP_vkCmdPipelineBarrier2: {
23328             return "OP_vkCmdPipelineBarrier2";
23329         }
23330 #endif
23331 #ifdef VK_KHR_dynamic_rendering
23332         case OP_vkCmdBeginRenderingKHR: {
23333             return "OP_vkCmdBeginRenderingKHR";
23334         }
23335 #endif
23336 #ifdef VK_EXT_extended_dynamic_state2
23337         case OP_vkCmdSetPrimitiveRestartEnableEXT: {
23338             return "OP_vkCmdSetPrimitiveRestartEnableEXT";
23339         }
23340 #endif
23341         default: {
23342             return "OP_UNKNOWN_API_CALL";
23343         }
23344     }
23345 }
23346 
23347 }  // namespace vk
23348 }  // namespace gfxstream
23349