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_reserved_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_reserved_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 reservedmarshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
45                                       const void* structExtension, uint8_t** ptr);
46 
47 void reservedunmarshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
48                                         void* structExtension_out, uint8_t** ptr);
49 
50 #ifdef VK_VERSION_1_0
reservedunmarshal_VkExtent2D(VulkanStream * vkStream,VkStructureType rootType,VkExtent2D * forUnmarshaling,uint8_t ** ptr)51 void reservedunmarshal_VkExtent2D(VulkanStream* vkStream, VkStructureType rootType,
52                                   VkExtent2D* forUnmarshaling, uint8_t** ptr) {
53     memcpy((uint32_t*)&forUnmarshaling->width, *ptr, sizeof(uint32_t));
54     *ptr += sizeof(uint32_t);
55     memcpy((uint32_t*)&forUnmarshaling->height, *ptr, sizeof(uint32_t));
56     *ptr += sizeof(uint32_t);
57 }
58 
reservedunmarshal_VkExtent3D(VulkanStream * vkStream,VkStructureType rootType,VkExtent3D * forUnmarshaling,uint8_t ** ptr)59 void reservedunmarshal_VkExtent3D(VulkanStream* vkStream, VkStructureType rootType,
60                                   VkExtent3D* forUnmarshaling, uint8_t** ptr) {
61     memcpy((uint32_t*)&forUnmarshaling->width, *ptr, sizeof(uint32_t));
62     *ptr += sizeof(uint32_t);
63     memcpy((uint32_t*)&forUnmarshaling->height, *ptr, sizeof(uint32_t));
64     *ptr += sizeof(uint32_t);
65     memcpy((uint32_t*)&forUnmarshaling->depth, *ptr, sizeof(uint32_t));
66     *ptr += sizeof(uint32_t);
67 }
68 
reservedunmarshal_VkOffset2D(VulkanStream * vkStream,VkStructureType rootType,VkOffset2D * forUnmarshaling,uint8_t ** ptr)69 void reservedunmarshal_VkOffset2D(VulkanStream* vkStream, VkStructureType rootType,
70                                   VkOffset2D* forUnmarshaling, uint8_t** ptr) {
71     memcpy((int32_t*)&forUnmarshaling->x, *ptr, sizeof(int32_t));
72     *ptr += sizeof(int32_t);
73     memcpy((int32_t*)&forUnmarshaling->y, *ptr, sizeof(int32_t));
74     *ptr += sizeof(int32_t);
75 }
76 
reservedunmarshal_VkOffset3D(VulkanStream * vkStream,VkStructureType rootType,VkOffset3D * forUnmarshaling,uint8_t ** ptr)77 void reservedunmarshal_VkOffset3D(VulkanStream* vkStream, VkStructureType rootType,
78                                   VkOffset3D* forUnmarshaling, uint8_t** ptr) {
79     memcpy((int32_t*)&forUnmarshaling->x, *ptr, sizeof(int32_t));
80     *ptr += sizeof(int32_t);
81     memcpy((int32_t*)&forUnmarshaling->y, *ptr, sizeof(int32_t));
82     *ptr += sizeof(int32_t);
83     memcpy((int32_t*)&forUnmarshaling->z, *ptr, sizeof(int32_t));
84     *ptr += sizeof(int32_t);
85 }
86 
reservedunmarshal_VkRect2D(VulkanStream * vkStream,VkStructureType rootType,VkRect2D * forUnmarshaling,uint8_t ** ptr)87 void reservedunmarshal_VkRect2D(VulkanStream* vkStream, VkStructureType rootType,
88                                 VkRect2D* forUnmarshaling, uint8_t** ptr) {
89     reservedunmarshal_VkOffset2D(vkStream, rootType, (VkOffset2D*)(&forUnmarshaling->offset), ptr);
90     reservedunmarshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->extent), ptr);
91 }
92 
reservedunmarshal_VkBaseInStructure(VulkanStream * vkStream,VkStructureType rootType,VkBaseInStructure * forUnmarshaling,uint8_t ** ptr)93 void reservedunmarshal_VkBaseInStructure(VulkanStream* vkStream, VkStructureType rootType,
94                                          VkBaseInStructure* forUnmarshaling, uint8_t** ptr) {
95     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
96     *ptr += sizeof(VkStructureType);
97     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
98         rootType = forUnmarshaling->sType;
99     }
100     uint32_t pNext_size;
101     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
102     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
103     *ptr += sizeof(uint32_t);
104     forUnmarshaling->pNext = nullptr;
105     if (pNext_size) {
106         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
107         memcpy((VkBaseInStructure*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
108         *ptr += sizeof(VkStructureType);
109         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
110         vkStream->alloc((void**)&forUnmarshaling->pNext,
111                         goldfish_vk_extension_struct_size_with_stream_features(
112                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
113         *(VkStructureType*)forUnmarshaling->pNext = extType;
114         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
115                                            ptr);
116     }
117 }
118 
reservedunmarshal_VkBaseOutStructure(VulkanStream * vkStream,VkStructureType rootType,VkBaseOutStructure * forUnmarshaling,uint8_t ** ptr)119 void reservedunmarshal_VkBaseOutStructure(VulkanStream* vkStream, VkStructureType rootType,
120                                           VkBaseOutStructure* forUnmarshaling, uint8_t** ptr) {
121     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
122     *ptr += sizeof(VkStructureType);
123     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
124         rootType = forUnmarshaling->sType;
125     }
126     uint32_t pNext_size;
127     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
128     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
129     *ptr += sizeof(uint32_t);
130     forUnmarshaling->pNext = nullptr;
131     if (pNext_size) {
132         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
133         memcpy((VkBaseOutStructure*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
134         *ptr += sizeof(VkStructureType);
135         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
136         vkStream->alloc((void**)&forUnmarshaling->pNext,
137                         goldfish_vk_extension_struct_size_with_stream_features(
138                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
139         *(VkStructureType*)forUnmarshaling->pNext = extType;
140         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
141                                            ptr);
142     }
143 }
144 
reservedunmarshal_VkBufferMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,VkBufferMemoryBarrier * forUnmarshaling,uint8_t ** ptr)145 void reservedunmarshal_VkBufferMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
146                                              VkBufferMemoryBarrier* forUnmarshaling,
147                                              uint8_t** ptr) {
148     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
149     *ptr += sizeof(VkStructureType);
150     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
151         rootType = forUnmarshaling->sType;
152     }
153     uint32_t pNext_size;
154     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
155     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
156     *ptr += sizeof(uint32_t);
157     forUnmarshaling->pNext = nullptr;
158     if (pNext_size) {
159         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
160         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
161         *ptr += sizeof(VkStructureType);
162         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
163         vkStream->alloc((void**)&forUnmarshaling->pNext,
164                         goldfish_vk_extension_struct_size_with_stream_features(
165                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
166         *(VkStructureType*)forUnmarshaling->pNext = extType;
167         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
168                                            ptr);
169     }
170     memcpy((VkAccessFlags*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags));
171     *ptr += sizeof(VkAccessFlags);
172     memcpy((VkAccessFlags*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags));
173     *ptr += sizeof(VkAccessFlags);
174     memcpy((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, *ptr, sizeof(uint32_t));
175     *ptr += sizeof(uint32_t);
176     memcpy((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, *ptr, sizeof(uint32_t));
177     *ptr += sizeof(uint32_t);
178     uint64_t cgen_var_0;
179     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
180     *ptr += 1 * 8;
181     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
182     memcpy((VkDeviceSize*)&forUnmarshaling->offset, *ptr, sizeof(VkDeviceSize));
183     *ptr += sizeof(VkDeviceSize);
184     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
185     *ptr += sizeof(VkDeviceSize);
186 }
187 
reservedunmarshal_VkDispatchIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,VkDispatchIndirectCommand * forUnmarshaling,uint8_t ** ptr)188 void reservedunmarshal_VkDispatchIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
189                                                  VkDispatchIndirectCommand* forUnmarshaling,
190                                                  uint8_t** ptr) {
191     memcpy((uint32_t*)&forUnmarshaling->x, *ptr, sizeof(uint32_t));
192     *ptr += sizeof(uint32_t);
193     memcpy((uint32_t*)&forUnmarshaling->y, *ptr, sizeof(uint32_t));
194     *ptr += sizeof(uint32_t);
195     memcpy((uint32_t*)&forUnmarshaling->z, *ptr, sizeof(uint32_t));
196     *ptr += sizeof(uint32_t);
197 }
198 
reservedunmarshal_VkDrawIndexedIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,VkDrawIndexedIndirectCommand * forUnmarshaling,uint8_t ** ptr)199 void reservedunmarshal_VkDrawIndexedIndirectCommand(VulkanStream* vkStream,
200                                                     VkStructureType rootType,
201                                                     VkDrawIndexedIndirectCommand* forUnmarshaling,
202                                                     uint8_t** ptr) {
203     memcpy((uint32_t*)&forUnmarshaling->indexCount, *ptr, sizeof(uint32_t));
204     *ptr += sizeof(uint32_t);
205     memcpy((uint32_t*)&forUnmarshaling->instanceCount, *ptr, sizeof(uint32_t));
206     *ptr += sizeof(uint32_t);
207     memcpy((uint32_t*)&forUnmarshaling->firstIndex, *ptr, sizeof(uint32_t));
208     *ptr += sizeof(uint32_t);
209     memcpy((int32_t*)&forUnmarshaling->vertexOffset, *ptr, sizeof(int32_t));
210     *ptr += sizeof(int32_t);
211     memcpy((uint32_t*)&forUnmarshaling->firstInstance, *ptr, sizeof(uint32_t));
212     *ptr += sizeof(uint32_t);
213 }
214 
reservedunmarshal_VkDrawIndirectCommand(VulkanStream * vkStream,VkStructureType rootType,VkDrawIndirectCommand * forUnmarshaling,uint8_t ** ptr)215 void reservedunmarshal_VkDrawIndirectCommand(VulkanStream* vkStream, VkStructureType rootType,
216                                              VkDrawIndirectCommand* forUnmarshaling,
217                                              uint8_t** ptr) {
218     memcpy((uint32_t*)&forUnmarshaling->vertexCount, *ptr, sizeof(uint32_t));
219     *ptr += sizeof(uint32_t);
220     memcpy((uint32_t*)&forUnmarshaling->instanceCount, *ptr, sizeof(uint32_t));
221     *ptr += sizeof(uint32_t);
222     memcpy((uint32_t*)&forUnmarshaling->firstVertex, *ptr, sizeof(uint32_t));
223     *ptr += sizeof(uint32_t);
224     memcpy((uint32_t*)&forUnmarshaling->firstInstance, *ptr, sizeof(uint32_t));
225     *ptr += sizeof(uint32_t);
226 }
227 
reservedunmarshal_VkImageSubresourceRange(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresourceRange * forUnmarshaling,uint8_t ** ptr)228 void reservedunmarshal_VkImageSubresourceRange(VulkanStream* vkStream, VkStructureType rootType,
229                                                VkImageSubresourceRange* forUnmarshaling,
230                                                uint8_t** ptr) {
231     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
232     *ptr += sizeof(VkImageAspectFlags);
233     memcpy((uint32_t*)&forUnmarshaling->baseMipLevel, *ptr, sizeof(uint32_t));
234     *ptr += sizeof(uint32_t);
235     memcpy((uint32_t*)&forUnmarshaling->levelCount, *ptr, sizeof(uint32_t));
236     *ptr += sizeof(uint32_t);
237     memcpy((uint32_t*)&forUnmarshaling->baseArrayLayer, *ptr, sizeof(uint32_t));
238     *ptr += sizeof(uint32_t);
239     memcpy((uint32_t*)&forUnmarshaling->layerCount, *ptr, sizeof(uint32_t));
240     *ptr += sizeof(uint32_t);
241 }
242 
reservedunmarshal_VkImageMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,VkImageMemoryBarrier * forUnmarshaling,uint8_t ** ptr)243 void reservedunmarshal_VkImageMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
244                                             VkImageMemoryBarrier* forUnmarshaling, uint8_t** ptr) {
245     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
246     *ptr += sizeof(VkStructureType);
247     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
248         rootType = forUnmarshaling->sType;
249     }
250     uint32_t pNext_size;
251     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
252     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
253     *ptr += sizeof(uint32_t);
254     forUnmarshaling->pNext = nullptr;
255     if (pNext_size) {
256         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
257         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
258         *ptr += sizeof(VkStructureType);
259         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
260         vkStream->alloc((void**)&forUnmarshaling->pNext,
261                         goldfish_vk_extension_struct_size_with_stream_features(
262                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
263         *(VkStructureType*)forUnmarshaling->pNext = extType;
264         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
265                                            ptr);
266     }
267     memcpy((VkAccessFlags*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags));
268     *ptr += sizeof(VkAccessFlags);
269     memcpy((VkAccessFlags*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags));
270     *ptr += sizeof(VkAccessFlags);
271     memcpy((VkImageLayout*)&forUnmarshaling->oldLayout, *ptr, sizeof(VkImageLayout));
272     *ptr += sizeof(VkImageLayout);
273     memcpy((VkImageLayout*)&forUnmarshaling->newLayout, *ptr, sizeof(VkImageLayout));
274     *ptr += sizeof(VkImageLayout);
275     memcpy((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, *ptr, sizeof(uint32_t));
276     *ptr += sizeof(uint32_t);
277     memcpy((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, *ptr, sizeof(uint32_t));
278     *ptr += sizeof(uint32_t);
279     uint64_t cgen_var_0;
280     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
281     *ptr += 1 * 8;
282     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
283     reservedunmarshal_VkImageSubresourceRange(
284         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange), ptr);
285 }
286 
reservedunmarshal_VkMemoryBarrier(VulkanStream * vkStream,VkStructureType rootType,VkMemoryBarrier * forUnmarshaling,uint8_t ** ptr)287 void reservedunmarshal_VkMemoryBarrier(VulkanStream* vkStream, VkStructureType rootType,
288                                        VkMemoryBarrier* forUnmarshaling, uint8_t** ptr) {
289     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
290     *ptr += sizeof(VkStructureType);
291     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
292         rootType = forUnmarshaling->sType;
293     }
294     uint32_t pNext_size;
295     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
296     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
297     *ptr += sizeof(uint32_t);
298     forUnmarshaling->pNext = nullptr;
299     if (pNext_size) {
300         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
301         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
302         *ptr += sizeof(VkStructureType);
303         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
304         vkStream->alloc((void**)&forUnmarshaling->pNext,
305                         goldfish_vk_extension_struct_size_with_stream_features(
306                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
307         *(VkStructureType*)forUnmarshaling->pNext = extType;
308         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
309                                            ptr);
310     }
311     memcpy((VkAccessFlags*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags));
312     *ptr += sizeof(VkAccessFlags);
313     memcpy((VkAccessFlags*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags));
314     *ptr += sizeof(VkAccessFlags);
315 }
316 
reservedunmarshal_VkPipelineCacheHeaderVersionOne(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCacheHeaderVersionOne * forUnmarshaling,uint8_t ** ptr)317 void reservedunmarshal_VkPipelineCacheHeaderVersionOne(
318     VulkanStream* vkStream, VkStructureType rootType,
319     VkPipelineCacheHeaderVersionOne* forUnmarshaling, uint8_t** ptr) {
320     memcpy((uint32_t*)&forUnmarshaling->headerSize, *ptr, sizeof(uint32_t));
321     *ptr += sizeof(uint32_t);
322     memcpy((VkPipelineCacheHeaderVersion*)&forUnmarshaling->headerVersion, *ptr,
323            sizeof(VkPipelineCacheHeaderVersion));
324     *ptr += sizeof(VkPipelineCacheHeaderVersion);
325     memcpy((uint32_t*)&forUnmarshaling->vendorID, *ptr, sizeof(uint32_t));
326     *ptr += sizeof(uint32_t);
327     memcpy((uint32_t*)&forUnmarshaling->deviceID, *ptr, sizeof(uint32_t));
328     *ptr += sizeof(uint32_t);
329     memcpy((uint8_t*)forUnmarshaling->pipelineCacheUUID, *ptr, VK_UUID_SIZE * sizeof(uint8_t));
330     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
331 }
332 
reservedunmarshal_VkAllocationCallbacks(VulkanStream * vkStream,VkStructureType rootType,VkAllocationCallbacks * forUnmarshaling,uint8_t ** ptr)333 void reservedunmarshal_VkAllocationCallbacks(VulkanStream* vkStream, VkStructureType rootType,
334                                              VkAllocationCallbacks* forUnmarshaling,
335                                              uint8_t** ptr) {
336     // WARNING PTR CHECK
337     memcpy((void**)&forUnmarshaling->pUserData, (*ptr), 8);
338     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pUserData);
339     *ptr += 8;
340     if (forUnmarshaling->pUserData) {
341         vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
342         memcpy((void*)forUnmarshaling->pUserData, *ptr, sizeof(uint8_t));
343         *ptr += sizeof(uint8_t);
344     }
345     memcpy((PFN_vkAllocationFunction*)&forUnmarshaling->pfnAllocation, (*ptr), 8);
346     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnAllocation);
347     *ptr += 8;
348     memcpy((PFN_vkReallocationFunction*)&forUnmarshaling->pfnReallocation, (*ptr), 8);
349     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnReallocation);
350     *ptr += 8;
351     memcpy((PFN_vkFreeFunction*)&forUnmarshaling->pfnFree, (*ptr), 8);
352     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnFree);
353     *ptr += 8;
354     memcpy((PFN_vkInternalAllocationNotification*)&forUnmarshaling->pfnInternalAllocation, (*ptr),
355            8);
356     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnInternalAllocation);
357     *ptr += 8;
358     memcpy((PFN_vkInternalFreeNotification*)&forUnmarshaling->pfnInternalFree, (*ptr), 8);
359     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnInternalFree);
360     *ptr += 8;
361 }
362 
reservedunmarshal_VkApplicationInfo(VulkanStream * vkStream,VkStructureType rootType,VkApplicationInfo * forUnmarshaling,uint8_t ** ptr)363 void reservedunmarshal_VkApplicationInfo(VulkanStream* vkStream, VkStructureType rootType,
364                                          VkApplicationInfo* forUnmarshaling, uint8_t** ptr) {
365     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
366     *ptr += sizeof(VkStructureType);
367     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
368         rootType = forUnmarshaling->sType;
369     }
370     uint32_t pNext_size;
371     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
372     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
373     *ptr += sizeof(uint32_t);
374     forUnmarshaling->pNext = nullptr;
375     if (pNext_size) {
376         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
377         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
378         *ptr += sizeof(VkStructureType);
379         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
380         vkStream->alloc((void**)&forUnmarshaling->pNext,
381                         goldfish_vk_extension_struct_size_with_stream_features(
382                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
383         *(VkStructureType*)forUnmarshaling->pNext = extType;
384         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
385                                            ptr);
386     }
387     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
388         // WARNING PTR CHECK
389         memcpy((char**)&forUnmarshaling->pApplicationName, (*ptr), 8);
390         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pApplicationName);
391         *ptr += 8;
392         if (forUnmarshaling->pApplicationName) {
393             vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pApplicationName,
394                                                      ptr);
395         }
396     } else {
397         vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pApplicationName, ptr);
398     }
399     memcpy((uint32_t*)&forUnmarshaling->applicationVersion, *ptr, sizeof(uint32_t));
400     *ptr += sizeof(uint32_t);
401     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
402         // WARNING PTR CHECK
403         memcpy((char**)&forUnmarshaling->pEngineName, (*ptr), 8);
404         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pEngineName);
405         *ptr += 8;
406         if (forUnmarshaling->pEngineName) {
407             vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pEngineName, ptr);
408         }
409     } else {
410         vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pEngineName, ptr);
411     }
412     memcpy((uint32_t*)&forUnmarshaling->engineVersion, *ptr, sizeof(uint32_t));
413     *ptr += sizeof(uint32_t);
414     memcpy((uint32_t*)&forUnmarshaling->apiVersion, *ptr, sizeof(uint32_t));
415     *ptr += sizeof(uint32_t);
416 }
417 
reservedunmarshal_VkFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkFormatProperties * forUnmarshaling,uint8_t ** ptr)418 void reservedunmarshal_VkFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
419                                           VkFormatProperties* forUnmarshaling, uint8_t** ptr) {
420     memcpy((VkFormatFeatureFlags*)&forUnmarshaling->linearTilingFeatures, *ptr,
421            sizeof(VkFormatFeatureFlags));
422     *ptr += sizeof(VkFormatFeatureFlags);
423     memcpy((VkFormatFeatureFlags*)&forUnmarshaling->optimalTilingFeatures, *ptr,
424            sizeof(VkFormatFeatureFlags));
425     *ptr += sizeof(VkFormatFeatureFlags);
426     memcpy((VkFormatFeatureFlags*)&forUnmarshaling->bufferFeatures, *ptr,
427            sizeof(VkFormatFeatureFlags));
428     *ptr += sizeof(VkFormatFeatureFlags);
429 }
430 
reservedunmarshal_VkImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkImageFormatProperties * forUnmarshaling,uint8_t ** ptr)431 void reservedunmarshal_VkImageFormatProperties(VulkanStream* vkStream, VkStructureType rootType,
432                                                VkImageFormatProperties* forUnmarshaling,
433                                                uint8_t** ptr) {
434     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->maxExtent),
435                                  ptr);
436     memcpy((uint32_t*)&forUnmarshaling->maxMipLevels, *ptr, sizeof(uint32_t));
437     *ptr += sizeof(uint32_t);
438     memcpy((uint32_t*)&forUnmarshaling->maxArrayLayers, *ptr, sizeof(uint32_t));
439     *ptr += sizeof(uint32_t);
440     memcpy((VkSampleCountFlags*)&forUnmarshaling->sampleCounts, *ptr, sizeof(VkSampleCountFlags));
441     *ptr += sizeof(VkSampleCountFlags);
442     memcpy((VkDeviceSize*)&forUnmarshaling->maxResourceSize, *ptr, sizeof(VkDeviceSize));
443     *ptr += sizeof(VkDeviceSize);
444 }
445 
reservedunmarshal_VkInstanceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkInstanceCreateInfo * forUnmarshaling,uint8_t ** ptr)446 void reservedunmarshal_VkInstanceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
447                                             VkInstanceCreateInfo* forUnmarshaling, uint8_t** ptr) {
448     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
449     *ptr += sizeof(VkStructureType);
450     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
451         rootType = forUnmarshaling->sType;
452     }
453     uint32_t pNext_size;
454     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
455     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
456     *ptr += sizeof(uint32_t);
457     forUnmarshaling->pNext = nullptr;
458     if (pNext_size) {
459         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
460         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
461         *ptr += sizeof(VkStructureType);
462         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
463         vkStream->alloc((void**)&forUnmarshaling->pNext,
464                         goldfish_vk_extension_struct_size_with_stream_features(
465                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
466         *(VkStructureType*)forUnmarshaling->pNext = extType;
467         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
468                                            ptr);
469     }
470     memcpy((VkInstanceCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkInstanceCreateFlags));
471     *ptr += sizeof(VkInstanceCreateFlags);
472     // WARNING PTR CHECK
473     memcpy((VkApplicationInfo**)&forUnmarshaling->pApplicationInfo, (*ptr), 8);
474     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pApplicationInfo);
475     *ptr += 8;
476     if (forUnmarshaling->pApplicationInfo) {
477         vkStream->alloc((void**)&forUnmarshaling->pApplicationInfo,
478                         sizeof(const VkApplicationInfo));
479         reservedunmarshal_VkApplicationInfo(
480             vkStream, rootType, (VkApplicationInfo*)(forUnmarshaling->pApplicationInfo), ptr);
481     }
482     memcpy((uint32_t*)&forUnmarshaling->enabledLayerCount, *ptr, sizeof(uint32_t));
483     *ptr += sizeof(uint32_t);
484     vkStream->loadStringArrayInPlaceWithStreamPtr((char***)&forUnmarshaling->ppEnabledLayerNames,
485                                                   ptr);
486     memcpy((uint32_t*)&forUnmarshaling->enabledExtensionCount, *ptr, sizeof(uint32_t));
487     *ptr += sizeof(uint32_t);
488     vkStream->loadStringArrayInPlaceWithStreamPtr(
489         (char***)&forUnmarshaling->ppEnabledExtensionNames, ptr);
490 }
491 
reservedunmarshal_VkMemoryHeap(VulkanStream * vkStream,VkStructureType rootType,VkMemoryHeap * forUnmarshaling,uint8_t ** ptr)492 void reservedunmarshal_VkMemoryHeap(VulkanStream* vkStream, VkStructureType rootType,
493                                     VkMemoryHeap* forUnmarshaling, uint8_t** ptr) {
494     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
495     *ptr += sizeof(VkDeviceSize);
496     memcpy((VkMemoryHeapFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkMemoryHeapFlags));
497     *ptr += sizeof(VkMemoryHeapFlags);
498 }
499 
reservedunmarshal_VkMemoryType(VulkanStream * vkStream,VkStructureType rootType,VkMemoryType * forUnmarshaling,uint8_t ** ptr)500 void reservedunmarshal_VkMemoryType(VulkanStream* vkStream, VkStructureType rootType,
501                                     VkMemoryType* forUnmarshaling, uint8_t** ptr) {
502     memcpy((VkMemoryPropertyFlags*)&forUnmarshaling->propertyFlags, *ptr,
503            sizeof(VkMemoryPropertyFlags));
504     *ptr += sizeof(VkMemoryPropertyFlags);
505     memcpy((uint32_t*)&forUnmarshaling->heapIndex, *ptr, sizeof(uint32_t));
506     *ptr += sizeof(uint32_t);
507 }
508 
reservedunmarshal_VkPhysicalDeviceFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFeatures * forUnmarshaling,uint8_t ** ptr)509 void reservedunmarshal_VkPhysicalDeviceFeatures(VulkanStream* vkStream, VkStructureType rootType,
510                                                 VkPhysicalDeviceFeatures* forUnmarshaling,
511                                                 uint8_t** ptr) {
512     memcpy((VkBool32*)&forUnmarshaling->robustBufferAccess, *ptr, sizeof(VkBool32));
513     *ptr += sizeof(VkBool32);
514     memcpy((VkBool32*)&forUnmarshaling->fullDrawIndexUint32, *ptr, sizeof(VkBool32));
515     *ptr += sizeof(VkBool32);
516     memcpy((VkBool32*)&forUnmarshaling->imageCubeArray, *ptr, sizeof(VkBool32));
517     *ptr += sizeof(VkBool32);
518     memcpy((VkBool32*)&forUnmarshaling->independentBlend, *ptr, sizeof(VkBool32));
519     *ptr += sizeof(VkBool32);
520     memcpy((VkBool32*)&forUnmarshaling->geometryShader, *ptr, sizeof(VkBool32));
521     *ptr += sizeof(VkBool32);
522     memcpy((VkBool32*)&forUnmarshaling->tessellationShader, *ptr, sizeof(VkBool32));
523     *ptr += sizeof(VkBool32);
524     memcpy((VkBool32*)&forUnmarshaling->sampleRateShading, *ptr, sizeof(VkBool32));
525     *ptr += sizeof(VkBool32);
526     memcpy((VkBool32*)&forUnmarshaling->dualSrcBlend, *ptr, sizeof(VkBool32));
527     *ptr += sizeof(VkBool32);
528     memcpy((VkBool32*)&forUnmarshaling->logicOp, *ptr, sizeof(VkBool32));
529     *ptr += sizeof(VkBool32);
530     memcpy((VkBool32*)&forUnmarshaling->multiDrawIndirect, *ptr, sizeof(VkBool32));
531     *ptr += sizeof(VkBool32);
532     memcpy((VkBool32*)&forUnmarshaling->drawIndirectFirstInstance, *ptr, sizeof(VkBool32));
533     *ptr += sizeof(VkBool32);
534     memcpy((VkBool32*)&forUnmarshaling->depthClamp, *ptr, sizeof(VkBool32));
535     *ptr += sizeof(VkBool32);
536     memcpy((VkBool32*)&forUnmarshaling->depthBiasClamp, *ptr, sizeof(VkBool32));
537     *ptr += sizeof(VkBool32);
538     memcpy((VkBool32*)&forUnmarshaling->fillModeNonSolid, *ptr, sizeof(VkBool32));
539     *ptr += sizeof(VkBool32);
540     memcpy((VkBool32*)&forUnmarshaling->depthBounds, *ptr, sizeof(VkBool32));
541     *ptr += sizeof(VkBool32);
542     memcpy((VkBool32*)&forUnmarshaling->wideLines, *ptr, sizeof(VkBool32));
543     *ptr += sizeof(VkBool32);
544     memcpy((VkBool32*)&forUnmarshaling->largePoints, *ptr, sizeof(VkBool32));
545     *ptr += sizeof(VkBool32);
546     memcpy((VkBool32*)&forUnmarshaling->alphaToOne, *ptr, sizeof(VkBool32));
547     *ptr += sizeof(VkBool32);
548     memcpy((VkBool32*)&forUnmarshaling->multiViewport, *ptr, sizeof(VkBool32));
549     *ptr += sizeof(VkBool32);
550     memcpy((VkBool32*)&forUnmarshaling->samplerAnisotropy, *ptr, sizeof(VkBool32));
551     *ptr += sizeof(VkBool32);
552     memcpy((VkBool32*)&forUnmarshaling->textureCompressionETC2, *ptr, sizeof(VkBool32));
553     *ptr += sizeof(VkBool32);
554     memcpy((VkBool32*)&forUnmarshaling->textureCompressionASTC_LDR, *ptr, sizeof(VkBool32));
555     *ptr += sizeof(VkBool32);
556     memcpy((VkBool32*)&forUnmarshaling->textureCompressionBC, *ptr, sizeof(VkBool32));
557     *ptr += sizeof(VkBool32);
558     memcpy((VkBool32*)&forUnmarshaling->occlusionQueryPrecise, *ptr, sizeof(VkBool32));
559     *ptr += sizeof(VkBool32);
560     memcpy((VkBool32*)&forUnmarshaling->pipelineStatisticsQuery, *ptr, sizeof(VkBool32));
561     *ptr += sizeof(VkBool32);
562     memcpy((VkBool32*)&forUnmarshaling->vertexPipelineStoresAndAtomics, *ptr, sizeof(VkBool32));
563     *ptr += sizeof(VkBool32);
564     memcpy((VkBool32*)&forUnmarshaling->fragmentStoresAndAtomics, *ptr, sizeof(VkBool32));
565     *ptr += sizeof(VkBool32);
566     memcpy((VkBool32*)&forUnmarshaling->shaderTessellationAndGeometryPointSize, *ptr,
567            sizeof(VkBool32));
568     *ptr += sizeof(VkBool32);
569     memcpy((VkBool32*)&forUnmarshaling->shaderImageGatherExtended, *ptr, sizeof(VkBool32));
570     *ptr += sizeof(VkBool32);
571     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageExtendedFormats, *ptr, sizeof(VkBool32));
572     *ptr += sizeof(VkBool32);
573     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageMultisample, *ptr, sizeof(VkBool32));
574     *ptr += sizeof(VkBool32);
575     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageReadWithoutFormat, *ptr,
576            sizeof(VkBool32));
577     *ptr += sizeof(VkBool32);
578     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageWriteWithoutFormat, *ptr,
579            sizeof(VkBool32));
580     *ptr += sizeof(VkBool32);
581     memcpy((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayDynamicIndexing, *ptr,
582            sizeof(VkBool32));
583     *ptr += sizeof(VkBool32);
584     memcpy((VkBool32*)&forUnmarshaling->shaderSampledImageArrayDynamicIndexing, *ptr,
585            sizeof(VkBool32));
586     *ptr += sizeof(VkBool32);
587     memcpy((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayDynamicIndexing, *ptr,
588            sizeof(VkBool32));
589     *ptr += sizeof(VkBool32);
590     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageArrayDynamicIndexing, *ptr,
591            sizeof(VkBool32));
592     *ptr += sizeof(VkBool32);
593     memcpy((VkBool32*)&forUnmarshaling->shaderClipDistance, *ptr, sizeof(VkBool32));
594     *ptr += sizeof(VkBool32);
595     memcpy((VkBool32*)&forUnmarshaling->shaderCullDistance, *ptr, sizeof(VkBool32));
596     *ptr += sizeof(VkBool32);
597     memcpy((VkBool32*)&forUnmarshaling->shaderFloat64, *ptr, sizeof(VkBool32));
598     *ptr += sizeof(VkBool32);
599     memcpy((VkBool32*)&forUnmarshaling->shaderInt64, *ptr, sizeof(VkBool32));
600     *ptr += sizeof(VkBool32);
601     memcpy((VkBool32*)&forUnmarshaling->shaderInt16, *ptr, sizeof(VkBool32));
602     *ptr += sizeof(VkBool32);
603     memcpy((VkBool32*)&forUnmarshaling->shaderResourceResidency, *ptr, sizeof(VkBool32));
604     *ptr += sizeof(VkBool32);
605     memcpy((VkBool32*)&forUnmarshaling->shaderResourceMinLod, *ptr, sizeof(VkBool32));
606     *ptr += sizeof(VkBool32);
607     memcpy((VkBool32*)&forUnmarshaling->sparseBinding, *ptr, sizeof(VkBool32));
608     *ptr += sizeof(VkBool32);
609     memcpy((VkBool32*)&forUnmarshaling->sparseResidencyBuffer, *ptr, sizeof(VkBool32));
610     *ptr += sizeof(VkBool32);
611     memcpy((VkBool32*)&forUnmarshaling->sparseResidencyImage2D, *ptr, sizeof(VkBool32));
612     *ptr += sizeof(VkBool32);
613     memcpy((VkBool32*)&forUnmarshaling->sparseResidencyImage3D, *ptr, sizeof(VkBool32));
614     *ptr += sizeof(VkBool32);
615     memcpy((VkBool32*)&forUnmarshaling->sparseResidency2Samples, *ptr, sizeof(VkBool32));
616     *ptr += sizeof(VkBool32);
617     memcpy((VkBool32*)&forUnmarshaling->sparseResidency4Samples, *ptr, sizeof(VkBool32));
618     *ptr += sizeof(VkBool32);
619     memcpy((VkBool32*)&forUnmarshaling->sparseResidency8Samples, *ptr, sizeof(VkBool32));
620     *ptr += sizeof(VkBool32);
621     memcpy((VkBool32*)&forUnmarshaling->sparseResidency16Samples, *ptr, sizeof(VkBool32));
622     *ptr += sizeof(VkBool32);
623     memcpy((VkBool32*)&forUnmarshaling->sparseResidencyAliased, *ptr, sizeof(VkBool32));
624     *ptr += sizeof(VkBool32);
625     memcpy((VkBool32*)&forUnmarshaling->variableMultisampleRate, *ptr, sizeof(VkBool32));
626     *ptr += sizeof(VkBool32);
627     memcpy((VkBool32*)&forUnmarshaling->inheritedQueries, *ptr, sizeof(VkBool32));
628     *ptr += sizeof(VkBool32);
629 }
630 
reservedunmarshal_VkPhysicalDeviceLimits(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceLimits * forUnmarshaling,uint8_t ** ptr)631 void reservedunmarshal_VkPhysicalDeviceLimits(VulkanStream* vkStream, VkStructureType rootType,
632                                               VkPhysicalDeviceLimits* forUnmarshaling,
633                                               uint8_t** ptr) {
634     memcpy((uint32_t*)&forUnmarshaling->maxImageDimension1D, *ptr, sizeof(uint32_t));
635     *ptr += sizeof(uint32_t);
636     memcpy((uint32_t*)&forUnmarshaling->maxImageDimension2D, *ptr, sizeof(uint32_t));
637     *ptr += sizeof(uint32_t);
638     memcpy((uint32_t*)&forUnmarshaling->maxImageDimension3D, *ptr, sizeof(uint32_t));
639     *ptr += sizeof(uint32_t);
640     memcpy((uint32_t*)&forUnmarshaling->maxImageDimensionCube, *ptr, sizeof(uint32_t));
641     *ptr += sizeof(uint32_t);
642     memcpy((uint32_t*)&forUnmarshaling->maxImageArrayLayers, *ptr, sizeof(uint32_t));
643     *ptr += sizeof(uint32_t);
644     memcpy((uint32_t*)&forUnmarshaling->maxTexelBufferElements, *ptr, sizeof(uint32_t));
645     *ptr += sizeof(uint32_t);
646     memcpy((uint32_t*)&forUnmarshaling->maxUniformBufferRange, *ptr, sizeof(uint32_t));
647     *ptr += sizeof(uint32_t);
648     memcpy((uint32_t*)&forUnmarshaling->maxStorageBufferRange, *ptr, sizeof(uint32_t));
649     *ptr += sizeof(uint32_t);
650     memcpy((uint32_t*)&forUnmarshaling->maxPushConstantsSize, *ptr, sizeof(uint32_t));
651     *ptr += sizeof(uint32_t);
652     memcpy((uint32_t*)&forUnmarshaling->maxMemoryAllocationCount, *ptr, sizeof(uint32_t));
653     *ptr += sizeof(uint32_t);
654     memcpy((uint32_t*)&forUnmarshaling->maxSamplerAllocationCount, *ptr, sizeof(uint32_t));
655     *ptr += sizeof(uint32_t);
656     memcpy((VkDeviceSize*)&forUnmarshaling->bufferImageGranularity, *ptr, sizeof(VkDeviceSize));
657     *ptr += sizeof(VkDeviceSize);
658     memcpy((VkDeviceSize*)&forUnmarshaling->sparseAddressSpaceSize, *ptr, sizeof(VkDeviceSize));
659     *ptr += sizeof(VkDeviceSize);
660     memcpy((uint32_t*)&forUnmarshaling->maxBoundDescriptorSets, *ptr, sizeof(uint32_t));
661     *ptr += sizeof(uint32_t);
662     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorSamplers, *ptr, sizeof(uint32_t));
663     *ptr += sizeof(uint32_t);
664     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUniformBuffers, *ptr,
665            sizeof(uint32_t));
666     *ptr += sizeof(uint32_t);
667     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorStorageBuffers, *ptr,
668            sizeof(uint32_t));
669     *ptr += sizeof(uint32_t);
670     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorSampledImages, *ptr, sizeof(uint32_t));
671     *ptr += sizeof(uint32_t);
672     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorStorageImages, *ptr, sizeof(uint32_t));
673     *ptr += sizeof(uint32_t);
674     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInputAttachments, *ptr,
675            sizeof(uint32_t));
676     *ptr += sizeof(uint32_t);
677     memcpy((uint32_t*)&forUnmarshaling->maxPerStageResources, *ptr, sizeof(uint32_t));
678     *ptr += sizeof(uint32_t);
679     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetSamplers, *ptr, sizeof(uint32_t));
680     *ptr += sizeof(uint32_t);
681     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUniformBuffers, *ptr, sizeof(uint32_t));
682     *ptr += sizeof(uint32_t);
683     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUniformBuffersDynamic, *ptr,
684            sizeof(uint32_t));
685     *ptr += sizeof(uint32_t);
686     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageBuffers, *ptr, sizeof(uint32_t));
687     *ptr += sizeof(uint32_t);
688     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageBuffersDynamic, *ptr,
689            sizeof(uint32_t));
690     *ptr += sizeof(uint32_t);
691     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetSampledImages, *ptr, sizeof(uint32_t));
692     *ptr += sizeof(uint32_t);
693     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageImages, *ptr, sizeof(uint32_t));
694     *ptr += sizeof(uint32_t);
695     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetInputAttachments, *ptr, sizeof(uint32_t));
696     *ptr += sizeof(uint32_t);
697     memcpy((uint32_t*)&forUnmarshaling->maxVertexInputAttributes, *ptr, sizeof(uint32_t));
698     *ptr += sizeof(uint32_t);
699     memcpy((uint32_t*)&forUnmarshaling->maxVertexInputBindings, *ptr, sizeof(uint32_t));
700     *ptr += sizeof(uint32_t);
701     memcpy((uint32_t*)&forUnmarshaling->maxVertexInputAttributeOffset, *ptr, sizeof(uint32_t));
702     *ptr += sizeof(uint32_t);
703     memcpy((uint32_t*)&forUnmarshaling->maxVertexInputBindingStride, *ptr, sizeof(uint32_t));
704     *ptr += sizeof(uint32_t);
705     memcpy((uint32_t*)&forUnmarshaling->maxVertexOutputComponents, *ptr, sizeof(uint32_t));
706     *ptr += sizeof(uint32_t);
707     memcpy((uint32_t*)&forUnmarshaling->maxTessellationGenerationLevel, *ptr, sizeof(uint32_t));
708     *ptr += sizeof(uint32_t);
709     memcpy((uint32_t*)&forUnmarshaling->maxTessellationPatchSize, *ptr, sizeof(uint32_t));
710     *ptr += sizeof(uint32_t);
711     memcpy((uint32_t*)&forUnmarshaling->maxTessellationControlPerVertexInputComponents, *ptr,
712            sizeof(uint32_t));
713     *ptr += sizeof(uint32_t);
714     memcpy((uint32_t*)&forUnmarshaling->maxTessellationControlPerVertexOutputComponents, *ptr,
715            sizeof(uint32_t));
716     *ptr += sizeof(uint32_t);
717     memcpy((uint32_t*)&forUnmarshaling->maxTessellationControlPerPatchOutputComponents, *ptr,
718            sizeof(uint32_t));
719     *ptr += sizeof(uint32_t);
720     memcpy((uint32_t*)&forUnmarshaling->maxTessellationControlTotalOutputComponents, *ptr,
721            sizeof(uint32_t));
722     *ptr += sizeof(uint32_t);
723     memcpy((uint32_t*)&forUnmarshaling->maxTessellationEvaluationInputComponents, *ptr,
724            sizeof(uint32_t));
725     *ptr += sizeof(uint32_t);
726     memcpy((uint32_t*)&forUnmarshaling->maxTessellationEvaluationOutputComponents, *ptr,
727            sizeof(uint32_t));
728     *ptr += sizeof(uint32_t);
729     memcpy((uint32_t*)&forUnmarshaling->maxGeometryShaderInvocations, *ptr, sizeof(uint32_t));
730     *ptr += sizeof(uint32_t);
731     memcpy((uint32_t*)&forUnmarshaling->maxGeometryInputComponents, *ptr, sizeof(uint32_t));
732     *ptr += sizeof(uint32_t);
733     memcpy((uint32_t*)&forUnmarshaling->maxGeometryOutputComponents, *ptr, sizeof(uint32_t));
734     *ptr += sizeof(uint32_t);
735     memcpy((uint32_t*)&forUnmarshaling->maxGeometryOutputVertices, *ptr, sizeof(uint32_t));
736     *ptr += sizeof(uint32_t);
737     memcpy((uint32_t*)&forUnmarshaling->maxGeometryTotalOutputComponents, *ptr, sizeof(uint32_t));
738     *ptr += sizeof(uint32_t);
739     memcpy((uint32_t*)&forUnmarshaling->maxFragmentInputComponents, *ptr, sizeof(uint32_t));
740     *ptr += sizeof(uint32_t);
741     memcpy((uint32_t*)&forUnmarshaling->maxFragmentOutputAttachments, *ptr, sizeof(uint32_t));
742     *ptr += sizeof(uint32_t);
743     memcpy((uint32_t*)&forUnmarshaling->maxFragmentDualSrcAttachments, *ptr, sizeof(uint32_t));
744     *ptr += sizeof(uint32_t);
745     memcpy((uint32_t*)&forUnmarshaling->maxFragmentCombinedOutputResources, *ptr, sizeof(uint32_t));
746     *ptr += sizeof(uint32_t);
747     memcpy((uint32_t*)&forUnmarshaling->maxComputeSharedMemorySize, *ptr, sizeof(uint32_t));
748     *ptr += sizeof(uint32_t);
749     memcpy((uint32_t*)forUnmarshaling->maxComputeWorkGroupCount, *ptr, 3 * sizeof(uint32_t));
750     *ptr += 3 * sizeof(uint32_t);
751     memcpy((uint32_t*)&forUnmarshaling->maxComputeWorkGroupInvocations, *ptr, sizeof(uint32_t));
752     *ptr += sizeof(uint32_t);
753     memcpy((uint32_t*)forUnmarshaling->maxComputeWorkGroupSize, *ptr, 3 * sizeof(uint32_t));
754     *ptr += 3 * sizeof(uint32_t);
755     memcpy((uint32_t*)&forUnmarshaling->subPixelPrecisionBits, *ptr, sizeof(uint32_t));
756     *ptr += sizeof(uint32_t);
757     memcpy((uint32_t*)&forUnmarshaling->subTexelPrecisionBits, *ptr, sizeof(uint32_t));
758     *ptr += sizeof(uint32_t);
759     memcpy((uint32_t*)&forUnmarshaling->mipmapPrecisionBits, *ptr, sizeof(uint32_t));
760     *ptr += sizeof(uint32_t);
761     memcpy((uint32_t*)&forUnmarshaling->maxDrawIndexedIndexValue, *ptr, sizeof(uint32_t));
762     *ptr += sizeof(uint32_t);
763     memcpy((uint32_t*)&forUnmarshaling->maxDrawIndirectCount, *ptr, sizeof(uint32_t));
764     *ptr += sizeof(uint32_t);
765     memcpy((float*)&forUnmarshaling->maxSamplerLodBias, *ptr, sizeof(float));
766     *ptr += sizeof(float);
767     memcpy((float*)&forUnmarshaling->maxSamplerAnisotropy, *ptr, sizeof(float));
768     *ptr += sizeof(float);
769     memcpy((uint32_t*)&forUnmarshaling->maxViewports, *ptr, sizeof(uint32_t));
770     *ptr += sizeof(uint32_t);
771     memcpy((uint32_t*)forUnmarshaling->maxViewportDimensions, *ptr, 2 * sizeof(uint32_t));
772     *ptr += 2 * sizeof(uint32_t);
773     memcpy((float*)forUnmarshaling->viewportBoundsRange, *ptr, 2 * sizeof(float));
774     *ptr += 2 * sizeof(float);
775     memcpy((uint32_t*)&forUnmarshaling->viewportSubPixelBits, *ptr, sizeof(uint32_t));
776     *ptr += sizeof(uint32_t);
777     memcpy((size_t*)&forUnmarshaling->minMemoryMapAlignment, (*ptr), 8);
778     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->minMemoryMapAlignment);
779     *ptr += 8;
780     memcpy((VkDeviceSize*)&forUnmarshaling->minTexelBufferOffsetAlignment, *ptr,
781            sizeof(VkDeviceSize));
782     *ptr += sizeof(VkDeviceSize);
783     memcpy((VkDeviceSize*)&forUnmarshaling->minUniformBufferOffsetAlignment, *ptr,
784            sizeof(VkDeviceSize));
785     *ptr += sizeof(VkDeviceSize);
786     memcpy((VkDeviceSize*)&forUnmarshaling->minStorageBufferOffsetAlignment, *ptr,
787            sizeof(VkDeviceSize));
788     *ptr += sizeof(VkDeviceSize);
789     memcpy((int32_t*)&forUnmarshaling->minTexelOffset, *ptr, sizeof(int32_t));
790     *ptr += sizeof(int32_t);
791     memcpy((uint32_t*)&forUnmarshaling->maxTexelOffset, *ptr, sizeof(uint32_t));
792     *ptr += sizeof(uint32_t);
793     memcpy((int32_t*)&forUnmarshaling->minTexelGatherOffset, *ptr, sizeof(int32_t));
794     *ptr += sizeof(int32_t);
795     memcpy((uint32_t*)&forUnmarshaling->maxTexelGatherOffset, *ptr, sizeof(uint32_t));
796     *ptr += sizeof(uint32_t);
797     memcpy((float*)&forUnmarshaling->minInterpolationOffset, *ptr, sizeof(float));
798     *ptr += sizeof(float);
799     memcpy((float*)&forUnmarshaling->maxInterpolationOffset, *ptr, sizeof(float));
800     *ptr += sizeof(float);
801     memcpy((uint32_t*)&forUnmarshaling->subPixelInterpolationOffsetBits, *ptr, sizeof(uint32_t));
802     *ptr += sizeof(uint32_t);
803     memcpy((uint32_t*)&forUnmarshaling->maxFramebufferWidth, *ptr, sizeof(uint32_t));
804     *ptr += sizeof(uint32_t);
805     memcpy((uint32_t*)&forUnmarshaling->maxFramebufferHeight, *ptr, sizeof(uint32_t));
806     *ptr += sizeof(uint32_t);
807     memcpy((uint32_t*)&forUnmarshaling->maxFramebufferLayers, *ptr, sizeof(uint32_t));
808     *ptr += sizeof(uint32_t);
809     memcpy((VkSampleCountFlags*)&forUnmarshaling->framebufferColorSampleCounts, *ptr,
810            sizeof(VkSampleCountFlags));
811     *ptr += sizeof(VkSampleCountFlags);
812     memcpy((VkSampleCountFlags*)&forUnmarshaling->framebufferDepthSampleCounts, *ptr,
813            sizeof(VkSampleCountFlags));
814     *ptr += sizeof(VkSampleCountFlags);
815     memcpy((VkSampleCountFlags*)&forUnmarshaling->framebufferStencilSampleCounts, *ptr,
816            sizeof(VkSampleCountFlags));
817     *ptr += sizeof(VkSampleCountFlags);
818     memcpy((VkSampleCountFlags*)&forUnmarshaling->framebufferNoAttachmentsSampleCounts, *ptr,
819            sizeof(VkSampleCountFlags));
820     *ptr += sizeof(VkSampleCountFlags);
821     memcpy((uint32_t*)&forUnmarshaling->maxColorAttachments, *ptr, sizeof(uint32_t));
822     *ptr += sizeof(uint32_t);
823     memcpy((VkSampleCountFlags*)&forUnmarshaling->sampledImageColorSampleCounts, *ptr,
824            sizeof(VkSampleCountFlags));
825     *ptr += sizeof(VkSampleCountFlags);
826     memcpy((VkSampleCountFlags*)&forUnmarshaling->sampledImageIntegerSampleCounts, *ptr,
827            sizeof(VkSampleCountFlags));
828     *ptr += sizeof(VkSampleCountFlags);
829     memcpy((VkSampleCountFlags*)&forUnmarshaling->sampledImageDepthSampleCounts, *ptr,
830            sizeof(VkSampleCountFlags));
831     *ptr += sizeof(VkSampleCountFlags);
832     memcpy((VkSampleCountFlags*)&forUnmarshaling->sampledImageStencilSampleCounts, *ptr,
833            sizeof(VkSampleCountFlags));
834     *ptr += sizeof(VkSampleCountFlags);
835     memcpy((VkSampleCountFlags*)&forUnmarshaling->storageImageSampleCounts, *ptr,
836            sizeof(VkSampleCountFlags));
837     *ptr += sizeof(VkSampleCountFlags);
838     memcpy((uint32_t*)&forUnmarshaling->maxSampleMaskWords, *ptr, sizeof(uint32_t));
839     *ptr += sizeof(uint32_t);
840     memcpy((VkBool32*)&forUnmarshaling->timestampComputeAndGraphics, *ptr, sizeof(VkBool32));
841     *ptr += sizeof(VkBool32);
842     memcpy((float*)&forUnmarshaling->timestampPeriod, *ptr, sizeof(float));
843     *ptr += sizeof(float);
844     memcpy((uint32_t*)&forUnmarshaling->maxClipDistances, *ptr, sizeof(uint32_t));
845     *ptr += sizeof(uint32_t);
846     memcpy((uint32_t*)&forUnmarshaling->maxCullDistances, *ptr, sizeof(uint32_t));
847     *ptr += sizeof(uint32_t);
848     memcpy((uint32_t*)&forUnmarshaling->maxCombinedClipAndCullDistances, *ptr, sizeof(uint32_t));
849     *ptr += sizeof(uint32_t);
850     memcpy((uint32_t*)&forUnmarshaling->discreteQueuePriorities, *ptr, sizeof(uint32_t));
851     *ptr += sizeof(uint32_t);
852     memcpy((float*)forUnmarshaling->pointSizeRange, *ptr, 2 * sizeof(float));
853     *ptr += 2 * sizeof(float);
854     memcpy((float*)forUnmarshaling->lineWidthRange, *ptr, 2 * sizeof(float));
855     *ptr += 2 * sizeof(float);
856     memcpy((float*)&forUnmarshaling->pointSizeGranularity, *ptr, sizeof(float));
857     *ptr += sizeof(float);
858     memcpy((float*)&forUnmarshaling->lineWidthGranularity, *ptr, sizeof(float));
859     *ptr += sizeof(float);
860     memcpy((VkBool32*)&forUnmarshaling->strictLines, *ptr, sizeof(VkBool32));
861     *ptr += sizeof(VkBool32);
862     memcpy((VkBool32*)&forUnmarshaling->standardSampleLocations, *ptr, sizeof(VkBool32));
863     *ptr += sizeof(VkBool32);
864     memcpy((VkDeviceSize*)&forUnmarshaling->optimalBufferCopyOffsetAlignment, *ptr,
865            sizeof(VkDeviceSize));
866     *ptr += sizeof(VkDeviceSize);
867     memcpy((VkDeviceSize*)&forUnmarshaling->optimalBufferCopyRowPitchAlignment, *ptr,
868            sizeof(VkDeviceSize));
869     *ptr += sizeof(VkDeviceSize);
870     memcpy((VkDeviceSize*)&forUnmarshaling->nonCoherentAtomSize, *ptr, sizeof(VkDeviceSize));
871     *ptr += sizeof(VkDeviceSize);
872 }
873 
reservedunmarshal_VkPhysicalDeviceMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMemoryProperties * forUnmarshaling,uint8_t ** ptr)874 void reservedunmarshal_VkPhysicalDeviceMemoryProperties(
875     VulkanStream* vkStream, VkStructureType rootType,
876     VkPhysicalDeviceMemoryProperties* forUnmarshaling, uint8_t** ptr) {
877     memcpy((uint32_t*)&forUnmarshaling->memoryTypeCount, *ptr, sizeof(uint32_t));
878     *ptr += sizeof(uint32_t);
879     for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i) {
880         reservedunmarshal_VkMemoryType(vkStream, rootType,
881                                        (VkMemoryType*)(forUnmarshaling->memoryTypes + i), ptr);
882     }
883     memcpy((uint32_t*)&forUnmarshaling->memoryHeapCount, *ptr, sizeof(uint32_t));
884     *ptr += sizeof(uint32_t);
885     for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i) {
886         reservedunmarshal_VkMemoryHeap(vkStream, rootType,
887                                        (VkMemoryHeap*)(forUnmarshaling->memoryHeaps + i), ptr);
888     }
889 }
890 
reservedunmarshal_VkPhysicalDeviceSparseProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSparseProperties * forUnmarshaling,uint8_t ** ptr)891 void reservedunmarshal_VkPhysicalDeviceSparseProperties(
892     VulkanStream* vkStream, VkStructureType rootType,
893     VkPhysicalDeviceSparseProperties* forUnmarshaling, uint8_t** ptr) {
894     memcpy((VkBool32*)&forUnmarshaling->residencyStandard2DBlockShape, *ptr, sizeof(VkBool32));
895     *ptr += sizeof(VkBool32);
896     memcpy((VkBool32*)&forUnmarshaling->residencyStandard2DMultisampleBlockShape, *ptr,
897            sizeof(VkBool32));
898     *ptr += sizeof(VkBool32);
899     memcpy((VkBool32*)&forUnmarshaling->residencyStandard3DBlockShape, *ptr, sizeof(VkBool32));
900     *ptr += sizeof(VkBool32);
901     memcpy((VkBool32*)&forUnmarshaling->residencyAlignedMipSize, *ptr, sizeof(VkBool32));
902     *ptr += sizeof(VkBool32);
903     memcpy((VkBool32*)&forUnmarshaling->residencyNonResidentStrict, *ptr, sizeof(VkBool32));
904     *ptr += sizeof(VkBool32);
905 }
906 
reservedunmarshal_VkPhysicalDeviceProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProperties * forUnmarshaling,uint8_t ** ptr)907 void reservedunmarshal_VkPhysicalDeviceProperties(VulkanStream* vkStream, VkStructureType rootType,
908                                                   VkPhysicalDeviceProperties* forUnmarshaling,
909                                                   uint8_t** ptr) {
910     memcpy((uint32_t*)&forUnmarshaling->apiVersion, *ptr, sizeof(uint32_t));
911     *ptr += sizeof(uint32_t);
912     memcpy((uint32_t*)&forUnmarshaling->driverVersion, *ptr, sizeof(uint32_t));
913     *ptr += sizeof(uint32_t);
914     memcpy((uint32_t*)&forUnmarshaling->vendorID, *ptr, sizeof(uint32_t));
915     *ptr += sizeof(uint32_t);
916     memcpy((uint32_t*)&forUnmarshaling->deviceID, *ptr, sizeof(uint32_t));
917     *ptr += sizeof(uint32_t);
918     memcpy((VkPhysicalDeviceType*)&forUnmarshaling->deviceType, *ptr, sizeof(VkPhysicalDeviceType));
919     *ptr += sizeof(VkPhysicalDeviceType);
920     memcpy((char*)forUnmarshaling->deviceName, *ptr,
921            VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
922     *ptr += VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char);
923     memcpy((uint8_t*)forUnmarshaling->pipelineCacheUUID, *ptr, VK_UUID_SIZE * sizeof(uint8_t));
924     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
925     reservedunmarshal_VkPhysicalDeviceLimits(
926         vkStream, rootType, (VkPhysicalDeviceLimits*)(&forUnmarshaling->limits), ptr);
927     reservedunmarshal_VkPhysicalDeviceSparseProperties(
928         vkStream, rootType, (VkPhysicalDeviceSparseProperties*)(&forUnmarshaling->sparseProperties),
929         ptr);
930 }
931 
reservedunmarshal_VkQueueFamilyProperties(VulkanStream * vkStream,VkStructureType rootType,VkQueueFamilyProperties * forUnmarshaling,uint8_t ** ptr)932 void reservedunmarshal_VkQueueFamilyProperties(VulkanStream* vkStream, VkStructureType rootType,
933                                                VkQueueFamilyProperties* forUnmarshaling,
934                                                uint8_t** ptr) {
935     memcpy((VkQueueFlags*)&forUnmarshaling->queueFlags, *ptr, sizeof(VkQueueFlags));
936     *ptr += sizeof(VkQueueFlags);
937     memcpy((uint32_t*)&forUnmarshaling->queueCount, *ptr, sizeof(uint32_t));
938     *ptr += sizeof(uint32_t);
939     memcpy((uint32_t*)&forUnmarshaling->timestampValidBits, *ptr, sizeof(uint32_t));
940     *ptr += sizeof(uint32_t);
941     reservedunmarshal_VkExtent3D(vkStream, rootType,
942                                  (VkExtent3D*)(&forUnmarshaling->minImageTransferGranularity), ptr);
943 }
944 
reservedunmarshal_VkDeviceQueueCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceQueueCreateInfo * forUnmarshaling,uint8_t ** ptr)945 void reservedunmarshal_VkDeviceQueueCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
946                                                VkDeviceQueueCreateInfo* forUnmarshaling,
947                                                uint8_t** ptr) {
948     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
949     *ptr += sizeof(VkStructureType);
950     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
951         rootType = forUnmarshaling->sType;
952     }
953     uint32_t pNext_size;
954     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
955     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
956     *ptr += sizeof(uint32_t);
957     forUnmarshaling->pNext = nullptr;
958     if (pNext_size) {
959         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
960         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
961         *ptr += sizeof(VkStructureType);
962         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
963         vkStream->alloc((void**)&forUnmarshaling->pNext,
964                         goldfish_vk_extension_struct_size_with_stream_features(
965                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
966         *(VkStructureType*)forUnmarshaling->pNext = extType;
967         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
968                                            ptr);
969     }
970     memcpy((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags, *ptr,
971            sizeof(VkDeviceQueueCreateFlags));
972     *ptr += sizeof(VkDeviceQueueCreateFlags);
973     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndex, *ptr, sizeof(uint32_t));
974     *ptr += sizeof(uint32_t);
975     memcpy((uint32_t*)&forUnmarshaling->queueCount, *ptr, sizeof(uint32_t));
976     *ptr += sizeof(uint32_t);
977     vkStream->alloc((void**)&forUnmarshaling->pQueuePriorities,
978                     forUnmarshaling->queueCount * sizeof(const float));
979     memcpy((float*)forUnmarshaling->pQueuePriorities, *ptr,
980            forUnmarshaling->queueCount * sizeof(const float));
981     *ptr += forUnmarshaling->queueCount * sizeof(const float);
982 }
983 
reservedunmarshal_VkDeviceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceCreateInfo * forUnmarshaling,uint8_t ** ptr)984 void reservedunmarshal_VkDeviceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
985                                           VkDeviceCreateInfo* forUnmarshaling, uint8_t** ptr) {
986     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
987     *ptr += sizeof(VkStructureType);
988     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
989         rootType = forUnmarshaling->sType;
990     }
991     uint32_t pNext_size;
992     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
993     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
994     *ptr += sizeof(uint32_t);
995     forUnmarshaling->pNext = nullptr;
996     if (pNext_size) {
997         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
998         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
999         *ptr += sizeof(VkStructureType);
1000         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1001         vkStream->alloc((void**)&forUnmarshaling->pNext,
1002                         goldfish_vk_extension_struct_size_with_stream_features(
1003                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1004         *(VkStructureType*)forUnmarshaling->pNext = extType;
1005         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1006                                            ptr);
1007     }
1008     memcpy((VkDeviceCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkDeviceCreateFlags));
1009     *ptr += sizeof(VkDeviceCreateFlags);
1010     memcpy((uint32_t*)&forUnmarshaling->queueCreateInfoCount, *ptr, sizeof(uint32_t));
1011     *ptr += sizeof(uint32_t);
1012     vkStream->alloc((void**)&forUnmarshaling->pQueueCreateInfos,
1013                     forUnmarshaling->queueCreateInfoCount * sizeof(const VkDeviceQueueCreateInfo));
1014     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->queueCreateInfoCount; ++i) {
1015         reservedunmarshal_VkDeviceQueueCreateInfo(
1016             vkStream, rootType, (VkDeviceQueueCreateInfo*)(forUnmarshaling->pQueueCreateInfos + i),
1017             ptr);
1018     }
1019     memcpy((uint32_t*)&forUnmarshaling->enabledLayerCount, *ptr, sizeof(uint32_t));
1020     *ptr += sizeof(uint32_t);
1021     vkStream->loadStringArrayInPlaceWithStreamPtr((char***)&forUnmarshaling->ppEnabledLayerNames,
1022                                                   ptr);
1023     memcpy((uint32_t*)&forUnmarshaling->enabledExtensionCount, *ptr, sizeof(uint32_t));
1024     *ptr += sizeof(uint32_t);
1025     vkStream->loadStringArrayInPlaceWithStreamPtr(
1026         (char***)&forUnmarshaling->ppEnabledExtensionNames, ptr);
1027     // WARNING PTR CHECK
1028     memcpy((VkPhysicalDeviceFeatures**)&forUnmarshaling->pEnabledFeatures, (*ptr), 8);
1029     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pEnabledFeatures);
1030     *ptr += 8;
1031     if (forUnmarshaling->pEnabledFeatures) {
1032         vkStream->alloc((void**)&forUnmarshaling->pEnabledFeatures,
1033                         sizeof(const VkPhysicalDeviceFeatures));
1034         reservedunmarshal_VkPhysicalDeviceFeatures(
1035             vkStream, rootType, (VkPhysicalDeviceFeatures*)(forUnmarshaling->pEnabledFeatures),
1036             ptr);
1037     }
1038 }
1039 
reservedunmarshal_VkExtensionProperties(VulkanStream * vkStream,VkStructureType rootType,VkExtensionProperties * forUnmarshaling,uint8_t ** ptr)1040 void reservedunmarshal_VkExtensionProperties(VulkanStream* vkStream, VkStructureType rootType,
1041                                              VkExtensionProperties* forUnmarshaling,
1042                                              uint8_t** ptr) {
1043     memcpy((char*)forUnmarshaling->extensionName, *ptr, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
1044     *ptr += VK_MAX_EXTENSION_NAME_SIZE * sizeof(char);
1045     memcpy((uint32_t*)&forUnmarshaling->specVersion, *ptr, sizeof(uint32_t));
1046     *ptr += sizeof(uint32_t);
1047 }
1048 
reservedunmarshal_VkLayerProperties(VulkanStream * vkStream,VkStructureType rootType,VkLayerProperties * forUnmarshaling,uint8_t ** ptr)1049 void reservedunmarshal_VkLayerProperties(VulkanStream* vkStream, VkStructureType rootType,
1050                                          VkLayerProperties* forUnmarshaling, uint8_t** ptr) {
1051     memcpy((char*)forUnmarshaling->layerName, *ptr, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
1052     *ptr += VK_MAX_EXTENSION_NAME_SIZE * sizeof(char);
1053     memcpy((uint32_t*)&forUnmarshaling->specVersion, *ptr, sizeof(uint32_t));
1054     *ptr += sizeof(uint32_t);
1055     memcpy((uint32_t*)&forUnmarshaling->implementationVersion, *ptr, sizeof(uint32_t));
1056     *ptr += sizeof(uint32_t);
1057     memcpy((char*)forUnmarshaling->description, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
1058     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
1059 }
1060 
reservedunmarshal_VkSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkSubmitInfo * forUnmarshaling,uint8_t ** ptr)1061 void reservedunmarshal_VkSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
1062                                     VkSubmitInfo* forUnmarshaling, uint8_t** ptr) {
1063     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1064     *ptr += sizeof(VkStructureType);
1065     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1066         rootType = forUnmarshaling->sType;
1067     }
1068     uint32_t pNext_size;
1069     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1070     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1071     *ptr += sizeof(uint32_t);
1072     forUnmarshaling->pNext = nullptr;
1073     if (pNext_size) {
1074         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1075         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1076         *ptr += sizeof(VkStructureType);
1077         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1078         vkStream->alloc((void**)&forUnmarshaling->pNext,
1079                         goldfish_vk_extension_struct_size_with_stream_features(
1080                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1081         *(VkStructureType*)forUnmarshaling->pNext = extType;
1082         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1083                                            ptr);
1084     }
1085     memcpy((uint32_t*)&forUnmarshaling->waitSemaphoreCount, *ptr, sizeof(uint32_t));
1086     *ptr += sizeof(uint32_t);
1087     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores,
1088                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
1089     if (forUnmarshaling->waitSemaphoreCount) {
1090         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
1091         *ptr += 8 * forUnmarshaling->waitSemaphoreCount;
1092         if (forUnmarshaling) {
1093             for (uint32_t k = 0; k < forUnmarshaling->waitSemaphoreCount; ++k) {
1094                 uint64_t tmpval;
1095                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
1096                 *(((VkSemaphore*)forUnmarshaling->pWaitSemaphores) + k) =
1097                     tmpval ? (VkSemaphore)unbox_VkSemaphore((VkSemaphore)tmpval) : VK_NULL_HANDLE;
1098             }
1099         }
1100     }
1101     vkStream->alloc((void**)&forUnmarshaling->pWaitDstStageMask,
1102                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
1103     memcpy((VkPipelineStageFlags*)forUnmarshaling->pWaitDstStageMask, *ptr,
1104            forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
1105     *ptr += forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags);
1106     memcpy((uint32_t*)&forUnmarshaling->commandBufferCount, *ptr, sizeof(uint32_t));
1107     *ptr += sizeof(uint32_t);
1108     vkStream->alloc((void**)&forUnmarshaling->pCommandBuffers,
1109                     forUnmarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
1110     if (forUnmarshaling->commandBufferCount) {
1111         uint8_t* cgen_var_1_ptr = (uint8_t*)(*ptr);
1112         *ptr += 8 * forUnmarshaling->commandBufferCount;
1113         if (forUnmarshaling) {
1114             for (uint32_t k = 0; k < forUnmarshaling->commandBufferCount; ++k) {
1115                 uint64_t tmpval;
1116                 memcpy(&tmpval, cgen_var_1_ptr + k * 8, sizeof(uint64_t));
1117                 *(((VkCommandBuffer*)forUnmarshaling->pCommandBuffers) + k) =
1118                     tmpval ? (VkCommandBuffer)unbox_VkCommandBuffer((VkCommandBuffer)tmpval)
1119                            : VK_NULL_HANDLE;
1120             }
1121         }
1122     }
1123     memcpy((uint32_t*)&forUnmarshaling->signalSemaphoreCount, *ptr, sizeof(uint32_t));
1124     *ptr += sizeof(uint32_t);
1125     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores,
1126                     forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
1127     if (forUnmarshaling->signalSemaphoreCount) {
1128         uint8_t* cgen_var_2_ptr = (uint8_t*)(*ptr);
1129         *ptr += 8 * forUnmarshaling->signalSemaphoreCount;
1130         if (forUnmarshaling) {
1131             for (uint32_t k = 0; k < forUnmarshaling->signalSemaphoreCount; ++k) {
1132                 uint64_t tmpval;
1133                 memcpy(&tmpval, cgen_var_2_ptr + k * 8, sizeof(uint64_t));
1134                 *(((VkSemaphore*)forUnmarshaling->pSignalSemaphores) + k) =
1135                     tmpval ? (VkSemaphore)unbox_VkSemaphore((VkSemaphore)tmpval) : VK_NULL_HANDLE;
1136             }
1137         }
1138     }
1139 }
1140 
reservedunmarshal_VkMappedMemoryRange(VulkanStream * vkStream,VkStructureType rootType,VkMappedMemoryRange * forUnmarshaling,uint8_t ** ptr)1141 void reservedunmarshal_VkMappedMemoryRange(VulkanStream* vkStream, VkStructureType rootType,
1142                                            VkMappedMemoryRange* forUnmarshaling, uint8_t** ptr) {
1143     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1144     *ptr += sizeof(VkStructureType);
1145     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1146         rootType = forUnmarshaling->sType;
1147     }
1148     uint32_t pNext_size;
1149     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1150     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1151     *ptr += sizeof(uint32_t);
1152     forUnmarshaling->pNext = nullptr;
1153     if (pNext_size) {
1154         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1155         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1156         *ptr += sizeof(VkStructureType);
1157         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1158         vkStream->alloc((void**)&forUnmarshaling->pNext,
1159                         goldfish_vk_extension_struct_size_with_stream_features(
1160                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1161         *(VkStructureType*)forUnmarshaling->pNext = extType;
1162         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1163                                            ptr);
1164     }
1165     uint64_t cgen_var_0;
1166     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1167     *ptr += 1 * 8;
1168     *(VkDeviceMemory*)&forUnmarshaling->memory =
1169         (VkDeviceMemory)unbox_VkDeviceMemory((VkDeviceMemory)(*&cgen_var_0));
1170     memcpy((VkDeviceSize*)&forUnmarshaling->offset, *ptr, sizeof(VkDeviceSize));
1171     *ptr += sizeof(VkDeviceSize);
1172     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
1173     *ptr += sizeof(VkDeviceSize);
1174 }
1175 
reservedunmarshal_VkMemoryAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryAllocateInfo * forUnmarshaling,uint8_t ** ptr)1176 void reservedunmarshal_VkMemoryAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
1177                                             VkMemoryAllocateInfo* forUnmarshaling, uint8_t** ptr) {
1178     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1179     *ptr += sizeof(VkStructureType);
1180     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1181         rootType = forUnmarshaling->sType;
1182     }
1183     uint32_t pNext_size;
1184     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1185     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1186     *ptr += sizeof(uint32_t);
1187     forUnmarshaling->pNext = nullptr;
1188     if (pNext_size) {
1189         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1190         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1191         *ptr += sizeof(VkStructureType);
1192         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1193         vkStream->alloc((void**)&forUnmarshaling->pNext,
1194                         goldfish_vk_extension_struct_size_with_stream_features(
1195                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1196         *(VkStructureType*)forUnmarshaling->pNext = extType;
1197         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1198                                            ptr);
1199     }
1200     memcpy((VkDeviceSize*)&forUnmarshaling->allocationSize, *ptr, sizeof(VkDeviceSize));
1201     *ptr += sizeof(VkDeviceSize);
1202     memcpy((uint32_t*)&forUnmarshaling->memoryTypeIndex, *ptr, sizeof(uint32_t));
1203     *ptr += sizeof(uint32_t);
1204 }
1205 
reservedunmarshal_VkMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkMemoryRequirements * forUnmarshaling,uint8_t ** ptr)1206 void reservedunmarshal_VkMemoryRequirements(VulkanStream* vkStream, VkStructureType rootType,
1207                                             VkMemoryRequirements* forUnmarshaling, uint8_t** ptr) {
1208     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
1209     *ptr += sizeof(VkDeviceSize);
1210     memcpy((VkDeviceSize*)&forUnmarshaling->alignment, *ptr, sizeof(VkDeviceSize));
1211     *ptr += sizeof(VkDeviceSize);
1212     memcpy((uint32_t*)&forUnmarshaling->memoryTypeBits, *ptr, sizeof(uint32_t));
1213     *ptr += sizeof(uint32_t);
1214 }
1215 
reservedunmarshal_VkSparseMemoryBind(VulkanStream * vkStream,VkStructureType rootType,VkSparseMemoryBind * forUnmarshaling,uint8_t ** ptr)1216 void reservedunmarshal_VkSparseMemoryBind(VulkanStream* vkStream, VkStructureType rootType,
1217                                           VkSparseMemoryBind* forUnmarshaling, uint8_t** ptr) {
1218     memcpy((VkDeviceSize*)&forUnmarshaling->resourceOffset, *ptr, sizeof(VkDeviceSize));
1219     *ptr += sizeof(VkDeviceSize);
1220     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
1221     *ptr += sizeof(VkDeviceSize);
1222     uint64_t cgen_var_0;
1223     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1224     *ptr += 1 * 8;
1225     *(VkDeviceMemory*)&forUnmarshaling->memory =
1226         (VkDeviceMemory)unbox_VkDeviceMemory((VkDeviceMemory)(*&cgen_var_0));
1227     memcpy((VkDeviceSize*)&forUnmarshaling->memoryOffset, *ptr, sizeof(VkDeviceSize));
1228     *ptr += sizeof(VkDeviceSize);
1229     memcpy((VkSparseMemoryBindFlags*)&forUnmarshaling->flags, *ptr,
1230            sizeof(VkSparseMemoryBindFlags));
1231     *ptr += sizeof(VkSparseMemoryBindFlags);
1232 }
1233 
reservedunmarshal_VkSparseBufferMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,VkSparseBufferMemoryBindInfo * forUnmarshaling,uint8_t ** ptr)1234 void reservedunmarshal_VkSparseBufferMemoryBindInfo(VulkanStream* vkStream,
1235                                                     VkStructureType rootType,
1236                                                     VkSparseBufferMemoryBindInfo* forUnmarshaling,
1237                                                     uint8_t** ptr) {
1238     uint64_t cgen_var_0;
1239     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1240     *ptr += 1 * 8;
1241     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
1242     memcpy((uint32_t*)&forUnmarshaling->bindCount, *ptr, sizeof(uint32_t));
1243     *ptr += sizeof(uint32_t);
1244     vkStream->alloc((void**)&forUnmarshaling->pBinds,
1245                     forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
1246     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i) {
1247         reservedunmarshal_VkSparseMemoryBind(
1248             vkStream, rootType, (VkSparseMemoryBind*)(forUnmarshaling->pBinds + i), ptr);
1249     }
1250 }
1251 
reservedunmarshal_VkSparseImageOpaqueMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageOpaqueMemoryBindInfo * forUnmarshaling,uint8_t ** ptr)1252 void reservedunmarshal_VkSparseImageOpaqueMemoryBindInfo(
1253     VulkanStream* vkStream, VkStructureType rootType,
1254     VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling, uint8_t** ptr) {
1255     uint64_t cgen_var_0;
1256     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1257     *ptr += 1 * 8;
1258     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
1259     memcpy((uint32_t*)&forUnmarshaling->bindCount, *ptr, sizeof(uint32_t));
1260     *ptr += sizeof(uint32_t);
1261     vkStream->alloc((void**)&forUnmarshaling->pBinds,
1262                     forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
1263     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i) {
1264         reservedunmarshal_VkSparseMemoryBind(
1265             vkStream, rootType, (VkSparseMemoryBind*)(forUnmarshaling->pBinds + i), ptr);
1266     }
1267 }
1268 
reservedunmarshal_VkImageSubresource(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresource * forUnmarshaling,uint8_t ** ptr)1269 void reservedunmarshal_VkImageSubresource(VulkanStream* vkStream, VkStructureType rootType,
1270                                           VkImageSubresource* forUnmarshaling, uint8_t** ptr) {
1271     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
1272     *ptr += sizeof(VkImageAspectFlags);
1273     memcpy((uint32_t*)&forUnmarshaling->mipLevel, *ptr, sizeof(uint32_t));
1274     *ptr += sizeof(uint32_t);
1275     memcpy((uint32_t*)&forUnmarshaling->arrayLayer, *ptr, sizeof(uint32_t));
1276     *ptr += sizeof(uint32_t);
1277 }
1278 
reservedunmarshal_VkSparseImageMemoryBind(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryBind * forUnmarshaling,uint8_t ** ptr)1279 void reservedunmarshal_VkSparseImageMemoryBind(VulkanStream* vkStream, VkStructureType rootType,
1280                                                VkSparseImageMemoryBind* forUnmarshaling,
1281                                                uint8_t** ptr) {
1282     reservedunmarshal_VkImageSubresource(vkStream, rootType,
1283                                          (VkImageSubresource*)(&forUnmarshaling->subresource), ptr);
1284     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->offset), ptr);
1285     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent), ptr);
1286     uint64_t cgen_var_0;
1287     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1288     *ptr += 1 * 8;
1289     *(VkDeviceMemory*)&forUnmarshaling->memory =
1290         (VkDeviceMemory)unbox_VkDeviceMemory((VkDeviceMemory)(*&cgen_var_0));
1291     memcpy((VkDeviceSize*)&forUnmarshaling->memoryOffset, *ptr, sizeof(VkDeviceSize));
1292     *ptr += sizeof(VkDeviceSize);
1293     memcpy((VkSparseMemoryBindFlags*)&forUnmarshaling->flags, *ptr,
1294            sizeof(VkSparseMemoryBindFlags));
1295     *ptr += sizeof(VkSparseMemoryBindFlags);
1296 }
1297 
reservedunmarshal_VkSparseImageMemoryBindInfo(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryBindInfo * forUnmarshaling,uint8_t ** ptr)1298 void reservedunmarshal_VkSparseImageMemoryBindInfo(VulkanStream* vkStream, VkStructureType rootType,
1299                                                    VkSparseImageMemoryBindInfo* forUnmarshaling,
1300                                                    uint8_t** ptr) {
1301     uint64_t cgen_var_0;
1302     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1303     *ptr += 1 * 8;
1304     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
1305     memcpy((uint32_t*)&forUnmarshaling->bindCount, *ptr, sizeof(uint32_t));
1306     *ptr += sizeof(uint32_t);
1307     vkStream->alloc((void**)&forUnmarshaling->pBinds,
1308                     forUnmarshaling->bindCount * sizeof(const VkSparseImageMemoryBind));
1309     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i) {
1310         reservedunmarshal_VkSparseImageMemoryBind(
1311             vkStream, rootType, (VkSparseImageMemoryBind*)(forUnmarshaling->pBinds + i), ptr);
1312     }
1313 }
1314 
reservedunmarshal_VkBindSparseInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindSparseInfo * forUnmarshaling,uint8_t ** ptr)1315 void reservedunmarshal_VkBindSparseInfo(VulkanStream* vkStream, VkStructureType rootType,
1316                                         VkBindSparseInfo* forUnmarshaling, uint8_t** ptr) {
1317     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1318     *ptr += sizeof(VkStructureType);
1319     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1320         rootType = forUnmarshaling->sType;
1321     }
1322     uint32_t pNext_size;
1323     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1324     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1325     *ptr += sizeof(uint32_t);
1326     forUnmarshaling->pNext = nullptr;
1327     if (pNext_size) {
1328         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1329         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1330         *ptr += sizeof(VkStructureType);
1331         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1332         vkStream->alloc((void**)&forUnmarshaling->pNext,
1333                         goldfish_vk_extension_struct_size_with_stream_features(
1334                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1335         *(VkStructureType*)forUnmarshaling->pNext = extType;
1336         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1337                                            ptr);
1338     }
1339     memcpy((uint32_t*)&forUnmarshaling->waitSemaphoreCount, *ptr, sizeof(uint32_t));
1340     *ptr += sizeof(uint32_t);
1341     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores,
1342                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
1343     if (forUnmarshaling->waitSemaphoreCount) {
1344         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
1345         *ptr += 8 * forUnmarshaling->waitSemaphoreCount;
1346         if (forUnmarshaling) {
1347             for (uint32_t k = 0; k < forUnmarshaling->waitSemaphoreCount; ++k) {
1348                 uint64_t tmpval;
1349                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
1350                 *(((VkSemaphore*)forUnmarshaling->pWaitSemaphores) + k) =
1351                     tmpval ? (VkSemaphore)unbox_VkSemaphore((VkSemaphore)tmpval) : VK_NULL_HANDLE;
1352             }
1353         }
1354     }
1355     memcpy((uint32_t*)&forUnmarshaling->bufferBindCount, *ptr, sizeof(uint32_t));
1356     *ptr += sizeof(uint32_t);
1357     vkStream->alloc((void**)&forUnmarshaling->pBufferBinds,
1358                     forUnmarshaling->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
1359     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bufferBindCount; ++i) {
1360         reservedunmarshal_VkSparseBufferMemoryBindInfo(
1361             vkStream, rootType, (VkSparseBufferMemoryBindInfo*)(forUnmarshaling->pBufferBinds + i),
1362             ptr);
1363     }
1364     memcpy((uint32_t*)&forUnmarshaling->imageOpaqueBindCount, *ptr, sizeof(uint32_t));
1365     *ptr += sizeof(uint32_t);
1366     vkStream->alloc(
1367         (void**)&forUnmarshaling->pImageOpaqueBinds,
1368         forUnmarshaling->imageOpaqueBindCount * sizeof(const VkSparseImageOpaqueMemoryBindInfo));
1369     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageOpaqueBindCount; ++i) {
1370         reservedunmarshal_VkSparseImageOpaqueMemoryBindInfo(
1371             vkStream, rootType,
1372             (VkSparseImageOpaqueMemoryBindInfo*)(forUnmarshaling->pImageOpaqueBinds + i), ptr);
1373     }
1374     memcpy((uint32_t*)&forUnmarshaling->imageBindCount, *ptr, sizeof(uint32_t));
1375     *ptr += sizeof(uint32_t);
1376     vkStream->alloc((void**)&forUnmarshaling->pImageBinds,
1377                     forUnmarshaling->imageBindCount * sizeof(const VkSparseImageMemoryBindInfo));
1378     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageBindCount; ++i) {
1379         reservedunmarshal_VkSparseImageMemoryBindInfo(
1380             vkStream, rootType, (VkSparseImageMemoryBindInfo*)(forUnmarshaling->pImageBinds + i),
1381             ptr);
1382     }
1383     memcpy((uint32_t*)&forUnmarshaling->signalSemaphoreCount, *ptr, sizeof(uint32_t));
1384     *ptr += sizeof(uint32_t);
1385     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores,
1386                     forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
1387     if (forUnmarshaling->signalSemaphoreCount) {
1388         uint8_t* cgen_var_1_ptr = (uint8_t*)(*ptr);
1389         *ptr += 8 * forUnmarshaling->signalSemaphoreCount;
1390         if (forUnmarshaling) {
1391             for (uint32_t k = 0; k < forUnmarshaling->signalSemaphoreCount; ++k) {
1392                 uint64_t tmpval;
1393                 memcpy(&tmpval, cgen_var_1_ptr + k * 8, sizeof(uint64_t));
1394                 *(((VkSemaphore*)forUnmarshaling->pSignalSemaphores) + k) =
1395                     tmpval ? (VkSemaphore)unbox_VkSemaphore((VkSemaphore)tmpval) : VK_NULL_HANDLE;
1396             }
1397         }
1398     }
1399 }
1400 
reservedunmarshal_VkSparseImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageFormatProperties * forUnmarshaling,uint8_t ** ptr)1401 void reservedunmarshal_VkSparseImageFormatProperties(VulkanStream* vkStream,
1402                                                      VkStructureType rootType,
1403                                                      VkSparseImageFormatProperties* forUnmarshaling,
1404                                                      uint8_t** ptr) {
1405     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
1406     *ptr += sizeof(VkImageAspectFlags);
1407     reservedunmarshal_VkExtent3D(vkStream, rootType,
1408                                  (VkExtent3D*)(&forUnmarshaling->imageGranularity), ptr);
1409     memcpy((VkSparseImageFormatFlags*)&forUnmarshaling->flags, *ptr,
1410            sizeof(VkSparseImageFormatFlags));
1411     *ptr += sizeof(VkSparseImageFormatFlags);
1412 }
1413 
reservedunmarshal_VkSparseImageMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryRequirements * forUnmarshaling,uint8_t ** ptr)1414 void reservedunmarshal_VkSparseImageMemoryRequirements(
1415     VulkanStream* vkStream, VkStructureType rootType,
1416     VkSparseImageMemoryRequirements* forUnmarshaling, uint8_t** ptr) {
1417     reservedunmarshal_VkSparseImageFormatProperties(
1418         vkStream, rootType, (VkSparseImageFormatProperties*)(&forUnmarshaling->formatProperties),
1419         ptr);
1420     memcpy((uint32_t*)&forUnmarshaling->imageMipTailFirstLod, *ptr, sizeof(uint32_t));
1421     *ptr += sizeof(uint32_t);
1422     memcpy((VkDeviceSize*)&forUnmarshaling->imageMipTailSize, *ptr, sizeof(VkDeviceSize));
1423     *ptr += sizeof(VkDeviceSize);
1424     memcpy((VkDeviceSize*)&forUnmarshaling->imageMipTailOffset, *ptr, sizeof(VkDeviceSize));
1425     *ptr += sizeof(VkDeviceSize);
1426     memcpy((VkDeviceSize*)&forUnmarshaling->imageMipTailStride, *ptr, sizeof(VkDeviceSize));
1427     *ptr += sizeof(VkDeviceSize);
1428 }
1429 
reservedunmarshal_VkFenceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkFenceCreateInfo * forUnmarshaling,uint8_t ** ptr)1430 void reservedunmarshal_VkFenceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1431                                          VkFenceCreateInfo* forUnmarshaling, uint8_t** ptr) {
1432     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1433     *ptr += sizeof(VkStructureType);
1434     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1435         rootType = forUnmarshaling->sType;
1436     }
1437     uint32_t pNext_size;
1438     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1439     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1440     *ptr += sizeof(uint32_t);
1441     forUnmarshaling->pNext = nullptr;
1442     if (pNext_size) {
1443         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1444         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1445         *ptr += sizeof(VkStructureType);
1446         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1447         vkStream->alloc((void**)&forUnmarshaling->pNext,
1448                         goldfish_vk_extension_struct_size_with_stream_features(
1449                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1450         *(VkStructureType*)forUnmarshaling->pNext = extType;
1451         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1452                                            ptr);
1453     }
1454     memcpy((VkFenceCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkFenceCreateFlags));
1455     *ptr += sizeof(VkFenceCreateFlags);
1456 }
1457 
reservedunmarshal_VkSemaphoreCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreCreateInfo * forUnmarshaling,uint8_t ** ptr)1458 void reservedunmarshal_VkSemaphoreCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1459                                              VkSemaphoreCreateInfo* forUnmarshaling,
1460                                              uint8_t** ptr) {
1461     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1462     *ptr += sizeof(VkStructureType);
1463     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1464         rootType = forUnmarshaling->sType;
1465     }
1466     uint32_t pNext_size;
1467     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1468     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1469     *ptr += sizeof(uint32_t);
1470     forUnmarshaling->pNext = nullptr;
1471     if (pNext_size) {
1472         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1473         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1474         *ptr += sizeof(VkStructureType);
1475         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1476         vkStream->alloc((void**)&forUnmarshaling->pNext,
1477                         goldfish_vk_extension_struct_size_with_stream_features(
1478                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1479         *(VkStructureType*)forUnmarshaling->pNext = extType;
1480         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1481                                            ptr);
1482     }
1483     memcpy((VkSemaphoreCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkSemaphoreCreateFlags));
1484     *ptr += sizeof(VkSemaphoreCreateFlags);
1485 }
1486 
reservedunmarshal_VkEventCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkEventCreateInfo * forUnmarshaling,uint8_t ** ptr)1487 void reservedunmarshal_VkEventCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1488                                          VkEventCreateInfo* forUnmarshaling, uint8_t** ptr) {
1489     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1490     *ptr += sizeof(VkStructureType);
1491     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1492         rootType = forUnmarshaling->sType;
1493     }
1494     uint32_t pNext_size;
1495     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1496     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1497     *ptr += sizeof(uint32_t);
1498     forUnmarshaling->pNext = nullptr;
1499     if (pNext_size) {
1500         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1501         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1502         *ptr += sizeof(VkStructureType);
1503         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1504         vkStream->alloc((void**)&forUnmarshaling->pNext,
1505                         goldfish_vk_extension_struct_size_with_stream_features(
1506                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1507         *(VkStructureType*)forUnmarshaling->pNext = extType;
1508         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1509                                            ptr);
1510     }
1511     memcpy((VkEventCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkEventCreateFlags));
1512     *ptr += sizeof(VkEventCreateFlags);
1513 }
1514 
reservedunmarshal_VkQueryPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkQueryPoolCreateInfo * forUnmarshaling,uint8_t ** ptr)1515 void reservedunmarshal_VkQueryPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1516                                              VkQueryPoolCreateInfo* forUnmarshaling,
1517                                              uint8_t** ptr) {
1518     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1519     *ptr += sizeof(VkStructureType);
1520     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1521         rootType = forUnmarshaling->sType;
1522     }
1523     uint32_t pNext_size;
1524     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1525     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1526     *ptr += sizeof(uint32_t);
1527     forUnmarshaling->pNext = nullptr;
1528     if (pNext_size) {
1529         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1530         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1531         *ptr += sizeof(VkStructureType);
1532         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1533         vkStream->alloc((void**)&forUnmarshaling->pNext,
1534                         goldfish_vk_extension_struct_size_with_stream_features(
1535                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1536         *(VkStructureType*)forUnmarshaling->pNext = extType;
1537         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1538                                            ptr);
1539     }
1540     memcpy((VkQueryPoolCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkQueryPoolCreateFlags));
1541     *ptr += sizeof(VkQueryPoolCreateFlags);
1542     memcpy((VkQueryType*)&forUnmarshaling->queryType, *ptr, sizeof(VkQueryType));
1543     *ptr += sizeof(VkQueryType);
1544     memcpy((uint32_t*)&forUnmarshaling->queryCount, *ptr, sizeof(uint32_t));
1545     *ptr += sizeof(uint32_t);
1546     memcpy((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics, *ptr,
1547            sizeof(VkQueryPipelineStatisticFlags));
1548     *ptr += sizeof(VkQueryPipelineStatisticFlags);
1549 }
1550 
reservedunmarshal_VkBufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferCreateInfo * forUnmarshaling,uint8_t ** ptr)1551 void reservedunmarshal_VkBufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1552                                           VkBufferCreateInfo* forUnmarshaling, uint8_t** ptr) {
1553     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1554     *ptr += sizeof(VkStructureType);
1555     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1556         rootType = forUnmarshaling->sType;
1557     }
1558     uint32_t pNext_size;
1559     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1560     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1561     *ptr += sizeof(uint32_t);
1562     forUnmarshaling->pNext = nullptr;
1563     if (pNext_size) {
1564         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1565         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1566         *ptr += sizeof(VkStructureType);
1567         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1568         vkStream->alloc((void**)&forUnmarshaling->pNext,
1569                         goldfish_vk_extension_struct_size_with_stream_features(
1570                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1571         *(VkStructureType*)forUnmarshaling->pNext = extType;
1572         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1573                                            ptr);
1574     }
1575     memcpy((VkBufferCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkBufferCreateFlags));
1576     *ptr += sizeof(VkBufferCreateFlags);
1577     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
1578     *ptr += sizeof(VkDeviceSize);
1579     memcpy((VkBufferUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkBufferUsageFlags));
1580     *ptr += sizeof(VkBufferUsageFlags);
1581     memcpy((VkSharingMode*)&forUnmarshaling->sharingMode, *ptr, sizeof(VkSharingMode));
1582     *ptr += sizeof(VkSharingMode);
1583     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, *ptr, sizeof(uint32_t));
1584     *ptr += sizeof(uint32_t);
1585     // WARNING PTR CHECK
1586     memcpy((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, (*ptr), 8);
1587     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pQueueFamilyIndices);
1588     *ptr += 8;
1589     if (forUnmarshaling->pQueueFamilyIndices) {
1590         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
1591                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
1592         memcpy((uint32_t*)forUnmarshaling->pQueueFamilyIndices, *ptr,
1593                forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
1594         *ptr += forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t);
1595     }
1596 }
1597 
reservedunmarshal_VkBufferViewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferViewCreateInfo * forUnmarshaling,uint8_t ** ptr)1598 void reservedunmarshal_VkBufferViewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1599                                               VkBufferViewCreateInfo* forUnmarshaling,
1600                                               uint8_t** ptr) {
1601     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1602     *ptr += sizeof(VkStructureType);
1603     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1604         rootType = forUnmarshaling->sType;
1605     }
1606     uint32_t pNext_size;
1607     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1608     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1609     *ptr += sizeof(uint32_t);
1610     forUnmarshaling->pNext = nullptr;
1611     if (pNext_size) {
1612         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1613         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1614         *ptr += sizeof(VkStructureType);
1615         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1616         vkStream->alloc((void**)&forUnmarshaling->pNext,
1617                         goldfish_vk_extension_struct_size_with_stream_features(
1618                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1619         *(VkStructureType*)forUnmarshaling->pNext = extType;
1620         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1621                                            ptr);
1622     }
1623     memcpy((VkBufferViewCreateFlags*)&forUnmarshaling->flags, *ptr,
1624            sizeof(VkBufferViewCreateFlags));
1625     *ptr += sizeof(VkBufferViewCreateFlags);
1626     uint64_t cgen_var_0;
1627     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1628     *ptr += 1 * 8;
1629     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
1630     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
1631     *ptr += sizeof(VkFormat);
1632     memcpy((VkDeviceSize*)&forUnmarshaling->offset, *ptr, sizeof(VkDeviceSize));
1633     *ptr += sizeof(VkDeviceSize);
1634     memcpy((VkDeviceSize*)&forUnmarshaling->range, *ptr, sizeof(VkDeviceSize));
1635     *ptr += sizeof(VkDeviceSize);
1636 }
1637 
reservedunmarshal_VkImageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageCreateInfo * forUnmarshaling,uint8_t ** ptr)1638 void reservedunmarshal_VkImageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1639                                          VkImageCreateInfo* forUnmarshaling, uint8_t** ptr) {
1640     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1641     *ptr += sizeof(VkStructureType);
1642     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1643         rootType = forUnmarshaling->sType;
1644     }
1645     uint32_t pNext_size;
1646     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1647     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1648     *ptr += sizeof(uint32_t);
1649     forUnmarshaling->pNext = nullptr;
1650     if (pNext_size) {
1651         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1652         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1653         *ptr += sizeof(VkStructureType);
1654         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1655         vkStream->alloc((void**)&forUnmarshaling->pNext,
1656                         goldfish_vk_extension_struct_size_with_stream_features(
1657                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1658         *(VkStructureType*)forUnmarshaling->pNext = extType;
1659         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1660                                            ptr);
1661     }
1662     memcpy((VkImageCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkImageCreateFlags));
1663     *ptr += sizeof(VkImageCreateFlags);
1664     memcpy((VkImageType*)&forUnmarshaling->imageType, *ptr, sizeof(VkImageType));
1665     *ptr += sizeof(VkImageType);
1666     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
1667     *ptr += sizeof(VkFormat);
1668     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent), ptr);
1669     memcpy((uint32_t*)&forUnmarshaling->mipLevels, *ptr, sizeof(uint32_t));
1670     *ptr += sizeof(uint32_t);
1671     memcpy((uint32_t*)&forUnmarshaling->arrayLayers, *ptr, sizeof(uint32_t));
1672     *ptr += sizeof(uint32_t);
1673     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->samples, *ptr, sizeof(VkSampleCountFlagBits));
1674     *ptr += sizeof(VkSampleCountFlagBits);
1675     memcpy((VkImageTiling*)&forUnmarshaling->tiling, *ptr, sizeof(VkImageTiling));
1676     *ptr += sizeof(VkImageTiling);
1677     memcpy((VkImageUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkImageUsageFlags));
1678     *ptr += sizeof(VkImageUsageFlags);
1679     memcpy((VkSharingMode*)&forUnmarshaling->sharingMode, *ptr, sizeof(VkSharingMode));
1680     *ptr += sizeof(VkSharingMode);
1681     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, *ptr, sizeof(uint32_t));
1682     *ptr += sizeof(uint32_t);
1683     // WARNING PTR CHECK
1684     memcpy((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, (*ptr), 8);
1685     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pQueueFamilyIndices);
1686     *ptr += 8;
1687     if (forUnmarshaling->pQueueFamilyIndices) {
1688         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
1689                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
1690         memcpy((uint32_t*)forUnmarshaling->pQueueFamilyIndices, *ptr,
1691                forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
1692         *ptr += forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t);
1693     }
1694     memcpy((VkImageLayout*)&forUnmarshaling->initialLayout, *ptr, sizeof(VkImageLayout));
1695     *ptr += sizeof(VkImageLayout);
1696 }
1697 
reservedunmarshal_VkSubresourceLayout(VulkanStream * vkStream,VkStructureType rootType,VkSubresourceLayout * forUnmarshaling,uint8_t ** ptr)1698 void reservedunmarshal_VkSubresourceLayout(VulkanStream* vkStream, VkStructureType rootType,
1699                                            VkSubresourceLayout* forUnmarshaling, uint8_t** ptr) {
1700     memcpy((VkDeviceSize*)&forUnmarshaling->offset, *ptr, sizeof(VkDeviceSize));
1701     *ptr += sizeof(VkDeviceSize);
1702     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
1703     *ptr += sizeof(VkDeviceSize);
1704     memcpy((VkDeviceSize*)&forUnmarshaling->rowPitch, *ptr, sizeof(VkDeviceSize));
1705     *ptr += sizeof(VkDeviceSize);
1706     memcpy((VkDeviceSize*)&forUnmarshaling->arrayPitch, *ptr, sizeof(VkDeviceSize));
1707     *ptr += sizeof(VkDeviceSize);
1708     memcpy((VkDeviceSize*)&forUnmarshaling->depthPitch, *ptr, sizeof(VkDeviceSize));
1709     *ptr += sizeof(VkDeviceSize);
1710 }
1711 
reservedunmarshal_VkComponentMapping(VulkanStream * vkStream,VkStructureType rootType,VkComponentMapping * forUnmarshaling,uint8_t ** ptr)1712 void reservedunmarshal_VkComponentMapping(VulkanStream* vkStream, VkStructureType rootType,
1713                                           VkComponentMapping* forUnmarshaling, uint8_t** ptr) {
1714     memcpy((VkComponentSwizzle*)&forUnmarshaling->r, *ptr, sizeof(VkComponentSwizzle));
1715     *ptr += sizeof(VkComponentSwizzle);
1716     memcpy((VkComponentSwizzle*)&forUnmarshaling->g, *ptr, sizeof(VkComponentSwizzle));
1717     *ptr += sizeof(VkComponentSwizzle);
1718     memcpy((VkComponentSwizzle*)&forUnmarshaling->b, *ptr, sizeof(VkComponentSwizzle));
1719     *ptr += sizeof(VkComponentSwizzle);
1720     memcpy((VkComponentSwizzle*)&forUnmarshaling->a, *ptr, sizeof(VkComponentSwizzle));
1721     *ptr += sizeof(VkComponentSwizzle);
1722 }
1723 
reservedunmarshal_VkImageViewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageViewCreateInfo * forUnmarshaling,uint8_t ** ptr)1724 void reservedunmarshal_VkImageViewCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1725                                              VkImageViewCreateInfo* forUnmarshaling,
1726                                              uint8_t** ptr) {
1727     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1728     *ptr += sizeof(VkStructureType);
1729     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1730         rootType = forUnmarshaling->sType;
1731     }
1732     uint32_t pNext_size;
1733     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1734     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1735     *ptr += sizeof(uint32_t);
1736     forUnmarshaling->pNext = nullptr;
1737     if (pNext_size) {
1738         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1739         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1740         *ptr += sizeof(VkStructureType);
1741         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1742         vkStream->alloc((void**)&forUnmarshaling->pNext,
1743                         goldfish_vk_extension_struct_size_with_stream_features(
1744                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1745         *(VkStructureType*)forUnmarshaling->pNext = extType;
1746         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1747                                            ptr);
1748     }
1749     memcpy((VkImageViewCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkImageViewCreateFlags));
1750     *ptr += sizeof(VkImageViewCreateFlags);
1751     uint64_t cgen_var_0;
1752     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1753     *ptr += 1 * 8;
1754     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
1755     memcpy((VkImageViewType*)&forUnmarshaling->viewType, *ptr, sizeof(VkImageViewType));
1756     *ptr += sizeof(VkImageViewType);
1757     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
1758     *ptr += sizeof(VkFormat);
1759     reservedunmarshal_VkComponentMapping(vkStream, rootType,
1760                                          (VkComponentMapping*)(&forUnmarshaling->components), ptr);
1761     reservedunmarshal_VkImageSubresourceRange(
1762         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange), ptr);
1763 }
1764 
reservedunmarshal_VkShaderModuleCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkShaderModuleCreateInfo * forUnmarshaling,uint8_t ** ptr)1765 void reservedunmarshal_VkShaderModuleCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1766                                                 VkShaderModuleCreateInfo* forUnmarshaling,
1767                                                 uint8_t** ptr) {
1768     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1769     *ptr += sizeof(VkStructureType);
1770     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1771         rootType = forUnmarshaling->sType;
1772     }
1773     uint32_t pNext_size;
1774     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1775     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1776     *ptr += sizeof(uint32_t);
1777     forUnmarshaling->pNext = nullptr;
1778     if (pNext_size) {
1779         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1780         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1781         *ptr += sizeof(VkStructureType);
1782         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1783         vkStream->alloc((void**)&forUnmarshaling->pNext,
1784                         goldfish_vk_extension_struct_size_with_stream_features(
1785                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1786         *(VkStructureType*)forUnmarshaling->pNext = extType;
1787         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1788                                            ptr);
1789     }
1790     memcpy((VkShaderModuleCreateFlags*)&forUnmarshaling->flags, *ptr,
1791            sizeof(VkShaderModuleCreateFlags));
1792     *ptr += sizeof(VkShaderModuleCreateFlags);
1793     memcpy((size_t*)&forUnmarshaling->codeSize, (*ptr), 8);
1794     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->codeSize);
1795     *ptr += 8;
1796     vkStream->alloc((void**)&forUnmarshaling->pCode,
1797                     (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
1798     memcpy((uint32_t*)forUnmarshaling->pCode, *ptr,
1799            (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
1800     *ptr += (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t);
1801 }
1802 
reservedunmarshal_VkPipelineCacheCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCacheCreateInfo * forUnmarshaling,uint8_t ** ptr)1803 void reservedunmarshal_VkPipelineCacheCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1804                                                  VkPipelineCacheCreateInfo* forUnmarshaling,
1805                                                  uint8_t** ptr) {
1806     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1807     *ptr += sizeof(VkStructureType);
1808     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1809         rootType = forUnmarshaling->sType;
1810     }
1811     uint32_t pNext_size;
1812     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1813     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1814     *ptr += sizeof(uint32_t);
1815     forUnmarshaling->pNext = nullptr;
1816     if (pNext_size) {
1817         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1818         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1819         *ptr += sizeof(VkStructureType);
1820         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1821         vkStream->alloc((void**)&forUnmarshaling->pNext,
1822                         goldfish_vk_extension_struct_size_with_stream_features(
1823                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1824         *(VkStructureType*)forUnmarshaling->pNext = extType;
1825         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1826                                            ptr);
1827     }
1828     memcpy((VkPipelineCacheCreateFlags*)&forUnmarshaling->flags, *ptr,
1829            sizeof(VkPipelineCacheCreateFlags));
1830     *ptr += sizeof(VkPipelineCacheCreateFlags);
1831     memcpy((size_t*)&forUnmarshaling->initialDataSize, (*ptr), 8);
1832     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->initialDataSize);
1833     *ptr += 8;
1834     vkStream->alloc((void**)&forUnmarshaling->pInitialData,
1835                     forUnmarshaling->initialDataSize * sizeof(const uint8_t));
1836     memcpy((void*)forUnmarshaling->pInitialData, *ptr,
1837            forUnmarshaling->initialDataSize * sizeof(const uint8_t));
1838     *ptr += forUnmarshaling->initialDataSize * sizeof(const uint8_t);
1839 }
1840 
reservedunmarshal_VkSpecializationMapEntry(VulkanStream * vkStream,VkStructureType rootType,VkSpecializationMapEntry * forUnmarshaling,uint8_t ** ptr)1841 void reservedunmarshal_VkSpecializationMapEntry(VulkanStream* vkStream, VkStructureType rootType,
1842                                                 VkSpecializationMapEntry* forUnmarshaling,
1843                                                 uint8_t** ptr) {
1844     memcpy((uint32_t*)&forUnmarshaling->constantID, *ptr, sizeof(uint32_t));
1845     *ptr += sizeof(uint32_t);
1846     memcpy((uint32_t*)&forUnmarshaling->offset, *ptr, sizeof(uint32_t));
1847     *ptr += sizeof(uint32_t);
1848     memcpy((size_t*)&forUnmarshaling->size, (*ptr), 8);
1849     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->size);
1850     *ptr += 8;
1851 }
1852 
reservedunmarshal_VkSpecializationInfo(VulkanStream * vkStream,VkStructureType rootType,VkSpecializationInfo * forUnmarshaling,uint8_t ** ptr)1853 void reservedunmarshal_VkSpecializationInfo(VulkanStream* vkStream, VkStructureType rootType,
1854                                             VkSpecializationInfo* forUnmarshaling, uint8_t** ptr) {
1855     memcpy((uint32_t*)&forUnmarshaling->mapEntryCount, *ptr, sizeof(uint32_t));
1856     *ptr += sizeof(uint32_t);
1857     vkStream->alloc((void**)&forUnmarshaling->pMapEntries,
1858                     forUnmarshaling->mapEntryCount * sizeof(const VkSpecializationMapEntry));
1859     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->mapEntryCount; ++i) {
1860         reservedunmarshal_VkSpecializationMapEntry(
1861             vkStream, rootType, (VkSpecializationMapEntry*)(forUnmarshaling->pMapEntries + i), ptr);
1862     }
1863     memcpy((size_t*)&forUnmarshaling->dataSize, (*ptr), 8);
1864     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->dataSize);
1865     *ptr += 8;
1866     vkStream->alloc((void**)&forUnmarshaling->pData,
1867                     forUnmarshaling->dataSize * sizeof(const uint8_t));
1868     memcpy((void*)forUnmarshaling->pData, *ptr, forUnmarshaling->dataSize * sizeof(const uint8_t));
1869     *ptr += forUnmarshaling->dataSize * sizeof(const uint8_t);
1870 }
1871 
reservedunmarshal_VkPipelineShaderStageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineShaderStageCreateInfo * forUnmarshaling,uint8_t ** ptr)1872 void reservedunmarshal_VkPipelineShaderStageCreateInfo(
1873     VulkanStream* vkStream, VkStructureType rootType,
1874     VkPipelineShaderStageCreateInfo* forUnmarshaling, uint8_t** ptr) {
1875     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1876     *ptr += sizeof(VkStructureType);
1877     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1878         rootType = forUnmarshaling->sType;
1879     }
1880     uint32_t pNext_size;
1881     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1882     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1883     *ptr += sizeof(uint32_t);
1884     forUnmarshaling->pNext = nullptr;
1885     if (pNext_size) {
1886         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1887         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1888         *ptr += sizeof(VkStructureType);
1889         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1890         vkStream->alloc((void**)&forUnmarshaling->pNext,
1891                         goldfish_vk_extension_struct_size_with_stream_features(
1892                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1893         *(VkStructureType*)forUnmarshaling->pNext = extType;
1894         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1895                                            ptr);
1896     }
1897     memcpy((VkPipelineShaderStageCreateFlags*)&forUnmarshaling->flags, *ptr,
1898            sizeof(VkPipelineShaderStageCreateFlags));
1899     *ptr += sizeof(VkPipelineShaderStageCreateFlags);
1900     memcpy((VkShaderStageFlagBits*)&forUnmarshaling->stage, *ptr, sizeof(VkShaderStageFlagBits));
1901     *ptr += sizeof(VkShaderStageFlagBits);
1902     uint64_t cgen_var_0;
1903     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1904     *ptr += 1 * 8;
1905     *(VkShaderModule*)&forUnmarshaling->module =
1906         (VkShaderModule)unbox_VkShaderModule((VkShaderModule)(*&cgen_var_0));
1907     vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pName, ptr);
1908     // WARNING PTR CHECK
1909     memcpy((VkSpecializationInfo**)&forUnmarshaling->pSpecializationInfo, (*ptr), 8);
1910     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pSpecializationInfo);
1911     *ptr += 8;
1912     if (forUnmarshaling->pSpecializationInfo) {
1913         vkStream->alloc((void**)&forUnmarshaling->pSpecializationInfo,
1914                         sizeof(const VkSpecializationInfo));
1915         reservedunmarshal_VkSpecializationInfo(
1916             vkStream, rootType, (VkSpecializationInfo*)(forUnmarshaling->pSpecializationInfo), ptr);
1917     }
1918 }
1919 
reservedunmarshal_VkComputePipelineCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkComputePipelineCreateInfo * forUnmarshaling,uint8_t ** ptr)1920 void reservedunmarshal_VkComputePipelineCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
1921                                                    VkComputePipelineCreateInfo* forUnmarshaling,
1922                                                    uint8_t** ptr) {
1923     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1924     *ptr += sizeof(VkStructureType);
1925     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1926         rootType = forUnmarshaling->sType;
1927     }
1928     uint32_t pNext_size;
1929     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1930     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1931     *ptr += sizeof(uint32_t);
1932     forUnmarshaling->pNext = nullptr;
1933     if (pNext_size) {
1934         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
1935         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
1936         *ptr += sizeof(VkStructureType);
1937         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
1938         vkStream->alloc((void**)&forUnmarshaling->pNext,
1939                         goldfish_vk_extension_struct_size_with_stream_features(
1940                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
1941         *(VkStructureType*)forUnmarshaling->pNext = extType;
1942         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
1943                                            ptr);
1944     }
1945     memcpy((VkPipelineCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkPipelineCreateFlags));
1946     *ptr += sizeof(VkPipelineCreateFlags);
1947     reservedunmarshal_VkPipelineShaderStageCreateInfo(
1948         vkStream, rootType, (VkPipelineShaderStageCreateInfo*)(&forUnmarshaling->stage), ptr);
1949     uint64_t cgen_var_0;
1950     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
1951     *ptr += 1 * 8;
1952     *(VkPipelineLayout*)&forUnmarshaling->layout =
1953         (VkPipelineLayout)unbox_VkPipelineLayout((VkPipelineLayout)(*&cgen_var_0));
1954     uint64_t cgen_var_1;
1955     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
1956     *ptr += 1 * 8;
1957     *(VkPipeline*)&forUnmarshaling->basePipelineHandle =
1958         (VkPipeline)unbox_VkPipeline((VkPipeline)(*&cgen_var_1));
1959     memcpy((int32_t*)&forUnmarshaling->basePipelineIndex, *ptr, sizeof(int32_t));
1960     *ptr += sizeof(int32_t);
1961 }
1962 
reservedunmarshal_VkVertexInputBindingDescription(VulkanStream * vkStream,VkStructureType rootType,VkVertexInputBindingDescription * forUnmarshaling,uint8_t ** ptr)1963 void reservedunmarshal_VkVertexInputBindingDescription(
1964     VulkanStream* vkStream, VkStructureType rootType,
1965     VkVertexInputBindingDescription* forUnmarshaling, uint8_t** ptr) {
1966     memcpy((uint32_t*)&forUnmarshaling->binding, *ptr, sizeof(uint32_t));
1967     *ptr += sizeof(uint32_t);
1968     memcpy((uint32_t*)&forUnmarshaling->stride, *ptr, sizeof(uint32_t));
1969     *ptr += sizeof(uint32_t);
1970     memcpy((VkVertexInputRate*)&forUnmarshaling->inputRate, *ptr, sizeof(VkVertexInputRate));
1971     *ptr += sizeof(VkVertexInputRate);
1972 }
1973 
reservedunmarshal_VkVertexInputAttributeDescription(VulkanStream * vkStream,VkStructureType rootType,VkVertexInputAttributeDescription * forUnmarshaling,uint8_t ** ptr)1974 void reservedunmarshal_VkVertexInputAttributeDescription(
1975     VulkanStream* vkStream, VkStructureType rootType,
1976     VkVertexInputAttributeDescription* forUnmarshaling, uint8_t** ptr) {
1977     memcpy((uint32_t*)&forUnmarshaling->location, *ptr, sizeof(uint32_t));
1978     *ptr += sizeof(uint32_t);
1979     memcpy((uint32_t*)&forUnmarshaling->binding, *ptr, sizeof(uint32_t));
1980     *ptr += sizeof(uint32_t);
1981     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
1982     *ptr += sizeof(VkFormat);
1983     memcpy((uint32_t*)&forUnmarshaling->offset, *ptr, sizeof(uint32_t));
1984     *ptr += sizeof(uint32_t);
1985 }
1986 
reservedunmarshal_VkPipelineVertexInputStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineVertexInputStateCreateInfo * forUnmarshaling,uint8_t ** ptr)1987 void reservedunmarshal_VkPipelineVertexInputStateCreateInfo(
1988     VulkanStream* vkStream, VkStructureType rootType,
1989     VkPipelineVertexInputStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
1990     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
1991     *ptr += sizeof(VkStructureType);
1992     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
1993         rootType = forUnmarshaling->sType;
1994     }
1995     uint32_t pNext_size;
1996     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
1997     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
1998     *ptr += sizeof(uint32_t);
1999     forUnmarshaling->pNext = nullptr;
2000     if (pNext_size) {
2001         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2002         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2003         *ptr += sizeof(VkStructureType);
2004         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2005         vkStream->alloc((void**)&forUnmarshaling->pNext,
2006                         goldfish_vk_extension_struct_size_with_stream_features(
2007                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2008         *(VkStructureType*)forUnmarshaling->pNext = extType;
2009         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2010                                            ptr);
2011     }
2012     memcpy((VkPipelineVertexInputStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2013            sizeof(VkPipelineVertexInputStateCreateFlags));
2014     *ptr += sizeof(VkPipelineVertexInputStateCreateFlags);
2015     memcpy((uint32_t*)&forUnmarshaling->vertexBindingDescriptionCount, *ptr, sizeof(uint32_t));
2016     *ptr += sizeof(uint32_t);
2017     vkStream->alloc((void**)&forUnmarshaling->pVertexBindingDescriptions,
2018                     forUnmarshaling->vertexBindingDescriptionCount *
2019                         sizeof(const VkVertexInputBindingDescription));
2020     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexBindingDescriptionCount; ++i) {
2021         reservedunmarshal_VkVertexInputBindingDescription(
2022             vkStream, rootType,
2023             (VkVertexInputBindingDescription*)(forUnmarshaling->pVertexBindingDescriptions + i),
2024             ptr);
2025     }
2026     memcpy((uint32_t*)&forUnmarshaling->vertexAttributeDescriptionCount, *ptr, sizeof(uint32_t));
2027     *ptr += sizeof(uint32_t);
2028     vkStream->alloc((void**)&forUnmarshaling->pVertexAttributeDescriptions,
2029                     forUnmarshaling->vertexAttributeDescriptionCount *
2030                         sizeof(const VkVertexInputAttributeDescription));
2031     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexAttributeDescriptionCount; ++i) {
2032         reservedunmarshal_VkVertexInputAttributeDescription(
2033             vkStream, rootType,
2034             (VkVertexInputAttributeDescription*)(forUnmarshaling->pVertexAttributeDescriptions + i),
2035             ptr);
2036     }
2037 }
2038 
reservedunmarshal_VkPipelineInputAssemblyStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineInputAssemblyStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2039 void reservedunmarshal_VkPipelineInputAssemblyStateCreateInfo(
2040     VulkanStream* vkStream, VkStructureType rootType,
2041     VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2042     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2043     *ptr += sizeof(VkStructureType);
2044     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2045         rootType = forUnmarshaling->sType;
2046     }
2047     uint32_t pNext_size;
2048     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2049     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2050     *ptr += sizeof(uint32_t);
2051     forUnmarshaling->pNext = nullptr;
2052     if (pNext_size) {
2053         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2054         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2055         *ptr += sizeof(VkStructureType);
2056         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2057         vkStream->alloc((void**)&forUnmarshaling->pNext,
2058                         goldfish_vk_extension_struct_size_with_stream_features(
2059                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2060         *(VkStructureType*)forUnmarshaling->pNext = extType;
2061         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2062                                            ptr);
2063     }
2064     memcpy((VkPipelineInputAssemblyStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2065            sizeof(VkPipelineInputAssemblyStateCreateFlags));
2066     *ptr += sizeof(VkPipelineInputAssemblyStateCreateFlags);
2067     memcpy((VkPrimitiveTopology*)&forUnmarshaling->topology, *ptr, sizeof(VkPrimitiveTopology));
2068     *ptr += sizeof(VkPrimitiveTopology);
2069     memcpy((VkBool32*)&forUnmarshaling->primitiveRestartEnable, *ptr, sizeof(VkBool32));
2070     *ptr += sizeof(VkBool32);
2071 }
2072 
reservedunmarshal_VkPipelineTessellationStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineTessellationStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2073 void reservedunmarshal_VkPipelineTessellationStateCreateInfo(
2074     VulkanStream* vkStream, VkStructureType rootType,
2075     VkPipelineTessellationStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2076     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2077     *ptr += sizeof(VkStructureType);
2078     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2079         rootType = forUnmarshaling->sType;
2080     }
2081     uint32_t pNext_size;
2082     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2083     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2084     *ptr += sizeof(uint32_t);
2085     forUnmarshaling->pNext = nullptr;
2086     if (pNext_size) {
2087         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2088         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2089         *ptr += sizeof(VkStructureType);
2090         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2091         vkStream->alloc((void**)&forUnmarshaling->pNext,
2092                         goldfish_vk_extension_struct_size_with_stream_features(
2093                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2094         *(VkStructureType*)forUnmarshaling->pNext = extType;
2095         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2096                                            ptr);
2097     }
2098     memcpy((VkPipelineTessellationStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2099            sizeof(VkPipelineTessellationStateCreateFlags));
2100     *ptr += sizeof(VkPipelineTessellationStateCreateFlags);
2101     memcpy((uint32_t*)&forUnmarshaling->patchControlPoints, *ptr, sizeof(uint32_t));
2102     *ptr += sizeof(uint32_t);
2103 }
2104 
reservedunmarshal_VkViewport(VulkanStream * vkStream,VkStructureType rootType,VkViewport * forUnmarshaling,uint8_t ** ptr)2105 void reservedunmarshal_VkViewport(VulkanStream* vkStream, VkStructureType rootType,
2106                                   VkViewport* forUnmarshaling, uint8_t** ptr) {
2107     memcpy((float*)&forUnmarshaling->x, *ptr, sizeof(float));
2108     *ptr += sizeof(float);
2109     memcpy((float*)&forUnmarshaling->y, *ptr, sizeof(float));
2110     *ptr += sizeof(float);
2111     memcpy((float*)&forUnmarshaling->width, *ptr, sizeof(float));
2112     *ptr += sizeof(float);
2113     memcpy((float*)&forUnmarshaling->height, *ptr, sizeof(float));
2114     *ptr += sizeof(float);
2115     memcpy((float*)&forUnmarshaling->minDepth, *ptr, sizeof(float));
2116     *ptr += sizeof(float);
2117     memcpy((float*)&forUnmarshaling->maxDepth, *ptr, sizeof(float));
2118     *ptr += sizeof(float);
2119 }
2120 
reservedunmarshal_VkPipelineViewportStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineViewportStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2121 void reservedunmarshal_VkPipelineViewportStateCreateInfo(
2122     VulkanStream* vkStream, VkStructureType rootType,
2123     VkPipelineViewportStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2124     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2125     *ptr += sizeof(VkStructureType);
2126     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2127         rootType = forUnmarshaling->sType;
2128     }
2129     uint32_t pNext_size;
2130     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2131     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2132     *ptr += sizeof(uint32_t);
2133     forUnmarshaling->pNext = nullptr;
2134     if (pNext_size) {
2135         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2136         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2137         *ptr += sizeof(VkStructureType);
2138         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2139         vkStream->alloc((void**)&forUnmarshaling->pNext,
2140                         goldfish_vk_extension_struct_size_with_stream_features(
2141                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2142         *(VkStructureType*)forUnmarshaling->pNext = extType;
2143         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2144                                            ptr);
2145     }
2146     memcpy((VkPipelineViewportStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2147            sizeof(VkPipelineViewportStateCreateFlags));
2148     *ptr += sizeof(VkPipelineViewportStateCreateFlags);
2149     memcpy((uint32_t*)&forUnmarshaling->viewportCount, *ptr, sizeof(uint32_t));
2150     *ptr += sizeof(uint32_t);
2151     // WARNING PTR CHECK
2152     memcpy((VkViewport**)&forUnmarshaling->pViewports, (*ptr), 8);
2153     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pViewports);
2154     *ptr += 8;
2155     if (forUnmarshaling->pViewports) {
2156         vkStream->alloc((void**)&forUnmarshaling->pViewports,
2157                         forUnmarshaling->viewportCount * sizeof(const VkViewport));
2158         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->viewportCount; ++i) {
2159             reservedunmarshal_VkViewport(vkStream, rootType,
2160                                          (VkViewport*)(forUnmarshaling->pViewports + i), ptr);
2161         }
2162     }
2163     memcpy((uint32_t*)&forUnmarshaling->scissorCount, *ptr, sizeof(uint32_t));
2164     *ptr += sizeof(uint32_t);
2165     // WARNING PTR CHECK
2166     memcpy((VkRect2D**)&forUnmarshaling->pScissors, (*ptr), 8);
2167     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pScissors);
2168     *ptr += 8;
2169     if (forUnmarshaling->pScissors) {
2170         vkStream->alloc((void**)&forUnmarshaling->pScissors,
2171                         forUnmarshaling->scissorCount * sizeof(const VkRect2D));
2172         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->scissorCount; ++i) {
2173             reservedunmarshal_VkRect2D(vkStream, rootType,
2174                                        (VkRect2D*)(forUnmarshaling->pScissors + i), ptr);
2175         }
2176     }
2177 }
2178 
reservedunmarshal_VkPipelineRasterizationStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2179 void reservedunmarshal_VkPipelineRasterizationStateCreateInfo(
2180     VulkanStream* vkStream, VkStructureType rootType,
2181     VkPipelineRasterizationStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2182     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2183     *ptr += sizeof(VkStructureType);
2184     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2185         rootType = forUnmarshaling->sType;
2186     }
2187     uint32_t pNext_size;
2188     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2189     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2190     *ptr += sizeof(uint32_t);
2191     forUnmarshaling->pNext = nullptr;
2192     if (pNext_size) {
2193         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2194         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2195         *ptr += sizeof(VkStructureType);
2196         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2197         vkStream->alloc((void**)&forUnmarshaling->pNext,
2198                         goldfish_vk_extension_struct_size_with_stream_features(
2199                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2200         *(VkStructureType*)forUnmarshaling->pNext = extType;
2201         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2202                                            ptr);
2203     }
2204     memcpy((VkPipelineRasterizationStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2205            sizeof(VkPipelineRasterizationStateCreateFlags));
2206     *ptr += sizeof(VkPipelineRasterizationStateCreateFlags);
2207     memcpy((VkBool32*)&forUnmarshaling->depthClampEnable, *ptr, sizeof(VkBool32));
2208     *ptr += sizeof(VkBool32);
2209     memcpy((VkBool32*)&forUnmarshaling->rasterizerDiscardEnable, *ptr, sizeof(VkBool32));
2210     *ptr += sizeof(VkBool32);
2211     memcpy((VkPolygonMode*)&forUnmarshaling->polygonMode, *ptr, sizeof(VkPolygonMode));
2212     *ptr += sizeof(VkPolygonMode);
2213     memcpy((VkCullModeFlags*)&forUnmarshaling->cullMode, *ptr, sizeof(VkCullModeFlags));
2214     *ptr += sizeof(VkCullModeFlags);
2215     memcpy((VkFrontFace*)&forUnmarshaling->frontFace, *ptr, sizeof(VkFrontFace));
2216     *ptr += sizeof(VkFrontFace);
2217     memcpy((VkBool32*)&forUnmarshaling->depthBiasEnable, *ptr, sizeof(VkBool32));
2218     *ptr += sizeof(VkBool32);
2219     memcpy((float*)&forUnmarshaling->depthBiasConstantFactor, *ptr, sizeof(float));
2220     *ptr += sizeof(float);
2221     memcpy((float*)&forUnmarshaling->depthBiasClamp, *ptr, sizeof(float));
2222     *ptr += sizeof(float);
2223     memcpy((float*)&forUnmarshaling->depthBiasSlopeFactor, *ptr, sizeof(float));
2224     *ptr += sizeof(float);
2225     memcpy((float*)&forUnmarshaling->lineWidth, *ptr, sizeof(float));
2226     *ptr += sizeof(float);
2227 }
2228 
reservedunmarshal_VkPipelineMultisampleStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineMultisampleStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2229 void reservedunmarshal_VkPipelineMultisampleStateCreateInfo(
2230     VulkanStream* vkStream, VkStructureType rootType,
2231     VkPipelineMultisampleStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2232     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2233     *ptr += sizeof(VkStructureType);
2234     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2235         rootType = forUnmarshaling->sType;
2236     }
2237     uint32_t pNext_size;
2238     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2239     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2240     *ptr += sizeof(uint32_t);
2241     forUnmarshaling->pNext = nullptr;
2242     if (pNext_size) {
2243         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2244         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2245         *ptr += sizeof(VkStructureType);
2246         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2247         vkStream->alloc((void**)&forUnmarshaling->pNext,
2248                         goldfish_vk_extension_struct_size_with_stream_features(
2249                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2250         *(VkStructureType*)forUnmarshaling->pNext = extType;
2251         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2252                                            ptr);
2253     }
2254     memcpy((VkPipelineMultisampleStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2255            sizeof(VkPipelineMultisampleStateCreateFlags));
2256     *ptr += sizeof(VkPipelineMultisampleStateCreateFlags);
2257     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->rasterizationSamples, *ptr,
2258            sizeof(VkSampleCountFlagBits));
2259     *ptr += sizeof(VkSampleCountFlagBits);
2260     memcpy((VkBool32*)&forUnmarshaling->sampleShadingEnable, *ptr, sizeof(VkBool32));
2261     *ptr += sizeof(VkBool32);
2262     memcpy((float*)&forUnmarshaling->minSampleShading, *ptr, sizeof(float));
2263     *ptr += sizeof(float);
2264     // WARNING PTR CHECK
2265     memcpy((VkSampleMask**)&forUnmarshaling->pSampleMask, (*ptr), 8);
2266     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pSampleMask);
2267     *ptr += 8;
2268     if (forUnmarshaling->pSampleMask) {
2269         vkStream->alloc(
2270             (void**)&forUnmarshaling->pSampleMask,
2271             (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
2272         memcpy((VkSampleMask*)forUnmarshaling->pSampleMask, *ptr,
2273                (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
2274         *ptr += (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask);
2275     }
2276     memcpy((VkBool32*)&forUnmarshaling->alphaToCoverageEnable, *ptr, sizeof(VkBool32));
2277     *ptr += sizeof(VkBool32);
2278     memcpy((VkBool32*)&forUnmarshaling->alphaToOneEnable, *ptr, sizeof(VkBool32));
2279     *ptr += sizeof(VkBool32);
2280 }
2281 
reservedunmarshal_VkStencilOpState(VulkanStream * vkStream,VkStructureType rootType,VkStencilOpState * forUnmarshaling,uint8_t ** ptr)2282 void reservedunmarshal_VkStencilOpState(VulkanStream* vkStream, VkStructureType rootType,
2283                                         VkStencilOpState* forUnmarshaling, uint8_t** ptr) {
2284     memcpy((VkStencilOp*)&forUnmarshaling->failOp, *ptr, sizeof(VkStencilOp));
2285     *ptr += sizeof(VkStencilOp);
2286     memcpy((VkStencilOp*)&forUnmarshaling->passOp, *ptr, sizeof(VkStencilOp));
2287     *ptr += sizeof(VkStencilOp);
2288     memcpy((VkStencilOp*)&forUnmarshaling->depthFailOp, *ptr, sizeof(VkStencilOp));
2289     *ptr += sizeof(VkStencilOp);
2290     memcpy((VkCompareOp*)&forUnmarshaling->compareOp, *ptr, sizeof(VkCompareOp));
2291     *ptr += sizeof(VkCompareOp);
2292     memcpy((uint32_t*)&forUnmarshaling->compareMask, *ptr, sizeof(uint32_t));
2293     *ptr += sizeof(uint32_t);
2294     memcpy((uint32_t*)&forUnmarshaling->writeMask, *ptr, sizeof(uint32_t));
2295     *ptr += sizeof(uint32_t);
2296     memcpy((uint32_t*)&forUnmarshaling->reference, *ptr, sizeof(uint32_t));
2297     *ptr += sizeof(uint32_t);
2298 }
2299 
reservedunmarshal_VkPipelineDepthStencilStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineDepthStencilStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2300 void reservedunmarshal_VkPipelineDepthStencilStateCreateInfo(
2301     VulkanStream* vkStream, VkStructureType rootType,
2302     VkPipelineDepthStencilStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2303     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2304     *ptr += sizeof(VkStructureType);
2305     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2306         rootType = forUnmarshaling->sType;
2307     }
2308     uint32_t pNext_size;
2309     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2310     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2311     *ptr += sizeof(uint32_t);
2312     forUnmarshaling->pNext = nullptr;
2313     if (pNext_size) {
2314         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2315         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2316         *ptr += sizeof(VkStructureType);
2317         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2318         vkStream->alloc((void**)&forUnmarshaling->pNext,
2319                         goldfish_vk_extension_struct_size_with_stream_features(
2320                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2321         *(VkStructureType*)forUnmarshaling->pNext = extType;
2322         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2323                                            ptr);
2324     }
2325     memcpy((VkPipelineDepthStencilStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2326            sizeof(VkPipelineDepthStencilStateCreateFlags));
2327     *ptr += sizeof(VkPipelineDepthStencilStateCreateFlags);
2328     memcpy((VkBool32*)&forUnmarshaling->depthTestEnable, *ptr, sizeof(VkBool32));
2329     *ptr += sizeof(VkBool32);
2330     memcpy((VkBool32*)&forUnmarshaling->depthWriteEnable, *ptr, sizeof(VkBool32));
2331     *ptr += sizeof(VkBool32);
2332     memcpy((VkCompareOp*)&forUnmarshaling->depthCompareOp, *ptr, sizeof(VkCompareOp));
2333     *ptr += sizeof(VkCompareOp);
2334     memcpy((VkBool32*)&forUnmarshaling->depthBoundsTestEnable, *ptr, sizeof(VkBool32));
2335     *ptr += sizeof(VkBool32);
2336     memcpy((VkBool32*)&forUnmarshaling->stencilTestEnable, *ptr, sizeof(VkBool32));
2337     *ptr += sizeof(VkBool32);
2338     reservedunmarshal_VkStencilOpState(vkStream, rootType,
2339                                        (VkStencilOpState*)(&forUnmarshaling->front), ptr);
2340     reservedunmarshal_VkStencilOpState(vkStream, rootType,
2341                                        (VkStencilOpState*)(&forUnmarshaling->back), ptr);
2342     memcpy((float*)&forUnmarshaling->minDepthBounds, *ptr, sizeof(float));
2343     *ptr += sizeof(float);
2344     memcpy((float*)&forUnmarshaling->maxDepthBounds, *ptr, sizeof(float));
2345     *ptr += sizeof(float);
2346 }
2347 
reservedunmarshal_VkPipelineColorBlendAttachmentState(VulkanStream * vkStream,VkStructureType rootType,VkPipelineColorBlendAttachmentState * forUnmarshaling,uint8_t ** ptr)2348 void reservedunmarshal_VkPipelineColorBlendAttachmentState(
2349     VulkanStream* vkStream, VkStructureType rootType,
2350     VkPipelineColorBlendAttachmentState* forUnmarshaling, uint8_t** ptr) {
2351     memcpy((VkBool32*)&forUnmarshaling->blendEnable, *ptr, sizeof(VkBool32));
2352     *ptr += sizeof(VkBool32);
2353     memcpy((VkBlendFactor*)&forUnmarshaling->srcColorBlendFactor, *ptr, sizeof(VkBlendFactor));
2354     *ptr += sizeof(VkBlendFactor);
2355     memcpy((VkBlendFactor*)&forUnmarshaling->dstColorBlendFactor, *ptr, sizeof(VkBlendFactor));
2356     *ptr += sizeof(VkBlendFactor);
2357     memcpy((VkBlendOp*)&forUnmarshaling->colorBlendOp, *ptr, sizeof(VkBlendOp));
2358     *ptr += sizeof(VkBlendOp);
2359     memcpy((VkBlendFactor*)&forUnmarshaling->srcAlphaBlendFactor, *ptr, sizeof(VkBlendFactor));
2360     *ptr += sizeof(VkBlendFactor);
2361     memcpy((VkBlendFactor*)&forUnmarshaling->dstAlphaBlendFactor, *ptr, sizeof(VkBlendFactor));
2362     *ptr += sizeof(VkBlendFactor);
2363     memcpy((VkBlendOp*)&forUnmarshaling->alphaBlendOp, *ptr, sizeof(VkBlendOp));
2364     *ptr += sizeof(VkBlendOp);
2365     memcpy((VkColorComponentFlags*)&forUnmarshaling->colorWriteMask, *ptr,
2366            sizeof(VkColorComponentFlags));
2367     *ptr += sizeof(VkColorComponentFlags);
2368 }
2369 
reservedunmarshal_VkPipelineColorBlendStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineColorBlendStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2370 void reservedunmarshal_VkPipelineColorBlendStateCreateInfo(
2371     VulkanStream* vkStream, VkStructureType rootType,
2372     VkPipelineColorBlendStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2373     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2374     *ptr += sizeof(VkStructureType);
2375     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2376         rootType = forUnmarshaling->sType;
2377     }
2378     uint32_t pNext_size;
2379     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2380     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2381     *ptr += sizeof(uint32_t);
2382     forUnmarshaling->pNext = nullptr;
2383     if (pNext_size) {
2384         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2385         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2386         *ptr += sizeof(VkStructureType);
2387         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2388         vkStream->alloc((void**)&forUnmarshaling->pNext,
2389                         goldfish_vk_extension_struct_size_with_stream_features(
2390                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2391         *(VkStructureType*)forUnmarshaling->pNext = extType;
2392         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2393                                            ptr);
2394     }
2395     memcpy((VkPipelineColorBlendStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2396            sizeof(VkPipelineColorBlendStateCreateFlags));
2397     *ptr += sizeof(VkPipelineColorBlendStateCreateFlags);
2398     memcpy((VkBool32*)&forUnmarshaling->logicOpEnable, *ptr, sizeof(VkBool32));
2399     *ptr += sizeof(VkBool32);
2400     memcpy((VkLogicOp*)&forUnmarshaling->logicOp, *ptr, sizeof(VkLogicOp));
2401     *ptr += sizeof(VkLogicOp);
2402     memcpy((uint32_t*)&forUnmarshaling->attachmentCount, *ptr, sizeof(uint32_t));
2403     *ptr += sizeof(uint32_t);
2404     vkStream->alloc(
2405         (void**)&forUnmarshaling->pAttachments,
2406         forUnmarshaling->attachmentCount * sizeof(const VkPipelineColorBlendAttachmentState));
2407     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i) {
2408         reservedunmarshal_VkPipelineColorBlendAttachmentState(
2409             vkStream, rootType,
2410             (VkPipelineColorBlendAttachmentState*)(forUnmarshaling->pAttachments + i), ptr);
2411     }
2412     memcpy((float*)forUnmarshaling->blendConstants, *ptr, 4 * sizeof(float));
2413     *ptr += 4 * sizeof(float);
2414 }
2415 
reservedunmarshal_VkPipelineDynamicStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineDynamicStateCreateInfo * forUnmarshaling,uint8_t ** ptr)2416 void reservedunmarshal_VkPipelineDynamicStateCreateInfo(
2417     VulkanStream* vkStream, VkStructureType rootType,
2418     VkPipelineDynamicStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
2419     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2420     *ptr += sizeof(VkStructureType);
2421     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2422         rootType = forUnmarshaling->sType;
2423     }
2424     uint32_t pNext_size;
2425     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2426     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2427     *ptr += sizeof(uint32_t);
2428     forUnmarshaling->pNext = nullptr;
2429     if (pNext_size) {
2430         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2431         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2432         *ptr += sizeof(VkStructureType);
2433         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2434         vkStream->alloc((void**)&forUnmarshaling->pNext,
2435                         goldfish_vk_extension_struct_size_with_stream_features(
2436                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2437         *(VkStructureType*)forUnmarshaling->pNext = extType;
2438         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2439                                            ptr);
2440     }
2441     memcpy((VkPipelineDynamicStateCreateFlags*)&forUnmarshaling->flags, *ptr,
2442            sizeof(VkPipelineDynamicStateCreateFlags));
2443     *ptr += sizeof(VkPipelineDynamicStateCreateFlags);
2444     memcpy((uint32_t*)&forUnmarshaling->dynamicStateCount, *ptr, sizeof(uint32_t));
2445     *ptr += sizeof(uint32_t);
2446     vkStream->alloc((void**)&forUnmarshaling->pDynamicStates,
2447                     forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState));
2448     memcpy((VkDynamicState*)forUnmarshaling->pDynamicStates, *ptr,
2449            forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState));
2450     *ptr += forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState);
2451 }
2452 
reservedunmarshal_VkGraphicsPipelineCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkGraphicsPipelineCreateInfo * forUnmarshaling,uint8_t ** ptr)2453 void reservedunmarshal_VkGraphicsPipelineCreateInfo(VulkanStream* vkStream,
2454                                                     VkStructureType rootType,
2455                                                     VkGraphicsPipelineCreateInfo* forUnmarshaling,
2456                                                     uint8_t** ptr) {
2457     uint32_t hasRasterization = 1;
2458     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
2459         memcpy((uint32_t*)&hasRasterization, (*ptr), 4);
2460         android::base::Stream::fromBe32((uint8_t*)&hasRasterization);
2461         *ptr += 4;
2462     }
2463     uint32_t hasTessellation = 1;
2464     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
2465         memcpy((uint32_t*)&hasTessellation, (*ptr), 4);
2466         android::base::Stream::fromBe32((uint8_t*)&hasTessellation);
2467         *ptr += 4;
2468     }
2469     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2470     *ptr += sizeof(VkStructureType);
2471     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2472         rootType = forUnmarshaling->sType;
2473     }
2474     uint32_t pNext_size;
2475     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2476     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2477     *ptr += sizeof(uint32_t);
2478     forUnmarshaling->pNext = nullptr;
2479     if (pNext_size) {
2480         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2481         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2482         *ptr += sizeof(VkStructureType);
2483         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2484         vkStream->alloc((void**)&forUnmarshaling->pNext,
2485                         goldfish_vk_extension_struct_size_with_stream_features(
2486                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2487         *(VkStructureType*)forUnmarshaling->pNext = extType;
2488         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2489                                            ptr);
2490     }
2491     memcpy((VkPipelineCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkPipelineCreateFlags));
2492     *ptr += sizeof(VkPipelineCreateFlags);
2493     memcpy((uint32_t*)&forUnmarshaling->stageCount, *ptr, sizeof(uint32_t));
2494     *ptr += sizeof(uint32_t);
2495     vkStream->alloc((void**)&forUnmarshaling->pStages,
2496                     forUnmarshaling->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
2497     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->stageCount; ++i) {
2498         reservedunmarshal_VkPipelineShaderStageCreateInfo(
2499             vkStream, rootType, (VkPipelineShaderStageCreateInfo*)(forUnmarshaling->pStages + i),
2500             ptr);
2501     }
2502     // WARNING PTR CHECK
2503     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
2504         memcpy((VkPipelineVertexInputStateCreateInfo**)&forUnmarshaling->pVertexInputState, (*ptr),
2505                8);
2506         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pVertexInputState);
2507         *ptr += 8;
2508     }
2509     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
2510          forUnmarshaling->pVertexInputState)) {
2511         vkStream->alloc((void**)&forUnmarshaling->pVertexInputState,
2512                         sizeof(const VkPipelineVertexInputStateCreateInfo));
2513         reservedunmarshal_VkPipelineVertexInputStateCreateInfo(
2514             vkStream, rootType,
2515             (VkPipelineVertexInputStateCreateInfo*)(forUnmarshaling->pVertexInputState), ptr);
2516     }
2517     // WARNING PTR CHECK
2518     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
2519         memcpy((VkPipelineInputAssemblyStateCreateInfo**)&forUnmarshaling->pInputAssemblyState,
2520                (*ptr), 8);
2521         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pInputAssemblyState);
2522         *ptr += 8;
2523     }
2524     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
2525          forUnmarshaling->pInputAssemblyState)) {
2526         vkStream->alloc((void**)&forUnmarshaling->pInputAssemblyState,
2527                         sizeof(const VkPipelineInputAssemblyStateCreateInfo));
2528         reservedunmarshal_VkPipelineInputAssemblyStateCreateInfo(
2529             vkStream, rootType,
2530             (VkPipelineInputAssemblyStateCreateInfo*)(forUnmarshaling->pInputAssemblyState), ptr);
2531     }
2532     // WARNING PTR CHECK
2533     memcpy((VkPipelineTessellationStateCreateInfo**)&forUnmarshaling->pTessellationState, (*ptr),
2534            8);
2535     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pTessellationState);
2536     *ptr += 8;
2537     if (forUnmarshaling->pTessellationState) {
2538         if (hasTessellation) {
2539             vkStream->alloc((void**)&forUnmarshaling->pTessellationState,
2540                             sizeof(const VkPipelineTessellationStateCreateInfo));
2541             reservedunmarshal_VkPipelineTessellationStateCreateInfo(
2542                 vkStream, rootType,
2543                 (VkPipelineTessellationStateCreateInfo*)(forUnmarshaling->pTessellationState), ptr);
2544         } else {
2545             forUnmarshaling->pTessellationState = 0;
2546         }
2547     }
2548     // WARNING PTR CHECK
2549     memcpy((VkPipelineViewportStateCreateInfo**)&forUnmarshaling->pViewportState, (*ptr), 8);
2550     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pViewportState);
2551     *ptr += 8;
2552     if (forUnmarshaling->pViewportState) {
2553         if (hasRasterization) {
2554             vkStream->alloc((void**)&forUnmarshaling->pViewportState,
2555                             sizeof(const VkPipelineViewportStateCreateInfo));
2556             reservedunmarshal_VkPipelineViewportStateCreateInfo(
2557                 vkStream, rootType,
2558                 (VkPipelineViewportStateCreateInfo*)(forUnmarshaling->pViewportState), ptr);
2559         } else {
2560             forUnmarshaling->pViewportState = 0;
2561         }
2562     }
2563     // WARNING PTR CHECK
2564     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) {
2565         memcpy((VkPipelineRasterizationStateCreateInfo**)&forUnmarshaling->pRasterizationState,
2566                (*ptr), 8);
2567         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pRasterizationState);
2568         *ptr += 8;
2569     }
2570     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
2571          forUnmarshaling->pRasterizationState)) {
2572         vkStream->alloc((void**)&forUnmarshaling->pRasterizationState,
2573                         sizeof(const VkPipelineRasterizationStateCreateInfo));
2574         reservedunmarshal_VkPipelineRasterizationStateCreateInfo(
2575             vkStream, rootType,
2576             (VkPipelineRasterizationStateCreateInfo*)(forUnmarshaling->pRasterizationState), ptr);
2577     }
2578     // WARNING PTR CHECK
2579     memcpy((VkPipelineMultisampleStateCreateInfo**)&forUnmarshaling->pMultisampleState, (*ptr), 8);
2580     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pMultisampleState);
2581     *ptr += 8;
2582     if (forUnmarshaling->pMultisampleState) {
2583         if (hasRasterization) {
2584             vkStream->alloc((void**)&forUnmarshaling->pMultisampleState,
2585                             sizeof(const VkPipelineMultisampleStateCreateInfo));
2586             reservedunmarshal_VkPipelineMultisampleStateCreateInfo(
2587                 vkStream, rootType,
2588                 (VkPipelineMultisampleStateCreateInfo*)(forUnmarshaling->pMultisampleState), ptr);
2589         } else {
2590             forUnmarshaling->pMultisampleState = 0;
2591         }
2592     }
2593     // WARNING PTR CHECK
2594     memcpy((VkPipelineDepthStencilStateCreateInfo**)&forUnmarshaling->pDepthStencilState, (*ptr),
2595            8);
2596     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDepthStencilState);
2597     *ptr += 8;
2598     if (forUnmarshaling->pDepthStencilState) {
2599         if (hasRasterization) {
2600             vkStream->alloc((void**)&forUnmarshaling->pDepthStencilState,
2601                             sizeof(const VkPipelineDepthStencilStateCreateInfo));
2602             reservedunmarshal_VkPipelineDepthStencilStateCreateInfo(
2603                 vkStream, rootType,
2604                 (VkPipelineDepthStencilStateCreateInfo*)(forUnmarshaling->pDepthStencilState), ptr);
2605         } else {
2606             forUnmarshaling->pDepthStencilState = 0;
2607         }
2608     }
2609     // WARNING PTR CHECK
2610     memcpy((VkPipelineColorBlendStateCreateInfo**)&forUnmarshaling->pColorBlendState, (*ptr), 8);
2611     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pColorBlendState);
2612     *ptr += 8;
2613     if (forUnmarshaling->pColorBlendState) {
2614         if (hasRasterization) {
2615             vkStream->alloc((void**)&forUnmarshaling->pColorBlendState,
2616                             sizeof(const VkPipelineColorBlendStateCreateInfo));
2617             reservedunmarshal_VkPipelineColorBlendStateCreateInfo(
2618                 vkStream, rootType,
2619                 (VkPipelineColorBlendStateCreateInfo*)(forUnmarshaling->pColorBlendState), ptr);
2620         } else {
2621             forUnmarshaling->pColorBlendState = 0;
2622         }
2623     }
2624     // WARNING PTR CHECK
2625     memcpy((VkPipelineDynamicStateCreateInfo**)&forUnmarshaling->pDynamicState, (*ptr), 8);
2626     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDynamicState);
2627     *ptr += 8;
2628     if (forUnmarshaling->pDynamicState) {
2629         vkStream->alloc((void**)&forUnmarshaling->pDynamicState,
2630                         sizeof(const VkPipelineDynamicStateCreateInfo));
2631         reservedunmarshal_VkPipelineDynamicStateCreateInfo(
2632             vkStream, rootType, (VkPipelineDynamicStateCreateInfo*)(forUnmarshaling->pDynamicState),
2633             ptr);
2634     }
2635     uint64_t cgen_var_6;
2636     memcpy((uint64_t*)&cgen_var_6, *ptr, 1 * 8);
2637     *ptr += 1 * 8;
2638     *(VkPipelineLayout*)&forUnmarshaling->layout =
2639         (VkPipelineLayout)unbox_VkPipelineLayout((VkPipelineLayout)(*&cgen_var_6));
2640     uint64_t cgen_var_7;
2641     memcpy((uint64_t*)&cgen_var_7, *ptr, 1 * 8);
2642     *ptr += 1 * 8;
2643     *(VkRenderPass*)&forUnmarshaling->renderPass =
2644         (VkRenderPass)unbox_VkRenderPass((VkRenderPass)(*&cgen_var_7));
2645     memcpy((uint32_t*)&forUnmarshaling->subpass, *ptr, sizeof(uint32_t));
2646     *ptr += sizeof(uint32_t);
2647     uint64_t cgen_var_8;
2648     memcpy((uint64_t*)&cgen_var_8, *ptr, 1 * 8);
2649     *ptr += 1 * 8;
2650     *(VkPipeline*)&forUnmarshaling->basePipelineHandle =
2651         (VkPipeline)unbox_VkPipeline((VkPipeline)(*&cgen_var_8));
2652     memcpy((int32_t*)&forUnmarshaling->basePipelineIndex, *ptr, sizeof(int32_t));
2653     *ptr += sizeof(int32_t);
2654 }
2655 
reservedunmarshal_VkPushConstantRange(VulkanStream * vkStream,VkStructureType rootType,VkPushConstantRange * forUnmarshaling,uint8_t ** ptr)2656 void reservedunmarshal_VkPushConstantRange(VulkanStream* vkStream, VkStructureType rootType,
2657                                            VkPushConstantRange* forUnmarshaling, uint8_t** ptr) {
2658     memcpy((VkShaderStageFlags*)&forUnmarshaling->stageFlags, *ptr, sizeof(VkShaderStageFlags));
2659     *ptr += sizeof(VkShaderStageFlags);
2660     memcpy((uint32_t*)&forUnmarshaling->offset, *ptr, sizeof(uint32_t));
2661     *ptr += sizeof(uint32_t);
2662     memcpy((uint32_t*)&forUnmarshaling->size, *ptr, sizeof(uint32_t));
2663     *ptr += sizeof(uint32_t);
2664 }
2665 
reservedunmarshal_VkPipelineLayoutCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineLayoutCreateInfo * forUnmarshaling,uint8_t ** ptr)2666 void reservedunmarshal_VkPipelineLayoutCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2667                                                   VkPipelineLayoutCreateInfo* forUnmarshaling,
2668                                                   uint8_t** ptr) {
2669     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2670     *ptr += sizeof(VkStructureType);
2671     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2672         rootType = forUnmarshaling->sType;
2673     }
2674     uint32_t pNext_size;
2675     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2676     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2677     *ptr += sizeof(uint32_t);
2678     forUnmarshaling->pNext = nullptr;
2679     if (pNext_size) {
2680         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2681         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2682         *ptr += sizeof(VkStructureType);
2683         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2684         vkStream->alloc((void**)&forUnmarshaling->pNext,
2685                         goldfish_vk_extension_struct_size_with_stream_features(
2686                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2687         *(VkStructureType*)forUnmarshaling->pNext = extType;
2688         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2689                                            ptr);
2690     }
2691     memcpy((VkPipelineLayoutCreateFlags*)&forUnmarshaling->flags, *ptr,
2692            sizeof(VkPipelineLayoutCreateFlags));
2693     *ptr += sizeof(VkPipelineLayoutCreateFlags);
2694     memcpy((uint32_t*)&forUnmarshaling->setLayoutCount, *ptr, sizeof(uint32_t));
2695     *ptr += sizeof(uint32_t);
2696     vkStream->alloc((void**)&forUnmarshaling->pSetLayouts,
2697                     forUnmarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
2698     if (forUnmarshaling->setLayoutCount) {
2699         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
2700         *ptr += 8 * forUnmarshaling->setLayoutCount;
2701         if (forUnmarshaling) {
2702             for (uint32_t k = 0; k < forUnmarshaling->setLayoutCount; ++k) {
2703                 uint64_t tmpval;
2704                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
2705                 *(((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts) + k) =
2706                     tmpval ? (VkDescriptorSetLayout)unbox_VkDescriptorSetLayout(
2707                                  (VkDescriptorSetLayout)tmpval)
2708                            : VK_NULL_HANDLE;
2709             }
2710         }
2711     }
2712     memcpy((uint32_t*)&forUnmarshaling->pushConstantRangeCount, *ptr, sizeof(uint32_t));
2713     *ptr += sizeof(uint32_t);
2714     vkStream->alloc((void**)&forUnmarshaling->pPushConstantRanges,
2715                     forUnmarshaling->pushConstantRangeCount * sizeof(const VkPushConstantRange));
2716     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->pushConstantRangeCount; ++i) {
2717         reservedunmarshal_VkPushConstantRange(
2718             vkStream, rootType, (VkPushConstantRange*)(forUnmarshaling->pPushConstantRanges + i),
2719             ptr);
2720     }
2721 }
2722 
reservedunmarshal_VkSamplerCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerCreateInfo * forUnmarshaling,uint8_t ** ptr)2723 void reservedunmarshal_VkSamplerCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2724                                            VkSamplerCreateInfo* forUnmarshaling, uint8_t** ptr) {
2725     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2726     *ptr += sizeof(VkStructureType);
2727     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2728         rootType = forUnmarshaling->sType;
2729     }
2730     uint32_t pNext_size;
2731     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2732     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2733     *ptr += sizeof(uint32_t);
2734     forUnmarshaling->pNext = nullptr;
2735     if (pNext_size) {
2736         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2737         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2738         *ptr += sizeof(VkStructureType);
2739         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2740         vkStream->alloc((void**)&forUnmarshaling->pNext,
2741                         goldfish_vk_extension_struct_size_with_stream_features(
2742                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2743         *(VkStructureType*)forUnmarshaling->pNext = extType;
2744         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2745                                            ptr);
2746     }
2747     memcpy((VkSamplerCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkSamplerCreateFlags));
2748     *ptr += sizeof(VkSamplerCreateFlags);
2749     memcpy((VkFilter*)&forUnmarshaling->magFilter, *ptr, sizeof(VkFilter));
2750     *ptr += sizeof(VkFilter);
2751     memcpy((VkFilter*)&forUnmarshaling->minFilter, *ptr, sizeof(VkFilter));
2752     *ptr += sizeof(VkFilter);
2753     memcpy((VkSamplerMipmapMode*)&forUnmarshaling->mipmapMode, *ptr, sizeof(VkSamplerMipmapMode));
2754     *ptr += sizeof(VkSamplerMipmapMode);
2755     memcpy((VkSamplerAddressMode*)&forUnmarshaling->addressModeU, *ptr,
2756            sizeof(VkSamplerAddressMode));
2757     *ptr += sizeof(VkSamplerAddressMode);
2758     memcpy((VkSamplerAddressMode*)&forUnmarshaling->addressModeV, *ptr,
2759            sizeof(VkSamplerAddressMode));
2760     *ptr += sizeof(VkSamplerAddressMode);
2761     memcpy((VkSamplerAddressMode*)&forUnmarshaling->addressModeW, *ptr,
2762            sizeof(VkSamplerAddressMode));
2763     *ptr += sizeof(VkSamplerAddressMode);
2764     memcpy((float*)&forUnmarshaling->mipLodBias, *ptr, sizeof(float));
2765     *ptr += sizeof(float);
2766     memcpy((VkBool32*)&forUnmarshaling->anisotropyEnable, *ptr, sizeof(VkBool32));
2767     *ptr += sizeof(VkBool32);
2768     memcpy((float*)&forUnmarshaling->maxAnisotropy, *ptr, sizeof(float));
2769     *ptr += sizeof(float);
2770     memcpy((VkBool32*)&forUnmarshaling->compareEnable, *ptr, sizeof(VkBool32));
2771     *ptr += sizeof(VkBool32);
2772     memcpy((VkCompareOp*)&forUnmarshaling->compareOp, *ptr, sizeof(VkCompareOp));
2773     *ptr += sizeof(VkCompareOp);
2774     memcpy((float*)&forUnmarshaling->minLod, *ptr, sizeof(float));
2775     *ptr += sizeof(float);
2776     memcpy((float*)&forUnmarshaling->maxLod, *ptr, sizeof(float));
2777     *ptr += sizeof(float);
2778     memcpy((VkBorderColor*)&forUnmarshaling->borderColor, *ptr, sizeof(VkBorderColor));
2779     *ptr += sizeof(VkBorderColor);
2780     memcpy((VkBool32*)&forUnmarshaling->unnormalizedCoordinates, *ptr, sizeof(VkBool32));
2781     *ptr += sizeof(VkBool32);
2782 }
2783 
reservedunmarshal_VkCopyDescriptorSet(VulkanStream * vkStream,VkStructureType rootType,VkCopyDescriptorSet * forUnmarshaling,uint8_t ** ptr)2784 void reservedunmarshal_VkCopyDescriptorSet(VulkanStream* vkStream, VkStructureType rootType,
2785                                            VkCopyDescriptorSet* forUnmarshaling, uint8_t** ptr) {
2786     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2787     *ptr += sizeof(VkStructureType);
2788     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2789         rootType = forUnmarshaling->sType;
2790     }
2791     uint32_t pNext_size;
2792     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2793     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2794     *ptr += sizeof(uint32_t);
2795     forUnmarshaling->pNext = nullptr;
2796     if (pNext_size) {
2797         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2798         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2799         *ptr += sizeof(VkStructureType);
2800         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2801         vkStream->alloc((void**)&forUnmarshaling->pNext,
2802                         goldfish_vk_extension_struct_size_with_stream_features(
2803                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2804         *(VkStructureType*)forUnmarshaling->pNext = extType;
2805         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2806                                            ptr);
2807     }
2808     uint64_t cgen_var_0;
2809     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
2810     *ptr += 1 * 8;
2811     *(VkDescriptorSet*)&forUnmarshaling->srcSet =
2812         (VkDescriptorSet)unbox_VkDescriptorSet((VkDescriptorSet)(*&cgen_var_0));
2813     memcpy((uint32_t*)&forUnmarshaling->srcBinding, *ptr, sizeof(uint32_t));
2814     *ptr += sizeof(uint32_t);
2815     memcpy((uint32_t*)&forUnmarshaling->srcArrayElement, *ptr, sizeof(uint32_t));
2816     *ptr += sizeof(uint32_t);
2817     uint64_t cgen_var_1;
2818     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
2819     *ptr += 1 * 8;
2820     *(VkDescriptorSet*)&forUnmarshaling->dstSet =
2821         (VkDescriptorSet)unbox_VkDescriptorSet((VkDescriptorSet)(*&cgen_var_1));
2822     memcpy((uint32_t*)&forUnmarshaling->dstBinding, *ptr, sizeof(uint32_t));
2823     *ptr += sizeof(uint32_t);
2824     memcpy((uint32_t*)&forUnmarshaling->dstArrayElement, *ptr, sizeof(uint32_t));
2825     *ptr += sizeof(uint32_t);
2826     memcpy((uint32_t*)&forUnmarshaling->descriptorCount, *ptr, sizeof(uint32_t));
2827     *ptr += sizeof(uint32_t);
2828 }
2829 
reservedunmarshal_VkDescriptorBufferInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorBufferInfo * forUnmarshaling,uint8_t ** ptr)2830 void reservedunmarshal_VkDescriptorBufferInfo(VulkanStream* vkStream, VkStructureType rootType,
2831                                               VkDescriptorBufferInfo* forUnmarshaling,
2832                                               uint8_t** ptr) {
2833     uint64_t cgen_var_0;
2834     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
2835     *ptr += 1 * 8;
2836     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)try_unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
2837     memcpy((VkDeviceSize*)&forUnmarshaling->offset, *ptr, sizeof(VkDeviceSize));
2838     *ptr += sizeof(VkDeviceSize);
2839     memcpy((VkDeviceSize*)&forUnmarshaling->range, *ptr, sizeof(VkDeviceSize));
2840     *ptr += sizeof(VkDeviceSize);
2841 }
2842 
reservedunmarshal_VkDescriptorImageInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorImageInfo * forUnmarshaling,uint8_t ** ptr)2843 void reservedunmarshal_VkDescriptorImageInfo(VulkanStream* vkStream, VkStructureType rootType,
2844                                              VkDescriptorImageInfo* forUnmarshaling,
2845                                              uint8_t** ptr) {
2846     uint64_t cgen_var_0;
2847     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
2848     *ptr += 1 * 8;
2849     *(VkSampler*)&forUnmarshaling->sampler = (VkSampler)unbox_VkSampler((VkSampler)(*&cgen_var_0));
2850     uint64_t cgen_var_1;
2851     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
2852     *ptr += 1 * 8;
2853     *(VkImageView*)&forUnmarshaling->imageView =
2854         (VkImageView)unbox_VkImageView((VkImageView)(*&cgen_var_1));
2855     memcpy((VkImageLayout*)&forUnmarshaling->imageLayout, *ptr, sizeof(VkImageLayout));
2856     *ptr += sizeof(VkImageLayout);
2857 }
2858 
reservedunmarshal_VkDescriptorPoolSize(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorPoolSize * forUnmarshaling,uint8_t ** ptr)2859 void reservedunmarshal_VkDescriptorPoolSize(VulkanStream* vkStream, VkStructureType rootType,
2860                                             VkDescriptorPoolSize* forUnmarshaling, uint8_t** ptr) {
2861     memcpy((VkDescriptorType*)&forUnmarshaling->type, *ptr, sizeof(VkDescriptorType));
2862     *ptr += sizeof(VkDescriptorType);
2863     memcpy((uint32_t*)&forUnmarshaling->descriptorCount, *ptr, sizeof(uint32_t));
2864     *ptr += sizeof(uint32_t);
2865 }
2866 
reservedunmarshal_VkDescriptorPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorPoolCreateInfo * forUnmarshaling,uint8_t ** ptr)2867 void reservedunmarshal_VkDescriptorPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
2868                                                   VkDescriptorPoolCreateInfo* forUnmarshaling,
2869                                                   uint8_t** ptr) {
2870     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2871     *ptr += sizeof(VkStructureType);
2872     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2873         rootType = forUnmarshaling->sType;
2874     }
2875     uint32_t pNext_size;
2876     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2877     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2878     *ptr += sizeof(uint32_t);
2879     forUnmarshaling->pNext = nullptr;
2880     if (pNext_size) {
2881         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2882         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2883         *ptr += sizeof(VkStructureType);
2884         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2885         vkStream->alloc((void**)&forUnmarshaling->pNext,
2886                         goldfish_vk_extension_struct_size_with_stream_features(
2887                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2888         *(VkStructureType*)forUnmarshaling->pNext = extType;
2889         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2890                                            ptr);
2891     }
2892     memcpy((VkDescriptorPoolCreateFlags*)&forUnmarshaling->flags, *ptr,
2893            sizeof(VkDescriptorPoolCreateFlags));
2894     *ptr += sizeof(VkDescriptorPoolCreateFlags);
2895     memcpy((uint32_t*)&forUnmarshaling->maxSets, *ptr, sizeof(uint32_t));
2896     *ptr += sizeof(uint32_t);
2897     memcpy((uint32_t*)&forUnmarshaling->poolSizeCount, *ptr, sizeof(uint32_t));
2898     *ptr += sizeof(uint32_t);
2899     vkStream->alloc((void**)&forUnmarshaling->pPoolSizes,
2900                     forUnmarshaling->poolSizeCount * sizeof(const VkDescriptorPoolSize));
2901     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->poolSizeCount; ++i) {
2902         reservedunmarshal_VkDescriptorPoolSize(
2903             vkStream, rootType, (VkDescriptorPoolSize*)(forUnmarshaling->pPoolSizes + i), ptr);
2904     }
2905 }
2906 
reservedunmarshal_VkDescriptorSetAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetAllocateInfo * forUnmarshaling,uint8_t ** ptr)2907 void reservedunmarshal_VkDescriptorSetAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
2908                                                    VkDescriptorSetAllocateInfo* forUnmarshaling,
2909                                                    uint8_t** ptr) {
2910     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2911     *ptr += sizeof(VkStructureType);
2912     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2913         rootType = forUnmarshaling->sType;
2914     }
2915     uint32_t pNext_size;
2916     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
2917     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
2918     *ptr += sizeof(uint32_t);
2919     forUnmarshaling->pNext = nullptr;
2920     if (pNext_size) {
2921         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
2922         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
2923         *ptr += sizeof(VkStructureType);
2924         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
2925         vkStream->alloc((void**)&forUnmarshaling->pNext,
2926                         goldfish_vk_extension_struct_size_with_stream_features(
2927                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
2928         *(VkStructureType*)forUnmarshaling->pNext = extType;
2929         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
2930                                            ptr);
2931     }
2932     uint64_t cgen_var_0;
2933     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
2934     *ptr += 1 * 8;
2935     *(VkDescriptorPool*)&forUnmarshaling->descriptorPool =
2936         (VkDescriptorPool)unbox_VkDescriptorPool((VkDescriptorPool)(*&cgen_var_0));
2937     memcpy((uint32_t*)&forUnmarshaling->descriptorSetCount, *ptr, sizeof(uint32_t));
2938     *ptr += sizeof(uint32_t);
2939     vkStream->alloc((void**)&forUnmarshaling->pSetLayouts,
2940                     forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
2941     if (forUnmarshaling->descriptorSetCount) {
2942         uint8_t* cgen_var_1_ptr = (uint8_t*)(*ptr);
2943         *ptr += 8 * forUnmarshaling->descriptorSetCount;
2944         if (forUnmarshaling) {
2945             for (uint32_t k = 0; k < forUnmarshaling->descriptorSetCount; ++k) {
2946                 uint64_t tmpval;
2947                 memcpy(&tmpval, cgen_var_1_ptr + k * 8, sizeof(uint64_t));
2948                 *(((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts) + k) =
2949                     tmpval ? (VkDescriptorSetLayout)unbox_VkDescriptorSetLayout(
2950                                  (VkDescriptorSetLayout)tmpval)
2951                            : VK_NULL_HANDLE;
2952             }
2953         }
2954     }
2955 }
2956 
reservedunmarshal_VkDescriptorSetLayoutBinding(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutBinding * forUnmarshaling,uint8_t ** ptr)2957 void reservedunmarshal_VkDescriptorSetLayoutBinding(VulkanStream* vkStream,
2958                                                     VkStructureType rootType,
2959                                                     VkDescriptorSetLayoutBinding* forUnmarshaling,
2960                                                     uint8_t** ptr) {
2961     memcpy((uint32_t*)&forUnmarshaling->binding, *ptr, sizeof(uint32_t));
2962     *ptr += sizeof(uint32_t);
2963     memcpy((VkDescriptorType*)&forUnmarshaling->descriptorType, *ptr, sizeof(VkDescriptorType));
2964     *ptr += sizeof(VkDescriptorType);
2965     memcpy((uint32_t*)&forUnmarshaling->descriptorCount, *ptr, sizeof(uint32_t));
2966     *ptr += sizeof(uint32_t);
2967     memcpy((VkShaderStageFlags*)&forUnmarshaling->stageFlags, *ptr, sizeof(VkShaderStageFlags));
2968     *ptr += sizeof(VkShaderStageFlags);
2969     // WARNING PTR CHECK
2970     memcpy((VkSampler**)&forUnmarshaling->pImmutableSamplers, (*ptr), 8);
2971     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pImmutableSamplers);
2972     *ptr += 8;
2973     if (forUnmarshaling->pImmutableSamplers) {
2974         vkStream->alloc((void**)&forUnmarshaling->pImmutableSamplers,
2975                         forUnmarshaling->descriptorCount * sizeof(const VkSampler));
2976         if (forUnmarshaling->descriptorCount) {
2977             uint8_t* cgen_var_0_0_ptr = (uint8_t*)(*ptr);
2978             *ptr += 8 * forUnmarshaling->descriptorCount;
2979             if (forUnmarshaling) {
2980                 for (uint32_t k = 0; k < forUnmarshaling->descriptorCount; ++k) {
2981                     uint64_t tmpval;
2982                     memcpy(&tmpval, cgen_var_0_0_ptr + k * 8, sizeof(uint64_t));
2983                     *(((VkSampler*)forUnmarshaling->pImmutableSamplers) + k) =
2984                         tmpval ? (VkSampler)unbox_VkSampler((VkSampler)tmpval) : VK_NULL_HANDLE;
2985                 }
2986             }
2987         }
2988     }
2989 }
2990 
reservedunmarshal_VkDescriptorSetLayoutCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutCreateInfo * forUnmarshaling,uint8_t ** ptr)2991 void reservedunmarshal_VkDescriptorSetLayoutCreateInfo(
2992     VulkanStream* vkStream, VkStructureType rootType,
2993     VkDescriptorSetLayoutCreateInfo* forUnmarshaling, uint8_t** ptr) {
2994     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
2995     *ptr += sizeof(VkStructureType);
2996     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
2997         rootType = forUnmarshaling->sType;
2998     }
2999     uint32_t pNext_size;
3000     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3001     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3002     *ptr += sizeof(uint32_t);
3003     forUnmarshaling->pNext = nullptr;
3004     if (pNext_size) {
3005         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3006         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3007         *ptr += sizeof(VkStructureType);
3008         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3009         vkStream->alloc((void**)&forUnmarshaling->pNext,
3010                         goldfish_vk_extension_struct_size_with_stream_features(
3011                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3012         *(VkStructureType*)forUnmarshaling->pNext = extType;
3013         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3014                                            ptr);
3015     }
3016     memcpy((VkDescriptorSetLayoutCreateFlags*)&forUnmarshaling->flags, *ptr,
3017            sizeof(VkDescriptorSetLayoutCreateFlags));
3018     *ptr += sizeof(VkDescriptorSetLayoutCreateFlags);
3019     memcpy((uint32_t*)&forUnmarshaling->bindingCount, *ptr, sizeof(uint32_t));
3020     *ptr += sizeof(uint32_t);
3021     vkStream->alloc((void**)&forUnmarshaling->pBindings,
3022                     forUnmarshaling->bindingCount * sizeof(const VkDescriptorSetLayoutBinding));
3023     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindingCount; ++i) {
3024         reservedunmarshal_VkDescriptorSetLayoutBinding(
3025             vkStream, rootType, (VkDescriptorSetLayoutBinding*)(forUnmarshaling->pBindings + i),
3026             ptr);
3027     }
3028 }
3029 
reservedunmarshal_VkWriteDescriptorSet(VulkanStream * vkStream,VkStructureType rootType,VkWriteDescriptorSet * forUnmarshaling,uint8_t ** ptr)3030 void reservedunmarshal_VkWriteDescriptorSet(VulkanStream* vkStream, VkStructureType rootType,
3031                                             VkWriteDescriptorSet* forUnmarshaling, uint8_t** ptr) {
3032     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3033     *ptr += sizeof(VkStructureType);
3034     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3035         rootType = forUnmarshaling->sType;
3036     }
3037     uint32_t pNext_size;
3038     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3039     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3040     *ptr += sizeof(uint32_t);
3041     forUnmarshaling->pNext = nullptr;
3042     if (pNext_size) {
3043         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3044         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3045         *ptr += sizeof(VkStructureType);
3046         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3047         vkStream->alloc((void**)&forUnmarshaling->pNext,
3048                         goldfish_vk_extension_struct_size_with_stream_features(
3049                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3050         *(VkStructureType*)forUnmarshaling->pNext = extType;
3051         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3052                                            ptr);
3053     }
3054     uint64_t cgen_var_0;
3055     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3056     *ptr += 1 * 8;
3057     *(VkDescriptorSet*)&forUnmarshaling->dstSet =
3058         (VkDescriptorSet)unbox_VkDescriptorSet((VkDescriptorSet)(*&cgen_var_0));
3059     memcpy((uint32_t*)&forUnmarshaling->dstBinding, *ptr, sizeof(uint32_t));
3060     *ptr += sizeof(uint32_t);
3061     memcpy((uint32_t*)&forUnmarshaling->dstArrayElement, *ptr, sizeof(uint32_t));
3062     *ptr += sizeof(uint32_t);
3063     memcpy((uint32_t*)&forUnmarshaling->descriptorCount, *ptr, sizeof(uint32_t));
3064     *ptr += sizeof(uint32_t);
3065     memcpy((VkDescriptorType*)&forUnmarshaling->descriptorType, *ptr, sizeof(VkDescriptorType));
3066     *ptr += sizeof(VkDescriptorType);
3067     // WARNING PTR CHECK
3068     memcpy((VkDescriptorImageInfo**)&forUnmarshaling->pImageInfo, (*ptr), 8);
3069     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pImageInfo);
3070     *ptr += 8;
3071     if (forUnmarshaling->pImageInfo) {
3072         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3073              ((VK_DESCRIPTOR_TYPE_SAMPLER == forUnmarshaling->descriptorType) ||
3074               (VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER == forUnmarshaling->descriptorType) ||
3075               (VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE == forUnmarshaling->descriptorType) ||
3076               (VK_DESCRIPTOR_TYPE_STORAGE_IMAGE == forUnmarshaling->descriptorType) ||
3077               (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT == forUnmarshaling->descriptorType)))) {
3078             vkStream->alloc((void**)&forUnmarshaling->pImageInfo,
3079                             forUnmarshaling->descriptorCount * sizeof(const VkDescriptorImageInfo));
3080             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorCount; ++i) {
3081                 reservedunmarshal_VkDescriptorImageInfo(
3082                     vkStream, rootType, (VkDescriptorImageInfo*)(forUnmarshaling->pImageInfo + i),
3083                     ptr);
3084             }
3085         } else {
3086             forUnmarshaling->pImageInfo = 0;
3087         }
3088     }
3089     // WARNING PTR CHECK
3090     memcpy((VkDescriptorBufferInfo**)&forUnmarshaling->pBufferInfo, (*ptr), 8);
3091     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pBufferInfo);
3092     *ptr += 8;
3093     if (forUnmarshaling->pBufferInfo) {
3094         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3095              ((VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER == forUnmarshaling->descriptorType) ||
3096               (VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC == forUnmarshaling->descriptorType) ||
3097               (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER == forUnmarshaling->descriptorType) ||
3098               (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC == forUnmarshaling->descriptorType)))) {
3099             vkStream->alloc(
3100                 (void**)&forUnmarshaling->pBufferInfo,
3101                 forUnmarshaling->descriptorCount * sizeof(const VkDescriptorBufferInfo));
3102             for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorCount; ++i) {
3103                 reservedunmarshal_VkDescriptorBufferInfo(
3104                     vkStream, rootType, (VkDescriptorBufferInfo*)(forUnmarshaling->pBufferInfo + i),
3105                     ptr);
3106             }
3107         } else {
3108             forUnmarshaling->pBufferInfo = 0;
3109         }
3110     }
3111     // WARNING PTR CHECK
3112     memcpy((VkBufferView**)&forUnmarshaling->pTexelBufferView, (*ptr), 8);
3113     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pTexelBufferView);
3114     *ptr += 8;
3115     if (forUnmarshaling->pTexelBufferView) {
3116         if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3117              ((VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER == forUnmarshaling->descriptorType) ||
3118               (VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER == forUnmarshaling->descriptorType)))) {
3119             vkStream->alloc((void**)&forUnmarshaling->pTexelBufferView,
3120                             forUnmarshaling->descriptorCount * sizeof(const VkBufferView));
3121             if (forUnmarshaling->descriptorCount) {
3122                 uint8_t* cgen_var_3_0_ptr = (uint8_t*)(*ptr);
3123                 *ptr += 8 * forUnmarshaling->descriptorCount;
3124                 if (forUnmarshaling) {
3125                     for (uint32_t k = 0; k < forUnmarshaling->descriptorCount; ++k) {
3126                         uint64_t tmpval;
3127                         memcpy(&tmpval, cgen_var_3_0_ptr + k * 8, sizeof(uint64_t));
3128                         *(((VkBufferView*)forUnmarshaling->pTexelBufferView) + k) =
3129                             tmpval ? (VkBufferView)unbox_VkBufferView((VkBufferView)tmpval)
3130                                    : VK_NULL_HANDLE;
3131                     }
3132                 }
3133             }
3134         } else {
3135             forUnmarshaling->pTexelBufferView = 0;
3136         }
3137     }
3138 }
3139 
reservedunmarshal_VkAttachmentDescription(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentDescription * forUnmarshaling,uint8_t ** ptr)3140 void reservedunmarshal_VkAttachmentDescription(VulkanStream* vkStream, VkStructureType rootType,
3141                                                VkAttachmentDescription* forUnmarshaling,
3142                                                uint8_t** ptr) {
3143     memcpy((VkAttachmentDescriptionFlags*)&forUnmarshaling->flags, *ptr,
3144            sizeof(VkAttachmentDescriptionFlags));
3145     *ptr += sizeof(VkAttachmentDescriptionFlags);
3146     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
3147     *ptr += sizeof(VkFormat);
3148     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->samples, *ptr, sizeof(VkSampleCountFlagBits));
3149     *ptr += sizeof(VkSampleCountFlagBits);
3150     memcpy((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, *ptr, sizeof(VkAttachmentLoadOp));
3151     *ptr += sizeof(VkAttachmentLoadOp);
3152     memcpy((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, *ptr, sizeof(VkAttachmentStoreOp));
3153     *ptr += sizeof(VkAttachmentStoreOp);
3154     memcpy((VkAttachmentLoadOp*)&forUnmarshaling->stencilLoadOp, *ptr, sizeof(VkAttachmentLoadOp));
3155     *ptr += sizeof(VkAttachmentLoadOp);
3156     memcpy((VkAttachmentStoreOp*)&forUnmarshaling->stencilStoreOp, *ptr,
3157            sizeof(VkAttachmentStoreOp));
3158     *ptr += sizeof(VkAttachmentStoreOp);
3159     memcpy((VkImageLayout*)&forUnmarshaling->initialLayout, *ptr, sizeof(VkImageLayout));
3160     *ptr += sizeof(VkImageLayout);
3161     memcpy((VkImageLayout*)&forUnmarshaling->finalLayout, *ptr, sizeof(VkImageLayout));
3162     *ptr += sizeof(VkImageLayout);
3163 }
3164 
reservedunmarshal_VkAttachmentReference(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentReference * forUnmarshaling,uint8_t ** ptr)3165 void reservedunmarshal_VkAttachmentReference(VulkanStream* vkStream, VkStructureType rootType,
3166                                              VkAttachmentReference* forUnmarshaling,
3167                                              uint8_t** ptr) {
3168     memcpy((uint32_t*)&forUnmarshaling->attachment, *ptr, sizeof(uint32_t));
3169     *ptr += sizeof(uint32_t);
3170     memcpy((VkImageLayout*)&forUnmarshaling->layout, *ptr, sizeof(VkImageLayout));
3171     *ptr += sizeof(VkImageLayout);
3172 }
3173 
reservedunmarshal_VkFramebufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkFramebufferCreateInfo * forUnmarshaling,uint8_t ** ptr)3174 void reservedunmarshal_VkFramebufferCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3175                                                VkFramebufferCreateInfo* forUnmarshaling,
3176                                                uint8_t** ptr) {
3177     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3178     *ptr += sizeof(VkStructureType);
3179     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3180         rootType = forUnmarshaling->sType;
3181     }
3182     uint32_t pNext_size;
3183     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3184     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3185     *ptr += sizeof(uint32_t);
3186     forUnmarshaling->pNext = nullptr;
3187     if (pNext_size) {
3188         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3189         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3190         *ptr += sizeof(VkStructureType);
3191         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3192         vkStream->alloc((void**)&forUnmarshaling->pNext,
3193                         goldfish_vk_extension_struct_size_with_stream_features(
3194                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3195         *(VkStructureType*)forUnmarshaling->pNext = extType;
3196         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3197                                            ptr);
3198     }
3199     memcpy((VkFramebufferCreateFlags*)&forUnmarshaling->flags, *ptr,
3200            sizeof(VkFramebufferCreateFlags));
3201     *ptr += sizeof(VkFramebufferCreateFlags);
3202     uint64_t cgen_var_0;
3203     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3204     *ptr += 1 * 8;
3205     *(VkRenderPass*)&forUnmarshaling->renderPass =
3206         (VkRenderPass)unbox_VkRenderPass((VkRenderPass)(*&cgen_var_0));
3207     memcpy((uint32_t*)&forUnmarshaling->attachmentCount, *ptr, sizeof(uint32_t));
3208     *ptr += sizeof(uint32_t);
3209     if ((!(vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT) ||
3210          (((forUnmarshaling->flags & VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT) == 0)))) {
3211         vkStream->alloc((void**)&forUnmarshaling->pAttachments,
3212                         forUnmarshaling->attachmentCount * sizeof(const VkImageView));
3213         if (forUnmarshaling->attachmentCount) {
3214             uint8_t* cgen_var_0_0_ptr = (uint8_t*)(*ptr);
3215             *ptr += 8 * forUnmarshaling->attachmentCount;
3216             if (forUnmarshaling) {
3217                 for (uint32_t k = 0; k < forUnmarshaling->attachmentCount; ++k) {
3218                     uint64_t tmpval;
3219                     memcpy(&tmpval, cgen_var_0_0_ptr + k * 8, sizeof(uint64_t));
3220                     *(((VkImageView*)forUnmarshaling->pAttachments) + k) =
3221                         tmpval ? (VkImageView)unbox_VkImageView((VkImageView)tmpval)
3222                                : VK_NULL_HANDLE;
3223                 }
3224             }
3225         }
3226     } else {
3227         forUnmarshaling->pAttachments = 0;
3228     }
3229     memcpy((uint32_t*)&forUnmarshaling->width, *ptr, sizeof(uint32_t));
3230     *ptr += sizeof(uint32_t);
3231     memcpy((uint32_t*)&forUnmarshaling->height, *ptr, sizeof(uint32_t));
3232     *ptr += sizeof(uint32_t);
3233     memcpy((uint32_t*)&forUnmarshaling->layers, *ptr, sizeof(uint32_t));
3234     *ptr += sizeof(uint32_t);
3235 }
3236 
reservedunmarshal_VkSubpassDescription(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDescription * forUnmarshaling,uint8_t ** ptr)3237 void reservedunmarshal_VkSubpassDescription(VulkanStream* vkStream, VkStructureType rootType,
3238                                             VkSubpassDescription* forUnmarshaling, uint8_t** ptr) {
3239     memcpy((VkSubpassDescriptionFlags*)&forUnmarshaling->flags, *ptr,
3240            sizeof(VkSubpassDescriptionFlags));
3241     *ptr += sizeof(VkSubpassDescriptionFlags);
3242     memcpy((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, *ptr,
3243            sizeof(VkPipelineBindPoint));
3244     *ptr += sizeof(VkPipelineBindPoint);
3245     memcpy((uint32_t*)&forUnmarshaling->inputAttachmentCount, *ptr, sizeof(uint32_t));
3246     *ptr += sizeof(uint32_t);
3247     vkStream->alloc((void**)&forUnmarshaling->pInputAttachments,
3248                     forUnmarshaling->inputAttachmentCount * sizeof(const VkAttachmentReference));
3249     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->inputAttachmentCount; ++i) {
3250         reservedunmarshal_VkAttachmentReference(
3251             vkStream, rootType, (VkAttachmentReference*)(forUnmarshaling->pInputAttachments + i),
3252             ptr);
3253     }
3254     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
3255     *ptr += sizeof(uint32_t);
3256     vkStream->alloc((void**)&forUnmarshaling->pColorAttachments,
3257                     forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference));
3258     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
3259         reservedunmarshal_VkAttachmentReference(
3260             vkStream, rootType, (VkAttachmentReference*)(forUnmarshaling->pColorAttachments + i),
3261             ptr);
3262     }
3263     // WARNING PTR CHECK
3264     memcpy((VkAttachmentReference**)&forUnmarshaling->pResolveAttachments, (*ptr), 8);
3265     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pResolveAttachments);
3266     *ptr += 8;
3267     if (forUnmarshaling->pResolveAttachments) {
3268         vkStream->alloc(
3269             (void**)&forUnmarshaling->pResolveAttachments,
3270             forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference));
3271         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
3272             reservedunmarshal_VkAttachmentReference(
3273                 vkStream, rootType,
3274                 (VkAttachmentReference*)(forUnmarshaling->pResolveAttachments + i), ptr);
3275         }
3276     }
3277     // WARNING PTR CHECK
3278     memcpy((VkAttachmentReference**)&forUnmarshaling->pDepthStencilAttachment, (*ptr), 8);
3279     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDepthStencilAttachment);
3280     *ptr += 8;
3281     if (forUnmarshaling->pDepthStencilAttachment) {
3282         vkStream->alloc((void**)&forUnmarshaling->pDepthStencilAttachment,
3283                         sizeof(const VkAttachmentReference));
3284         reservedunmarshal_VkAttachmentReference(
3285             vkStream, rootType, (VkAttachmentReference*)(forUnmarshaling->pDepthStencilAttachment),
3286             ptr);
3287     }
3288     memcpy((uint32_t*)&forUnmarshaling->preserveAttachmentCount, *ptr, sizeof(uint32_t));
3289     *ptr += sizeof(uint32_t);
3290     vkStream->alloc((void**)&forUnmarshaling->pPreserveAttachments,
3291                     forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
3292     memcpy((uint32_t*)forUnmarshaling->pPreserveAttachments, *ptr,
3293            forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
3294     *ptr += forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t);
3295 }
3296 
reservedunmarshal_VkSubpassDependency(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDependency * forUnmarshaling,uint8_t ** ptr)3297 void reservedunmarshal_VkSubpassDependency(VulkanStream* vkStream, VkStructureType rootType,
3298                                            VkSubpassDependency* forUnmarshaling, uint8_t** ptr) {
3299     memcpy((uint32_t*)&forUnmarshaling->srcSubpass, *ptr, sizeof(uint32_t));
3300     *ptr += sizeof(uint32_t);
3301     memcpy((uint32_t*)&forUnmarshaling->dstSubpass, *ptr, sizeof(uint32_t));
3302     *ptr += sizeof(uint32_t);
3303     memcpy((VkPipelineStageFlags*)&forUnmarshaling->srcStageMask, *ptr,
3304            sizeof(VkPipelineStageFlags));
3305     *ptr += sizeof(VkPipelineStageFlags);
3306     memcpy((VkPipelineStageFlags*)&forUnmarshaling->dstStageMask, *ptr,
3307            sizeof(VkPipelineStageFlags));
3308     *ptr += sizeof(VkPipelineStageFlags);
3309     memcpy((VkAccessFlags*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags));
3310     *ptr += sizeof(VkAccessFlags);
3311     memcpy((VkAccessFlags*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags));
3312     *ptr += sizeof(VkAccessFlags);
3313     memcpy((VkDependencyFlags*)&forUnmarshaling->dependencyFlags, *ptr, sizeof(VkDependencyFlags));
3314     *ptr += sizeof(VkDependencyFlags);
3315 }
3316 
reservedunmarshal_VkRenderPassCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassCreateInfo * forUnmarshaling,uint8_t ** ptr)3317 void reservedunmarshal_VkRenderPassCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3318                                               VkRenderPassCreateInfo* forUnmarshaling,
3319                                               uint8_t** ptr) {
3320     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3321     *ptr += sizeof(VkStructureType);
3322     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3323         rootType = forUnmarshaling->sType;
3324     }
3325     uint32_t pNext_size;
3326     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3327     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3328     *ptr += sizeof(uint32_t);
3329     forUnmarshaling->pNext = nullptr;
3330     if (pNext_size) {
3331         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3332         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3333         *ptr += sizeof(VkStructureType);
3334         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3335         vkStream->alloc((void**)&forUnmarshaling->pNext,
3336                         goldfish_vk_extension_struct_size_with_stream_features(
3337                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3338         *(VkStructureType*)forUnmarshaling->pNext = extType;
3339         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3340                                            ptr);
3341     }
3342     memcpy((VkRenderPassCreateFlags*)&forUnmarshaling->flags, *ptr,
3343            sizeof(VkRenderPassCreateFlags));
3344     *ptr += sizeof(VkRenderPassCreateFlags);
3345     memcpy((uint32_t*)&forUnmarshaling->attachmentCount, *ptr, sizeof(uint32_t));
3346     *ptr += sizeof(uint32_t);
3347     vkStream->alloc((void**)&forUnmarshaling->pAttachments,
3348                     forUnmarshaling->attachmentCount * sizeof(const VkAttachmentDescription));
3349     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i) {
3350         reservedunmarshal_VkAttachmentDescription(
3351             vkStream, rootType, (VkAttachmentDescription*)(forUnmarshaling->pAttachments + i), ptr);
3352     }
3353     memcpy((uint32_t*)&forUnmarshaling->subpassCount, *ptr, sizeof(uint32_t));
3354     *ptr += sizeof(uint32_t);
3355     vkStream->alloc((void**)&forUnmarshaling->pSubpasses,
3356                     forUnmarshaling->subpassCount * sizeof(const VkSubpassDescription));
3357     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->subpassCount; ++i) {
3358         reservedunmarshal_VkSubpassDescription(
3359             vkStream, rootType, (VkSubpassDescription*)(forUnmarshaling->pSubpasses + i), ptr);
3360     }
3361     memcpy((uint32_t*)&forUnmarshaling->dependencyCount, *ptr, sizeof(uint32_t));
3362     *ptr += sizeof(uint32_t);
3363     vkStream->alloc((void**)&forUnmarshaling->pDependencies,
3364                     forUnmarshaling->dependencyCount * sizeof(const VkSubpassDependency));
3365     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->dependencyCount; ++i) {
3366         reservedunmarshal_VkSubpassDependency(
3367             vkStream, rootType, (VkSubpassDependency*)(forUnmarshaling->pDependencies + i), ptr);
3368     }
3369 }
3370 
reservedunmarshal_VkCommandPoolCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandPoolCreateInfo * forUnmarshaling,uint8_t ** ptr)3371 void reservedunmarshal_VkCommandPoolCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
3372                                                VkCommandPoolCreateInfo* forUnmarshaling,
3373                                                uint8_t** ptr) {
3374     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3375     *ptr += sizeof(VkStructureType);
3376     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3377         rootType = forUnmarshaling->sType;
3378     }
3379     uint32_t pNext_size;
3380     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3381     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3382     *ptr += sizeof(uint32_t);
3383     forUnmarshaling->pNext = nullptr;
3384     if (pNext_size) {
3385         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3386         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3387         *ptr += sizeof(VkStructureType);
3388         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3389         vkStream->alloc((void**)&forUnmarshaling->pNext,
3390                         goldfish_vk_extension_struct_size_with_stream_features(
3391                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3392         *(VkStructureType*)forUnmarshaling->pNext = extType;
3393         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3394                                            ptr);
3395     }
3396     memcpy((VkCommandPoolCreateFlags*)&forUnmarshaling->flags, *ptr,
3397            sizeof(VkCommandPoolCreateFlags));
3398     *ptr += sizeof(VkCommandPoolCreateFlags);
3399     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndex, *ptr, sizeof(uint32_t));
3400     *ptr += sizeof(uint32_t);
3401 }
3402 
reservedunmarshal_VkCommandBufferAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferAllocateInfo * forUnmarshaling,uint8_t ** ptr)3403 void reservedunmarshal_VkCommandBufferAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
3404                                                    VkCommandBufferAllocateInfo* forUnmarshaling,
3405                                                    uint8_t** ptr) {
3406     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3407     *ptr += sizeof(VkStructureType);
3408     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3409         rootType = forUnmarshaling->sType;
3410     }
3411     uint32_t pNext_size;
3412     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3413     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3414     *ptr += sizeof(uint32_t);
3415     forUnmarshaling->pNext = nullptr;
3416     if (pNext_size) {
3417         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3418         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3419         *ptr += sizeof(VkStructureType);
3420         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3421         vkStream->alloc((void**)&forUnmarshaling->pNext,
3422                         goldfish_vk_extension_struct_size_with_stream_features(
3423                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3424         *(VkStructureType*)forUnmarshaling->pNext = extType;
3425         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3426                                            ptr);
3427     }
3428     uint64_t cgen_var_0;
3429     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3430     *ptr += 1 * 8;
3431     *(VkCommandPool*)&forUnmarshaling->commandPool =
3432         (VkCommandPool)unbox_VkCommandPool((VkCommandPool)(*&cgen_var_0));
3433     memcpy((VkCommandBufferLevel*)&forUnmarshaling->level, *ptr, sizeof(VkCommandBufferLevel));
3434     *ptr += sizeof(VkCommandBufferLevel);
3435     memcpy((uint32_t*)&forUnmarshaling->commandBufferCount, *ptr, sizeof(uint32_t));
3436     *ptr += sizeof(uint32_t);
3437 }
3438 
reservedunmarshal_VkCommandBufferInheritanceInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferInheritanceInfo * forUnmarshaling,uint8_t ** ptr)3439 void reservedunmarshal_VkCommandBufferInheritanceInfo(
3440     VulkanStream* vkStream, VkStructureType rootType,
3441     VkCommandBufferInheritanceInfo* forUnmarshaling, uint8_t** ptr) {
3442     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3443     *ptr += sizeof(VkStructureType);
3444     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3445         rootType = forUnmarshaling->sType;
3446     }
3447     uint32_t pNext_size;
3448     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3449     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3450     *ptr += sizeof(uint32_t);
3451     forUnmarshaling->pNext = nullptr;
3452     if (pNext_size) {
3453         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3454         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3455         *ptr += sizeof(VkStructureType);
3456         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3457         vkStream->alloc((void**)&forUnmarshaling->pNext,
3458                         goldfish_vk_extension_struct_size_with_stream_features(
3459                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3460         *(VkStructureType*)forUnmarshaling->pNext = extType;
3461         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3462                                            ptr);
3463     }
3464     uint64_t cgen_var_0;
3465     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3466     *ptr += 1 * 8;
3467     *(VkRenderPass*)&forUnmarshaling->renderPass =
3468         (VkRenderPass)unbox_VkRenderPass((VkRenderPass)(*&cgen_var_0));
3469     memcpy((uint32_t*)&forUnmarshaling->subpass, *ptr, sizeof(uint32_t));
3470     *ptr += sizeof(uint32_t);
3471     uint64_t cgen_var_1;
3472     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
3473     *ptr += 1 * 8;
3474     *(VkFramebuffer*)&forUnmarshaling->framebuffer =
3475         (VkFramebuffer)unbox_VkFramebuffer((VkFramebuffer)(*&cgen_var_1));
3476     memcpy((VkBool32*)&forUnmarshaling->occlusionQueryEnable, *ptr, sizeof(VkBool32));
3477     *ptr += sizeof(VkBool32);
3478     memcpy((VkQueryControlFlags*)&forUnmarshaling->queryFlags, *ptr, sizeof(VkQueryControlFlags));
3479     *ptr += sizeof(VkQueryControlFlags);
3480     memcpy((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics, *ptr,
3481            sizeof(VkQueryPipelineStatisticFlags));
3482     *ptr += sizeof(VkQueryPipelineStatisticFlags);
3483 }
3484 
reservedunmarshal_VkCommandBufferBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferBeginInfo * forUnmarshaling,uint8_t ** ptr)3485 void reservedunmarshal_VkCommandBufferBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
3486                                                 VkCommandBufferBeginInfo* forUnmarshaling,
3487                                                 uint8_t** ptr) {
3488     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3489     *ptr += sizeof(VkStructureType);
3490     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3491         rootType = forUnmarshaling->sType;
3492     }
3493     uint32_t pNext_size;
3494     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3495     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3496     *ptr += sizeof(uint32_t);
3497     forUnmarshaling->pNext = nullptr;
3498     if (pNext_size) {
3499         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3500         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3501         *ptr += sizeof(VkStructureType);
3502         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3503         vkStream->alloc((void**)&forUnmarshaling->pNext,
3504                         goldfish_vk_extension_struct_size_with_stream_features(
3505                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3506         *(VkStructureType*)forUnmarshaling->pNext = extType;
3507         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3508                                            ptr);
3509     }
3510     memcpy((VkCommandBufferUsageFlags*)&forUnmarshaling->flags, *ptr,
3511            sizeof(VkCommandBufferUsageFlags));
3512     *ptr += sizeof(VkCommandBufferUsageFlags);
3513     // WARNING PTR CHECK
3514     memcpy((VkCommandBufferInheritanceInfo**)&forUnmarshaling->pInheritanceInfo, (*ptr), 8);
3515     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pInheritanceInfo);
3516     *ptr += 8;
3517     if (forUnmarshaling->pInheritanceInfo) {
3518         vkStream->alloc((void**)&forUnmarshaling->pInheritanceInfo,
3519                         sizeof(const VkCommandBufferInheritanceInfo));
3520         reservedunmarshal_VkCommandBufferInheritanceInfo(
3521             vkStream, rootType,
3522             (VkCommandBufferInheritanceInfo*)(forUnmarshaling->pInheritanceInfo), ptr);
3523     }
3524 }
3525 
reservedunmarshal_VkBufferCopy(VulkanStream * vkStream,VkStructureType rootType,VkBufferCopy * forUnmarshaling,uint8_t ** ptr)3526 void reservedunmarshal_VkBufferCopy(VulkanStream* vkStream, VkStructureType rootType,
3527                                     VkBufferCopy* forUnmarshaling, uint8_t** ptr) {
3528     memcpy((VkDeviceSize*)&forUnmarshaling->srcOffset, *ptr, sizeof(VkDeviceSize));
3529     *ptr += sizeof(VkDeviceSize);
3530     memcpy((VkDeviceSize*)&forUnmarshaling->dstOffset, *ptr, sizeof(VkDeviceSize));
3531     *ptr += sizeof(VkDeviceSize);
3532     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
3533     *ptr += sizeof(VkDeviceSize);
3534 }
3535 
reservedunmarshal_VkImageSubresourceLayers(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresourceLayers * forUnmarshaling,uint8_t ** ptr)3536 void reservedunmarshal_VkImageSubresourceLayers(VulkanStream* vkStream, VkStructureType rootType,
3537                                                 VkImageSubresourceLayers* forUnmarshaling,
3538                                                 uint8_t** ptr) {
3539     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
3540     *ptr += sizeof(VkImageAspectFlags);
3541     memcpy((uint32_t*)&forUnmarshaling->mipLevel, *ptr, sizeof(uint32_t));
3542     *ptr += sizeof(uint32_t);
3543     memcpy((uint32_t*)&forUnmarshaling->baseArrayLayer, *ptr, sizeof(uint32_t));
3544     *ptr += sizeof(uint32_t);
3545     memcpy((uint32_t*)&forUnmarshaling->layerCount, *ptr, sizeof(uint32_t));
3546     *ptr += sizeof(uint32_t);
3547 }
3548 
reservedunmarshal_VkBufferImageCopy(VulkanStream * vkStream,VkStructureType rootType,VkBufferImageCopy * forUnmarshaling,uint8_t ** ptr)3549 void reservedunmarshal_VkBufferImageCopy(VulkanStream* vkStream, VkStructureType rootType,
3550                                          VkBufferImageCopy* forUnmarshaling, uint8_t** ptr) {
3551     memcpy((VkDeviceSize*)&forUnmarshaling->bufferOffset, *ptr, sizeof(VkDeviceSize));
3552     *ptr += sizeof(VkDeviceSize);
3553     memcpy((uint32_t*)&forUnmarshaling->bufferRowLength, *ptr, sizeof(uint32_t));
3554     *ptr += sizeof(uint32_t);
3555     memcpy((uint32_t*)&forUnmarshaling->bufferImageHeight, *ptr, sizeof(uint32_t));
3556     *ptr += sizeof(uint32_t);
3557     reservedunmarshal_VkImageSubresourceLayers(
3558         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource), ptr);
3559     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset),
3560                                  ptr);
3561     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent),
3562                                  ptr);
3563 }
3564 
reservedunmarshal_VkClearColorValue(VulkanStream * vkStream,VkStructureType rootType,VkClearColorValue * forUnmarshaling,uint8_t ** ptr)3565 void reservedunmarshal_VkClearColorValue(VulkanStream* vkStream, VkStructureType rootType,
3566                                          VkClearColorValue* forUnmarshaling, uint8_t** ptr) {
3567     memcpy((float*)forUnmarshaling->float32, *ptr, 4 * sizeof(float));
3568     *ptr += 4 * sizeof(float);
3569 }
3570 
reservedunmarshal_VkClearDepthStencilValue(VulkanStream * vkStream,VkStructureType rootType,VkClearDepthStencilValue * forUnmarshaling,uint8_t ** ptr)3571 void reservedunmarshal_VkClearDepthStencilValue(VulkanStream* vkStream, VkStructureType rootType,
3572                                                 VkClearDepthStencilValue* forUnmarshaling,
3573                                                 uint8_t** ptr) {
3574     memcpy((float*)&forUnmarshaling->depth, *ptr, sizeof(float));
3575     *ptr += sizeof(float);
3576     memcpy((uint32_t*)&forUnmarshaling->stencil, *ptr, sizeof(uint32_t));
3577     *ptr += sizeof(uint32_t);
3578 }
3579 
reservedunmarshal_VkClearValue(VulkanStream * vkStream,VkStructureType rootType,VkClearValue * forUnmarshaling,uint8_t ** ptr)3580 void reservedunmarshal_VkClearValue(VulkanStream* vkStream, VkStructureType rootType,
3581                                     VkClearValue* forUnmarshaling, uint8_t** ptr) {
3582     reservedunmarshal_VkClearColorValue(vkStream, rootType,
3583                                         (VkClearColorValue*)(&forUnmarshaling->color), ptr);
3584 }
3585 
reservedunmarshal_VkClearAttachment(VulkanStream * vkStream,VkStructureType rootType,VkClearAttachment * forUnmarshaling,uint8_t ** ptr)3586 void reservedunmarshal_VkClearAttachment(VulkanStream* vkStream, VkStructureType rootType,
3587                                          VkClearAttachment* forUnmarshaling, uint8_t** ptr) {
3588     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
3589     *ptr += sizeof(VkImageAspectFlags);
3590     memcpy((uint32_t*)&forUnmarshaling->colorAttachment, *ptr, sizeof(uint32_t));
3591     *ptr += sizeof(uint32_t);
3592     reservedunmarshal_VkClearValue(vkStream, rootType,
3593                                    (VkClearValue*)(&forUnmarshaling->clearValue), ptr);
3594 }
3595 
reservedunmarshal_VkClearRect(VulkanStream * vkStream,VkStructureType rootType,VkClearRect * forUnmarshaling,uint8_t ** ptr)3596 void reservedunmarshal_VkClearRect(VulkanStream* vkStream, VkStructureType rootType,
3597                                    VkClearRect* forUnmarshaling, uint8_t** ptr) {
3598     reservedunmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forUnmarshaling->rect), ptr);
3599     memcpy((uint32_t*)&forUnmarshaling->baseArrayLayer, *ptr, sizeof(uint32_t));
3600     *ptr += sizeof(uint32_t);
3601     memcpy((uint32_t*)&forUnmarshaling->layerCount, *ptr, sizeof(uint32_t));
3602     *ptr += sizeof(uint32_t);
3603 }
3604 
reservedunmarshal_VkImageBlit(VulkanStream * vkStream,VkStructureType rootType,VkImageBlit * forUnmarshaling,uint8_t ** ptr)3605 void reservedunmarshal_VkImageBlit(VulkanStream* vkStream, VkStructureType rootType,
3606                                    VkImageBlit* forUnmarshaling, uint8_t** ptr) {
3607     reservedunmarshal_VkImageSubresourceLayers(
3608         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource), ptr);
3609     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
3610         reservedunmarshal_VkOffset3D(vkStream, rootType,
3611                                      (VkOffset3D*)(forUnmarshaling->srcOffsets + i), ptr);
3612     }
3613     reservedunmarshal_VkImageSubresourceLayers(
3614         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource), ptr);
3615     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
3616         reservedunmarshal_VkOffset3D(vkStream, rootType,
3617                                      (VkOffset3D*)(forUnmarshaling->dstOffsets + i), ptr);
3618     }
3619 }
3620 
reservedunmarshal_VkImageCopy(VulkanStream * vkStream,VkStructureType rootType,VkImageCopy * forUnmarshaling,uint8_t ** ptr)3621 void reservedunmarshal_VkImageCopy(VulkanStream* vkStream, VkStructureType rootType,
3622                                    VkImageCopy* forUnmarshaling, uint8_t** ptr) {
3623     reservedunmarshal_VkImageSubresourceLayers(
3624         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource), ptr);
3625     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset),
3626                                  ptr);
3627     reservedunmarshal_VkImageSubresourceLayers(
3628         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource), ptr);
3629     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset),
3630                                  ptr);
3631     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent), ptr);
3632 }
3633 
reservedunmarshal_VkImageResolve(VulkanStream * vkStream,VkStructureType rootType,VkImageResolve * forUnmarshaling,uint8_t ** ptr)3634 void reservedunmarshal_VkImageResolve(VulkanStream* vkStream, VkStructureType rootType,
3635                                       VkImageResolve* forUnmarshaling, uint8_t** ptr) {
3636     reservedunmarshal_VkImageSubresourceLayers(
3637         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource), ptr);
3638     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset),
3639                                  ptr);
3640     reservedunmarshal_VkImageSubresourceLayers(
3641         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource), ptr);
3642     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset),
3643                                  ptr);
3644     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent), ptr);
3645 }
3646 
reservedunmarshal_VkRenderPassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassBeginInfo * forUnmarshaling,uint8_t ** ptr)3647 void reservedunmarshal_VkRenderPassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
3648                                              VkRenderPassBeginInfo* forUnmarshaling,
3649                                              uint8_t** ptr) {
3650     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3651     *ptr += sizeof(VkStructureType);
3652     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3653         rootType = forUnmarshaling->sType;
3654     }
3655     uint32_t pNext_size;
3656     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3657     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3658     *ptr += sizeof(uint32_t);
3659     forUnmarshaling->pNext = nullptr;
3660     if (pNext_size) {
3661         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3662         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3663         *ptr += sizeof(VkStructureType);
3664         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3665         vkStream->alloc((void**)&forUnmarshaling->pNext,
3666                         goldfish_vk_extension_struct_size_with_stream_features(
3667                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3668         *(VkStructureType*)forUnmarshaling->pNext = extType;
3669         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3670                                            ptr);
3671     }
3672     uint64_t cgen_var_0;
3673     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3674     *ptr += 1 * 8;
3675     *(VkRenderPass*)&forUnmarshaling->renderPass =
3676         (VkRenderPass)unbox_VkRenderPass((VkRenderPass)(*&cgen_var_0));
3677     uint64_t cgen_var_1;
3678     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
3679     *ptr += 1 * 8;
3680     *(VkFramebuffer*)&forUnmarshaling->framebuffer =
3681         (VkFramebuffer)unbox_VkFramebuffer((VkFramebuffer)(*&cgen_var_1));
3682     reservedunmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forUnmarshaling->renderArea), ptr);
3683     memcpy((uint32_t*)&forUnmarshaling->clearValueCount, *ptr, sizeof(uint32_t));
3684     *ptr += sizeof(uint32_t);
3685     // WARNING PTR CHECK
3686     memcpy((VkClearValue**)&forUnmarshaling->pClearValues, (*ptr), 8);
3687     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pClearValues);
3688     *ptr += 8;
3689     if (forUnmarshaling->pClearValues) {
3690         vkStream->alloc((void**)&forUnmarshaling->pClearValues,
3691                         forUnmarshaling->clearValueCount * sizeof(const VkClearValue));
3692         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->clearValueCount; ++i) {
3693             reservedunmarshal_VkClearValue(vkStream, rootType,
3694                                            (VkClearValue*)(forUnmarshaling->pClearValues + i), ptr);
3695         }
3696     }
3697 }
3698 
3699 #endif
3700 #ifdef VK_VERSION_1_1
reservedunmarshal_VkPhysicalDeviceSubgroupProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSubgroupProperties * forUnmarshaling,uint8_t ** ptr)3701 void reservedunmarshal_VkPhysicalDeviceSubgroupProperties(
3702     VulkanStream* vkStream, VkStructureType rootType,
3703     VkPhysicalDeviceSubgroupProperties* forUnmarshaling, uint8_t** ptr) {
3704     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3705     *ptr += sizeof(VkStructureType);
3706     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3707         rootType = forUnmarshaling->sType;
3708     }
3709     uint32_t pNext_size;
3710     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3711     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3712     *ptr += sizeof(uint32_t);
3713     forUnmarshaling->pNext = nullptr;
3714     if (pNext_size) {
3715         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3716         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3717         *ptr += sizeof(VkStructureType);
3718         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3719         vkStream->alloc((void**)&forUnmarshaling->pNext,
3720                         goldfish_vk_extension_struct_size_with_stream_features(
3721                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3722         *(VkStructureType*)forUnmarshaling->pNext = extType;
3723         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3724                                            ptr);
3725     }
3726     memcpy((uint32_t*)&forUnmarshaling->subgroupSize, *ptr, sizeof(uint32_t));
3727     *ptr += sizeof(uint32_t);
3728     memcpy((VkShaderStageFlags*)&forUnmarshaling->supportedStages, *ptr,
3729            sizeof(VkShaderStageFlags));
3730     *ptr += sizeof(VkShaderStageFlags);
3731     memcpy((VkSubgroupFeatureFlags*)&forUnmarshaling->supportedOperations, *ptr,
3732            sizeof(VkSubgroupFeatureFlags));
3733     *ptr += sizeof(VkSubgroupFeatureFlags);
3734     memcpy((VkBool32*)&forUnmarshaling->quadOperationsInAllStages, *ptr, sizeof(VkBool32));
3735     *ptr += sizeof(VkBool32);
3736 }
3737 
reservedunmarshal_VkBindBufferMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindBufferMemoryInfo * forUnmarshaling,uint8_t ** ptr)3738 void reservedunmarshal_VkBindBufferMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
3739                                               VkBindBufferMemoryInfo* forUnmarshaling,
3740                                               uint8_t** ptr) {
3741     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3742     *ptr += sizeof(VkStructureType);
3743     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3744         rootType = forUnmarshaling->sType;
3745     }
3746     uint32_t pNext_size;
3747     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3748     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3749     *ptr += sizeof(uint32_t);
3750     forUnmarshaling->pNext = nullptr;
3751     if (pNext_size) {
3752         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3753         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3754         *ptr += sizeof(VkStructureType);
3755         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3756         vkStream->alloc((void**)&forUnmarshaling->pNext,
3757                         goldfish_vk_extension_struct_size_with_stream_features(
3758                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3759         *(VkStructureType*)forUnmarshaling->pNext = extType;
3760         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3761                                            ptr);
3762     }
3763     uint64_t cgen_var_0;
3764     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3765     *ptr += 1 * 8;
3766     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
3767     uint64_t cgen_var_1;
3768     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
3769     *ptr += 1 * 8;
3770     *(VkDeviceMemory*)&forUnmarshaling->memory =
3771         (VkDeviceMemory)unbox_VkDeviceMemory((VkDeviceMemory)(*&cgen_var_1));
3772     memcpy((VkDeviceSize*)&forUnmarshaling->memoryOffset, *ptr, sizeof(VkDeviceSize));
3773     *ptr += sizeof(VkDeviceSize);
3774 }
3775 
reservedunmarshal_VkBindImageMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindImageMemoryInfo * forUnmarshaling,uint8_t ** ptr)3776 void reservedunmarshal_VkBindImageMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
3777                                              VkBindImageMemoryInfo* forUnmarshaling,
3778                                              uint8_t** ptr) {
3779     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3780     *ptr += sizeof(VkStructureType);
3781     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3782         rootType = forUnmarshaling->sType;
3783     }
3784     uint32_t pNext_size;
3785     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3786     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3787     *ptr += sizeof(uint32_t);
3788     forUnmarshaling->pNext = nullptr;
3789     if (pNext_size) {
3790         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3791         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3792         *ptr += sizeof(VkStructureType);
3793         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3794         vkStream->alloc((void**)&forUnmarshaling->pNext,
3795                         goldfish_vk_extension_struct_size_with_stream_features(
3796                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3797         *(VkStructureType*)forUnmarshaling->pNext = extType;
3798         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3799                                            ptr);
3800     }
3801     uint64_t cgen_var_0;
3802     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3803     *ptr += 1 * 8;
3804     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
3805     uint64_t cgen_var_1;
3806     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
3807     *ptr += 1 * 8;
3808     *(VkDeviceMemory*)&forUnmarshaling->memory =
3809         (VkDeviceMemory)unbox_VkDeviceMemory((VkDeviceMemory)(*&cgen_var_1));
3810     memcpy((VkDeviceSize*)&forUnmarshaling->memoryOffset, *ptr, sizeof(VkDeviceSize));
3811     *ptr += sizeof(VkDeviceSize);
3812 }
3813 
reservedunmarshal_VkPhysicalDevice16BitStorageFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevice16BitStorageFeatures * forUnmarshaling,uint8_t ** ptr)3814 void reservedunmarshal_VkPhysicalDevice16BitStorageFeatures(
3815     VulkanStream* vkStream, VkStructureType rootType,
3816     VkPhysicalDevice16BitStorageFeatures* forUnmarshaling, uint8_t** ptr) {
3817     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3818     *ptr += sizeof(VkStructureType);
3819     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3820         rootType = forUnmarshaling->sType;
3821     }
3822     uint32_t pNext_size;
3823     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3824     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3825     *ptr += sizeof(uint32_t);
3826     forUnmarshaling->pNext = nullptr;
3827     if (pNext_size) {
3828         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3829         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3830         *ptr += sizeof(VkStructureType);
3831         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3832         vkStream->alloc((void**)&forUnmarshaling->pNext,
3833                         goldfish_vk_extension_struct_size_with_stream_features(
3834                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3835         *(VkStructureType*)forUnmarshaling->pNext = extType;
3836         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3837                                            ptr);
3838     }
3839     memcpy((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, *ptr, sizeof(VkBool32));
3840     *ptr += sizeof(VkBool32);
3841     memcpy((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess, *ptr, sizeof(VkBool32));
3842     *ptr += sizeof(VkBool32);
3843     memcpy((VkBool32*)&forUnmarshaling->storagePushConstant16, *ptr, sizeof(VkBool32));
3844     *ptr += sizeof(VkBool32);
3845     memcpy((VkBool32*)&forUnmarshaling->storageInputOutput16, *ptr, sizeof(VkBool32));
3846     *ptr += sizeof(VkBool32);
3847 }
3848 
reservedunmarshal_VkMemoryDedicatedRequirements(VulkanStream * vkStream,VkStructureType rootType,VkMemoryDedicatedRequirements * forUnmarshaling,uint8_t ** ptr)3849 void reservedunmarshal_VkMemoryDedicatedRequirements(VulkanStream* vkStream,
3850                                                      VkStructureType rootType,
3851                                                      VkMemoryDedicatedRequirements* forUnmarshaling,
3852                                                      uint8_t** ptr) {
3853     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3854     *ptr += sizeof(VkStructureType);
3855     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3856         rootType = forUnmarshaling->sType;
3857     }
3858     uint32_t pNext_size;
3859     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3860     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3861     *ptr += sizeof(uint32_t);
3862     forUnmarshaling->pNext = nullptr;
3863     if (pNext_size) {
3864         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3865         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3866         *ptr += sizeof(VkStructureType);
3867         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3868         vkStream->alloc((void**)&forUnmarshaling->pNext,
3869                         goldfish_vk_extension_struct_size_with_stream_features(
3870                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3871         *(VkStructureType*)forUnmarshaling->pNext = extType;
3872         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3873                                            ptr);
3874     }
3875     memcpy((VkBool32*)&forUnmarshaling->prefersDedicatedAllocation, *ptr, sizeof(VkBool32));
3876     *ptr += sizeof(VkBool32);
3877     memcpy((VkBool32*)&forUnmarshaling->requiresDedicatedAllocation, *ptr, sizeof(VkBool32));
3878     *ptr += sizeof(VkBool32);
3879 }
3880 
reservedunmarshal_VkMemoryDedicatedAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryDedicatedAllocateInfo * forUnmarshaling,uint8_t ** ptr)3881 void reservedunmarshal_VkMemoryDedicatedAllocateInfo(VulkanStream* vkStream,
3882                                                      VkStructureType rootType,
3883                                                      VkMemoryDedicatedAllocateInfo* forUnmarshaling,
3884                                                      uint8_t** ptr) {
3885     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3886     *ptr += sizeof(VkStructureType);
3887     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3888         rootType = forUnmarshaling->sType;
3889     }
3890     uint32_t pNext_size;
3891     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3892     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3893     *ptr += sizeof(uint32_t);
3894     forUnmarshaling->pNext = nullptr;
3895     if (pNext_size) {
3896         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3897         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3898         *ptr += sizeof(VkStructureType);
3899         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3900         vkStream->alloc((void**)&forUnmarshaling->pNext,
3901                         goldfish_vk_extension_struct_size_with_stream_features(
3902                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3903         *(VkStructureType*)forUnmarshaling->pNext = extType;
3904         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3905                                            ptr);
3906     }
3907     uint64_t cgen_var_0;
3908     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
3909     *ptr += 1 * 8;
3910     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
3911     uint64_t cgen_var_1;
3912     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
3913     *ptr += 1 * 8;
3914     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_1));
3915 }
3916 
reservedunmarshal_VkMemoryAllocateFlagsInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryAllocateFlagsInfo * forUnmarshaling,uint8_t ** ptr)3917 void reservedunmarshal_VkMemoryAllocateFlagsInfo(VulkanStream* vkStream, VkStructureType rootType,
3918                                                  VkMemoryAllocateFlagsInfo* forUnmarshaling,
3919                                                  uint8_t** ptr) {
3920     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3921     *ptr += sizeof(VkStructureType);
3922     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3923         rootType = forUnmarshaling->sType;
3924     }
3925     uint32_t pNext_size;
3926     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3927     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3928     *ptr += sizeof(uint32_t);
3929     forUnmarshaling->pNext = nullptr;
3930     if (pNext_size) {
3931         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3932         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3933         *ptr += sizeof(VkStructureType);
3934         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3935         vkStream->alloc((void**)&forUnmarshaling->pNext,
3936                         goldfish_vk_extension_struct_size_with_stream_features(
3937                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3938         *(VkStructureType*)forUnmarshaling->pNext = extType;
3939         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3940                                            ptr);
3941     }
3942     memcpy((VkMemoryAllocateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkMemoryAllocateFlags));
3943     *ptr += sizeof(VkMemoryAllocateFlags);
3944     memcpy((uint32_t*)&forUnmarshaling->deviceMask, *ptr, sizeof(uint32_t));
3945     *ptr += sizeof(uint32_t);
3946 }
3947 
reservedunmarshal_VkDeviceGroupRenderPassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupRenderPassBeginInfo * forUnmarshaling,uint8_t ** ptr)3948 void reservedunmarshal_VkDeviceGroupRenderPassBeginInfo(
3949     VulkanStream* vkStream, VkStructureType rootType,
3950     VkDeviceGroupRenderPassBeginInfo* forUnmarshaling, uint8_t** ptr) {
3951     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3952     *ptr += sizeof(VkStructureType);
3953     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3954         rootType = forUnmarshaling->sType;
3955     }
3956     uint32_t pNext_size;
3957     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3958     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3959     *ptr += sizeof(uint32_t);
3960     forUnmarshaling->pNext = nullptr;
3961     if (pNext_size) {
3962         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
3963         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
3964         *ptr += sizeof(VkStructureType);
3965         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
3966         vkStream->alloc((void**)&forUnmarshaling->pNext,
3967                         goldfish_vk_extension_struct_size_with_stream_features(
3968                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
3969         *(VkStructureType*)forUnmarshaling->pNext = extType;
3970         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
3971                                            ptr);
3972     }
3973     memcpy((uint32_t*)&forUnmarshaling->deviceMask, *ptr, sizeof(uint32_t));
3974     *ptr += sizeof(uint32_t);
3975     memcpy((uint32_t*)&forUnmarshaling->deviceRenderAreaCount, *ptr, sizeof(uint32_t));
3976     *ptr += sizeof(uint32_t);
3977     vkStream->alloc((void**)&forUnmarshaling->pDeviceRenderAreas,
3978                     forUnmarshaling->deviceRenderAreaCount * sizeof(const VkRect2D));
3979     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->deviceRenderAreaCount; ++i) {
3980         reservedunmarshal_VkRect2D(vkStream, rootType,
3981                                    (VkRect2D*)(forUnmarshaling->pDeviceRenderAreas + i), ptr);
3982     }
3983 }
3984 
reservedunmarshal_VkDeviceGroupCommandBufferBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupCommandBufferBeginInfo * forUnmarshaling,uint8_t ** ptr)3985 void reservedunmarshal_VkDeviceGroupCommandBufferBeginInfo(
3986     VulkanStream* vkStream, VkStructureType rootType,
3987     VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling, uint8_t** ptr) {
3988     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
3989     *ptr += sizeof(VkStructureType);
3990     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
3991         rootType = forUnmarshaling->sType;
3992     }
3993     uint32_t pNext_size;
3994     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
3995     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
3996     *ptr += sizeof(uint32_t);
3997     forUnmarshaling->pNext = nullptr;
3998     if (pNext_size) {
3999         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4000         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4001         *ptr += sizeof(VkStructureType);
4002         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4003         vkStream->alloc((void**)&forUnmarshaling->pNext,
4004                         goldfish_vk_extension_struct_size_with_stream_features(
4005                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4006         *(VkStructureType*)forUnmarshaling->pNext = extType;
4007         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4008                                            ptr);
4009     }
4010     memcpy((uint32_t*)&forUnmarshaling->deviceMask, *ptr, sizeof(uint32_t));
4011     *ptr += sizeof(uint32_t);
4012 }
4013 
reservedunmarshal_VkDeviceGroupSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupSubmitInfo * forUnmarshaling,uint8_t ** ptr)4014 void reservedunmarshal_VkDeviceGroupSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
4015                                                VkDeviceGroupSubmitInfo* forUnmarshaling,
4016                                                uint8_t** ptr) {
4017     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4018     *ptr += sizeof(VkStructureType);
4019     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4020         rootType = forUnmarshaling->sType;
4021     }
4022     uint32_t pNext_size;
4023     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4024     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4025     *ptr += sizeof(uint32_t);
4026     forUnmarshaling->pNext = nullptr;
4027     if (pNext_size) {
4028         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4029         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4030         *ptr += sizeof(VkStructureType);
4031         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4032         vkStream->alloc((void**)&forUnmarshaling->pNext,
4033                         goldfish_vk_extension_struct_size_with_stream_features(
4034                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4035         *(VkStructureType*)forUnmarshaling->pNext = extType;
4036         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4037                                            ptr);
4038     }
4039     memcpy((uint32_t*)&forUnmarshaling->waitSemaphoreCount, *ptr, sizeof(uint32_t));
4040     *ptr += sizeof(uint32_t);
4041     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreDeviceIndices,
4042                     forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
4043     memcpy((uint32_t*)forUnmarshaling->pWaitSemaphoreDeviceIndices, *ptr,
4044            forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
4045     *ptr += forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t);
4046     memcpy((uint32_t*)&forUnmarshaling->commandBufferCount, *ptr, sizeof(uint32_t));
4047     *ptr += sizeof(uint32_t);
4048     vkStream->alloc((void**)&forUnmarshaling->pCommandBufferDeviceMasks,
4049                     forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
4050     memcpy((uint32_t*)forUnmarshaling->pCommandBufferDeviceMasks, *ptr,
4051            forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
4052     *ptr += forUnmarshaling->commandBufferCount * sizeof(const uint32_t);
4053     memcpy((uint32_t*)&forUnmarshaling->signalSemaphoreCount, *ptr, sizeof(uint32_t));
4054     *ptr += sizeof(uint32_t);
4055     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreDeviceIndices,
4056                     forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
4057     memcpy((uint32_t*)forUnmarshaling->pSignalSemaphoreDeviceIndices, *ptr,
4058            forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
4059     *ptr += forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t);
4060 }
4061 
reservedunmarshal_VkDeviceGroupBindSparseInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupBindSparseInfo * forUnmarshaling,uint8_t ** ptr)4062 void reservedunmarshal_VkDeviceGroupBindSparseInfo(VulkanStream* vkStream, VkStructureType rootType,
4063                                                    VkDeviceGroupBindSparseInfo* forUnmarshaling,
4064                                                    uint8_t** ptr) {
4065     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4066     *ptr += sizeof(VkStructureType);
4067     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4068         rootType = forUnmarshaling->sType;
4069     }
4070     uint32_t pNext_size;
4071     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4072     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4073     *ptr += sizeof(uint32_t);
4074     forUnmarshaling->pNext = nullptr;
4075     if (pNext_size) {
4076         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4077         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4078         *ptr += sizeof(VkStructureType);
4079         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4080         vkStream->alloc((void**)&forUnmarshaling->pNext,
4081                         goldfish_vk_extension_struct_size_with_stream_features(
4082                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4083         *(VkStructureType*)forUnmarshaling->pNext = extType;
4084         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4085                                            ptr);
4086     }
4087     memcpy((uint32_t*)&forUnmarshaling->resourceDeviceIndex, *ptr, sizeof(uint32_t));
4088     *ptr += sizeof(uint32_t);
4089     memcpy((uint32_t*)&forUnmarshaling->memoryDeviceIndex, *ptr, sizeof(uint32_t));
4090     *ptr += sizeof(uint32_t);
4091 }
4092 
reservedunmarshal_VkBindBufferMemoryDeviceGroupInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindBufferMemoryDeviceGroupInfo * forUnmarshaling,uint8_t ** ptr)4093 void reservedunmarshal_VkBindBufferMemoryDeviceGroupInfo(
4094     VulkanStream* vkStream, VkStructureType rootType,
4095     VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling, uint8_t** ptr) {
4096     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4097     *ptr += sizeof(VkStructureType);
4098     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4099         rootType = forUnmarshaling->sType;
4100     }
4101     uint32_t pNext_size;
4102     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4103     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4104     *ptr += sizeof(uint32_t);
4105     forUnmarshaling->pNext = nullptr;
4106     if (pNext_size) {
4107         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4108         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4109         *ptr += sizeof(VkStructureType);
4110         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4111         vkStream->alloc((void**)&forUnmarshaling->pNext,
4112                         goldfish_vk_extension_struct_size_with_stream_features(
4113                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4114         *(VkStructureType*)forUnmarshaling->pNext = extType;
4115         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4116                                            ptr);
4117     }
4118     memcpy((uint32_t*)&forUnmarshaling->deviceIndexCount, *ptr, sizeof(uint32_t));
4119     *ptr += sizeof(uint32_t);
4120     vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices,
4121                     forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
4122     memcpy((uint32_t*)forUnmarshaling->pDeviceIndices, *ptr,
4123            forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
4124     *ptr += forUnmarshaling->deviceIndexCount * sizeof(const uint32_t);
4125 }
4126 
reservedunmarshal_VkBindImageMemoryDeviceGroupInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindImageMemoryDeviceGroupInfo * forUnmarshaling,uint8_t ** ptr)4127 void reservedunmarshal_VkBindImageMemoryDeviceGroupInfo(
4128     VulkanStream* vkStream, VkStructureType rootType,
4129     VkBindImageMemoryDeviceGroupInfo* forUnmarshaling, uint8_t** ptr) {
4130     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4131     *ptr += sizeof(VkStructureType);
4132     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4133         rootType = forUnmarshaling->sType;
4134     }
4135     uint32_t pNext_size;
4136     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4137     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4138     *ptr += sizeof(uint32_t);
4139     forUnmarshaling->pNext = nullptr;
4140     if (pNext_size) {
4141         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4142         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4143         *ptr += sizeof(VkStructureType);
4144         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4145         vkStream->alloc((void**)&forUnmarshaling->pNext,
4146                         goldfish_vk_extension_struct_size_with_stream_features(
4147                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4148         *(VkStructureType*)forUnmarshaling->pNext = extType;
4149         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4150                                            ptr);
4151     }
4152     memcpy((uint32_t*)&forUnmarshaling->deviceIndexCount, *ptr, sizeof(uint32_t));
4153     *ptr += sizeof(uint32_t);
4154     vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices,
4155                     forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
4156     memcpy((uint32_t*)forUnmarshaling->pDeviceIndices, *ptr,
4157            forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
4158     *ptr += forUnmarshaling->deviceIndexCount * sizeof(const uint32_t);
4159     memcpy((uint32_t*)&forUnmarshaling->splitInstanceBindRegionCount, *ptr, sizeof(uint32_t));
4160     *ptr += sizeof(uint32_t);
4161     vkStream->alloc((void**)&forUnmarshaling->pSplitInstanceBindRegions,
4162                     forUnmarshaling->splitInstanceBindRegionCount * sizeof(const VkRect2D));
4163     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->splitInstanceBindRegionCount; ++i) {
4164         reservedunmarshal_VkRect2D(
4165             vkStream, rootType, (VkRect2D*)(forUnmarshaling->pSplitInstanceBindRegions + i), ptr);
4166     }
4167 }
4168 
reservedunmarshal_VkPhysicalDeviceGroupProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceGroupProperties * forUnmarshaling,uint8_t ** ptr)4169 void reservedunmarshal_VkPhysicalDeviceGroupProperties(
4170     VulkanStream* vkStream, VkStructureType rootType,
4171     VkPhysicalDeviceGroupProperties* forUnmarshaling, uint8_t** ptr) {
4172     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4173     *ptr += sizeof(VkStructureType);
4174     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4175         rootType = forUnmarshaling->sType;
4176     }
4177     uint32_t pNext_size;
4178     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4179     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4180     *ptr += sizeof(uint32_t);
4181     forUnmarshaling->pNext = nullptr;
4182     if (pNext_size) {
4183         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4184         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4185         *ptr += sizeof(VkStructureType);
4186         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4187         vkStream->alloc((void**)&forUnmarshaling->pNext,
4188                         goldfish_vk_extension_struct_size_with_stream_features(
4189                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4190         *(VkStructureType*)forUnmarshaling->pNext = extType;
4191         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4192                                            ptr);
4193     }
4194     memcpy((uint32_t*)&forUnmarshaling->physicalDeviceCount, *ptr, sizeof(uint32_t));
4195     *ptr += sizeof(uint32_t);
4196     memcpy((VkPhysicalDevice*)forUnmarshaling->physicalDevices, *ptr,
4197            VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
4198     *ptr += VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice);
4199     memcpy((VkBool32*)&forUnmarshaling->subsetAllocation, *ptr, sizeof(VkBool32));
4200     *ptr += sizeof(VkBool32);
4201 }
4202 
reservedunmarshal_VkDeviceGroupDeviceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupDeviceCreateInfo * forUnmarshaling,uint8_t ** ptr)4203 void reservedunmarshal_VkDeviceGroupDeviceCreateInfo(VulkanStream* vkStream,
4204                                                      VkStructureType rootType,
4205                                                      VkDeviceGroupDeviceCreateInfo* forUnmarshaling,
4206                                                      uint8_t** ptr) {
4207     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4208     *ptr += sizeof(VkStructureType);
4209     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4210         rootType = forUnmarshaling->sType;
4211     }
4212     uint32_t pNext_size;
4213     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4214     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4215     *ptr += sizeof(uint32_t);
4216     forUnmarshaling->pNext = nullptr;
4217     if (pNext_size) {
4218         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4219         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4220         *ptr += sizeof(VkStructureType);
4221         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4222         vkStream->alloc((void**)&forUnmarshaling->pNext,
4223                         goldfish_vk_extension_struct_size_with_stream_features(
4224                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4225         *(VkStructureType*)forUnmarshaling->pNext = extType;
4226         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4227                                            ptr);
4228     }
4229     memcpy((uint32_t*)&forUnmarshaling->physicalDeviceCount, *ptr, sizeof(uint32_t));
4230     *ptr += sizeof(uint32_t);
4231     vkStream->alloc((void**)&forUnmarshaling->pPhysicalDevices,
4232                     forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
4233     if (forUnmarshaling->physicalDeviceCount) {
4234         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
4235         *ptr += 8 * forUnmarshaling->physicalDeviceCount;
4236         if (forUnmarshaling) {
4237             for (uint32_t k = 0; k < forUnmarshaling->physicalDeviceCount; ++k) {
4238                 uint64_t tmpval;
4239                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
4240                 *(((VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices) + k) =
4241                     tmpval ? (VkPhysicalDevice)unbox_VkPhysicalDevice((VkPhysicalDevice)tmpval)
4242                            : VK_NULL_HANDLE;
4243             }
4244         }
4245     }
4246 }
4247 
reservedunmarshal_VkBufferMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,VkBufferMemoryRequirementsInfo2 * forUnmarshaling,uint8_t ** ptr)4248 void reservedunmarshal_VkBufferMemoryRequirementsInfo2(
4249     VulkanStream* vkStream, VkStructureType rootType,
4250     VkBufferMemoryRequirementsInfo2* forUnmarshaling, uint8_t** ptr) {
4251     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4252     *ptr += sizeof(VkStructureType);
4253     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4254         rootType = forUnmarshaling->sType;
4255     }
4256     uint32_t pNext_size;
4257     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4258     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4259     *ptr += sizeof(uint32_t);
4260     forUnmarshaling->pNext = nullptr;
4261     if (pNext_size) {
4262         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4263         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4264         *ptr += sizeof(VkStructureType);
4265         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4266         vkStream->alloc((void**)&forUnmarshaling->pNext,
4267                         goldfish_vk_extension_struct_size_with_stream_features(
4268                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4269         *(VkStructureType*)forUnmarshaling->pNext = extType;
4270         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4271                                            ptr);
4272     }
4273     uint64_t cgen_var_0;
4274     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
4275     *ptr += 1 * 8;
4276     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
4277 }
4278 
reservedunmarshal_VkImageMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,VkImageMemoryRequirementsInfo2 * forUnmarshaling,uint8_t ** ptr)4279 void reservedunmarshal_VkImageMemoryRequirementsInfo2(
4280     VulkanStream* vkStream, VkStructureType rootType,
4281     VkImageMemoryRequirementsInfo2* forUnmarshaling, uint8_t** ptr) {
4282     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4283     *ptr += sizeof(VkStructureType);
4284     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4285         rootType = forUnmarshaling->sType;
4286     }
4287     uint32_t pNext_size;
4288     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4289     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4290     *ptr += sizeof(uint32_t);
4291     forUnmarshaling->pNext = nullptr;
4292     if (pNext_size) {
4293         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4294         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4295         *ptr += sizeof(VkStructureType);
4296         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4297         vkStream->alloc((void**)&forUnmarshaling->pNext,
4298                         goldfish_vk_extension_struct_size_with_stream_features(
4299                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4300         *(VkStructureType*)forUnmarshaling->pNext = extType;
4301         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4302                                            ptr);
4303     }
4304     uint64_t cgen_var_0;
4305     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
4306     *ptr += 1 * 8;
4307     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
4308 }
4309 
reservedunmarshal_VkImageSparseMemoryRequirementsInfo2(VulkanStream * vkStream,VkStructureType rootType,VkImageSparseMemoryRequirementsInfo2 * forUnmarshaling,uint8_t ** ptr)4310 void reservedunmarshal_VkImageSparseMemoryRequirementsInfo2(
4311     VulkanStream* vkStream, VkStructureType rootType,
4312     VkImageSparseMemoryRequirementsInfo2* forUnmarshaling, uint8_t** ptr) {
4313     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4314     *ptr += sizeof(VkStructureType);
4315     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4316         rootType = forUnmarshaling->sType;
4317     }
4318     uint32_t pNext_size;
4319     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4320     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4321     *ptr += sizeof(uint32_t);
4322     forUnmarshaling->pNext = nullptr;
4323     if (pNext_size) {
4324         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4325         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4326         *ptr += sizeof(VkStructureType);
4327         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4328         vkStream->alloc((void**)&forUnmarshaling->pNext,
4329                         goldfish_vk_extension_struct_size_with_stream_features(
4330                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4331         *(VkStructureType*)forUnmarshaling->pNext = extType;
4332         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4333                                            ptr);
4334     }
4335     uint64_t cgen_var_0;
4336     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
4337     *ptr += 1 * 8;
4338     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
4339 }
4340 
reservedunmarshal_VkMemoryRequirements2(VulkanStream * vkStream,VkStructureType rootType,VkMemoryRequirements2 * forUnmarshaling,uint8_t ** ptr)4341 void reservedunmarshal_VkMemoryRequirements2(VulkanStream* vkStream, VkStructureType rootType,
4342                                              VkMemoryRequirements2* forUnmarshaling,
4343                                              uint8_t** ptr) {
4344     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4345     *ptr += sizeof(VkStructureType);
4346     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4347         rootType = forUnmarshaling->sType;
4348     }
4349     uint32_t pNext_size;
4350     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4351     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4352     *ptr += sizeof(uint32_t);
4353     forUnmarshaling->pNext = nullptr;
4354     if (pNext_size) {
4355         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4356         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4357         *ptr += sizeof(VkStructureType);
4358         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4359         vkStream->alloc((void**)&forUnmarshaling->pNext,
4360                         goldfish_vk_extension_struct_size_with_stream_features(
4361                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4362         *(VkStructureType*)forUnmarshaling->pNext = extType;
4363         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4364                                            ptr);
4365     }
4366     reservedunmarshal_VkMemoryRequirements(
4367         vkStream, rootType, (VkMemoryRequirements*)(&forUnmarshaling->memoryRequirements), ptr);
4368 }
4369 
reservedunmarshal_VkSparseImageMemoryRequirements2(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageMemoryRequirements2 * forUnmarshaling,uint8_t ** ptr)4370 void reservedunmarshal_VkSparseImageMemoryRequirements2(
4371     VulkanStream* vkStream, VkStructureType rootType,
4372     VkSparseImageMemoryRequirements2* forUnmarshaling, uint8_t** ptr) {
4373     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4374     *ptr += sizeof(VkStructureType);
4375     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4376         rootType = forUnmarshaling->sType;
4377     }
4378     uint32_t pNext_size;
4379     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4380     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4381     *ptr += sizeof(uint32_t);
4382     forUnmarshaling->pNext = nullptr;
4383     if (pNext_size) {
4384         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4385         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4386         *ptr += sizeof(VkStructureType);
4387         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4388         vkStream->alloc((void**)&forUnmarshaling->pNext,
4389                         goldfish_vk_extension_struct_size_with_stream_features(
4390                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4391         *(VkStructureType*)forUnmarshaling->pNext = extType;
4392         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4393                                            ptr);
4394     }
4395     reservedunmarshal_VkSparseImageMemoryRequirements(
4396         vkStream, rootType,
4397         (VkSparseImageMemoryRequirements*)(&forUnmarshaling->memoryRequirements), ptr);
4398 }
4399 
reservedunmarshal_VkPhysicalDeviceFeatures2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFeatures2 * forUnmarshaling,uint8_t ** ptr)4400 void reservedunmarshal_VkPhysicalDeviceFeatures2(VulkanStream* vkStream, VkStructureType rootType,
4401                                                  VkPhysicalDeviceFeatures2* forUnmarshaling,
4402                                                  uint8_t** ptr) {
4403     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4404     *ptr += sizeof(VkStructureType);
4405     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4406         rootType = forUnmarshaling->sType;
4407     }
4408     uint32_t pNext_size;
4409     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4410     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4411     *ptr += sizeof(uint32_t);
4412     forUnmarshaling->pNext = nullptr;
4413     if (pNext_size) {
4414         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4415         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4416         *ptr += sizeof(VkStructureType);
4417         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4418         vkStream->alloc((void**)&forUnmarshaling->pNext,
4419                         goldfish_vk_extension_struct_size_with_stream_features(
4420                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4421         *(VkStructureType*)forUnmarshaling->pNext = extType;
4422         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4423                                            ptr);
4424     }
4425     reservedunmarshal_VkPhysicalDeviceFeatures(
4426         vkStream, rootType, (VkPhysicalDeviceFeatures*)(&forUnmarshaling->features), ptr);
4427 }
4428 
reservedunmarshal_VkPhysicalDeviceProperties2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProperties2 * forUnmarshaling,uint8_t ** ptr)4429 void reservedunmarshal_VkPhysicalDeviceProperties2(VulkanStream* vkStream, VkStructureType rootType,
4430                                                    VkPhysicalDeviceProperties2* forUnmarshaling,
4431                                                    uint8_t** ptr) {
4432     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4433     *ptr += sizeof(VkStructureType);
4434     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4435         rootType = forUnmarshaling->sType;
4436     }
4437     uint32_t pNext_size;
4438     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4439     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4440     *ptr += sizeof(uint32_t);
4441     forUnmarshaling->pNext = nullptr;
4442     if (pNext_size) {
4443         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4444         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4445         *ptr += sizeof(VkStructureType);
4446         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4447         vkStream->alloc((void**)&forUnmarshaling->pNext,
4448                         goldfish_vk_extension_struct_size_with_stream_features(
4449                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4450         *(VkStructureType*)forUnmarshaling->pNext = extType;
4451         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4452                                            ptr);
4453     }
4454     reservedunmarshal_VkPhysicalDeviceProperties(
4455         vkStream, rootType, (VkPhysicalDeviceProperties*)(&forUnmarshaling->properties), ptr);
4456 }
4457 
reservedunmarshal_VkFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,VkFormatProperties2 * forUnmarshaling,uint8_t ** ptr)4458 void reservedunmarshal_VkFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
4459                                            VkFormatProperties2* forUnmarshaling, uint8_t** ptr) {
4460     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4461     *ptr += sizeof(VkStructureType);
4462     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4463         rootType = forUnmarshaling->sType;
4464     }
4465     uint32_t pNext_size;
4466     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4467     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4468     *ptr += sizeof(uint32_t);
4469     forUnmarshaling->pNext = nullptr;
4470     if (pNext_size) {
4471         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4472         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4473         *ptr += sizeof(VkStructureType);
4474         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4475         vkStream->alloc((void**)&forUnmarshaling->pNext,
4476                         goldfish_vk_extension_struct_size_with_stream_features(
4477                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4478         *(VkStructureType*)forUnmarshaling->pNext = extType;
4479         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4480                                            ptr);
4481     }
4482     reservedunmarshal_VkFormatProperties(
4483         vkStream, rootType, (VkFormatProperties*)(&forUnmarshaling->formatProperties), ptr);
4484 }
4485 
reservedunmarshal_VkImageFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,VkImageFormatProperties2 * forUnmarshaling,uint8_t ** ptr)4486 void reservedunmarshal_VkImageFormatProperties2(VulkanStream* vkStream, VkStructureType rootType,
4487                                                 VkImageFormatProperties2* forUnmarshaling,
4488                                                 uint8_t** ptr) {
4489     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4490     *ptr += sizeof(VkStructureType);
4491     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4492         rootType = forUnmarshaling->sType;
4493     }
4494     uint32_t pNext_size;
4495     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4496     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4497     *ptr += sizeof(uint32_t);
4498     forUnmarshaling->pNext = nullptr;
4499     if (pNext_size) {
4500         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4501         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4502         *ptr += sizeof(VkStructureType);
4503         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4504         vkStream->alloc((void**)&forUnmarshaling->pNext,
4505                         goldfish_vk_extension_struct_size_with_stream_features(
4506                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4507         *(VkStructureType*)forUnmarshaling->pNext = extType;
4508         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4509                                            ptr);
4510     }
4511     reservedunmarshal_VkImageFormatProperties(
4512         vkStream, rootType, (VkImageFormatProperties*)(&forUnmarshaling->imageFormatProperties),
4513         ptr);
4514 }
4515 
reservedunmarshal_VkPhysicalDeviceImageFormatInfo2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageFormatInfo2 * forUnmarshaling,uint8_t ** ptr)4516 void reservedunmarshal_VkPhysicalDeviceImageFormatInfo2(
4517     VulkanStream* vkStream, VkStructureType rootType,
4518     VkPhysicalDeviceImageFormatInfo2* forUnmarshaling, uint8_t** ptr) {
4519     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4520     *ptr += sizeof(VkStructureType);
4521     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4522         rootType = forUnmarshaling->sType;
4523     }
4524     uint32_t pNext_size;
4525     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4526     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4527     *ptr += sizeof(uint32_t);
4528     forUnmarshaling->pNext = nullptr;
4529     if (pNext_size) {
4530         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4531         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4532         *ptr += sizeof(VkStructureType);
4533         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4534         vkStream->alloc((void**)&forUnmarshaling->pNext,
4535                         goldfish_vk_extension_struct_size_with_stream_features(
4536                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4537         *(VkStructureType*)forUnmarshaling->pNext = extType;
4538         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4539                                            ptr);
4540     }
4541     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
4542     *ptr += sizeof(VkFormat);
4543     memcpy((VkImageType*)&forUnmarshaling->type, *ptr, sizeof(VkImageType));
4544     *ptr += sizeof(VkImageType);
4545     memcpy((VkImageTiling*)&forUnmarshaling->tiling, *ptr, sizeof(VkImageTiling));
4546     *ptr += sizeof(VkImageTiling);
4547     memcpy((VkImageUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkImageUsageFlags));
4548     *ptr += sizeof(VkImageUsageFlags);
4549     memcpy((VkImageCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkImageCreateFlags));
4550     *ptr += sizeof(VkImageCreateFlags);
4551 }
4552 
reservedunmarshal_VkQueueFamilyProperties2(VulkanStream * vkStream,VkStructureType rootType,VkQueueFamilyProperties2 * forUnmarshaling,uint8_t ** ptr)4553 void reservedunmarshal_VkQueueFamilyProperties2(VulkanStream* vkStream, VkStructureType rootType,
4554                                                 VkQueueFamilyProperties2* forUnmarshaling,
4555                                                 uint8_t** ptr) {
4556     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4557     *ptr += sizeof(VkStructureType);
4558     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4559         rootType = forUnmarshaling->sType;
4560     }
4561     uint32_t pNext_size;
4562     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4563     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4564     *ptr += sizeof(uint32_t);
4565     forUnmarshaling->pNext = nullptr;
4566     if (pNext_size) {
4567         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4568         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4569         *ptr += sizeof(VkStructureType);
4570         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4571         vkStream->alloc((void**)&forUnmarshaling->pNext,
4572                         goldfish_vk_extension_struct_size_with_stream_features(
4573                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4574         *(VkStructureType*)forUnmarshaling->pNext = extType;
4575         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4576                                            ptr);
4577     }
4578     reservedunmarshal_VkQueueFamilyProperties(
4579         vkStream, rootType, (VkQueueFamilyProperties*)(&forUnmarshaling->queueFamilyProperties),
4580         ptr);
4581 }
4582 
reservedunmarshal_VkPhysicalDeviceMemoryProperties2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMemoryProperties2 * forUnmarshaling,uint8_t ** ptr)4583 void reservedunmarshal_VkPhysicalDeviceMemoryProperties2(
4584     VulkanStream* vkStream, VkStructureType rootType,
4585     VkPhysicalDeviceMemoryProperties2* forUnmarshaling, uint8_t** ptr) {
4586     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4587     *ptr += sizeof(VkStructureType);
4588     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4589         rootType = forUnmarshaling->sType;
4590     }
4591     uint32_t pNext_size;
4592     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4593     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4594     *ptr += sizeof(uint32_t);
4595     forUnmarshaling->pNext = nullptr;
4596     if (pNext_size) {
4597         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4598         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4599         *ptr += sizeof(VkStructureType);
4600         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4601         vkStream->alloc((void**)&forUnmarshaling->pNext,
4602                         goldfish_vk_extension_struct_size_with_stream_features(
4603                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4604         *(VkStructureType*)forUnmarshaling->pNext = extType;
4605         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4606                                            ptr);
4607     }
4608     reservedunmarshal_VkPhysicalDeviceMemoryProperties(
4609         vkStream, rootType, (VkPhysicalDeviceMemoryProperties*)(&forUnmarshaling->memoryProperties),
4610         ptr);
4611 }
4612 
reservedunmarshal_VkSparseImageFormatProperties2(VulkanStream * vkStream,VkStructureType rootType,VkSparseImageFormatProperties2 * forUnmarshaling,uint8_t ** ptr)4613 void reservedunmarshal_VkSparseImageFormatProperties2(
4614     VulkanStream* vkStream, VkStructureType rootType,
4615     VkSparseImageFormatProperties2* forUnmarshaling, uint8_t** ptr) {
4616     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4617     *ptr += sizeof(VkStructureType);
4618     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4619         rootType = forUnmarshaling->sType;
4620     }
4621     uint32_t pNext_size;
4622     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4623     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4624     *ptr += sizeof(uint32_t);
4625     forUnmarshaling->pNext = nullptr;
4626     if (pNext_size) {
4627         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4628         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4629         *ptr += sizeof(VkStructureType);
4630         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4631         vkStream->alloc((void**)&forUnmarshaling->pNext,
4632                         goldfish_vk_extension_struct_size_with_stream_features(
4633                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4634         *(VkStructureType*)forUnmarshaling->pNext = extType;
4635         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4636                                            ptr);
4637     }
4638     reservedunmarshal_VkSparseImageFormatProperties(
4639         vkStream, rootType, (VkSparseImageFormatProperties*)(&forUnmarshaling->properties), ptr);
4640 }
4641 
reservedunmarshal_VkPhysicalDeviceSparseImageFormatInfo2(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSparseImageFormatInfo2 * forUnmarshaling,uint8_t ** ptr)4642 void reservedunmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
4643     VulkanStream* vkStream, VkStructureType rootType,
4644     VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling, uint8_t** ptr) {
4645     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4646     *ptr += sizeof(VkStructureType);
4647     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4648         rootType = forUnmarshaling->sType;
4649     }
4650     uint32_t pNext_size;
4651     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4652     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4653     *ptr += sizeof(uint32_t);
4654     forUnmarshaling->pNext = nullptr;
4655     if (pNext_size) {
4656         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4657         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4658         *ptr += sizeof(VkStructureType);
4659         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4660         vkStream->alloc((void**)&forUnmarshaling->pNext,
4661                         goldfish_vk_extension_struct_size_with_stream_features(
4662                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4663         *(VkStructureType*)forUnmarshaling->pNext = extType;
4664         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4665                                            ptr);
4666     }
4667     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
4668     *ptr += sizeof(VkFormat);
4669     memcpy((VkImageType*)&forUnmarshaling->type, *ptr, sizeof(VkImageType));
4670     *ptr += sizeof(VkImageType);
4671     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->samples, *ptr, sizeof(VkSampleCountFlagBits));
4672     *ptr += sizeof(VkSampleCountFlagBits);
4673     memcpy((VkImageUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkImageUsageFlags));
4674     *ptr += sizeof(VkImageUsageFlags);
4675     memcpy((VkImageTiling*)&forUnmarshaling->tiling, *ptr, sizeof(VkImageTiling));
4676     *ptr += sizeof(VkImageTiling);
4677 }
4678 
reservedunmarshal_VkPhysicalDevicePointClippingProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePointClippingProperties * forUnmarshaling,uint8_t ** ptr)4679 void reservedunmarshal_VkPhysicalDevicePointClippingProperties(
4680     VulkanStream* vkStream, VkStructureType rootType,
4681     VkPhysicalDevicePointClippingProperties* forUnmarshaling, uint8_t** ptr) {
4682     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4683     *ptr += sizeof(VkStructureType);
4684     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4685         rootType = forUnmarshaling->sType;
4686     }
4687     uint32_t pNext_size;
4688     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4689     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4690     *ptr += sizeof(uint32_t);
4691     forUnmarshaling->pNext = nullptr;
4692     if (pNext_size) {
4693         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4694         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4695         *ptr += sizeof(VkStructureType);
4696         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4697         vkStream->alloc((void**)&forUnmarshaling->pNext,
4698                         goldfish_vk_extension_struct_size_with_stream_features(
4699                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4700         *(VkStructureType*)forUnmarshaling->pNext = extType;
4701         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4702                                            ptr);
4703     }
4704     memcpy((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior, *ptr,
4705            sizeof(VkPointClippingBehavior));
4706     *ptr += sizeof(VkPointClippingBehavior);
4707 }
4708 
reservedunmarshal_VkInputAttachmentAspectReference(VulkanStream * vkStream,VkStructureType rootType,VkInputAttachmentAspectReference * forUnmarshaling,uint8_t ** ptr)4709 void reservedunmarshal_VkInputAttachmentAspectReference(
4710     VulkanStream* vkStream, VkStructureType rootType,
4711     VkInputAttachmentAspectReference* forUnmarshaling, uint8_t** ptr) {
4712     memcpy((uint32_t*)&forUnmarshaling->subpass, *ptr, sizeof(uint32_t));
4713     *ptr += sizeof(uint32_t);
4714     memcpy((uint32_t*)&forUnmarshaling->inputAttachmentIndex, *ptr, sizeof(uint32_t));
4715     *ptr += sizeof(uint32_t);
4716     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
4717     *ptr += sizeof(VkImageAspectFlags);
4718 }
4719 
reservedunmarshal_VkRenderPassInputAttachmentAspectCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassInputAttachmentAspectCreateInfo * forUnmarshaling,uint8_t ** ptr)4720 void reservedunmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
4721     VulkanStream* vkStream, VkStructureType rootType,
4722     VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling, uint8_t** ptr) {
4723     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4724     *ptr += sizeof(VkStructureType);
4725     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4726         rootType = forUnmarshaling->sType;
4727     }
4728     uint32_t pNext_size;
4729     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4730     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4731     *ptr += sizeof(uint32_t);
4732     forUnmarshaling->pNext = nullptr;
4733     if (pNext_size) {
4734         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4735         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4736         *ptr += sizeof(VkStructureType);
4737         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4738         vkStream->alloc((void**)&forUnmarshaling->pNext,
4739                         goldfish_vk_extension_struct_size_with_stream_features(
4740                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4741         *(VkStructureType*)forUnmarshaling->pNext = extType;
4742         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4743                                            ptr);
4744     }
4745     memcpy((uint32_t*)&forUnmarshaling->aspectReferenceCount, *ptr, sizeof(uint32_t));
4746     *ptr += sizeof(uint32_t);
4747     vkStream->alloc(
4748         (void**)&forUnmarshaling->pAspectReferences,
4749         forUnmarshaling->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
4750     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->aspectReferenceCount; ++i) {
4751         reservedunmarshal_VkInputAttachmentAspectReference(
4752             vkStream, rootType,
4753             (VkInputAttachmentAspectReference*)(forUnmarshaling->pAspectReferences + i), ptr);
4754     }
4755 }
4756 
reservedunmarshal_VkImageViewUsageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageViewUsageCreateInfo * forUnmarshaling,uint8_t ** ptr)4757 void reservedunmarshal_VkImageViewUsageCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
4758                                                   VkImageViewUsageCreateInfo* forUnmarshaling,
4759                                                   uint8_t** ptr) {
4760     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4761     *ptr += sizeof(VkStructureType);
4762     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4763         rootType = forUnmarshaling->sType;
4764     }
4765     uint32_t pNext_size;
4766     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4767     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4768     *ptr += sizeof(uint32_t);
4769     forUnmarshaling->pNext = nullptr;
4770     if (pNext_size) {
4771         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4772         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4773         *ptr += sizeof(VkStructureType);
4774         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4775         vkStream->alloc((void**)&forUnmarshaling->pNext,
4776                         goldfish_vk_extension_struct_size_with_stream_features(
4777                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4778         *(VkStructureType*)forUnmarshaling->pNext = extType;
4779         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4780                                            ptr);
4781     }
4782     memcpy((VkImageUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkImageUsageFlags));
4783     *ptr += sizeof(VkImageUsageFlags);
4784 }
4785 
reservedunmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineTessellationDomainOriginStateCreateInfo * forUnmarshaling,uint8_t ** ptr)4786 void reservedunmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
4787     VulkanStream* vkStream, VkStructureType rootType,
4788     VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling, uint8_t** ptr) {
4789     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4790     *ptr += sizeof(VkStructureType);
4791     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4792         rootType = forUnmarshaling->sType;
4793     }
4794     uint32_t pNext_size;
4795     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4796     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4797     *ptr += sizeof(uint32_t);
4798     forUnmarshaling->pNext = nullptr;
4799     if (pNext_size) {
4800         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4801         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4802         *ptr += sizeof(VkStructureType);
4803         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4804         vkStream->alloc((void**)&forUnmarshaling->pNext,
4805                         goldfish_vk_extension_struct_size_with_stream_features(
4806                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4807         *(VkStructureType*)forUnmarshaling->pNext = extType;
4808         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4809                                            ptr);
4810     }
4811     memcpy((VkTessellationDomainOrigin*)&forUnmarshaling->domainOrigin, *ptr,
4812            sizeof(VkTessellationDomainOrigin));
4813     *ptr += sizeof(VkTessellationDomainOrigin);
4814 }
4815 
reservedunmarshal_VkRenderPassMultiviewCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassMultiviewCreateInfo * forUnmarshaling,uint8_t ** ptr)4816 void reservedunmarshal_VkRenderPassMultiviewCreateInfo(
4817     VulkanStream* vkStream, VkStructureType rootType,
4818     VkRenderPassMultiviewCreateInfo* forUnmarshaling, uint8_t** ptr) {
4819     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4820     *ptr += sizeof(VkStructureType);
4821     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4822         rootType = forUnmarshaling->sType;
4823     }
4824     uint32_t pNext_size;
4825     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4826     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4827     *ptr += sizeof(uint32_t);
4828     forUnmarshaling->pNext = nullptr;
4829     if (pNext_size) {
4830         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4831         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4832         *ptr += sizeof(VkStructureType);
4833         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4834         vkStream->alloc((void**)&forUnmarshaling->pNext,
4835                         goldfish_vk_extension_struct_size_with_stream_features(
4836                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4837         *(VkStructureType*)forUnmarshaling->pNext = extType;
4838         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4839                                            ptr);
4840     }
4841     memcpy((uint32_t*)&forUnmarshaling->subpassCount, *ptr, sizeof(uint32_t));
4842     *ptr += sizeof(uint32_t);
4843     vkStream->alloc((void**)&forUnmarshaling->pViewMasks,
4844                     forUnmarshaling->subpassCount * sizeof(const uint32_t));
4845     memcpy((uint32_t*)forUnmarshaling->pViewMasks, *ptr,
4846            forUnmarshaling->subpassCount * sizeof(const uint32_t));
4847     *ptr += forUnmarshaling->subpassCount * sizeof(const uint32_t);
4848     memcpy((uint32_t*)&forUnmarshaling->dependencyCount, *ptr, sizeof(uint32_t));
4849     *ptr += sizeof(uint32_t);
4850     vkStream->alloc((void**)&forUnmarshaling->pViewOffsets,
4851                     forUnmarshaling->dependencyCount * sizeof(const int32_t));
4852     memcpy((int32_t*)forUnmarshaling->pViewOffsets, *ptr,
4853            forUnmarshaling->dependencyCount * sizeof(const int32_t));
4854     *ptr += forUnmarshaling->dependencyCount * sizeof(const int32_t);
4855     memcpy((uint32_t*)&forUnmarshaling->correlationMaskCount, *ptr, sizeof(uint32_t));
4856     *ptr += sizeof(uint32_t);
4857     vkStream->alloc((void**)&forUnmarshaling->pCorrelationMasks,
4858                     forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
4859     memcpy((uint32_t*)forUnmarshaling->pCorrelationMasks, *ptr,
4860            forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
4861     *ptr += forUnmarshaling->correlationMaskCount * sizeof(const uint32_t);
4862 }
4863 
reservedunmarshal_VkPhysicalDeviceMultiviewFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMultiviewFeatures * forUnmarshaling,uint8_t ** ptr)4864 void reservedunmarshal_VkPhysicalDeviceMultiviewFeatures(
4865     VulkanStream* vkStream, VkStructureType rootType,
4866     VkPhysicalDeviceMultiviewFeatures* forUnmarshaling, uint8_t** ptr) {
4867     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4868     *ptr += sizeof(VkStructureType);
4869     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4870         rootType = forUnmarshaling->sType;
4871     }
4872     uint32_t pNext_size;
4873     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4874     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4875     *ptr += sizeof(uint32_t);
4876     forUnmarshaling->pNext = nullptr;
4877     if (pNext_size) {
4878         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4879         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4880         *ptr += sizeof(VkStructureType);
4881         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4882         vkStream->alloc((void**)&forUnmarshaling->pNext,
4883                         goldfish_vk_extension_struct_size_with_stream_features(
4884                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4885         *(VkStructureType*)forUnmarshaling->pNext = extType;
4886         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4887                                            ptr);
4888     }
4889     memcpy((VkBool32*)&forUnmarshaling->multiview, *ptr, sizeof(VkBool32));
4890     *ptr += sizeof(VkBool32);
4891     memcpy((VkBool32*)&forUnmarshaling->multiviewGeometryShader, *ptr, sizeof(VkBool32));
4892     *ptr += sizeof(VkBool32);
4893     memcpy((VkBool32*)&forUnmarshaling->multiviewTessellationShader, *ptr, sizeof(VkBool32));
4894     *ptr += sizeof(VkBool32);
4895 }
4896 
reservedunmarshal_VkPhysicalDeviceMultiviewProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMultiviewProperties * forUnmarshaling,uint8_t ** ptr)4897 void reservedunmarshal_VkPhysicalDeviceMultiviewProperties(
4898     VulkanStream* vkStream, VkStructureType rootType,
4899     VkPhysicalDeviceMultiviewProperties* forUnmarshaling, uint8_t** ptr) {
4900     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4901     *ptr += sizeof(VkStructureType);
4902     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4903         rootType = forUnmarshaling->sType;
4904     }
4905     uint32_t pNext_size;
4906     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4907     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4908     *ptr += sizeof(uint32_t);
4909     forUnmarshaling->pNext = nullptr;
4910     if (pNext_size) {
4911         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4912         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4913         *ptr += sizeof(VkStructureType);
4914         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4915         vkStream->alloc((void**)&forUnmarshaling->pNext,
4916                         goldfish_vk_extension_struct_size_with_stream_features(
4917                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4918         *(VkStructureType*)forUnmarshaling->pNext = extType;
4919         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4920                                            ptr);
4921     }
4922     memcpy((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, *ptr, sizeof(uint32_t));
4923     *ptr += sizeof(uint32_t);
4924     memcpy((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, *ptr, sizeof(uint32_t));
4925     *ptr += sizeof(uint32_t);
4926 }
4927 
reservedunmarshal_VkPhysicalDeviceVariablePointersFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVariablePointersFeatures * forUnmarshaling,uint8_t ** ptr)4928 void reservedunmarshal_VkPhysicalDeviceVariablePointersFeatures(
4929     VulkanStream* vkStream, VkStructureType rootType,
4930     VkPhysicalDeviceVariablePointersFeatures* forUnmarshaling, uint8_t** ptr) {
4931     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4932     *ptr += sizeof(VkStructureType);
4933     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4934         rootType = forUnmarshaling->sType;
4935     }
4936     uint32_t pNext_size;
4937     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4938     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4939     *ptr += sizeof(uint32_t);
4940     forUnmarshaling->pNext = nullptr;
4941     if (pNext_size) {
4942         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4943         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4944         *ptr += sizeof(VkStructureType);
4945         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4946         vkStream->alloc((void**)&forUnmarshaling->pNext,
4947                         goldfish_vk_extension_struct_size_with_stream_features(
4948                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4949         *(VkStructureType*)forUnmarshaling->pNext = extType;
4950         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4951                                            ptr);
4952     }
4953     memcpy((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, *ptr, sizeof(VkBool32));
4954     *ptr += sizeof(VkBool32);
4955     memcpy((VkBool32*)&forUnmarshaling->variablePointers, *ptr, sizeof(VkBool32));
4956     *ptr += sizeof(VkBool32);
4957 }
4958 
reservedunmarshal_VkPhysicalDeviceProtectedMemoryFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProtectedMemoryFeatures * forUnmarshaling,uint8_t ** ptr)4959 void reservedunmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
4960     VulkanStream* vkStream, VkStructureType rootType,
4961     VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling, uint8_t** ptr) {
4962     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4963     *ptr += sizeof(VkStructureType);
4964     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4965         rootType = forUnmarshaling->sType;
4966     }
4967     uint32_t pNext_size;
4968     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4969     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4970     *ptr += sizeof(uint32_t);
4971     forUnmarshaling->pNext = nullptr;
4972     if (pNext_size) {
4973         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
4974         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
4975         *ptr += sizeof(VkStructureType);
4976         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
4977         vkStream->alloc((void**)&forUnmarshaling->pNext,
4978                         goldfish_vk_extension_struct_size_with_stream_features(
4979                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
4980         *(VkStructureType*)forUnmarshaling->pNext = extType;
4981         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
4982                                            ptr);
4983     }
4984     memcpy((VkBool32*)&forUnmarshaling->protectedMemory, *ptr, sizeof(VkBool32));
4985     *ptr += sizeof(VkBool32);
4986 }
4987 
reservedunmarshal_VkPhysicalDeviceProtectedMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProtectedMemoryProperties * forUnmarshaling,uint8_t ** ptr)4988 void reservedunmarshal_VkPhysicalDeviceProtectedMemoryProperties(
4989     VulkanStream* vkStream, VkStructureType rootType,
4990     VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling, uint8_t** ptr) {
4991     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
4992     *ptr += sizeof(VkStructureType);
4993     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
4994         rootType = forUnmarshaling->sType;
4995     }
4996     uint32_t pNext_size;
4997     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
4998     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
4999     *ptr += sizeof(uint32_t);
5000     forUnmarshaling->pNext = nullptr;
5001     if (pNext_size) {
5002         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5003         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5004         *ptr += sizeof(VkStructureType);
5005         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5006         vkStream->alloc((void**)&forUnmarshaling->pNext,
5007                         goldfish_vk_extension_struct_size_with_stream_features(
5008                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5009         *(VkStructureType*)forUnmarshaling->pNext = extType;
5010         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5011                                            ptr);
5012     }
5013     memcpy((VkBool32*)&forUnmarshaling->protectedNoFault, *ptr, sizeof(VkBool32));
5014     *ptr += sizeof(VkBool32);
5015 }
5016 
reservedunmarshal_VkDeviceQueueInfo2(VulkanStream * vkStream,VkStructureType rootType,VkDeviceQueueInfo2 * forUnmarshaling,uint8_t ** ptr)5017 void reservedunmarshal_VkDeviceQueueInfo2(VulkanStream* vkStream, VkStructureType rootType,
5018                                           VkDeviceQueueInfo2* forUnmarshaling, uint8_t** ptr) {
5019     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5020     *ptr += sizeof(VkStructureType);
5021     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5022         rootType = forUnmarshaling->sType;
5023     }
5024     uint32_t pNext_size;
5025     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5026     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5027     *ptr += sizeof(uint32_t);
5028     forUnmarshaling->pNext = nullptr;
5029     if (pNext_size) {
5030         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5031         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5032         *ptr += sizeof(VkStructureType);
5033         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5034         vkStream->alloc((void**)&forUnmarshaling->pNext,
5035                         goldfish_vk_extension_struct_size_with_stream_features(
5036                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5037         *(VkStructureType*)forUnmarshaling->pNext = extType;
5038         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5039                                            ptr);
5040     }
5041     memcpy((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags, *ptr,
5042            sizeof(VkDeviceQueueCreateFlags));
5043     *ptr += sizeof(VkDeviceQueueCreateFlags);
5044     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndex, *ptr, sizeof(uint32_t));
5045     *ptr += sizeof(uint32_t);
5046     memcpy((uint32_t*)&forUnmarshaling->queueIndex, *ptr, sizeof(uint32_t));
5047     *ptr += sizeof(uint32_t);
5048 }
5049 
reservedunmarshal_VkProtectedSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkProtectedSubmitInfo * forUnmarshaling,uint8_t ** ptr)5050 void reservedunmarshal_VkProtectedSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
5051                                              VkProtectedSubmitInfo* forUnmarshaling,
5052                                              uint8_t** ptr) {
5053     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5054     *ptr += sizeof(VkStructureType);
5055     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5056         rootType = forUnmarshaling->sType;
5057     }
5058     uint32_t pNext_size;
5059     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5060     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5061     *ptr += sizeof(uint32_t);
5062     forUnmarshaling->pNext = nullptr;
5063     if (pNext_size) {
5064         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5065         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5066         *ptr += sizeof(VkStructureType);
5067         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5068         vkStream->alloc((void**)&forUnmarshaling->pNext,
5069                         goldfish_vk_extension_struct_size_with_stream_features(
5070                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5071         *(VkStructureType*)forUnmarshaling->pNext = extType;
5072         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5073                                            ptr);
5074     }
5075     memcpy((VkBool32*)&forUnmarshaling->protectedSubmit, *ptr, sizeof(VkBool32));
5076     *ptr += sizeof(VkBool32);
5077 }
5078 
reservedunmarshal_VkSamplerYcbcrConversionCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerYcbcrConversionCreateInfo * forUnmarshaling,uint8_t ** ptr)5079 void reservedunmarshal_VkSamplerYcbcrConversionCreateInfo(
5080     VulkanStream* vkStream, VkStructureType rootType,
5081     VkSamplerYcbcrConversionCreateInfo* forUnmarshaling, uint8_t** ptr) {
5082     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5083     *ptr += sizeof(VkStructureType);
5084     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5085         rootType = forUnmarshaling->sType;
5086     }
5087     uint32_t pNext_size;
5088     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5089     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5090     *ptr += sizeof(uint32_t);
5091     forUnmarshaling->pNext = nullptr;
5092     if (pNext_size) {
5093         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5094         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5095         *ptr += sizeof(VkStructureType);
5096         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5097         vkStream->alloc((void**)&forUnmarshaling->pNext,
5098                         goldfish_vk_extension_struct_size_with_stream_features(
5099                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5100         *(VkStructureType*)forUnmarshaling->pNext = extType;
5101         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5102                                            ptr);
5103     }
5104     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
5105     *ptr += sizeof(VkFormat);
5106     memcpy((VkSamplerYcbcrModelConversion*)&forUnmarshaling->ycbcrModel, *ptr,
5107            sizeof(VkSamplerYcbcrModelConversion));
5108     *ptr += sizeof(VkSamplerYcbcrModelConversion);
5109     memcpy((VkSamplerYcbcrRange*)&forUnmarshaling->ycbcrRange, *ptr, sizeof(VkSamplerYcbcrRange));
5110     *ptr += sizeof(VkSamplerYcbcrRange);
5111     reservedunmarshal_VkComponentMapping(vkStream, rootType,
5112                                          (VkComponentMapping*)(&forUnmarshaling->components), ptr);
5113     memcpy((VkChromaLocation*)&forUnmarshaling->xChromaOffset, *ptr, sizeof(VkChromaLocation));
5114     *ptr += sizeof(VkChromaLocation);
5115     memcpy((VkChromaLocation*)&forUnmarshaling->yChromaOffset, *ptr, sizeof(VkChromaLocation));
5116     *ptr += sizeof(VkChromaLocation);
5117     memcpy((VkFilter*)&forUnmarshaling->chromaFilter, *ptr, sizeof(VkFilter));
5118     *ptr += sizeof(VkFilter);
5119     memcpy((VkBool32*)&forUnmarshaling->forceExplicitReconstruction, *ptr, sizeof(VkBool32));
5120     *ptr += sizeof(VkBool32);
5121 }
5122 
reservedunmarshal_VkSamplerYcbcrConversionInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerYcbcrConversionInfo * forUnmarshaling,uint8_t ** ptr)5123 void reservedunmarshal_VkSamplerYcbcrConversionInfo(VulkanStream* vkStream,
5124                                                     VkStructureType rootType,
5125                                                     VkSamplerYcbcrConversionInfo* forUnmarshaling,
5126                                                     uint8_t** ptr) {
5127     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5128     *ptr += sizeof(VkStructureType);
5129     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5130         rootType = forUnmarshaling->sType;
5131     }
5132     uint32_t pNext_size;
5133     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5134     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5135     *ptr += sizeof(uint32_t);
5136     forUnmarshaling->pNext = nullptr;
5137     if (pNext_size) {
5138         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5139         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5140         *ptr += sizeof(VkStructureType);
5141         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5142         vkStream->alloc((void**)&forUnmarshaling->pNext,
5143                         goldfish_vk_extension_struct_size_with_stream_features(
5144                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5145         *(VkStructureType*)forUnmarshaling->pNext = extType;
5146         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5147                                            ptr);
5148     }
5149     uint64_t cgen_var_0;
5150     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
5151     *ptr += 1 * 8;
5152     *(VkSamplerYcbcrConversion*)&forUnmarshaling->conversion =
5153         (VkSamplerYcbcrConversion)unbox_VkSamplerYcbcrConversion(
5154             (VkSamplerYcbcrConversion)(*&cgen_var_0));
5155 }
5156 
reservedunmarshal_VkBindImagePlaneMemoryInfo(VulkanStream * vkStream,VkStructureType rootType,VkBindImagePlaneMemoryInfo * forUnmarshaling,uint8_t ** ptr)5157 void reservedunmarshal_VkBindImagePlaneMemoryInfo(VulkanStream* vkStream, VkStructureType rootType,
5158                                                   VkBindImagePlaneMemoryInfo* forUnmarshaling,
5159                                                   uint8_t** ptr) {
5160     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5161     *ptr += sizeof(VkStructureType);
5162     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5163         rootType = forUnmarshaling->sType;
5164     }
5165     uint32_t pNext_size;
5166     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5167     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5168     *ptr += sizeof(uint32_t);
5169     forUnmarshaling->pNext = nullptr;
5170     if (pNext_size) {
5171         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5172         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5173         *ptr += sizeof(VkStructureType);
5174         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5175         vkStream->alloc((void**)&forUnmarshaling->pNext,
5176                         goldfish_vk_extension_struct_size_with_stream_features(
5177                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5178         *(VkStructureType*)forUnmarshaling->pNext = extType;
5179         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5180                                            ptr);
5181     }
5182     memcpy((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, *ptr,
5183            sizeof(VkImageAspectFlagBits));
5184     *ptr += sizeof(VkImageAspectFlagBits);
5185 }
5186 
reservedunmarshal_VkImagePlaneMemoryRequirementsInfo(VulkanStream * vkStream,VkStructureType rootType,VkImagePlaneMemoryRequirementsInfo * forUnmarshaling,uint8_t ** ptr)5187 void reservedunmarshal_VkImagePlaneMemoryRequirementsInfo(
5188     VulkanStream* vkStream, VkStructureType rootType,
5189     VkImagePlaneMemoryRequirementsInfo* forUnmarshaling, uint8_t** ptr) {
5190     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5191     *ptr += sizeof(VkStructureType);
5192     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5193         rootType = forUnmarshaling->sType;
5194     }
5195     uint32_t pNext_size;
5196     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5197     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5198     *ptr += sizeof(uint32_t);
5199     forUnmarshaling->pNext = nullptr;
5200     if (pNext_size) {
5201         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5202         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5203         *ptr += sizeof(VkStructureType);
5204         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5205         vkStream->alloc((void**)&forUnmarshaling->pNext,
5206                         goldfish_vk_extension_struct_size_with_stream_features(
5207                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5208         *(VkStructureType*)forUnmarshaling->pNext = extType;
5209         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5210                                            ptr);
5211     }
5212     memcpy((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, *ptr,
5213            sizeof(VkImageAspectFlagBits));
5214     *ptr += sizeof(VkImageAspectFlagBits);
5215 }
5216 
reservedunmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSamplerYcbcrConversionFeatures * forUnmarshaling,uint8_t ** ptr)5217 void reservedunmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
5218     VulkanStream* vkStream, VkStructureType rootType,
5219     VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling, uint8_t** ptr) {
5220     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5221     *ptr += sizeof(VkStructureType);
5222     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5223         rootType = forUnmarshaling->sType;
5224     }
5225     uint32_t pNext_size;
5226     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5227     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5228     *ptr += sizeof(uint32_t);
5229     forUnmarshaling->pNext = nullptr;
5230     if (pNext_size) {
5231         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5232         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5233         *ptr += sizeof(VkStructureType);
5234         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5235         vkStream->alloc((void**)&forUnmarshaling->pNext,
5236                         goldfish_vk_extension_struct_size_with_stream_features(
5237                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5238         *(VkStructureType*)forUnmarshaling->pNext = extType;
5239         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5240                                            ptr);
5241     }
5242     memcpy((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, *ptr, sizeof(VkBool32));
5243     *ptr += sizeof(VkBool32);
5244 }
5245 
reservedunmarshal_VkSamplerYcbcrConversionImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkSamplerYcbcrConversionImageFormatProperties * forUnmarshaling,uint8_t ** ptr)5246 void reservedunmarshal_VkSamplerYcbcrConversionImageFormatProperties(
5247     VulkanStream* vkStream, VkStructureType rootType,
5248     VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling, uint8_t** ptr) {
5249     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5250     *ptr += sizeof(VkStructureType);
5251     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5252         rootType = forUnmarshaling->sType;
5253     }
5254     uint32_t pNext_size;
5255     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5256     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5257     *ptr += sizeof(uint32_t);
5258     forUnmarshaling->pNext = nullptr;
5259     if (pNext_size) {
5260         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5261         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5262         *ptr += sizeof(VkStructureType);
5263         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5264         vkStream->alloc((void**)&forUnmarshaling->pNext,
5265                         goldfish_vk_extension_struct_size_with_stream_features(
5266                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5267         *(VkStructureType*)forUnmarshaling->pNext = extType;
5268         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5269                                            ptr);
5270     }
5271     memcpy((uint32_t*)&forUnmarshaling->combinedImageSamplerDescriptorCount, *ptr,
5272            sizeof(uint32_t));
5273     *ptr += sizeof(uint32_t);
5274 }
5275 
reservedunmarshal_VkDescriptorUpdateTemplateEntry(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorUpdateTemplateEntry * forUnmarshaling,uint8_t ** ptr)5276 void reservedunmarshal_VkDescriptorUpdateTemplateEntry(
5277     VulkanStream* vkStream, VkStructureType rootType,
5278     VkDescriptorUpdateTemplateEntry* forUnmarshaling, uint8_t** ptr) {
5279     memcpy((uint32_t*)&forUnmarshaling->dstBinding, *ptr, sizeof(uint32_t));
5280     *ptr += sizeof(uint32_t);
5281     memcpy((uint32_t*)&forUnmarshaling->dstArrayElement, *ptr, sizeof(uint32_t));
5282     *ptr += sizeof(uint32_t);
5283     memcpy((uint32_t*)&forUnmarshaling->descriptorCount, *ptr, sizeof(uint32_t));
5284     *ptr += sizeof(uint32_t);
5285     memcpy((VkDescriptorType*)&forUnmarshaling->descriptorType, *ptr, sizeof(VkDescriptorType));
5286     *ptr += sizeof(VkDescriptorType);
5287     memcpy((size_t*)&forUnmarshaling->offset, (*ptr), 8);
5288     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->offset);
5289     *ptr += 8;
5290     memcpy((size_t*)&forUnmarshaling->stride, (*ptr), 8);
5291     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->stride);
5292     *ptr += 8;
5293 }
5294 
reservedunmarshal_VkDescriptorUpdateTemplateCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorUpdateTemplateCreateInfo * forUnmarshaling,uint8_t ** ptr)5295 void reservedunmarshal_VkDescriptorUpdateTemplateCreateInfo(
5296     VulkanStream* vkStream, VkStructureType rootType,
5297     VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling, uint8_t** ptr) {
5298     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5299     *ptr += sizeof(VkStructureType);
5300     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5301         rootType = forUnmarshaling->sType;
5302     }
5303     uint32_t pNext_size;
5304     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5305     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5306     *ptr += sizeof(uint32_t);
5307     forUnmarshaling->pNext = nullptr;
5308     if (pNext_size) {
5309         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5310         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5311         *ptr += sizeof(VkStructureType);
5312         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5313         vkStream->alloc((void**)&forUnmarshaling->pNext,
5314                         goldfish_vk_extension_struct_size_with_stream_features(
5315                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5316         *(VkStructureType*)forUnmarshaling->pNext = extType;
5317         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5318                                            ptr);
5319     }
5320     memcpy((VkDescriptorUpdateTemplateCreateFlags*)&forUnmarshaling->flags, *ptr,
5321            sizeof(VkDescriptorUpdateTemplateCreateFlags));
5322     *ptr += sizeof(VkDescriptorUpdateTemplateCreateFlags);
5323     memcpy((uint32_t*)&forUnmarshaling->descriptorUpdateEntryCount, *ptr, sizeof(uint32_t));
5324     *ptr += sizeof(uint32_t);
5325     vkStream->alloc((void**)&forUnmarshaling->pDescriptorUpdateEntries,
5326                     forUnmarshaling->descriptorUpdateEntryCount *
5327                         sizeof(const VkDescriptorUpdateTemplateEntry));
5328     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorUpdateEntryCount; ++i) {
5329         reservedunmarshal_VkDescriptorUpdateTemplateEntry(
5330             vkStream, rootType,
5331             (VkDescriptorUpdateTemplateEntry*)(forUnmarshaling->pDescriptorUpdateEntries + i), ptr);
5332     }
5333     memcpy((VkDescriptorUpdateTemplateType*)&forUnmarshaling->templateType, *ptr,
5334            sizeof(VkDescriptorUpdateTemplateType));
5335     *ptr += sizeof(VkDescriptorUpdateTemplateType);
5336     uint64_t cgen_var_0;
5337     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
5338     *ptr += 1 * 8;
5339     *(VkDescriptorSetLayout*)&forUnmarshaling->descriptorSetLayout =
5340         (VkDescriptorSetLayout)unbox_VkDescriptorSetLayout((VkDescriptorSetLayout)(*&cgen_var_0));
5341     memcpy((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, *ptr,
5342            sizeof(VkPipelineBindPoint));
5343     *ptr += sizeof(VkPipelineBindPoint);
5344     uint64_t cgen_var_1;
5345     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
5346     *ptr += 1 * 8;
5347     *(VkPipelineLayout*)&forUnmarshaling->pipelineLayout =
5348         (VkPipelineLayout)unbox_VkPipelineLayout((VkPipelineLayout)(*&cgen_var_1));
5349     memcpy((uint32_t*)&forUnmarshaling->set, *ptr, sizeof(uint32_t));
5350     *ptr += sizeof(uint32_t);
5351 }
5352 
reservedunmarshal_VkExternalMemoryProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalMemoryProperties * forUnmarshaling,uint8_t ** ptr)5353 void reservedunmarshal_VkExternalMemoryProperties(VulkanStream* vkStream, VkStructureType rootType,
5354                                                   VkExternalMemoryProperties* forUnmarshaling,
5355                                                   uint8_t** ptr) {
5356     memcpy((VkExternalMemoryFeatureFlags*)&forUnmarshaling->externalMemoryFeatures, *ptr,
5357            sizeof(VkExternalMemoryFeatureFlags));
5358     *ptr += sizeof(VkExternalMemoryFeatureFlags);
5359     memcpy((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, *ptr,
5360            sizeof(VkExternalMemoryHandleTypeFlags));
5361     *ptr += sizeof(VkExternalMemoryHandleTypeFlags);
5362     memcpy((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, *ptr,
5363            sizeof(VkExternalMemoryHandleTypeFlags));
5364     *ptr += sizeof(VkExternalMemoryHandleTypeFlags);
5365 }
5366 
reservedunmarshal_VkPhysicalDeviceExternalImageFormatInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalImageFormatInfo * forUnmarshaling,uint8_t ** ptr)5367 void reservedunmarshal_VkPhysicalDeviceExternalImageFormatInfo(
5368     VulkanStream* vkStream, VkStructureType rootType,
5369     VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling, uint8_t** ptr) {
5370     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5371     *ptr += sizeof(VkStructureType);
5372     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5373         rootType = forUnmarshaling->sType;
5374     }
5375     uint32_t pNext_size;
5376     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5377     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5378     *ptr += sizeof(uint32_t);
5379     forUnmarshaling->pNext = nullptr;
5380     if (pNext_size) {
5381         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5382         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5383         *ptr += sizeof(VkStructureType);
5384         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5385         vkStream->alloc((void**)&forUnmarshaling->pNext,
5386                         goldfish_vk_extension_struct_size_with_stream_features(
5387                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5388         *(VkStructureType*)forUnmarshaling->pNext = extType;
5389         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5390                                            ptr);
5391     }
5392     memcpy((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
5393            sizeof(VkExternalMemoryHandleTypeFlagBits));
5394     *ptr += sizeof(VkExternalMemoryHandleTypeFlagBits);
5395 }
5396 
reservedunmarshal_VkExternalImageFormatProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalImageFormatProperties * forUnmarshaling,uint8_t ** ptr)5397 void reservedunmarshal_VkExternalImageFormatProperties(
5398     VulkanStream* vkStream, VkStructureType rootType,
5399     VkExternalImageFormatProperties* forUnmarshaling, uint8_t** ptr) {
5400     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5401     *ptr += sizeof(VkStructureType);
5402     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5403         rootType = forUnmarshaling->sType;
5404     }
5405     uint32_t pNext_size;
5406     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5407     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5408     *ptr += sizeof(uint32_t);
5409     forUnmarshaling->pNext = nullptr;
5410     if (pNext_size) {
5411         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5412         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5413         *ptr += sizeof(VkStructureType);
5414         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5415         vkStream->alloc((void**)&forUnmarshaling->pNext,
5416                         goldfish_vk_extension_struct_size_with_stream_features(
5417                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5418         *(VkStructureType*)forUnmarshaling->pNext = extType;
5419         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5420                                            ptr);
5421     }
5422     reservedunmarshal_VkExternalMemoryProperties(
5423         vkStream, rootType,
5424         (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties), ptr);
5425 }
5426 
reservedunmarshal_VkPhysicalDeviceExternalBufferInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalBufferInfo * forUnmarshaling,uint8_t ** ptr)5427 void reservedunmarshal_VkPhysicalDeviceExternalBufferInfo(
5428     VulkanStream* vkStream, VkStructureType rootType,
5429     VkPhysicalDeviceExternalBufferInfo* forUnmarshaling, uint8_t** ptr) {
5430     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5431     *ptr += sizeof(VkStructureType);
5432     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5433         rootType = forUnmarshaling->sType;
5434     }
5435     uint32_t pNext_size;
5436     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5437     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5438     *ptr += sizeof(uint32_t);
5439     forUnmarshaling->pNext = nullptr;
5440     if (pNext_size) {
5441         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5442         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5443         *ptr += sizeof(VkStructureType);
5444         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5445         vkStream->alloc((void**)&forUnmarshaling->pNext,
5446                         goldfish_vk_extension_struct_size_with_stream_features(
5447                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5448         *(VkStructureType*)forUnmarshaling->pNext = extType;
5449         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5450                                            ptr);
5451     }
5452     memcpy((VkBufferCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkBufferCreateFlags));
5453     *ptr += sizeof(VkBufferCreateFlags);
5454     memcpy((VkBufferUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkBufferUsageFlags));
5455     *ptr += sizeof(VkBufferUsageFlags);
5456     memcpy((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
5457            sizeof(VkExternalMemoryHandleTypeFlagBits));
5458     *ptr += sizeof(VkExternalMemoryHandleTypeFlagBits);
5459 }
5460 
reservedunmarshal_VkExternalBufferProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalBufferProperties * forUnmarshaling,uint8_t ** ptr)5461 void reservedunmarshal_VkExternalBufferProperties(VulkanStream* vkStream, VkStructureType rootType,
5462                                                   VkExternalBufferProperties* forUnmarshaling,
5463                                                   uint8_t** ptr) {
5464     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5465     *ptr += sizeof(VkStructureType);
5466     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5467         rootType = forUnmarshaling->sType;
5468     }
5469     uint32_t pNext_size;
5470     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5471     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5472     *ptr += sizeof(uint32_t);
5473     forUnmarshaling->pNext = nullptr;
5474     if (pNext_size) {
5475         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5476         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5477         *ptr += sizeof(VkStructureType);
5478         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5479         vkStream->alloc((void**)&forUnmarshaling->pNext,
5480                         goldfish_vk_extension_struct_size_with_stream_features(
5481                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5482         *(VkStructureType*)forUnmarshaling->pNext = extType;
5483         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5484                                            ptr);
5485     }
5486     reservedunmarshal_VkExternalMemoryProperties(
5487         vkStream, rootType,
5488         (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties), ptr);
5489 }
5490 
reservedunmarshal_VkPhysicalDeviceIDProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceIDProperties * forUnmarshaling,uint8_t ** ptr)5491 void reservedunmarshal_VkPhysicalDeviceIDProperties(VulkanStream* vkStream,
5492                                                     VkStructureType rootType,
5493                                                     VkPhysicalDeviceIDProperties* forUnmarshaling,
5494                                                     uint8_t** ptr) {
5495     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5496     *ptr += sizeof(VkStructureType);
5497     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5498         rootType = forUnmarshaling->sType;
5499     }
5500     uint32_t pNext_size;
5501     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5502     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5503     *ptr += sizeof(uint32_t);
5504     forUnmarshaling->pNext = nullptr;
5505     if (pNext_size) {
5506         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5507         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5508         *ptr += sizeof(VkStructureType);
5509         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5510         vkStream->alloc((void**)&forUnmarshaling->pNext,
5511                         goldfish_vk_extension_struct_size_with_stream_features(
5512                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5513         *(VkStructureType*)forUnmarshaling->pNext = extType;
5514         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5515                                            ptr);
5516     }
5517     memcpy((uint8_t*)forUnmarshaling->deviceUUID, *ptr, VK_UUID_SIZE * sizeof(uint8_t));
5518     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
5519     memcpy((uint8_t*)forUnmarshaling->driverUUID, *ptr, VK_UUID_SIZE * sizeof(uint8_t));
5520     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
5521     memcpy((uint8_t*)forUnmarshaling->deviceLUID, *ptr, VK_LUID_SIZE * sizeof(uint8_t));
5522     *ptr += VK_LUID_SIZE * sizeof(uint8_t);
5523     memcpy((uint32_t*)&forUnmarshaling->deviceNodeMask, *ptr, sizeof(uint32_t));
5524     *ptr += sizeof(uint32_t);
5525     memcpy((VkBool32*)&forUnmarshaling->deviceLUIDValid, *ptr, sizeof(VkBool32));
5526     *ptr += sizeof(VkBool32);
5527 }
5528 
reservedunmarshal_VkExternalMemoryImageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExternalMemoryImageCreateInfo * forUnmarshaling,uint8_t ** ptr)5529 void reservedunmarshal_VkExternalMemoryImageCreateInfo(
5530     VulkanStream* vkStream, VkStructureType rootType,
5531     VkExternalMemoryImageCreateInfo* forUnmarshaling, uint8_t** ptr) {
5532     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5533     *ptr += sizeof(VkStructureType);
5534     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5535         rootType = forUnmarshaling->sType;
5536     }
5537     uint32_t pNext_size;
5538     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5539     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5540     *ptr += sizeof(uint32_t);
5541     forUnmarshaling->pNext = nullptr;
5542     if (pNext_size) {
5543         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5544         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5545         *ptr += sizeof(VkStructureType);
5546         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5547         vkStream->alloc((void**)&forUnmarshaling->pNext,
5548                         goldfish_vk_extension_struct_size_with_stream_features(
5549                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5550         *(VkStructureType*)forUnmarshaling->pNext = extType;
5551         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5552                                            ptr);
5553     }
5554     memcpy((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, *ptr,
5555            sizeof(VkExternalMemoryHandleTypeFlags));
5556     *ptr += sizeof(VkExternalMemoryHandleTypeFlags);
5557 }
5558 
reservedunmarshal_VkExternalMemoryBufferCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExternalMemoryBufferCreateInfo * forUnmarshaling,uint8_t ** ptr)5559 void reservedunmarshal_VkExternalMemoryBufferCreateInfo(
5560     VulkanStream* vkStream, VkStructureType rootType,
5561     VkExternalMemoryBufferCreateInfo* forUnmarshaling, uint8_t** ptr) {
5562     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5563     *ptr += sizeof(VkStructureType);
5564     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5565         rootType = forUnmarshaling->sType;
5566     }
5567     uint32_t pNext_size;
5568     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5569     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5570     *ptr += sizeof(uint32_t);
5571     forUnmarshaling->pNext = nullptr;
5572     if (pNext_size) {
5573         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5574         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5575         *ptr += sizeof(VkStructureType);
5576         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5577         vkStream->alloc((void**)&forUnmarshaling->pNext,
5578                         goldfish_vk_extension_struct_size_with_stream_features(
5579                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5580         *(VkStructureType*)forUnmarshaling->pNext = extType;
5581         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5582                                            ptr);
5583     }
5584     memcpy((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, *ptr,
5585            sizeof(VkExternalMemoryHandleTypeFlags));
5586     *ptr += sizeof(VkExternalMemoryHandleTypeFlags);
5587 }
5588 
reservedunmarshal_VkExportMemoryAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExportMemoryAllocateInfo * forUnmarshaling,uint8_t ** ptr)5589 void reservedunmarshal_VkExportMemoryAllocateInfo(VulkanStream* vkStream, VkStructureType rootType,
5590                                                   VkExportMemoryAllocateInfo* forUnmarshaling,
5591                                                   uint8_t** ptr) {
5592     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5593     *ptr += sizeof(VkStructureType);
5594     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5595         rootType = forUnmarshaling->sType;
5596     }
5597     uint32_t pNext_size;
5598     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5599     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5600     *ptr += sizeof(uint32_t);
5601     forUnmarshaling->pNext = nullptr;
5602     if (pNext_size) {
5603         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5604         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5605         *ptr += sizeof(VkStructureType);
5606         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5607         vkStream->alloc((void**)&forUnmarshaling->pNext,
5608                         goldfish_vk_extension_struct_size_with_stream_features(
5609                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5610         *(VkStructureType*)forUnmarshaling->pNext = extType;
5611         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5612                                            ptr);
5613     }
5614     memcpy((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, *ptr,
5615            sizeof(VkExternalMemoryHandleTypeFlags));
5616     *ptr += sizeof(VkExternalMemoryHandleTypeFlags);
5617 }
5618 
reservedunmarshal_VkPhysicalDeviceExternalFenceInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalFenceInfo * forUnmarshaling,uint8_t ** ptr)5619 void reservedunmarshal_VkPhysicalDeviceExternalFenceInfo(
5620     VulkanStream* vkStream, VkStructureType rootType,
5621     VkPhysicalDeviceExternalFenceInfo* forUnmarshaling, uint8_t** ptr) {
5622     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5623     *ptr += sizeof(VkStructureType);
5624     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5625         rootType = forUnmarshaling->sType;
5626     }
5627     uint32_t pNext_size;
5628     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5629     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5630     *ptr += sizeof(uint32_t);
5631     forUnmarshaling->pNext = nullptr;
5632     if (pNext_size) {
5633         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5634         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5635         *ptr += sizeof(VkStructureType);
5636         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5637         vkStream->alloc((void**)&forUnmarshaling->pNext,
5638                         goldfish_vk_extension_struct_size_with_stream_features(
5639                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5640         *(VkStructureType*)forUnmarshaling->pNext = extType;
5641         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5642                                            ptr);
5643     }
5644     memcpy((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
5645            sizeof(VkExternalFenceHandleTypeFlagBits));
5646     *ptr += sizeof(VkExternalFenceHandleTypeFlagBits);
5647 }
5648 
reservedunmarshal_VkExternalFenceProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalFenceProperties * forUnmarshaling,uint8_t ** ptr)5649 void reservedunmarshal_VkExternalFenceProperties(VulkanStream* vkStream, VkStructureType rootType,
5650                                                  VkExternalFenceProperties* forUnmarshaling,
5651                                                  uint8_t** ptr) {
5652     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5653     *ptr += sizeof(VkStructureType);
5654     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5655         rootType = forUnmarshaling->sType;
5656     }
5657     uint32_t pNext_size;
5658     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5659     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5660     *ptr += sizeof(uint32_t);
5661     forUnmarshaling->pNext = nullptr;
5662     if (pNext_size) {
5663         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5664         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5665         *ptr += sizeof(VkStructureType);
5666         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5667         vkStream->alloc((void**)&forUnmarshaling->pNext,
5668                         goldfish_vk_extension_struct_size_with_stream_features(
5669                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5670         *(VkStructureType*)forUnmarshaling->pNext = extType;
5671         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5672                                            ptr);
5673     }
5674     memcpy((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, *ptr,
5675            sizeof(VkExternalFenceHandleTypeFlags));
5676     *ptr += sizeof(VkExternalFenceHandleTypeFlags);
5677     memcpy((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, *ptr,
5678            sizeof(VkExternalFenceHandleTypeFlags));
5679     *ptr += sizeof(VkExternalFenceHandleTypeFlags);
5680     memcpy((VkExternalFenceFeatureFlags*)&forUnmarshaling->externalFenceFeatures, *ptr,
5681            sizeof(VkExternalFenceFeatureFlags));
5682     *ptr += sizeof(VkExternalFenceFeatureFlags);
5683 }
5684 
reservedunmarshal_VkExportFenceCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExportFenceCreateInfo * forUnmarshaling,uint8_t ** ptr)5685 void reservedunmarshal_VkExportFenceCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
5686                                                VkExportFenceCreateInfo* forUnmarshaling,
5687                                                uint8_t** ptr) {
5688     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5689     *ptr += sizeof(VkStructureType);
5690     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5691         rootType = forUnmarshaling->sType;
5692     }
5693     uint32_t pNext_size;
5694     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5695     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5696     *ptr += sizeof(uint32_t);
5697     forUnmarshaling->pNext = nullptr;
5698     if (pNext_size) {
5699         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5700         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5701         *ptr += sizeof(VkStructureType);
5702         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5703         vkStream->alloc((void**)&forUnmarshaling->pNext,
5704                         goldfish_vk_extension_struct_size_with_stream_features(
5705                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5706         *(VkStructureType*)forUnmarshaling->pNext = extType;
5707         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5708                                            ptr);
5709     }
5710     memcpy((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->handleTypes, *ptr,
5711            sizeof(VkExternalFenceHandleTypeFlags));
5712     *ptr += sizeof(VkExternalFenceHandleTypeFlags);
5713 }
5714 
reservedunmarshal_VkExportSemaphoreCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkExportSemaphoreCreateInfo * forUnmarshaling,uint8_t ** ptr)5715 void reservedunmarshal_VkExportSemaphoreCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
5716                                                    VkExportSemaphoreCreateInfo* forUnmarshaling,
5717                                                    uint8_t** ptr) {
5718     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5719     *ptr += sizeof(VkStructureType);
5720     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5721         rootType = forUnmarshaling->sType;
5722     }
5723     uint32_t pNext_size;
5724     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5725     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5726     *ptr += sizeof(uint32_t);
5727     forUnmarshaling->pNext = nullptr;
5728     if (pNext_size) {
5729         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5730         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5731         *ptr += sizeof(VkStructureType);
5732         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5733         vkStream->alloc((void**)&forUnmarshaling->pNext,
5734                         goldfish_vk_extension_struct_size_with_stream_features(
5735                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5736         *(VkStructureType*)forUnmarshaling->pNext = extType;
5737         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5738                                            ptr);
5739     }
5740     memcpy((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->handleTypes, *ptr,
5741            sizeof(VkExternalSemaphoreHandleTypeFlags));
5742     *ptr += sizeof(VkExternalSemaphoreHandleTypeFlags);
5743 }
5744 
reservedunmarshal_VkPhysicalDeviceExternalSemaphoreInfo(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalSemaphoreInfo * forUnmarshaling,uint8_t ** ptr)5745 void reservedunmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
5746     VulkanStream* vkStream, VkStructureType rootType,
5747     VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling, uint8_t** ptr) {
5748     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5749     *ptr += sizeof(VkStructureType);
5750     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5751         rootType = forUnmarshaling->sType;
5752     }
5753     uint32_t pNext_size;
5754     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5755     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5756     *ptr += sizeof(uint32_t);
5757     forUnmarshaling->pNext = nullptr;
5758     if (pNext_size) {
5759         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5760         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5761         *ptr += sizeof(VkStructureType);
5762         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5763         vkStream->alloc((void**)&forUnmarshaling->pNext,
5764                         goldfish_vk_extension_struct_size_with_stream_features(
5765                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5766         *(VkStructureType*)forUnmarshaling->pNext = extType;
5767         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5768                                            ptr);
5769     }
5770     memcpy((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
5771            sizeof(VkExternalSemaphoreHandleTypeFlagBits));
5772     *ptr += sizeof(VkExternalSemaphoreHandleTypeFlagBits);
5773 }
5774 
reservedunmarshal_VkExternalSemaphoreProperties(VulkanStream * vkStream,VkStructureType rootType,VkExternalSemaphoreProperties * forUnmarshaling,uint8_t ** ptr)5775 void reservedunmarshal_VkExternalSemaphoreProperties(VulkanStream* vkStream,
5776                                                      VkStructureType rootType,
5777                                                      VkExternalSemaphoreProperties* forUnmarshaling,
5778                                                      uint8_t** ptr) {
5779     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5780     *ptr += sizeof(VkStructureType);
5781     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5782         rootType = forUnmarshaling->sType;
5783     }
5784     uint32_t pNext_size;
5785     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5786     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5787     *ptr += sizeof(uint32_t);
5788     forUnmarshaling->pNext = nullptr;
5789     if (pNext_size) {
5790         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5791         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5792         *ptr += sizeof(VkStructureType);
5793         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5794         vkStream->alloc((void**)&forUnmarshaling->pNext,
5795                         goldfish_vk_extension_struct_size_with_stream_features(
5796                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5797         *(VkStructureType*)forUnmarshaling->pNext = extType;
5798         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5799                                            ptr);
5800     }
5801     memcpy((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes,
5802            *ptr, sizeof(VkExternalSemaphoreHandleTypeFlags));
5803     *ptr += sizeof(VkExternalSemaphoreHandleTypeFlags);
5804     memcpy((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, *ptr,
5805            sizeof(VkExternalSemaphoreHandleTypeFlags));
5806     *ptr += sizeof(VkExternalSemaphoreHandleTypeFlags);
5807     memcpy((VkExternalSemaphoreFeatureFlags*)&forUnmarshaling->externalSemaphoreFeatures, *ptr,
5808            sizeof(VkExternalSemaphoreFeatureFlags));
5809     *ptr += sizeof(VkExternalSemaphoreFeatureFlags);
5810 }
5811 
reservedunmarshal_VkPhysicalDeviceMaintenance3Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance3Properties * forUnmarshaling,uint8_t ** ptr)5812 void reservedunmarshal_VkPhysicalDeviceMaintenance3Properties(
5813     VulkanStream* vkStream, VkStructureType rootType,
5814     VkPhysicalDeviceMaintenance3Properties* forUnmarshaling, uint8_t** ptr) {
5815     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5816     *ptr += sizeof(VkStructureType);
5817     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5818         rootType = forUnmarshaling->sType;
5819     }
5820     uint32_t pNext_size;
5821     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5822     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5823     *ptr += sizeof(uint32_t);
5824     forUnmarshaling->pNext = nullptr;
5825     if (pNext_size) {
5826         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5827         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5828         *ptr += sizeof(VkStructureType);
5829         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5830         vkStream->alloc((void**)&forUnmarshaling->pNext,
5831                         goldfish_vk_extension_struct_size_with_stream_features(
5832                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5833         *(VkStructureType*)forUnmarshaling->pNext = extType;
5834         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5835                                            ptr);
5836     }
5837     memcpy((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, *ptr, sizeof(uint32_t));
5838     *ptr += sizeof(uint32_t);
5839     memcpy((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, *ptr, sizeof(VkDeviceSize));
5840     *ptr += sizeof(VkDeviceSize);
5841 }
5842 
reservedunmarshal_VkDescriptorSetLayoutSupport(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutSupport * forUnmarshaling,uint8_t ** ptr)5843 void reservedunmarshal_VkDescriptorSetLayoutSupport(VulkanStream* vkStream,
5844                                                     VkStructureType rootType,
5845                                                     VkDescriptorSetLayoutSupport* forUnmarshaling,
5846                                                     uint8_t** ptr) {
5847     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5848     *ptr += sizeof(VkStructureType);
5849     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5850         rootType = forUnmarshaling->sType;
5851     }
5852     uint32_t pNext_size;
5853     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5854     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5855     *ptr += sizeof(uint32_t);
5856     forUnmarshaling->pNext = nullptr;
5857     if (pNext_size) {
5858         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5859         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5860         *ptr += sizeof(VkStructureType);
5861         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5862         vkStream->alloc((void**)&forUnmarshaling->pNext,
5863                         goldfish_vk_extension_struct_size_with_stream_features(
5864                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5865         *(VkStructureType*)forUnmarshaling->pNext = extType;
5866         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5867                                            ptr);
5868     }
5869     memcpy((VkBool32*)&forUnmarshaling->supported, *ptr, sizeof(VkBool32));
5870     *ptr += sizeof(VkBool32);
5871 }
5872 
reservedunmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderDrawParametersFeatures * forUnmarshaling,uint8_t ** ptr)5873 void reservedunmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(
5874     VulkanStream* vkStream, VkStructureType rootType,
5875     VkPhysicalDeviceShaderDrawParametersFeatures* forUnmarshaling, uint8_t** ptr) {
5876     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5877     *ptr += sizeof(VkStructureType);
5878     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5879         rootType = forUnmarshaling->sType;
5880     }
5881     uint32_t pNext_size;
5882     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5883     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5884     *ptr += sizeof(uint32_t);
5885     forUnmarshaling->pNext = nullptr;
5886     if (pNext_size) {
5887         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5888         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5889         *ptr += sizeof(VkStructureType);
5890         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5891         vkStream->alloc((void**)&forUnmarshaling->pNext,
5892                         goldfish_vk_extension_struct_size_with_stream_features(
5893                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5894         *(VkStructureType*)forUnmarshaling->pNext = extType;
5895         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5896                                            ptr);
5897     }
5898     memcpy((VkBool32*)&forUnmarshaling->shaderDrawParameters, *ptr, sizeof(VkBool32));
5899     *ptr += sizeof(VkBool32);
5900 }
5901 
5902 #endif
5903 #ifdef VK_VERSION_1_2
reservedunmarshal_VkPhysicalDeviceVulkan11Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan11Features * forUnmarshaling,uint8_t ** ptr)5904 void reservedunmarshal_VkPhysicalDeviceVulkan11Features(
5905     VulkanStream* vkStream, VkStructureType rootType,
5906     VkPhysicalDeviceVulkan11Features* forUnmarshaling, uint8_t** ptr) {
5907     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5908     *ptr += sizeof(VkStructureType);
5909     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5910         rootType = forUnmarshaling->sType;
5911     }
5912     uint32_t pNext_size;
5913     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5914     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5915     *ptr += sizeof(uint32_t);
5916     forUnmarshaling->pNext = nullptr;
5917     if (pNext_size) {
5918         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5919         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5920         *ptr += sizeof(VkStructureType);
5921         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5922         vkStream->alloc((void**)&forUnmarshaling->pNext,
5923                         goldfish_vk_extension_struct_size_with_stream_features(
5924                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5925         *(VkStructureType*)forUnmarshaling->pNext = extType;
5926         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5927                                            ptr);
5928     }
5929     memcpy((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, *ptr, sizeof(VkBool32));
5930     *ptr += sizeof(VkBool32);
5931     memcpy((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess, *ptr, sizeof(VkBool32));
5932     *ptr += sizeof(VkBool32);
5933     memcpy((VkBool32*)&forUnmarshaling->storagePushConstant16, *ptr, sizeof(VkBool32));
5934     *ptr += sizeof(VkBool32);
5935     memcpy((VkBool32*)&forUnmarshaling->storageInputOutput16, *ptr, sizeof(VkBool32));
5936     *ptr += sizeof(VkBool32);
5937     memcpy((VkBool32*)&forUnmarshaling->multiview, *ptr, sizeof(VkBool32));
5938     *ptr += sizeof(VkBool32);
5939     memcpy((VkBool32*)&forUnmarshaling->multiviewGeometryShader, *ptr, sizeof(VkBool32));
5940     *ptr += sizeof(VkBool32);
5941     memcpy((VkBool32*)&forUnmarshaling->multiviewTessellationShader, *ptr, sizeof(VkBool32));
5942     *ptr += sizeof(VkBool32);
5943     memcpy((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, *ptr, sizeof(VkBool32));
5944     *ptr += sizeof(VkBool32);
5945     memcpy((VkBool32*)&forUnmarshaling->variablePointers, *ptr, sizeof(VkBool32));
5946     *ptr += sizeof(VkBool32);
5947     memcpy((VkBool32*)&forUnmarshaling->protectedMemory, *ptr, sizeof(VkBool32));
5948     *ptr += sizeof(VkBool32);
5949     memcpy((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, *ptr, sizeof(VkBool32));
5950     *ptr += sizeof(VkBool32);
5951     memcpy((VkBool32*)&forUnmarshaling->shaderDrawParameters, *ptr, sizeof(VkBool32));
5952     *ptr += sizeof(VkBool32);
5953 }
5954 
reservedunmarshal_VkPhysicalDeviceVulkan11Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan11Properties * forUnmarshaling,uint8_t ** ptr)5955 void reservedunmarshal_VkPhysicalDeviceVulkan11Properties(
5956     VulkanStream* vkStream, VkStructureType rootType,
5957     VkPhysicalDeviceVulkan11Properties* forUnmarshaling, uint8_t** ptr) {
5958     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
5959     *ptr += sizeof(VkStructureType);
5960     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
5961         rootType = forUnmarshaling->sType;
5962     }
5963     uint32_t pNext_size;
5964     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
5965     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
5966     *ptr += sizeof(uint32_t);
5967     forUnmarshaling->pNext = nullptr;
5968     if (pNext_size) {
5969         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
5970         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
5971         *ptr += sizeof(VkStructureType);
5972         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
5973         vkStream->alloc((void**)&forUnmarshaling->pNext,
5974                         goldfish_vk_extension_struct_size_with_stream_features(
5975                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
5976         *(VkStructureType*)forUnmarshaling->pNext = extType;
5977         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
5978                                            ptr);
5979     }
5980     memcpy((uint8_t*)forUnmarshaling->deviceUUID, *ptr, VK_UUID_SIZE * sizeof(uint8_t));
5981     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
5982     memcpy((uint8_t*)forUnmarshaling->driverUUID, *ptr, VK_UUID_SIZE * sizeof(uint8_t));
5983     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
5984     memcpy((uint8_t*)forUnmarshaling->deviceLUID, *ptr, VK_LUID_SIZE * sizeof(uint8_t));
5985     *ptr += VK_LUID_SIZE * sizeof(uint8_t);
5986     memcpy((uint32_t*)&forUnmarshaling->deviceNodeMask, *ptr, sizeof(uint32_t));
5987     *ptr += sizeof(uint32_t);
5988     memcpy((VkBool32*)&forUnmarshaling->deviceLUIDValid, *ptr, sizeof(VkBool32));
5989     *ptr += sizeof(VkBool32);
5990     memcpy((uint32_t*)&forUnmarshaling->subgroupSize, *ptr, sizeof(uint32_t));
5991     *ptr += sizeof(uint32_t);
5992     memcpy((VkShaderStageFlags*)&forUnmarshaling->subgroupSupportedStages, *ptr,
5993            sizeof(VkShaderStageFlags));
5994     *ptr += sizeof(VkShaderStageFlags);
5995     memcpy((VkSubgroupFeatureFlags*)&forUnmarshaling->subgroupSupportedOperations, *ptr,
5996            sizeof(VkSubgroupFeatureFlags));
5997     *ptr += sizeof(VkSubgroupFeatureFlags);
5998     memcpy((VkBool32*)&forUnmarshaling->subgroupQuadOperationsInAllStages, *ptr, sizeof(VkBool32));
5999     *ptr += sizeof(VkBool32);
6000     memcpy((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior, *ptr,
6001            sizeof(VkPointClippingBehavior));
6002     *ptr += sizeof(VkPointClippingBehavior);
6003     memcpy((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, *ptr, sizeof(uint32_t));
6004     *ptr += sizeof(uint32_t);
6005     memcpy((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, *ptr, sizeof(uint32_t));
6006     *ptr += sizeof(uint32_t);
6007     memcpy((VkBool32*)&forUnmarshaling->protectedNoFault, *ptr, sizeof(VkBool32));
6008     *ptr += sizeof(VkBool32);
6009     memcpy((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, *ptr, sizeof(uint32_t));
6010     *ptr += sizeof(uint32_t);
6011     memcpy((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, *ptr, sizeof(VkDeviceSize));
6012     *ptr += sizeof(VkDeviceSize);
6013 }
6014 
reservedunmarshal_VkPhysicalDeviceVulkan12Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan12Features * forUnmarshaling,uint8_t ** ptr)6015 void reservedunmarshal_VkPhysicalDeviceVulkan12Features(
6016     VulkanStream* vkStream, VkStructureType rootType,
6017     VkPhysicalDeviceVulkan12Features* forUnmarshaling, uint8_t** ptr) {
6018     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6019     *ptr += sizeof(VkStructureType);
6020     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6021         rootType = forUnmarshaling->sType;
6022     }
6023     uint32_t pNext_size;
6024     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6025     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6026     *ptr += sizeof(uint32_t);
6027     forUnmarshaling->pNext = nullptr;
6028     if (pNext_size) {
6029         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6030         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6031         *ptr += sizeof(VkStructureType);
6032         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6033         vkStream->alloc((void**)&forUnmarshaling->pNext,
6034                         goldfish_vk_extension_struct_size_with_stream_features(
6035                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6036         *(VkStructureType*)forUnmarshaling->pNext = extType;
6037         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6038                                            ptr);
6039     }
6040     memcpy((VkBool32*)&forUnmarshaling->samplerMirrorClampToEdge, *ptr, sizeof(VkBool32));
6041     *ptr += sizeof(VkBool32);
6042     memcpy((VkBool32*)&forUnmarshaling->drawIndirectCount, *ptr, sizeof(VkBool32));
6043     *ptr += sizeof(VkBool32);
6044     memcpy((VkBool32*)&forUnmarshaling->storageBuffer8BitAccess, *ptr, sizeof(VkBool32));
6045     *ptr += sizeof(VkBool32);
6046     memcpy((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer8BitAccess, *ptr, sizeof(VkBool32));
6047     *ptr += sizeof(VkBool32);
6048     memcpy((VkBool32*)&forUnmarshaling->storagePushConstant8, *ptr, sizeof(VkBool32));
6049     *ptr += sizeof(VkBool32);
6050     memcpy((VkBool32*)&forUnmarshaling->shaderBufferInt64Atomics, *ptr, sizeof(VkBool32));
6051     *ptr += sizeof(VkBool32);
6052     memcpy((VkBool32*)&forUnmarshaling->shaderSharedInt64Atomics, *ptr, sizeof(VkBool32));
6053     *ptr += sizeof(VkBool32);
6054     memcpy((VkBool32*)&forUnmarshaling->shaderFloat16, *ptr, sizeof(VkBool32));
6055     *ptr += sizeof(VkBool32);
6056     memcpy((VkBool32*)&forUnmarshaling->shaderInt8, *ptr, sizeof(VkBool32));
6057     *ptr += sizeof(VkBool32);
6058     memcpy((VkBool32*)&forUnmarshaling->descriptorIndexing, *ptr, sizeof(VkBool32));
6059     *ptr += sizeof(VkBool32);
6060     memcpy((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayDynamicIndexing, *ptr,
6061            sizeof(VkBool32));
6062     *ptr += sizeof(VkBool32);
6063     memcpy((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayDynamicIndexing, *ptr,
6064            sizeof(VkBool32));
6065     *ptr += sizeof(VkBool32);
6066     memcpy((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayDynamicIndexing, *ptr,
6067            sizeof(VkBool32));
6068     *ptr += sizeof(VkBool32);
6069     memcpy((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexing, *ptr,
6070            sizeof(VkBool32));
6071     *ptr += sizeof(VkBool32);
6072     memcpy((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexing, *ptr,
6073            sizeof(VkBool32));
6074     *ptr += sizeof(VkBool32);
6075     memcpy((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexing, *ptr,
6076            sizeof(VkBool32));
6077     *ptr += sizeof(VkBool32);
6078     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexing, *ptr,
6079            sizeof(VkBool32));
6080     *ptr += sizeof(VkBool32);
6081     memcpy((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexing, *ptr,
6082            sizeof(VkBool32));
6083     *ptr += sizeof(VkBool32);
6084     memcpy((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayNonUniformIndexing, *ptr,
6085            sizeof(VkBool32));
6086     *ptr += sizeof(VkBool32);
6087     memcpy((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayNonUniformIndexing, *ptr,
6088            sizeof(VkBool32));
6089     *ptr += sizeof(VkBool32);
6090     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingUniformBufferUpdateAfterBind, *ptr,
6091            sizeof(VkBool32));
6092     *ptr += sizeof(VkBool32);
6093     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingSampledImageUpdateAfterBind, *ptr,
6094            sizeof(VkBool32));
6095     *ptr += sizeof(VkBool32);
6096     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingStorageImageUpdateAfterBind, *ptr,
6097            sizeof(VkBool32));
6098     *ptr += sizeof(VkBool32);
6099     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingStorageBufferUpdateAfterBind, *ptr,
6100            sizeof(VkBool32));
6101     *ptr += sizeof(VkBool32);
6102     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind, *ptr,
6103            sizeof(VkBool32));
6104     *ptr += sizeof(VkBool32);
6105     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind, *ptr,
6106            sizeof(VkBool32));
6107     *ptr += sizeof(VkBool32);
6108     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingUpdateUnusedWhilePending, *ptr,
6109            sizeof(VkBool32));
6110     *ptr += sizeof(VkBool32);
6111     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingPartiallyBound, *ptr, sizeof(VkBool32));
6112     *ptr += sizeof(VkBool32);
6113     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingVariableDescriptorCount, *ptr,
6114            sizeof(VkBool32));
6115     *ptr += sizeof(VkBool32);
6116     memcpy((VkBool32*)&forUnmarshaling->runtimeDescriptorArray, *ptr, sizeof(VkBool32));
6117     *ptr += sizeof(VkBool32);
6118     memcpy((VkBool32*)&forUnmarshaling->samplerFilterMinmax, *ptr, sizeof(VkBool32));
6119     *ptr += sizeof(VkBool32);
6120     memcpy((VkBool32*)&forUnmarshaling->scalarBlockLayout, *ptr, sizeof(VkBool32));
6121     *ptr += sizeof(VkBool32);
6122     memcpy((VkBool32*)&forUnmarshaling->imagelessFramebuffer, *ptr, sizeof(VkBool32));
6123     *ptr += sizeof(VkBool32);
6124     memcpy((VkBool32*)&forUnmarshaling->uniformBufferStandardLayout, *ptr, sizeof(VkBool32));
6125     *ptr += sizeof(VkBool32);
6126     memcpy((VkBool32*)&forUnmarshaling->shaderSubgroupExtendedTypes, *ptr, sizeof(VkBool32));
6127     *ptr += sizeof(VkBool32);
6128     memcpy((VkBool32*)&forUnmarshaling->separateDepthStencilLayouts, *ptr, sizeof(VkBool32));
6129     *ptr += sizeof(VkBool32);
6130     memcpy((VkBool32*)&forUnmarshaling->hostQueryReset, *ptr, sizeof(VkBool32));
6131     *ptr += sizeof(VkBool32);
6132     memcpy((VkBool32*)&forUnmarshaling->timelineSemaphore, *ptr, sizeof(VkBool32));
6133     *ptr += sizeof(VkBool32);
6134     memcpy((VkBool32*)&forUnmarshaling->bufferDeviceAddress, *ptr, sizeof(VkBool32));
6135     *ptr += sizeof(VkBool32);
6136     memcpy((VkBool32*)&forUnmarshaling->bufferDeviceAddressCaptureReplay, *ptr, sizeof(VkBool32));
6137     *ptr += sizeof(VkBool32);
6138     memcpy((VkBool32*)&forUnmarshaling->bufferDeviceAddressMultiDevice, *ptr, sizeof(VkBool32));
6139     *ptr += sizeof(VkBool32);
6140     memcpy((VkBool32*)&forUnmarshaling->vulkanMemoryModel, *ptr, sizeof(VkBool32));
6141     *ptr += sizeof(VkBool32);
6142     memcpy((VkBool32*)&forUnmarshaling->vulkanMemoryModelDeviceScope, *ptr, sizeof(VkBool32));
6143     *ptr += sizeof(VkBool32);
6144     memcpy((VkBool32*)&forUnmarshaling->vulkanMemoryModelAvailabilityVisibilityChains, *ptr,
6145            sizeof(VkBool32));
6146     *ptr += sizeof(VkBool32);
6147     memcpy((VkBool32*)&forUnmarshaling->shaderOutputViewportIndex, *ptr, sizeof(VkBool32));
6148     *ptr += sizeof(VkBool32);
6149     memcpy((VkBool32*)&forUnmarshaling->shaderOutputLayer, *ptr, sizeof(VkBool32));
6150     *ptr += sizeof(VkBool32);
6151     memcpy((VkBool32*)&forUnmarshaling->subgroupBroadcastDynamicId, *ptr, sizeof(VkBool32));
6152     *ptr += sizeof(VkBool32);
6153 }
6154 
reservedunmarshal_VkConformanceVersion(VulkanStream * vkStream,VkStructureType rootType,VkConformanceVersion * forUnmarshaling,uint8_t ** ptr)6155 void reservedunmarshal_VkConformanceVersion(VulkanStream* vkStream, VkStructureType rootType,
6156                                             VkConformanceVersion* forUnmarshaling, uint8_t** ptr) {
6157     memcpy((uint8_t*)&forUnmarshaling->major, *ptr, sizeof(uint8_t));
6158     *ptr += sizeof(uint8_t);
6159     memcpy((uint8_t*)&forUnmarshaling->minor, *ptr, sizeof(uint8_t));
6160     *ptr += sizeof(uint8_t);
6161     memcpy((uint8_t*)&forUnmarshaling->subminor, *ptr, sizeof(uint8_t));
6162     *ptr += sizeof(uint8_t);
6163     memcpy((uint8_t*)&forUnmarshaling->patch, *ptr, sizeof(uint8_t));
6164     *ptr += sizeof(uint8_t);
6165 }
6166 
reservedunmarshal_VkPhysicalDeviceVulkan12Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan12Properties * forUnmarshaling,uint8_t ** ptr)6167 void reservedunmarshal_VkPhysicalDeviceVulkan12Properties(
6168     VulkanStream* vkStream, VkStructureType rootType,
6169     VkPhysicalDeviceVulkan12Properties* forUnmarshaling, uint8_t** ptr) {
6170     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6171     *ptr += sizeof(VkStructureType);
6172     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6173         rootType = forUnmarshaling->sType;
6174     }
6175     uint32_t pNext_size;
6176     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6177     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6178     *ptr += sizeof(uint32_t);
6179     forUnmarshaling->pNext = nullptr;
6180     if (pNext_size) {
6181         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6182         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6183         *ptr += sizeof(VkStructureType);
6184         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6185         vkStream->alloc((void**)&forUnmarshaling->pNext,
6186                         goldfish_vk_extension_struct_size_with_stream_features(
6187                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6188         *(VkStructureType*)forUnmarshaling->pNext = extType;
6189         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6190                                            ptr);
6191     }
6192     memcpy((VkDriverId*)&forUnmarshaling->driverID, *ptr, sizeof(VkDriverId));
6193     *ptr += sizeof(VkDriverId);
6194     memcpy((char*)forUnmarshaling->driverName, *ptr, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
6195     *ptr += VK_MAX_DRIVER_NAME_SIZE * sizeof(char);
6196     memcpy((char*)forUnmarshaling->driverInfo, *ptr, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
6197     *ptr += VK_MAX_DRIVER_INFO_SIZE * sizeof(char);
6198     reservedunmarshal_VkConformanceVersion(
6199         vkStream, rootType, (VkConformanceVersion*)(&forUnmarshaling->conformanceVersion), ptr);
6200     memcpy((VkShaderFloatControlsIndependence*)&forUnmarshaling->denormBehaviorIndependence, *ptr,
6201            sizeof(VkShaderFloatControlsIndependence));
6202     *ptr += sizeof(VkShaderFloatControlsIndependence);
6203     memcpy((VkShaderFloatControlsIndependence*)&forUnmarshaling->roundingModeIndependence, *ptr,
6204            sizeof(VkShaderFloatControlsIndependence));
6205     *ptr += sizeof(VkShaderFloatControlsIndependence);
6206     memcpy((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat16, *ptr,
6207            sizeof(VkBool32));
6208     *ptr += sizeof(VkBool32);
6209     memcpy((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat32, *ptr,
6210            sizeof(VkBool32));
6211     *ptr += sizeof(VkBool32);
6212     memcpy((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat64, *ptr,
6213            sizeof(VkBool32));
6214     *ptr += sizeof(VkBool32);
6215     memcpy((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat16, *ptr, sizeof(VkBool32));
6216     *ptr += sizeof(VkBool32);
6217     memcpy((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat32, *ptr, sizeof(VkBool32));
6218     *ptr += sizeof(VkBool32);
6219     memcpy((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat64, *ptr, sizeof(VkBool32));
6220     *ptr += sizeof(VkBool32);
6221     memcpy((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat16, *ptr, sizeof(VkBool32));
6222     *ptr += sizeof(VkBool32);
6223     memcpy((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat32, *ptr, sizeof(VkBool32));
6224     *ptr += sizeof(VkBool32);
6225     memcpy((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat64, *ptr, sizeof(VkBool32));
6226     *ptr += sizeof(VkBool32);
6227     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat16, *ptr, sizeof(VkBool32));
6228     *ptr += sizeof(VkBool32);
6229     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat32, *ptr, sizeof(VkBool32));
6230     *ptr += sizeof(VkBool32);
6231     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat64, *ptr, sizeof(VkBool32));
6232     *ptr += sizeof(VkBool32);
6233     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat16, *ptr, sizeof(VkBool32));
6234     *ptr += sizeof(VkBool32);
6235     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat32, *ptr, sizeof(VkBool32));
6236     *ptr += sizeof(VkBool32);
6237     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat64, *ptr, sizeof(VkBool32));
6238     *ptr += sizeof(VkBool32);
6239     memcpy((uint32_t*)&forUnmarshaling->maxUpdateAfterBindDescriptorsInAllPools, *ptr,
6240            sizeof(uint32_t));
6241     *ptr += sizeof(uint32_t);
6242     memcpy((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexingNative, *ptr,
6243            sizeof(VkBool32));
6244     *ptr += sizeof(VkBool32);
6245     memcpy((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexingNative, *ptr,
6246            sizeof(VkBool32));
6247     *ptr += sizeof(VkBool32);
6248     memcpy((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexingNative, *ptr,
6249            sizeof(VkBool32));
6250     *ptr += sizeof(VkBool32);
6251     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexingNative, *ptr,
6252            sizeof(VkBool32));
6253     *ptr += sizeof(VkBool32);
6254     memcpy((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexingNative, *ptr,
6255            sizeof(VkBool32));
6256     *ptr += sizeof(VkBool32);
6257     memcpy((VkBool32*)&forUnmarshaling->robustBufferAccessUpdateAfterBind, *ptr, sizeof(VkBool32));
6258     *ptr += sizeof(VkBool32);
6259     memcpy((VkBool32*)&forUnmarshaling->quadDivergentImplicitLod, *ptr, sizeof(VkBool32));
6260     *ptr += sizeof(VkBool32);
6261     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSamplers, *ptr,
6262            sizeof(uint32_t));
6263     *ptr += sizeof(uint32_t);
6264     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers, *ptr,
6265            sizeof(uint32_t));
6266     *ptr += sizeof(uint32_t);
6267     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers, *ptr,
6268            sizeof(uint32_t));
6269     *ptr += sizeof(uint32_t);
6270     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages, *ptr,
6271            sizeof(uint32_t));
6272     *ptr += sizeof(uint32_t);
6273     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages, *ptr,
6274            sizeof(uint32_t));
6275     *ptr += sizeof(uint32_t);
6276     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments, *ptr,
6277            sizeof(uint32_t));
6278     *ptr += sizeof(uint32_t);
6279     memcpy((uint32_t*)&forUnmarshaling->maxPerStageUpdateAfterBindResources, *ptr,
6280            sizeof(uint32_t));
6281     *ptr += sizeof(uint32_t);
6282     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSamplers, *ptr,
6283            sizeof(uint32_t));
6284     *ptr += sizeof(uint32_t);
6285     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers, *ptr,
6286            sizeof(uint32_t));
6287     *ptr += sizeof(uint32_t);
6288     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, *ptr,
6289            sizeof(uint32_t));
6290     *ptr += sizeof(uint32_t);
6291     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers, *ptr,
6292            sizeof(uint32_t));
6293     *ptr += sizeof(uint32_t);
6294     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, *ptr,
6295            sizeof(uint32_t));
6296     *ptr += sizeof(uint32_t);
6297     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSampledImages, *ptr,
6298            sizeof(uint32_t));
6299     *ptr += sizeof(uint32_t);
6300     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageImages, *ptr,
6301            sizeof(uint32_t));
6302     *ptr += sizeof(uint32_t);
6303     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInputAttachments, *ptr,
6304            sizeof(uint32_t));
6305     *ptr += sizeof(uint32_t);
6306     memcpy((VkResolveModeFlags*)&forUnmarshaling->supportedDepthResolveModes, *ptr,
6307            sizeof(VkResolveModeFlags));
6308     *ptr += sizeof(VkResolveModeFlags);
6309     memcpy((VkResolveModeFlags*)&forUnmarshaling->supportedStencilResolveModes, *ptr,
6310            sizeof(VkResolveModeFlags));
6311     *ptr += sizeof(VkResolveModeFlags);
6312     memcpy((VkBool32*)&forUnmarshaling->independentResolveNone, *ptr, sizeof(VkBool32));
6313     *ptr += sizeof(VkBool32);
6314     memcpy((VkBool32*)&forUnmarshaling->independentResolve, *ptr, sizeof(VkBool32));
6315     *ptr += sizeof(VkBool32);
6316     memcpy((VkBool32*)&forUnmarshaling->filterMinmaxSingleComponentFormats, *ptr, sizeof(VkBool32));
6317     *ptr += sizeof(VkBool32);
6318     memcpy((VkBool32*)&forUnmarshaling->filterMinmaxImageComponentMapping, *ptr, sizeof(VkBool32));
6319     *ptr += sizeof(VkBool32);
6320     memcpy((uint64_t*)&forUnmarshaling->maxTimelineSemaphoreValueDifference, *ptr,
6321            sizeof(uint64_t));
6322     *ptr += sizeof(uint64_t);
6323     memcpy((VkSampleCountFlags*)&forUnmarshaling->framebufferIntegerColorSampleCounts, *ptr,
6324            sizeof(VkSampleCountFlags));
6325     *ptr += sizeof(VkSampleCountFlags);
6326 }
6327 
reservedunmarshal_VkImageFormatListCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageFormatListCreateInfo * forUnmarshaling,uint8_t ** ptr)6328 void reservedunmarshal_VkImageFormatListCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
6329                                                    VkImageFormatListCreateInfo* forUnmarshaling,
6330                                                    uint8_t** ptr) {
6331     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6332     *ptr += sizeof(VkStructureType);
6333     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6334         rootType = forUnmarshaling->sType;
6335     }
6336     uint32_t pNext_size;
6337     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6338     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6339     *ptr += sizeof(uint32_t);
6340     forUnmarshaling->pNext = nullptr;
6341     if (pNext_size) {
6342         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6343         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6344         *ptr += sizeof(VkStructureType);
6345         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6346         vkStream->alloc((void**)&forUnmarshaling->pNext,
6347                         goldfish_vk_extension_struct_size_with_stream_features(
6348                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6349         *(VkStructureType*)forUnmarshaling->pNext = extType;
6350         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6351                                            ptr);
6352     }
6353     memcpy((uint32_t*)&forUnmarshaling->viewFormatCount, *ptr, sizeof(uint32_t));
6354     *ptr += sizeof(uint32_t);
6355     vkStream->alloc((void**)&forUnmarshaling->pViewFormats,
6356                     forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
6357     memcpy((VkFormat*)forUnmarshaling->pViewFormats, *ptr,
6358            forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
6359     *ptr += forUnmarshaling->viewFormatCount * sizeof(const VkFormat);
6360 }
6361 
reservedunmarshal_VkAttachmentDescription2(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentDescription2 * forUnmarshaling,uint8_t ** ptr)6362 void reservedunmarshal_VkAttachmentDescription2(VulkanStream* vkStream, VkStructureType rootType,
6363                                                 VkAttachmentDescription2* forUnmarshaling,
6364                                                 uint8_t** ptr) {
6365     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6366     *ptr += sizeof(VkStructureType);
6367     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6368         rootType = forUnmarshaling->sType;
6369     }
6370     uint32_t pNext_size;
6371     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6372     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6373     *ptr += sizeof(uint32_t);
6374     forUnmarshaling->pNext = nullptr;
6375     if (pNext_size) {
6376         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6377         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6378         *ptr += sizeof(VkStructureType);
6379         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6380         vkStream->alloc((void**)&forUnmarshaling->pNext,
6381                         goldfish_vk_extension_struct_size_with_stream_features(
6382                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6383         *(VkStructureType*)forUnmarshaling->pNext = extType;
6384         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6385                                            ptr);
6386     }
6387     memcpy((VkAttachmentDescriptionFlags*)&forUnmarshaling->flags, *ptr,
6388            sizeof(VkAttachmentDescriptionFlags));
6389     *ptr += sizeof(VkAttachmentDescriptionFlags);
6390     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
6391     *ptr += sizeof(VkFormat);
6392     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->samples, *ptr, sizeof(VkSampleCountFlagBits));
6393     *ptr += sizeof(VkSampleCountFlagBits);
6394     memcpy((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, *ptr, sizeof(VkAttachmentLoadOp));
6395     *ptr += sizeof(VkAttachmentLoadOp);
6396     memcpy((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, *ptr, sizeof(VkAttachmentStoreOp));
6397     *ptr += sizeof(VkAttachmentStoreOp);
6398     memcpy((VkAttachmentLoadOp*)&forUnmarshaling->stencilLoadOp, *ptr, sizeof(VkAttachmentLoadOp));
6399     *ptr += sizeof(VkAttachmentLoadOp);
6400     memcpy((VkAttachmentStoreOp*)&forUnmarshaling->stencilStoreOp, *ptr,
6401            sizeof(VkAttachmentStoreOp));
6402     *ptr += sizeof(VkAttachmentStoreOp);
6403     memcpy((VkImageLayout*)&forUnmarshaling->initialLayout, *ptr, sizeof(VkImageLayout));
6404     *ptr += sizeof(VkImageLayout);
6405     memcpy((VkImageLayout*)&forUnmarshaling->finalLayout, *ptr, sizeof(VkImageLayout));
6406     *ptr += sizeof(VkImageLayout);
6407 }
6408 
reservedunmarshal_VkAttachmentReference2(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentReference2 * forUnmarshaling,uint8_t ** ptr)6409 void reservedunmarshal_VkAttachmentReference2(VulkanStream* vkStream, VkStructureType rootType,
6410                                               VkAttachmentReference2* forUnmarshaling,
6411                                               uint8_t** ptr) {
6412     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6413     *ptr += sizeof(VkStructureType);
6414     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6415         rootType = forUnmarshaling->sType;
6416     }
6417     uint32_t pNext_size;
6418     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6419     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6420     *ptr += sizeof(uint32_t);
6421     forUnmarshaling->pNext = nullptr;
6422     if (pNext_size) {
6423         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6424         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6425         *ptr += sizeof(VkStructureType);
6426         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6427         vkStream->alloc((void**)&forUnmarshaling->pNext,
6428                         goldfish_vk_extension_struct_size_with_stream_features(
6429                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6430         *(VkStructureType*)forUnmarshaling->pNext = extType;
6431         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6432                                            ptr);
6433     }
6434     memcpy((uint32_t*)&forUnmarshaling->attachment, *ptr, sizeof(uint32_t));
6435     *ptr += sizeof(uint32_t);
6436     memcpy((VkImageLayout*)&forUnmarshaling->layout, *ptr, sizeof(VkImageLayout));
6437     *ptr += sizeof(VkImageLayout);
6438     memcpy((VkImageAspectFlags*)&forUnmarshaling->aspectMask, *ptr, sizeof(VkImageAspectFlags));
6439     *ptr += sizeof(VkImageAspectFlags);
6440 }
6441 
reservedunmarshal_VkSubpassDescription2(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDescription2 * forUnmarshaling,uint8_t ** ptr)6442 void reservedunmarshal_VkSubpassDescription2(VulkanStream* vkStream, VkStructureType rootType,
6443                                              VkSubpassDescription2* forUnmarshaling,
6444                                              uint8_t** ptr) {
6445     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6446     *ptr += sizeof(VkStructureType);
6447     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6448         rootType = forUnmarshaling->sType;
6449     }
6450     uint32_t pNext_size;
6451     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6452     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6453     *ptr += sizeof(uint32_t);
6454     forUnmarshaling->pNext = nullptr;
6455     if (pNext_size) {
6456         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6457         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6458         *ptr += sizeof(VkStructureType);
6459         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6460         vkStream->alloc((void**)&forUnmarshaling->pNext,
6461                         goldfish_vk_extension_struct_size_with_stream_features(
6462                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6463         *(VkStructureType*)forUnmarshaling->pNext = extType;
6464         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6465                                            ptr);
6466     }
6467     memcpy((VkSubpassDescriptionFlags*)&forUnmarshaling->flags, *ptr,
6468            sizeof(VkSubpassDescriptionFlags));
6469     *ptr += sizeof(VkSubpassDescriptionFlags);
6470     memcpy((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, *ptr,
6471            sizeof(VkPipelineBindPoint));
6472     *ptr += sizeof(VkPipelineBindPoint);
6473     memcpy((uint32_t*)&forUnmarshaling->viewMask, *ptr, sizeof(uint32_t));
6474     *ptr += sizeof(uint32_t);
6475     memcpy((uint32_t*)&forUnmarshaling->inputAttachmentCount, *ptr, sizeof(uint32_t));
6476     *ptr += sizeof(uint32_t);
6477     vkStream->alloc((void**)&forUnmarshaling->pInputAttachments,
6478                     forUnmarshaling->inputAttachmentCount * sizeof(const VkAttachmentReference2));
6479     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->inputAttachmentCount; ++i) {
6480         reservedunmarshal_VkAttachmentReference2(
6481             vkStream, rootType, (VkAttachmentReference2*)(forUnmarshaling->pInputAttachments + i),
6482             ptr);
6483     }
6484     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
6485     *ptr += sizeof(uint32_t);
6486     vkStream->alloc((void**)&forUnmarshaling->pColorAttachments,
6487                     forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference2));
6488     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
6489         reservedunmarshal_VkAttachmentReference2(
6490             vkStream, rootType, (VkAttachmentReference2*)(forUnmarshaling->pColorAttachments + i),
6491             ptr);
6492     }
6493     // WARNING PTR CHECK
6494     memcpy((VkAttachmentReference2**)&forUnmarshaling->pResolveAttachments, (*ptr), 8);
6495     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pResolveAttachments);
6496     *ptr += 8;
6497     if (forUnmarshaling->pResolveAttachments) {
6498         vkStream->alloc(
6499             (void**)&forUnmarshaling->pResolveAttachments,
6500             forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference2));
6501         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
6502             reservedunmarshal_VkAttachmentReference2(
6503                 vkStream, rootType,
6504                 (VkAttachmentReference2*)(forUnmarshaling->pResolveAttachments + i), ptr);
6505         }
6506     }
6507     // WARNING PTR CHECK
6508     memcpy((VkAttachmentReference2**)&forUnmarshaling->pDepthStencilAttachment, (*ptr), 8);
6509     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDepthStencilAttachment);
6510     *ptr += 8;
6511     if (forUnmarshaling->pDepthStencilAttachment) {
6512         vkStream->alloc((void**)&forUnmarshaling->pDepthStencilAttachment,
6513                         sizeof(const VkAttachmentReference2));
6514         reservedunmarshal_VkAttachmentReference2(
6515             vkStream, rootType, (VkAttachmentReference2*)(forUnmarshaling->pDepthStencilAttachment),
6516             ptr);
6517     }
6518     memcpy((uint32_t*)&forUnmarshaling->preserveAttachmentCount, *ptr, sizeof(uint32_t));
6519     *ptr += sizeof(uint32_t);
6520     vkStream->alloc((void**)&forUnmarshaling->pPreserveAttachments,
6521                     forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
6522     memcpy((uint32_t*)forUnmarshaling->pPreserveAttachments, *ptr,
6523            forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
6524     *ptr += forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t);
6525 }
6526 
reservedunmarshal_VkSubpassDependency2(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDependency2 * forUnmarshaling,uint8_t ** ptr)6527 void reservedunmarshal_VkSubpassDependency2(VulkanStream* vkStream, VkStructureType rootType,
6528                                             VkSubpassDependency2* forUnmarshaling, uint8_t** ptr) {
6529     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6530     *ptr += sizeof(VkStructureType);
6531     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6532         rootType = forUnmarshaling->sType;
6533     }
6534     uint32_t pNext_size;
6535     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6536     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6537     *ptr += sizeof(uint32_t);
6538     forUnmarshaling->pNext = nullptr;
6539     if (pNext_size) {
6540         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6541         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6542         *ptr += sizeof(VkStructureType);
6543         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6544         vkStream->alloc((void**)&forUnmarshaling->pNext,
6545                         goldfish_vk_extension_struct_size_with_stream_features(
6546                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6547         *(VkStructureType*)forUnmarshaling->pNext = extType;
6548         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6549                                            ptr);
6550     }
6551     memcpy((uint32_t*)&forUnmarshaling->srcSubpass, *ptr, sizeof(uint32_t));
6552     *ptr += sizeof(uint32_t);
6553     memcpy((uint32_t*)&forUnmarshaling->dstSubpass, *ptr, sizeof(uint32_t));
6554     *ptr += sizeof(uint32_t);
6555     memcpy((VkPipelineStageFlags*)&forUnmarshaling->srcStageMask, *ptr,
6556            sizeof(VkPipelineStageFlags));
6557     *ptr += sizeof(VkPipelineStageFlags);
6558     memcpy((VkPipelineStageFlags*)&forUnmarshaling->dstStageMask, *ptr,
6559            sizeof(VkPipelineStageFlags));
6560     *ptr += sizeof(VkPipelineStageFlags);
6561     memcpy((VkAccessFlags*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags));
6562     *ptr += sizeof(VkAccessFlags);
6563     memcpy((VkAccessFlags*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags));
6564     *ptr += sizeof(VkAccessFlags);
6565     memcpy((VkDependencyFlags*)&forUnmarshaling->dependencyFlags, *ptr, sizeof(VkDependencyFlags));
6566     *ptr += sizeof(VkDependencyFlags);
6567     memcpy((int32_t*)&forUnmarshaling->viewOffset, *ptr, sizeof(int32_t));
6568     *ptr += sizeof(int32_t);
6569 }
6570 
reservedunmarshal_VkRenderPassCreateInfo2(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassCreateInfo2 * forUnmarshaling,uint8_t ** ptr)6571 void reservedunmarshal_VkRenderPassCreateInfo2(VulkanStream* vkStream, VkStructureType rootType,
6572                                                VkRenderPassCreateInfo2* forUnmarshaling,
6573                                                uint8_t** ptr) {
6574     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6575     *ptr += sizeof(VkStructureType);
6576     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6577         rootType = forUnmarshaling->sType;
6578     }
6579     uint32_t pNext_size;
6580     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6581     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6582     *ptr += sizeof(uint32_t);
6583     forUnmarshaling->pNext = nullptr;
6584     if (pNext_size) {
6585         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6586         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6587         *ptr += sizeof(VkStructureType);
6588         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6589         vkStream->alloc((void**)&forUnmarshaling->pNext,
6590                         goldfish_vk_extension_struct_size_with_stream_features(
6591                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6592         *(VkStructureType*)forUnmarshaling->pNext = extType;
6593         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6594                                            ptr);
6595     }
6596     memcpy((VkRenderPassCreateFlags*)&forUnmarshaling->flags, *ptr,
6597            sizeof(VkRenderPassCreateFlags));
6598     *ptr += sizeof(VkRenderPassCreateFlags);
6599     memcpy((uint32_t*)&forUnmarshaling->attachmentCount, *ptr, sizeof(uint32_t));
6600     *ptr += sizeof(uint32_t);
6601     vkStream->alloc((void**)&forUnmarshaling->pAttachments,
6602                     forUnmarshaling->attachmentCount * sizeof(const VkAttachmentDescription2));
6603     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i) {
6604         reservedunmarshal_VkAttachmentDescription2(
6605             vkStream, rootType, (VkAttachmentDescription2*)(forUnmarshaling->pAttachments + i),
6606             ptr);
6607     }
6608     memcpy((uint32_t*)&forUnmarshaling->subpassCount, *ptr, sizeof(uint32_t));
6609     *ptr += sizeof(uint32_t);
6610     vkStream->alloc((void**)&forUnmarshaling->pSubpasses,
6611                     forUnmarshaling->subpassCount * sizeof(const VkSubpassDescription2));
6612     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->subpassCount; ++i) {
6613         reservedunmarshal_VkSubpassDescription2(
6614             vkStream, rootType, (VkSubpassDescription2*)(forUnmarshaling->pSubpasses + i), ptr);
6615     }
6616     memcpy((uint32_t*)&forUnmarshaling->dependencyCount, *ptr, sizeof(uint32_t));
6617     *ptr += sizeof(uint32_t);
6618     vkStream->alloc((void**)&forUnmarshaling->pDependencies,
6619                     forUnmarshaling->dependencyCount * sizeof(const VkSubpassDependency2));
6620     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->dependencyCount; ++i) {
6621         reservedunmarshal_VkSubpassDependency2(
6622             vkStream, rootType, (VkSubpassDependency2*)(forUnmarshaling->pDependencies + i), ptr);
6623     }
6624     memcpy((uint32_t*)&forUnmarshaling->correlatedViewMaskCount, *ptr, sizeof(uint32_t));
6625     *ptr += sizeof(uint32_t);
6626     vkStream->alloc((void**)&forUnmarshaling->pCorrelatedViewMasks,
6627                     forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
6628     memcpy((uint32_t*)forUnmarshaling->pCorrelatedViewMasks, *ptr,
6629            forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
6630     *ptr += forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t);
6631 }
6632 
reservedunmarshal_VkSubpassBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkSubpassBeginInfo * forUnmarshaling,uint8_t ** ptr)6633 void reservedunmarshal_VkSubpassBeginInfo(VulkanStream* vkStream, VkStructureType rootType,
6634                                           VkSubpassBeginInfo* forUnmarshaling, uint8_t** ptr) {
6635     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6636     *ptr += sizeof(VkStructureType);
6637     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6638         rootType = forUnmarshaling->sType;
6639     }
6640     uint32_t pNext_size;
6641     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6642     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6643     *ptr += sizeof(uint32_t);
6644     forUnmarshaling->pNext = nullptr;
6645     if (pNext_size) {
6646         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6647         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6648         *ptr += sizeof(VkStructureType);
6649         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6650         vkStream->alloc((void**)&forUnmarshaling->pNext,
6651                         goldfish_vk_extension_struct_size_with_stream_features(
6652                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6653         *(VkStructureType*)forUnmarshaling->pNext = extType;
6654         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6655                                            ptr);
6656     }
6657     memcpy((VkSubpassContents*)&forUnmarshaling->contents, *ptr, sizeof(VkSubpassContents));
6658     *ptr += sizeof(VkSubpassContents);
6659 }
6660 
reservedunmarshal_VkSubpassEndInfo(VulkanStream * vkStream,VkStructureType rootType,VkSubpassEndInfo * forUnmarshaling,uint8_t ** ptr)6661 void reservedunmarshal_VkSubpassEndInfo(VulkanStream* vkStream, VkStructureType rootType,
6662                                         VkSubpassEndInfo* forUnmarshaling, uint8_t** ptr) {
6663     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6664     *ptr += sizeof(VkStructureType);
6665     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6666         rootType = forUnmarshaling->sType;
6667     }
6668     uint32_t pNext_size;
6669     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6670     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6671     *ptr += sizeof(uint32_t);
6672     forUnmarshaling->pNext = nullptr;
6673     if (pNext_size) {
6674         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6675         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6676         *ptr += sizeof(VkStructureType);
6677         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6678         vkStream->alloc((void**)&forUnmarshaling->pNext,
6679                         goldfish_vk_extension_struct_size_with_stream_features(
6680                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6681         *(VkStructureType*)forUnmarshaling->pNext = extType;
6682         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6683                                            ptr);
6684     }
6685 }
6686 
reservedunmarshal_VkPhysicalDevice8BitStorageFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevice8BitStorageFeatures * forUnmarshaling,uint8_t ** ptr)6687 void reservedunmarshal_VkPhysicalDevice8BitStorageFeatures(
6688     VulkanStream* vkStream, VkStructureType rootType,
6689     VkPhysicalDevice8BitStorageFeatures* forUnmarshaling, uint8_t** ptr) {
6690     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6691     *ptr += sizeof(VkStructureType);
6692     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6693         rootType = forUnmarshaling->sType;
6694     }
6695     uint32_t pNext_size;
6696     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6697     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6698     *ptr += sizeof(uint32_t);
6699     forUnmarshaling->pNext = nullptr;
6700     if (pNext_size) {
6701         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6702         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6703         *ptr += sizeof(VkStructureType);
6704         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6705         vkStream->alloc((void**)&forUnmarshaling->pNext,
6706                         goldfish_vk_extension_struct_size_with_stream_features(
6707                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6708         *(VkStructureType*)forUnmarshaling->pNext = extType;
6709         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6710                                            ptr);
6711     }
6712     memcpy((VkBool32*)&forUnmarshaling->storageBuffer8BitAccess, *ptr, sizeof(VkBool32));
6713     *ptr += sizeof(VkBool32);
6714     memcpy((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer8BitAccess, *ptr, sizeof(VkBool32));
6715     *ptr += sizeof(VkBool32);
6716     memcpy((VkBool32*)&forUnmarshaling->storagePushConstant8, *ptr, sizeof(VkBool32));
6717     *ptr += sizeof(VkBool32);
6718 }
6719 
reservedunmarshal_VkPhysicalDeviceDriverProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDriverProperties * forUnmarshaling,uint8_t ** ptr)6720 void reservedunmarshal_VkPhysicalDeviceDriverProperties(
6721     VulkanStream* vkStream, VkStructureType rootType,
6722     VkPhysicalDeviceDriverProperties* forUnmarshaling, uint8_t** ptr) {
6723     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6724     *ptr += sizeof(VkStructureType);
6725     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6726         rootType = forUnmarshaling->sType;
6727     }
6728     uint32_t pNext_size;
6729     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6730     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6731     *ptr += sizeof(uint32_t);
6732     forUnmarshaling->pNext = nullptr;
6733     if (pNext_size) {
6734         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6735         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6736         *ptr += sizeof(VkStructureType);
6737         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6738         vkStream->alloc((void**)&forUnmarshaling->pNext,
6739                         goldfish_vk_extension_struct_size_with_stream_features(
6740                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6741         *(VkStructureType*)forUnmarshaling->pNext = extType;
6742         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6743                                            ptr);
6744     }
6745     memcpy((VkDriverId*)&forUnmarshaling->driverID, *ptr, sizeof(VkDriverId));
6746     *ptr += sizeof(VkDriverId);
6747     memcpy((char*)forUnmarshaling->driverName, *ptr, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
6748     *ptr += VK_MAX_DRIVER_NAME_SIZE * sizeof(char);
6749     memcpy((char*)forUnmarshaling->driverInfo, *ptr, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
6750     *ptr += VK_MAX_DRIVER_INFO_SIZE * sizeof(char);
6751     reservedunmarshal_VkConformanceVersion(
6752         vkStream, rootType, (VkConformanceVersion*)(&forUnmarshaling->conformanceVersion), ptr);
6753 }
6754 
reservedunmarshal_VkPhysicalDeviceShaderAtomicInt64Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderAtomicInt64Features * forUnmarshaling,uint8_t ** ptr)6755 void reservedunmarshal_VkPhysicalDeviceShaderAtomicInt64Features(
6756     VulkanStream* vkStream, VkStructureType rootType,
6757     VkPhysicalDeviceShaderAtomicInt64Features* forUnmarshaling, uint8_t** ptr) {
6758     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6759     *ptr += sizeof(VkStructureType);
6760     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6761         rootType = forUnmarshaling->sType;
6762     }
6763     uint32_t pNext_size;
6764     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6765     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6766     *ptr += sizeof(uint32_t);
6767     forUnmarshaling->pNext = nullptr;
6768     if (pNext_size) {
6769         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6770         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6771         *ptr += sizeof(VkStructureType);
6772         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6773         vkStream->alloc((void**)&forUnmarshaling->pNext,
6774                         goldfish_vk_extension_struct_size_with_stream_features(
6775                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6776         *(VkStructureType*)forUnmarshaling->pNext = extType;
6777         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6778                                            ptr);
6779     }
6780     memcpy((VkBool32*)&forUnmarshaling->shaderBufferInt64Atomics, *ptr, sizeof(VkBool32));
6781     *ptr += sizeof(VkBool32);
6782     memcpy((VkBool32*)&forUnmarshaling->shaderSharedInt64Atomics, *ptr, sizeof(VkBool32));
6783     *ptr += sizeof(VkBool32);
6784 }
6785 
reservedunmarshal_VkPhysicalDeviceShaderFloat16Int8Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderFloat16Int8Features * forUnmarshaling,uint8_t ** ptr)6786 void reservedunmarshal_VkPhysicalDeviceShaderFloat16Int8Features(
6787     VulkanStream* vkStream, VkStructureType rootType,
6788     VkPhysicalDeviceShaderFloat16Int8Features* forUnmarshaling, uint8_t** ptr) {
6789     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6790     *ptr += sizeof(VkStructureType);
6791     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6792         rootType = forUnmarshaling->sType;
6793     }
6794     uint32_t pNext_size;
6795     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6796     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6797     *ptr += sizeof(uint32_t);
6798     forUnmarshaling->pNext = nullptr;
6799     if (pNext_size) {
6800         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6801         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6802         *ptr += sizeof(VkStructureType);
6803         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6804         vkStream->alloc((void**)&forUnmarshaling->pNext,
6805                         goldfish_vk_extension_struct_size_with_stream_features(
6806                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6807         *(VkStructureType*)forUnmarshaling->pNext = extType;
6808         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6809                                            ptr);
6810     }
6811     memcpy((VkBool32*)&forUnmarshaling->shaderFloat16, *ptr, sizeof(VkBool32));
6812     *ptr += sizeof(VkBool32);
6813     memcpy((VkBool32*)&forUnmarshaling->shaderInt8, *ptr, sizeof(VkBool32));
6814     *ptr += sizeof(VkBool32);
6815 }
6816 
reservedunmarshal_VkPhysicalDeviceFloatControlsProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFloatControlsProperties * forUnmarshaling,uint8_t ** ptr)6817 void reservedunmarshal_VkPhysicalDeviceFloatControlsProperties(
6818     VulkanStream* vkStream, VkStructureType rootType,
6819     VkPhysicalDeviceFloatControlsProperties* forUnmarshaling, uint8_t** ptr) {
6820     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6821     *ptr += sizeof(VkStructureType);
6822     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6823         rootType = forUnmarshaling->sType;
6824     }
6825     uint32_t pNext_size;
6826     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6827     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6828     *ptr += sizeof(uint32_t);
6829     forUnmarshaling->pNext = nullptr;
6830     if (pNext_size) {
6831         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6832         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6833         *ptr += sizeof(VkStructureType);
6834         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6835         vkStream->alloc((void**)&forUnmarshaling->pNext,
6836                         goldfish_vk_extension_struct_size_with_stream_features(
6837                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6838         *(VkStructureType*)forUnmarshaling->pNext = extType;
6839         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6840                                            ptr);
6841     }
6842     memcpy((VkShaderFloatControlsIndependence*)&forUnmarshaling->denormBehaviorIndependence, *ptr,
6843            sizeof(VkShaderFloatControlsIndependence));
6844     *ptr += sizeof(VkShaderFloatControlsIndependence);
6845     memcpy((VkShaderFloatControlsIndependence*)&forUnmarshaling->roundingModeIndependence, *ptr,
6846            sizeof(VkShaderFloatControlsIndependence));
6847     *ptr += sizeof(VkShaderFloatControlsIndependence);
6848     memcpy((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat16, *ptr,
6849            sizeof(VkBool32));
6850     *ptr += sizeof(VkBool32);
6851     memcpy((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat32, *ptr,
6852            sizeof(VkBool32));
6853     *ptr += sizeof(VkBool32);
6854     memcpy((VkBool32*)&forUnmarshaling->shaderSignedZeroInfNanPreserveFloat64, *ptr,
6855            sizeof(VkBool32));
6856     *ptr += sizeof(VkBool32);
6857     memcpy((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat16, *ptr, sizeof(VkBool32));
6858     *ptr += sizeof(VkBool32);
6859     memcpy((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat32, *ptr, sizeof(VkBool32));
6860     *ptr += sizeof(VkBool32);
6861     memcpy((VkBool32*)&forUnmarshaling->shaderDenormPreserveFloat64, *ptr, sizeof(VkBool32));
6862     *ptr += sizeof(VkBool32);
6863     memcpy((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat16, *ptr, sizeof(VkBool32));
6864     *ptr += sizeof(VkBool32);
6865     memcpy((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat32, *ptr, sizeof(VkBool32));
6866     *ptr += sizeof(VkBool32);
6867     memcpy((VkBool32*)&forUnmarshaling->shaderDenormFlushToZeroFloat64, *ptr, sizeof(VkBool32));
6868     *ptr += sizeof(VkBool32);
6869     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat16, *ptr, sizeof(VkBool32));
6870     *ptr += sizeof(VkBool32);
6871     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat32, *ptr, sizeof(VkBool32));
6872     *ptr += sizeof(VkBool32);
6873     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTEFloat64, *ptr, sizeof(VkBool32));
6874     *ptr += sizeof(VkBool32);
6875     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat16, *ptr, sizeof(VkBool32));
6876     *ptr += sizeof(VkBool32);
6877     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat32, *ptr, sizeof(VkBool32));
6878     *ptr += sizeof(VkBool32);
6879     memcpy((VkBool32*)&forUnmarshaling->shaderRoundingModeRTZFloat64, *ptr, sizeof(VkBool32));
6880     *ptr += sizeof(VkBool32);
6881 }
6882 
reservedunmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetLayoutBindingFlagsCreateInfo * forUnmarshaling,uint8_t ** ptr)6883 void reservedunmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
6884     VulkanStream* vkStream, VkStructureType rootType,
6885     VkDescriptorSetLayoutBindingFlagsCreateInfo* forUnmarshaling, uint8_t** ptr) {
6886     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6887     *ptr += sizeof(VkStructureType);
6888     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6889         rootType = forUnmarshaling->sType;
6890     }
6891     uint32_t pNext_size;
6892     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6893     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6894     *ptr += sizeof(uint32_t);
6895     forUnmarshaling->pNext = nullptr;
6896     if (pNext_size) {
6897         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6898         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6899         *ptr += sizeof(VkStructureType);
6900         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6901         vkStream->alloc((void**)&forUnmarshaling->pNext,
6902                         goldfish_vk_extension_struct_size_with_stream_features(
6903                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6904         *(VkStructureType*)forUnmarshaling->pNext = extType;
6905         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6906                                            ptr);
6907     }
6908     memcpy((uint32_t*)&forUnmarshaling->bindingCount, *ptr, sizeof(uint32_t));
6909     *ptr += sizeof(uint32_t);
6910     // WARNING PTR CHECK
6911     memcpy((VkDescriptorBindingFlags**)&forUnmarshaling->pBindingFlags, (*ptr), 8);
6912     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pBindingFlags);
6913     *ptr += 8;
6914     if (forUnmarshaling->pBindingFlags) {
6915         vkStream->alloc((void**)&forUnmarshaling->pBindingFlags,
6916                         forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlags));
6917         memcpy((VkDescriptorBindingFlags*)forUnmarshaling->pBindingFlags, *ptr,
6918                forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlags));
6919         *ptr += forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlags);
6920     }
6921 }
6922 
reservedunmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDescriptorIndexingFeatures * forUnmarshaling,uint8_t ** ptr)6923 void reservedunmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(
6924     VulkanStream* vkStream, VkStructureType rootType,
6925     VkPhysicalDeviceDescriptorIndexingFeatures* forUnmarshaling, uint8_t** ptr) {
6926     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
6927     *ptr += sizeof(VkStructureType);
6928     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
6929         rootType = forUnmarshaling->sType;
6930     }
6931     uint32_t pNext_size;
6932     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
6933     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
6934     *ptr += sizeof(uint32_t);
6935     forUnmarshaling->pNext = nullptr;
6936     if (pNext_size) {
6937         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
6938         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
6939         *ptr += sizeof(VkStructureType);
6940         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
6941         vkStream->alloc((void**)&forUnmarshaling->pNext,
6942                         goldfish_vk_extension_struct_size_with_stream_features(
6943                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
6944         *(VkStructureType*)forUnmarshaling->pNext = extType;
6945         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
6946                                            ptr);
6947     }
6948     memcpy((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayDynamicIndexing, *ptr,
6949            sizeof(VkBool32));
6950     *ptr += sizeof(VkBool32);
6951     memcpy((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayDynamicIndexing, *ptr,
6952            sizeof(VkBool32));
6953     *ptr += sizeof(VkBool32);
6954     memcpy((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayDynamicIndexing, *ptr,
6955            sizeof(VkBool32));
6956     *ptr += sizeof(VkBool32);
6957     memcpy((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexing, *ptr,
6958            sizeof(VkBool32));
6959     *ptr += sizeof(VkBool32);
6960     memcpy((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexing, *ptr,
6961            sizeof(VkBool32));
6962     *ptr += sizeof(VkBool32);
6963     memcpy((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexing, *ptr,
6964            sizeof(VkBool32));
6965     *ptr += sizeof(VkBool32);
6966     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexing, *ptr,
6967            sizeof(VkBool32));
6968     *ptr += sizeof(VkBool32);
6969     memcpy((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexing, *ptr,
6970            sizeof(VkBool32));
6971     *ptr += sizeof(VkBool32);
6972     memcpy((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayNonUniformIndexing, *ptr,
6973            sizeof(VkBool32));
6974     *ptr += sizeof(VkBool32);
6975     memcpy((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayNonUniformIndexing, *ptr,
6976            sizeof(VkBool32));
6977     *ptr += sizeof(VkBool32);
6978     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingUniformBufferUpdateAfterBind, *ptr,
6979            sizeof(VkBool32));
6980     *ptr += sizeof(VkBool32);
6981     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingSampledImageUpdateAfterBind, *ptr,
6982            sizeof(VkBool32));
6983     *ptr += sizeof(VkBool32);
6984     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingStorageImageUpdateAfterBind, *ptr,
6985            sizeof(VkBool32));
6986     *ptr += sizeof(VkBool32);
6987     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingStorageBufferUpdateAfterBind, *ptr,
6988            sizeof(VkBool32));
6989     *ptr += sizeof(VkBool32);
6990     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind, *ptr,
6991            sizeof(VkBool32));
6992     *ptr += sizeof(VkBool32);
6993     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind, *ptr,
6994            sizeof(VkBool32));
6995     *ptr += sizeof(VkBool32);
6996     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingUpdateUnusedWhilePending, *ptr,
6997            sizeof(VkBool32));
6998     *ptr += sizeof(VkBool32);
6999     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingPartiallyBound, *ptr, sizeof(VkBool32));
7000     *ptr += sizeof(VkBool32);
7001     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingVariableDescriptorCount, *ptr,
7002            sizeof(VkBool32));
7003     *ptr += sizeof(VkBool32);
7004     memcpy((VkBool32*)&forUnmarshaling->runtimeDescriptorArray, *ptr, sizeof(VkBool32));
7005     *ptr += sizeof(VkBool32);
7006 }
7007 
reservedunmarshal_VkPhysicalDeviceDescriptorIndexingProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDescriptorIndexingProperties * forUnmarshaling,uint8_t ** ptr)7008 void reservedunmarshal_VkPhysicalDeviceDescriptorIndexingProperties(
7009     VulkanStream* vkStream, VkStructureType rootType,
7010     VkPhysicalDeviceDescriptorIndexingProperties* forUnmarshaling, uint8_t** ptr) {
7011     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7012     *ptr += sizeof(VkStructureType);
7013     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7014         rootType = forUnmarshaling->sType;
7015     }
7016     uint32_t pNext_size;
7017     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7018     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7019     *ptr += sizeof(uint32_t);
7020     forUnmarshaling->pNext = nullptr;
7021     if (pNext_size) {
7022         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7023         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7024         *ptr += sizeof(VkStructureType);
7025         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7026         vkStream->alloc((void**)&forUnmarshaling->pNext,
7027                         goldfish_vk_extension_struct_size_with_stream_features(
7028                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7029         *(VkStructureType*)forUnmarshaling->pNext = extType;
7030         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7031                                            ptr);
7032     }
7033     memcpy((uint32_t*)&forUnmarshaling->maxUpdateAfterBindDescriptorsInAllPools, *ptr,
7034            sizeof(uint32_t));
7035     *ptr += sizeof(uint32_t);
7036     memcpy((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexingNative, *ptr,
7037            sizeof(VkBool32));
7038     *ptr += sizeof(VkBool32);
7039     memcpy((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexingNative, *ptr,
7040            sizeof(VkBool32));
7041     *ptr += sizeof(VkBool32);
7042     memcpy((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexingNative, *ptr,
7043            sizeof(VkBool32));
7044     *ptr += sizeof(VkBool32);
7045     memcpy((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexingNative, *ptr,
7046            sizeof(VkBool32));
7047     *ptr += sizeof(VkBool32);
7048     memcpy((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexingNative, *ptr,
7049            sizeof(VkBool32));
7050     *ptr += sizeof(VkBool32);
7051     memcpy((VkBool32*)&forUnmarshaling->robustBufferAccessUpdateAfterBind, *ptr, sizeof(VkBool32));
7052     *ptr += sizeof(VkBool32);
7053     memcpy((VkBool32*)&forUnmarshaling->quadDivergentImplicitLod, *ptr, sizeof(VkBool32));
7054     *ptr += sizeof(VkBool32);
7055     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSamplers, *ptr,
7056            sizeof(uint32_t));
7057     *ptr += sizeof(uint32_t);
7058     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers, *ptr,
7059            sizeof(uint32_t));
7060     *ptr += sizeof(uint32_t);
7061     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers, *ptr,
7062            sizeof(uint32_t));
7063     *ptr += sizeof(uint32_t);
7064     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages, *ptr,
7065            sizeof(uint32_t));
7066     *ptr += sizeof(uint32_t);
7067     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages, *ptr,
7068            sizeof(uint32_t));
7069     *ptr += sizeof(uint32_t);
7070     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments, *ptr,
7071            sizeof(uint32_t));
7072     *ptr += sizeof(uint32_t);
7073     memcpy((uint32_t*)&forUnmarshaling->maxPerStageUpdateAfterBindResources, *ptr,
7074            sizeof(uint32_t));
7075     *ptr += sizeof(uint32_t);
7076     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSamplers, *ptr,
7077            sizeof(uint32_t));
7078     *ptr += sizeof(uint32_t);
7079     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers, *ptr,
7080            sizeof(uint32_t));
7081     *ptr += sizeof(uint32_t);
7082     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, *ptr,
7083            sizeof(uint32_t));
7084     *ptr += sizeof(uint32_t);
7085     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers, *ptr,
7086            sizeof(uint32_t));
7087     *ptr += sizeof(uint32_t);
7088     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, *ptr,
7089            sizeof(uint32_t));
7090     *ptr += sizeof(uint32_t);
7091     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSampledImages, *ptr,
7092            sizeof(uint32_t));
7093     *ptr += sizeof(uint32_t);
7094     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageImages, *ptr,
7095            sizeof(uint32_t));
7096     *ptr += sizeof(uint32_t);
7097     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInputAttachments, *ptr,
7098            sizeof(uint32_t));
7099     *ptr += sizeof(uint32_t);
7100 }
7101 
reservedunmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetVariableDescriptorCountAllocateInfo * forUnmarshaling,uint8_t ** ptr)7102 void reservedunmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
7103     VulkanStream* vkStream, VkStructureType rootType,
7104     VkDescriptorSetVariableDescriptorCountAllocateInfo* forUnmarshaling, uint8_t** ptr) {
7105     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7106     *ptr += sizeof(VkStructureType);
7107     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7108         rootType = forUnmarshaling->sType;
7109     }
7110     uint32_t pNext_size;
7111     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7112     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7113     *ptr += sizeof(uint32_t);
7114     forUnmarshaling->pNext = nullptr;
7115     if (pNext_size) {
7116         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7117         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7118         *ptr += sizeof(VkStructureType);
7119         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7120         vkStream->alloc((void**)&forUnmarshaling->pNext,
7121                         goldfish_vk_extension_struct_size_with_stream_features(
7122                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7123         *(VkStructureType*)forUnmarshaling->pNext = extType;
7124         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7125                                            ptr);
7126     }
7127     memcpy((uint32_t*)&forUnmarshaling->descriptorSetCount, *ptr, sizeof(uint32_t));
7128     *ptr += sizeof(uint32_t);
7129     vkStream->alloc((void**)&forUnmarshaling->pDescriptorCounts,
7130                     forUnmarshaling->descriptorSetCount * sizeof(const uint32_t));
7131     memcpy((uint32_t*)forUnmarshaling->pDescriptorCounts, *ptr,
7132            forUnmarshaling->descriptorSetCount * sizeof(const uint32_t));
7133     *ptr += forUnmarshaling->descriptorSetCount * sizeof(const uint32_t);
7134 }
7135 
reservedunmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorSetVariableDescriptorCountLayoutSupport * forUnmarshaling,uint8_t ** ptr)7136 void reservedunmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
7137     VulkanStream* vkStream, VkStructureType rootType,
7138     VkDescriptorSetVariableDescriptorCountLayoutSupport* forUnmarshaling, uint8_t** ptr) {
7139     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7140     *ptr += sizeof(VkStructureType);
7141     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7142         rootType = forUnmarshaling->sType;
7143     }
7144     uint32_t pNext_size;
7145     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7146     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7147     *ptr += sizeof(uint32_t);
7148     forUnmarshaling->pNext = nullptr;
7149     if (pNext_size) {
7150         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7151         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7152         *ptr += sizeof(VkStructureType);
7153         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7154         vkStream->alloc((void**)&forUnmarshaling->pNext,
7155                         goldfish_vk_extension_struct_size_with_stream_features(
7156                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7157         *(VkStructureType*)forUnmarshaling->pNext = extType;
7158         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7159                                            ptr);
7160     }
7161     memcpy((uint32_t*)&forUnmarshaling->maxVariableDescriptorCount, *ptr, sizeof(uint32_t));
7162     *ptr += sizeof(uint32_t);
7163 }
7164 
reservedunmarshal_VkSubpassDescriptionDepthStencilResolve(VulkanStream * vkStream,VkStructureType rootType,VkSubpassDescriptionDepthStencilResolve * forUnmarshaling,uint8_t ** ptr)7165 void reservedunmarshal_VkSubpassDescriptionDepthStencilResolve(
7166     VulkanStream* vkStream, VkStructureType rootType,
7167     VkSubpassDescriptionDepthStencilResolve* forUnmarshaling, uint8_t** ptr) {
7168     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7169     *ptr += sizeof(VkStructureType);
7170     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7171         rootType = forUnmarshaling->sType;
7172     }
7173     uint32_t pNext_size;
7174     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7175     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7176     *ptr += sizeof(uint32_t);
7177     forUnmarshaling->pNext = nullptr;
7178     if (pNext_size) {
7179         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7180         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7181         *ptr += sizeof(VkStructureType);
7182         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7183         vkStream->alloc((void**)&forUnmarshaling->pNext,
7184                         goldfish_vk_extension_struct_size_with_stream_features(
7185                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7186         *(VkStructureType*)forUnmarshaling->pNext = extType;
7187         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7188                                            ptr);
7189     }
7190     memcpy((VkResolveModeFlagBits*)&forUnmarshaling->depthResolveMode, *ptr,
7191            sizeof(VkResolveModeFlagBits));
7192     *ptr += sizeof(VkResolveModeFlagBits);
7193     memcpy((VkResolveModeFlagBits*)&forUnmarshaling->stencilResolveMode, *ptr,
7194            sizeof(VkResolveModeFlagBits));
7195     *ptr += sizeof(VkResolveModeFlagBits);
7196     // WARNING PTR CHECK
7197     memcpy((VkAttachmentReference2**)&forUnmarshaling->pDepthStencilResolveAttachment, (*ptr), 8);
7198     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDepthStencilResolveAttachment);
7199     *ptr += 8;
7200     if (forUnmarshaling->pDepthStencilResolveAttachment) {
7201         vkStream->alloc((void**)&forUnmarshaling->pDepthStencilResolveAttachment,
7202                         sizeof(const VkAttachmentReference2));
7203         reservedunmarshal_VkAttachmentReference2(
7204             vkStream, rootType,
7205             (VkAttachmentReference2*)(forUnmarshaling->pDepthStencilResolveAttachment), ptr);
7206     }
7207 }
7208 
reservedunmarshal_VkPhysicalDeviceDepthStencilResolveProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDepthStencilResolveProperties * forUnmarshaling,uint8_t ** ptr)7209 void reservedunmarshal_VkPhysicalDeviceDepthStencilResolveProperties(
7210     VulkanStream* vkStream, VkStructureType rootType,
7211     VkPhysicalDeviceDepthStencilResolveProperties* forUnmarshaling, uint8_t** ptr) {
7212     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7213     *ptr += sizeof(VkStructureType);
7214     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7215         rootType = forUnmarshaling->sType;
7216     }
7217     uint32_t pNext_size;
7218     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7219     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7220     *ptr += sizeof(uint32_t);
7221     forUnmarshaling->pNext = nullptr;
7222     if (pNext_size) {
7223         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7224         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7225         *ptr += sizeof(VkStructureType);
7226         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7227         vkStream->alloc((void**)&forUnmarshaling->pNext,
7228                         goldfish_vk_extension_struct_size_with_stream_features(
7229                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7230         *(VkStructureType*)forUnmarshaling->pNext = extType;
7231         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7232                                            ptr);
7233     }
7234     memcpy((VkResolveModeFlags*)&forUnmarshaling->supportedDepthResolveModes, *ptr,
7235            sizeof(VkResolveModeFlags));
7236     *ptr += sizeof(VkResolveModeFlags);
7237     memcpy((VkResolveModeFlags*)&forUnmarshaling->supportedStencilResolveModes, *ptr,
7238            sizeof(VkResolveModeFlags));
7239     *ptr += sizeof(VkResolveModeFlags);
7240     memcpy((VkBool32*)&forUnmarshaling->independentResolveNone, *ptr, sizeof(VkBool32));
7241     *ptr += sizeof(VkBool32);
7242     memcpy((VkBool32*)&forUnmarshaling->independentResolve, *ptr, sizeof(VkBool32));
7243     *ptr += sizeof(VkBool32);
7244 }
7245 
reservedunmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceScalarBlockLayoutFeatures * forUnmarshaling,uint8_t ** ptr)7246 void reservedunmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
7247     VulkanStream* vkStream, VkStructureType rootType,
7248     VkPhysicalDeviceScalarBlockLayoutFeatures* forUnmarshaling, uint8_t** ptr) {
7249     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7250     *ptr += sizeof(VkStructureType);
7251     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7252         rootType = forUnmarshaling->sType;
7253     }
7254     uint32_t pNext_size;
7255     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7256     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7257     *ptr += sizeof(uint32_t);
7258     forUnmarshaling->pNext = nullptr;
7259     if (pNext_size) {
7260         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7261         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7262         *ptr += sizeof(VkStructureType);
7263         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7264         vkStream->alloc((void**)&forUnmarshaling->pNext,
7265                         goldfish_vk_extension_struct_size_with_stream_features(
7266                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7267         *(VkStructureType*)forUnmarshaling->pNext = extType;
7268         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7269                                            ptr);
7270     }
7271     memcpy((VkBool32*)&forUnmarshaling->scalarBlockLayout, *ptr, sizeof(VkBool32));
7272     *ptr += sizeof(VkBool32);
7273 }
7274 
reservedunmarshal_VkImageStencilUsageCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkImageStencilUsageCreateInfo * forUnmarshaling,uint8_t ** ptr)7275 void reservedunmarshal_VkImageStencilUsageCreateInfo(VulkanStream* vkStream,
7276                                                      VkStructureType rootType,
7277                                                      VkImageStencilUsageCreateInfo* forUnmarshaling,
7278                                                      uint8_t** ptr) {
7279     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7280     *ptr += sizeof(VkStructureType);
7281     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7282         rootType = forUnmarshaling->sType;
7283     }
7284     uint32_t pNext_size;
7285     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7286     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7287     *ptr += sizeof(uint32_t);
7288     forUnmarshaling->pNext = nullptr;
7289     if (pNext_size) {
7290         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7291         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7292         *ptr += sizeof(VkStructureType);
7293         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7294         vkStream->alloc((void**)&forUnmarshaling->pNext,
7295                         goldfish_vk_extension_struct_size_with_stream_features(
7296                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7297         *(VkStructureType*)forUnmarshaling->pNext = extType;
7298         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7299                                            ptr);
7300     }
7301     memcpy((VkImageUsageFlags*)&forUnmarshaling->stencilUsage, *ptr, sizeof(VkImageUsageFlags));
7302     *ptr += sizeof(VkImageUsageFlags);
7303 }
7304 
reservedunmarshal_VkSamplerReductionModeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSamplerReductionModeCreateInfo * forUnmarshaling,uint8_t ** ptr)7305 void reservedunmarshal_VkSamplerReductionModeCreateInfo(
7306     VulkanStream* vkStream, VkStructureType rootType,
7307     VkSamplerReductionModeCreateInfo* forUnmarshaling, uint8_t** ptr) {
7308     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7309     *ptr += sizeof(VkStructureType);
7310     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7311         rootType = forUnmarshaling->sType;
7312     }
7313     uint32_t pNext_size;
7314     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7315     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7316     *ptr += sizeof(uint32_t);
7317     forUnmarshaling->pNext = nullptr;
7318     if (pNext_size) {
7319         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7320         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7321         *ptr += sizeof(VkStructureType);
7322         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7323         vkStream->alloc((void**)&forUnmarshaling->pNext,
7324                         goldfish_vk_extension_struct_size_with_stream_features(
7325                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7326         *(VkStructureType*)forUnmarshaling->pNext = extType;
7327         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7328                                            ptr);
7329     }
7330     memcpy((VkSamplerReductionMode*)&forUnmarshaling->reductionMode, *ptr,
7331            sizeof(VkSamplerReductionMode));
7332     *ptr += sizeof(VkSamplerReductionMode);
7333 }
7334 
reservedunmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSamplerFilterMinmaxProperties * forUnmarshaling,uint8_t ** ptr)7335 void reservedunmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
7336     VulkanStream* vkStream, VkStructureType rootType,
7337     VkPhysicalDeviceSamplerFilterMinmaxProperties* forUnmarshaling, uint8_t** ptr) {
7338     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7339     *ptr += sizeof(VkStructureType);
7340     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7341         rootType = forUnmarshaling->sType;
7342     }
7343     uint32_t pNext_size;
7344     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7345     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7346     *ptr += sizeof(uint32_t);
7347     forUnmarshaling->pNext = nullptr;
7348     if (pNext_size) {
7349         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7350         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7351         *ptr += sizeof(VkStructureType);
7352         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7353         vkStream->alloc((void**)&forUnmarshaling->pNext,
7354                         goldfish_vk_extension_struct_size_with_stream_features(
7355                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7356         *(VkStructureType*)forUnmarshaling->pNext = extType;
7357         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7358                                            ptr);
7359     }
7360     memcpy((VkBool32*)&forUnmarshaling->filterMinmaxSingleComponentFormats, *ptr, sizeof(VkBool32));
7361     *ptr += sizeof(VkBool32);
7362     memcpy((VkBool32*)&forUnmarshaling->filterMinmaxImageComponentMapping, *ptr, sizeof(VkBool32));
7363     *ptr += sizeof(VkBool32);
7364 }
7365 
reservedunmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkanMemoryModelFeatures * forUnmarshaling,uint8_t ** ptr)7366 void reservedunmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
7367     VulkanStream* vkStream, VkStructureType rootType,
7368     VkPhysicalDeviceVulkanMemoryModelFeatures* forUnmarshaling, uint8_t** ptr) {
7369     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7370     *ptr += sizeof(VkStructureType);
7371     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7372         rootType = forUnmarshaling->sType;
7373     }
7374     uint32_t pNext_size;
7375     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7376     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7377     *ptr += sizeof(uint32_t);
7378     forUnmarshaling->pNext = nullptr;
7379     if (pNext_size) {
7380         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7381         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7382         *ptr += sizeof(VkStructureType);
7383         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7384         vkStream->alloc((void**)&forUnmarshaling->pNext,
7385                         goldfish_vk_extension_struct_size_with_stream_features(
7386                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7387         *(VkStructureType*)forUnmarshaling->pNext = extType;
7388         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7389                                            ptr);
7390     }
7391     memcpy((VkBool32*)&forUnmarshaling->vulkanMemoryModel, *ptr, sizeof(VkBool32));
7392     *ptr += sizeof(VkBool32);
7393     memcpy((VkBool32*)&forUnmarshaling->vulkanMemoryModelDeviceScope, *ptr, sizeof(VkBool32));
7394     *ptr += sizeof(VkBool32);
7395     memcpy((VkBool32*)&forUnmarshaling->vulkanMemoryModelAvailabilityVisibilityChains, *ptr,
7396            sizeof(VkBool32));
7397     *ptr += sizeof(VkBool32);
7398 }
7399 
reservedunmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImagelessFramebufferFeatures * forUnmarshaling,uint8_t ** ptr)7400 void reservedunmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(
7401     VulkanStream* vkStream, VkStructureType rootType,
7402     VkPhysicalDeviceImagelessFramebufferFeatures* forUnmarshaling, uint8_t** ptr) {
7403     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7404     *ptr += sizeof(VkStructureType);
7405     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7406         rootType = forUnmarshaling->sType;
7407     }
7408     uint32_t pNext_size;
7409     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7410     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7411     *ptr += sizeof(uint32_t);
7412     forUnmarshaling->pNext = nullptr;
7413     if (pNext_size) {
7414         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7415         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7416         *ptr += sizeof(VkStructureType);
7417         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7418         vkStream->alloc((void**)&forUnmarshaling->pNext,
7419                         goldfish_vk_extension_struct_size_with_stream_features(
7420                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7421         *(VkStructureType*)forUnmarshaling->pNext = extType;
7422         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7423                                            ptr);
7424     }
7425     memcpy((VkBool32*)&forUnmarshaling->imagelessFramebuffer, *ptr, sizeof(VkBool32));
7426     *ptr += sizeof(VkBool32);
7427 }
7428 
reservedunmarshal_VkFramebufferAttachmentImageInfo(VulkanStream * vkStream,VkStructureType rootType,VkFramebufferAttachmentImageInfo * forUnmarshaling,uint8_t ** ptr)7429 void reservedunmarshal_VkFramebufferAttachmentImageInfo(
7430     VulkanStream* vkStream, VkStructureType rootType,
7431     VkFramebufferAttachmentImageInfo* forUnmarshaling, uint8_t** ptr) {
7432     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7433     *ptr += sizeof(VkStructureType);
7434     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7435         rootType = forUnmarshaling->sType;
7436     }
7437     uint32_t pNext_size;
7438     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7439     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7440     *ptr += sizeof(uint32_t);
7441     forUnmarshaling->pNext = nullptr;
7442     if (pNext_size) {
7443         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7444         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7445         *ptr += sizeof(VkStructureType);
7446         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7447         vkStream->alloc((void**)&forUnmarshaling->pNext,
7448                         goldfish_vk_extension_struct_size_with_stream_features(
7449                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7450         *(VkStructureType*)forUnmarshaling->pNext = extType;
7451         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7452                                            ptr);
7453     }
7454     memcpy((VkImageCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkImageCreateFlags));
7455     *ptr += sizeof(VkImageCreateFlags);
7456     memcpy((VkImageUsageFlags*)&forUnmarshaling->usage, *ptr, sizeof(VkImageUsageFlags));
7457     *ptr += sizeof(VkImageUsageFlags);
7458     memcpy((uint32_t*)&forUnmarshaling->width, *ptr, sizeof(uint32_t));
7459     *ptr += sizeof(uint32_t);
7460     memcpy((uint32_t*)&forUnmarshaling->height, *ptr, sizeof(uint32_t));
7461     *ptr += sizeof(uint32_t);
7462     memcpy((uint32_t*)&forUnmarshaling->layerCount, *ptr, sizeof(uint32_t));
7463     *ptr += sizeof(uint32_t);
7464     memcpy((uint32_t*)&forUnmarshaling->viewFormatCount, *ptr, sizeof(uint32_t));
7465     *ptr += sizeof(uint32_t);
7466     vkStream->alloc((void**)&forUnmarshaling->pViewFormats,
7467                     forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
7468     memcpy((VkFormat*)forUnmarshaling->pViewFormats, *ptr,
7469            forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
7470     *ptr += forUnmarshaling->viewFormatCount * sizeof(const VkFormat);
7471 }
7472 
reservedunmarshal_VkFramebufferAttachmentsCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkFramebufferAttachmentsCreateInfo * forUnmarshaling,uint8_t ** ptr)7473 void reservedunmarshal_VkFramebufferAttachmentsCreateInfo(
7474     VulkanStream* vkStream, VkStructureType rootType,
7475     VkFramebufferAttachmentsCreateInfo* forUnmarshaling, uint8_t** ptr) {
7476     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7477     *ptr += sizeof(VkStructureType);
7478     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7479         rootType = forUnmarshaling->sType;
7480     }
7481     uint32_t pNext_size;
7482     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7483     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7484     *ptr += sizeof(uint32_t);
7485     forUnmarshaling->pNext = nullptr;
7486     if (pNext_size) {
7487         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7488         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7489         *ptr += sizeof(VkStructureType);
7490         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7491         vkStream->alloc((void**)&forUnmarshaling->pNext,
7492                         goldfish_vk_extension_struct_size_with_stream_features(
7493                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7494         *(VkStructureType*)forUnmarshaling->pNext = extType;
7495         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7496                                            ptr);
7497     }
7498     memcpy((uint32_t*)&forUnmarshaling->attachmentImageInfoCount, *ptr, sizeof(uint32_t));
7499     *ptr += sizeof(uint32_t);
7500     vkStream->alloc(
7501         (void**)&forUnmarshaling->pAttachmentImageInfos,
7502         forUnmarshaling->attachmentImageInfoCount * sizeof(const VkFramebufferAttachmentImageInfo));
7503     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentImageInfoCount; ++i) {
7504         reservedunmarshal_VkFramebufferAttachmentImageInfo(
7505             vkStream, rootType,
7506             (VkFramebufferAttachmentImageInfo*)(forUnmarshaling->pAttachmentImageInfos + i), ptr);
7507     }
7508 }
7509 
reservedunmarshal_VkRenderPassAttachmentBeginInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassAttachmentBeginInfo * forUnmarshaling,uint8_t ** ptr)7510 void reservedunmarshal_VkRenderPassAttachmentBeginInfo(
7511     VulkanStream* vkStream, VkStructureType rootType,
7512     VkRenderPassAttachmentBeginInfo* forUnmarshaling, uint8_t** ptr) {
7513     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7514     *ptr += sizeof(VkStructureType);
7515     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7516         rootType = forUnmarshaling->sType;
7517     }
7518     uint32_t pNext_size;
7519     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7520     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7521     *ptr += sizeof(uint32_t);
7522     forUnmarshaling->pNext = nullptr;
7523     if (pNext_size) {
7524         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7525         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7526         *ptr += sizeof(VkStructureType);
7527         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7528         vkStream->alloc((void**)&forUnmarshaling->pNext,
7529                         goldfish_vk_extension_struct_size_with_stream_features(
7530                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7531         *(VkStructureType*)forUnmarshaling->pNext = extType;
7532         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7533                                            ptr);
7534     }
7535     memcpy((uint32_t*)&forUnmarshaling->attachmentCount, *ptr, sizeof(uint32_t));
7536     *ptr += sizeof(uint32_t);
7537     vkStream->alloc((void**)&forUnmarshaling->pAttachments,
7538                     forUnmarshaling->attachmentCount * sizeof(const VkImageView));
7539     if (forUnmarshaling->attachmentCount) {
7540         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
7541         *ptr += 8 * forUnmarshaling->attachmentCount;
7542         if (forUnmarshaling) {
7543             for (uint32_t k = 0; k < forUnmarshaling->attachmentCount; ++k) {
7544                 uint64_t tmpval;
7545                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
7546                 *(((VkImageView*)forUnmarshaling->pAttachments) + k) =
7547                     tmpval ? (VkImageView)unbox_VkImageView((VkImageView)tmpval) : VK_NULL_HANDLE;
7548             }
7549         }
7550     }
7551 }
7552 
reservedunmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceUniformBufferStandardLayoutFeatures * forUnmarshaling,uint8_t ** ptr)7553 void reservedunmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
7554     VulkanStream* vkStream, VkStructureType rootType,
7555     VkPhysicalDeviceUniformBufferStandardLayoutFeatures* forUnmarshaling, uint8_t** ptr) {
7556     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7557     *ptr += sizeof(VkStructureType);
7558     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7559         rootType = forUnmarshaling->sType;
7560     }
7561     uint32_t pNext_size;
7562     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7563     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7564     *ptr += sizeof(uint32_t);
7565     forUnmarshaling->pNext = nullptr;
7566     if (pNext_size) {
7567         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7568         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7569         *ptr += sizeof(VkStructureType);
7570         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7571         vkStream->alloc((void**)&forUnmarshaling->pNext,
7572                         goldfish_vk_extension_struct_size_with_stream_features(
7573                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7574         *(VkStructureType*)forUnmarshaling->pNext = extType;
7575         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7576                                            ptr);
7577     }
7578     memcpy((VkBool32*)&forUnmarshaling->uniformBufferStandardLayout, *ptr, sizeof(VkBool32));
7579     *ptr += sizeof(VkBool32);
7580 }
7581 
reservedunmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures * forUnmarshaling,uint8_t ** ptr)7582 void reservedunmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
7583     VulkanStream* vkStream, VkStructureType rootType,
7584     VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* forUnmarshaling, uint8_t** ptr) {
7585     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7586     *ptr += sizeof(VkStructureType);
7587     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7588         rootType = forUnmarshaling->sType;
7589     }
7590     uint32_t pNext_size;
7591     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7592     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7593     *ptr += sizeof(uint32_t);
7594     forUnmarshaling->pNext = nullptr;
7595     if (pNext_size) {
7596         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7597         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7598         *ptr += sizeof(VkStructureType);
7599         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7600         vkStream->alloc((void**)&forUnmarshaling->pNext,
7601                         goldfish_vk_extension_struct_size_with_stream_features(
7602                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7603         *(VkStructureType*)forUnmarshaling->pNext = extType;
7604         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7605                                            ptr);
7606     }
7607     memcpy((VkBool32*)&forUnmarshaling->shaderSubgroupExtendedTypes, *ptr, sizeof(VkBool32));
7608     *ptr += sizeof(VkBool32);
7609 }
7610 
reservedunmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures * forUnmarshaling,uint8_t ** ptr)7611 void reservedunmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
7612     VulkanStream* vkStream, VkStructureType rootType,
7613     VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* forUnmarshaling, uint8_t** ptr) {
7614     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7615     *ptr += sizeof(VkStructureType);
7616     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7617         rootType = forUnmarshaling->sType;
7618     }
7619     uint32_t pNext_size;
7620     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7621     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7622     *ptr += sizeof(uint32_t);
7623     forUnmarshaling->pNext = nullptr;
7624     if (pNext_size) {
7625         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7626         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7627         *ptr += sizeof(VkStructureType);
7628         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7629         vkStream->alloc((void**)&forUnmarshaling->pNext,
7630                         goldfish_vk_extension_struct_size_with_stream_features(
7631                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7632         *(VkStructureType*)forUnmarshaling->pNext = extType;
7633         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7634                                            ptr);
7635     }
7636     memcpy((VkBool32*)&forUnmarshaling->separateDepthStencilLayouts, *ptr, sizeof(VkBool32));
7637     *ptr += sizeof(VkBool32);
7638 }
7639 
reservedunmarshal_VkAttachmentReferenceStencilLayout(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentReferenceStencilLayout * forUnmarshaling,uint8_t ** ptr)7640 void reservedunmarshal_VkAttachmentReferenceStencilLayout(
7641     VulkanStream* vkStream, VkStructureType rootType,
7642     VkAttachmentReferenceStencilLayout* forUnmarshaling, uint8_t** ptr) {
7643     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7644     *ptr += sizeof(VkStructureType);
7645     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7646         rootType = forUnmarshaling->sType;
7647     }
7648     uint32_t pNext_size;
7649     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7650     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7651     *ptr += sizeof(uint32_t);
7652     forUnmarshaling->pNext = nullptr;
7653     if (pNext_size) {
7654         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7655         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7656         *ptr += sizeof(VkStructureType);
7657         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7658         vkStream->alloc((void**)&forUnmarshaling->pNext,
7659                         goldfish_vk_extension_struct_size_with_stream_features(
7660                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7661         *(VkStructureType*)forUnmarshaling->pNext = extType;
7662         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7663                                            ptr);
7664     }
7665     memcpy((VkImageLayout*)&forUnmarshaling->stencilLayout, *ptr, sizeof(VkImageLayout));
7666     *ptr += sizeof(VkImageLayout);
7667 }
7668 
reservedunmarshal_VkAttachmentDescriptionStencilLayout(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentDescriptionStencilLayout * forUnmarshaling,uint8_t ** ptr)7669 void reservedunmarshal_VkAttachmentDescriptionStencilLayout(
7670     VulkanStream* vkStream, VkStructureType rootType,
7671     VkAttachmentDescriptionStencilLayout* forUnmarshaling, uint8_t** ptr) {
7672     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7673     *ptr += sizeof(VkStructureType);
7674     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7675         rootType = forUnmarshaling->sType;
7676     }
7677     uint32_t pNext_size;
7678     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7679     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7680     *ptr += sizeof(uint32_t);
7681     forUnmarshaling->pNext = nullptr;
7682     if (pNext_size) {
7683         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7684         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7685         *ptr += sizeof(VkStructureType);
7686         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7687         vkStream->alloc((void**)&forUnmarshaling->pNext,
7688                         goldfish_vk_extension_struct_size_with_stream_features(
7689                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7690         *(VkStructureType*)forUnmarshaling->pNext = extType;
7691         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7692                                            ptr);
7693     }
7694     memcpy((VkImageLayout*)&forUnmarshaling->stencilInitialLayout, *ptr, sizeof(VkImageLayout));
7695     *ptr += sizeof(VkImageLayout);
7696     memcpy((VkImageLayout*)&forUnmarshaling->stencilFinalLayout, *ptr, sizeof(VkImageLayout));
7697     *ptr += sizeof(VkImageLayout);
7698 }
7699 
reservedunmarshal_VkPhysicalDeviceHostQueryResetFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceHostQueryResetFeatures * forUnmarshaling,uint8_t ** ptr)7700 void reservedunmarshal_VkPhysicalDeviceHostQueryResetFeatures(
7701     VulkanStream* vkStream, VkStructureType rootType,
7702     VkPhysicalDeviceHostQueryResetFeatures* forUnmarshaling, uint8_t** ptr) {
7703     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7704     *ptr += sizeof(VkStructureType);
7705     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7706         rootType = forUnmarshaling->sType;
7707     }
7708     uint32_t pNext_size;
7709     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7710     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7711     *ptr += sizeof(uint32_t);
7712     forUnmarshaling->pNext = nullptr;
7713     if (pNext_size) {
7714         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7715         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7716         *ptr += sizeof(VkStructureType);
7717         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7718         vkStream->alloc((void**)&forUnmarshaling->pNext,
7719                         goldfish_vk_extension_struct_size_with_stream_features(
7720                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7721         *(VkStructureType*)forUnmarshaling->pNext = extType;
7722         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7723                                            ptr);
7724     }
7725     memcpy((VkBool32*)&forUnmarshaling->hostQueryReset, *ptr, sizeof(VkBool32));
7726     *ptr += sizeof(VkBool32);
7727 }
7728 
reservedunmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTimelineSemaphoreFeatures * forUnmarshaling,uint8_t ** ptr)7729 void reservedunmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
7730     VulkanStream* vkStream, VkStructureType rootType,
7731     VkPhysicalDeviceTimelineSemaphoreFeatures* forUnmarshaling, uint8_t** ptr) {
7732     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7733     *ptr += sizeof(VkStructureType);
7734     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7735         rootType = forUnmarshaling->sType;
7736     }
7737     uint32_t pNext_size;
7738     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7739     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7740     *ptr += sizeof(uint32_t);
7741     forUnmarshaling->pNext = nullptr;
7742     if (pNext_size) {
7743         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7744         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7745         *ptr += sizeof(VkStructureType);
7746         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7747         vkStream->alloc((void**)&forUnmarshaling->pNext,
7748                         goldfish_vk_extension_struct_size_with_stream_features(
7749                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7750         *(VkStructureType*)forUnmarshaling->pNext = extType;
7751         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7752                                            ptr);
7753     }
7754     memcpy((VkBool32*)&forUnmarshaling->timelineSemaphore, *ptr, sizeof(VkBool32));
7755     *ptr += sizeof(VkBool32);
7756 }
7757 
reservedunmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTimelineSemaphoreProperties * forUnmarshaling,uint8_t ** ptr)7758 void reservedunmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(
7759     VulkanStream* vkStream, VkStructureType rootType,
7760     VkPhysicalDeviceTimelineSemaphoreProperties* forUnmarshaling, uint8_t** ptr) {
7761     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7762     *ptr += sizeof(VkStructureType);
7763     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7764         rootType = forUnmarshaling->sType;
7765     }
7766     uint32_t pNext_size;
7767     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7768     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7769     *ptr += sizeof(uint32_t);
7770     forUnmarshaling->pNext = nullptr;
7771     if (pNext_size) {
7772         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7773         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7774         *ptr += sizeof(VkStructureType);
7775         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7776         vkStream->alloc((void**)&forUnmarshaling->pNext,
7777                         goldfish_vk_extension_struct_size_with_stream_features(
7778                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7779         *(VkStructureType*)forUnmarshaling->pNext = extType;
7780         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7781                                            ptr);
7782     }
7783     memcpy((uint64_t*)&forUnmarshaling->maxTimelineSemaphoreValueDifference, *ptr,
7784            sizeof(uint64_t));
7785     *ptr += sizeof(uint64_t);
7786 }
7787 
reservedunmarshal_VkSemaphoreTypeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreTypeCreateInfo * forUnmarshaling,uint8_t ** ptr)7788 void reservedunmarshal_VkSemaphoreTypeCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
7789                                                  VkSemaphoreTypeCreateInfo* forUnmarshaling,
7790                                                  uint8_t** ptr) {
7791     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7792     *ptr += sizeof(VkStructureType);
7793     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7794         rootType = forUnmarshaling->sType;
7795     }
7796     uint32_t pNext_size;
7797     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7798     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7799     *ptr += sizeof(uint32_t);
7800     forUnmarshaling->pNext = nullptr;
7801     if (pNext_size) {
7802         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7803         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7804         *ptr += sizeof(VkStructureType);
7805         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7806         vkStream->alloc((void**)&forUnmarshaling->pNext,
7807                         goldfish_vk_extension_struct_size_with_stream_features(
7808                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7809         *(VkStructureType*)forUnmarshaling->pNext = extType;
7810         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7811                                            ptr);
7812     }
7813     memcpy((VkSemaphoreType*)&forUnmarshaling->semaphoreType, *ptr, sizeof(VkSemaphoreType));
7814     *ptr += sizeof(VkSemaphoreType);
7815     memcpy((uint64_t*)&forUnmarshaling->initialValue, *ptr, sizeof(uint64_t));
7816     *ptr += sizeof(uint64_t);
7817 }
7818 
reservedunmarshal_VkTimelineSemaphoreSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkTimelineSemaphoreSubmitInfo * forUnmarshaling,uint8_t ** ptr)7819 void reservedunmarshal_VkTimelineSemaphoreSubmitInfo(VulkanStream* vkStream,
7820                                                      VkStructureType rootType,
7821                                                      VkTimelineSemaphoreSubmitInfo* forUnmarshaling,
7822                                                      uint8_t** ptr) {
7823     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7824     *ptr += sizeof(VkStructureType);
7825     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7826         rootType = forUnmarshaling->sType;
7827     }
7828     uint32_t pNext_size;
7829     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7830     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7831     *ptr += sizeof(uint32_t);
7832     forUnmarshaling->pNext = nullptr;
7833     if (pNext_size) {
7834         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7835         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7836         *ptr += sizeof(VkStructureType);
7837         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7838         vkStream->alloc((void**)&forUnmarshaling->pNext,
7839                         goldfish_vk_extension_struct_size_with_stream_features(
7840                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7841         *(VkStructureType*)forUnmarshaling->pNext = extType;
7842         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7843                                            ptr);
7844     }
7845     memcpy((uint32_t*)&forUnmarshaling->waitSemaphoreValueCount, *ptr, sizeof(uint32_t));
7846     *ptr += sizeof(uint32_t);
7847     // WARNING PTR CHECK
7848     memcpy((uint64_t**)&forUnmarshaling->pWaitSemaphoreValues, (*ptr), 8);
7849     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pWaitSemaphoreValues);
7850     *ptr += 8;
7851     if (forUnmarshaling->pWaitSemaphoreValues) {
7852         vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreValues,
7853                         forUnmarshaling->waitSemaphoreValueCount * sizeof(const uint64_t));
7854         memcpy((uint64_t*)forUnmarshaling->pWaitSemaphoreValues, *ptr,
7855                forUnmarshaling->waitSemaphoreValueCount * sizeof(const uint64_t));
7856         *ptr += forUnmarshaling->waitSemaphoreValueCount * sizeof(const uint64_t);
7857     }
7858     memcpy((uint32_t*)&forUnmarshaling->signalSemaphoreValueCount, *ptr, sizeof(uint32_t));
7859     *ptr += sizeof(uint32_t);
7860     // WARNING PTR CHECK
7861     memcpy((uint64_t**)&forUnmarshaling->pSignalSemaphoreValues, (*ptr), 8);
7862     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pSignalSemaphoreValues);
7863     *ptr += 8;
7864     if (forUnmarshaling->pSignalSemaphoreValues) {
7865         vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreValues,
7866                         forUnmarshaling->signalSemaphoreValueCount * sizeof(const uint64_t));
7867         memcpy((uint64_t*)forUnmarshaling->pSignalSemaphoreValues, *ptr,
7868                forUnmarshaling->signalSemaphoreValueCount * sizeof(const uint64_t));
7869         *ptr += forUnmarshaling->signalSemaphoreValueCount * sizeof(const uint64_t);
7870     }
7871 }
7872 
reservedunmarshal_VkSemaphoreWaitInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreWaitInfo * forUnmarshaling,uint8_t ** ptr)7873 void reservedunmarshal_VkSemaphoreWaitInfo(VulkanStream* vkStream, VkStructureType rootType,
7874                                            VkSemaphoreWaitInfo* forUnmarshaling, uint8_t** ptr) {
7875     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7876     *ptr += sizeof(VkStructureType);
7877     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7878         rootType = forUnmarshaling->sType;
7879     }
7880     uint32_t pNext_size;
7881     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7882     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7883     *ptr += sizeof(uint32_t);
7884     forUnmarshaling->pNext = nullptr;
7885     if (pNext_size) {
7886         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7887         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7888         *ptr += sizeof(VkStructureType);
7889         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7890         vkStream->alloc((void**)&forUnmarshaling->pNext,
7891                         goldfish_vk_extension_struct_size_with_stream_features(
7892                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7893         *(VkStructureType*)forUnmarshaling->pNext = extType;
7894         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7895                                            ptr);
7896     }
7897     memcpy((VkSemaphoreWaitFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkSemaphoreWaitFlags));
7898     *ptr += sizeof(VkSemaphoreWaitFlags);
7899     memcpy((uint32_t*)&forUnmarshaling->semaphoreCount, *ptr, sizeof(uint32_t));
7900     *ptr += sizeof(uint32_t);
7901     vkStream->alloc((void**)&forUnmarshaling->pSemaphores,
7902                     forUnmarshaling->semaphoreCount * sizeof(const VkSemaphore));
7903     if (forUnmarshaling->semaphoreCount) {
7904         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
7905         *ptr += 8 * forUnmarshaling->semaphoreCount;
7906         if (forUnmarshaling) {
7907             for (uint32_t k = 0; k < forUnmarshaling->semaphoreCount; ++k) {
7908                 uint64_t tmpval;
7909                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
7910                 *(((VkSemaphore*)forUnmarshaling->pSemaphores) + k) =
7911                     tmpval ? (VkSemaphore)unbox_VkSemaphore((VkSemaphore)tmpval) : VK_NULL_HANDLE;
7912             }
7913         }
7914     }
7915     vkStream->alloc((void**)&forUnmarshaling->pValues,
7916                     forUnmarshaling->semaphoreCount * sizeof(const uint64_t));
7917     memcpy((uint64_t*)forUnmarshaling->pValues, *ptr,
7918            forUnmarshaling->semaphoreCount * sizeof(const uint64_t));
7919     *ptr += forUnmarshaling->semaphoreCount * sizeof(const uint64_t);
7920 }
7921 
reservedunmarshal_VkSemaphoreSignalInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreSignalInfo * forUnmarshaling,uint8_t ** ptr)7922 void reservedunmarshal_VkSemaphoreSignalInfo(VulkanStream* vkStream, VkStructureType rootType,
7923                                              VkSemaphoreSignalInfo* forUnmarshaling,
7924                                              uint8_t** ptr) {
7925     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7926     *ptr += sizeof(VkStructureType);
7927     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7928         rootType = forUnmarshaling->sType;
7929     }
7930     uint32_t pNext_size;
7931     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7932     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7933     *ptr += sizeof(uint32_t);
7934     forUnmarshaling->pNext = nullptr;
7935     if (pNext_size) {
7936         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7937         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7938         *ptr += sizeof(VkStructureType);
7939         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
7940         vkStream->alloc((void**)&forUnmarshaling->pNext,
7941                         goldfish_vk_extension_struct_size_with_stream_features(
7942                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
7943         *(VkStructureType*)forUnmarshaling->pNext = extType;
7944         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7945                                            ptr);
7946     }
7947     uint64_t cgen_var_0;
7948     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
7949     *ptr += 1 * 8;
7950     *(VkSemaphore*)&forUnmarshaling->semaphore =
7951         (VkSemaphore)unbox_VkSemaphore((VkSemaphore)(*&cgen_var_0));
7952     memcpy((uint64_t*)&forUnmarshaling->value, *ptr, sizeof(uint64_t));
7953     *ptr += sizeof(uint64_t);
7954 }
7955 
reservedunmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceBufferDeviceAddressFeatures * forUnmarshaling,uint8_t ** ptr)7956 void reservedunmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
7957     VulkanStream* vkStream, VkStructureType rootType,
7958     VkPhysicalDeviceBufferDeviceAddressFeatures* forUnmarshaling, uint8_t** ptr) {
7959     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7960     *ptr += sizeof(VkStructureType);
7961     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7962         rootType = forUnmarshaling->sType;
7963     }
7964     uint32_t pNext_size;
7965     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7966     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
7967     *ptr += sizeof(uint32_t);
7968     forUnmarshaling->pNext = nullptr;
7969     if (pNext_size) {
7970         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
7971         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
7972         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
7979                                            ptr);
7980     }
7981     memcpy((VkBool32*)&forUnmarshaling->bufferDeviceAddress, *ptr, sizeof(VkBool32));
7982     *ptr += sizeof(VkBool32);
7983     memcpy((VkBool32*)&forUnmarshaling->bufferDeviceAddressCaptureReplay, *ptr, sizeof(VkBool32));
7984     *ptr += sizeof(VkBool32);
7985     memcpy((VkBool32*)&forUnmarshaling->bufferDeviceAddressMultiDevice, *ptr, sizeof(VkBool32));
7986     *ptr += sizeof(VkBool32);
7987 }
7988 
reservedunmarshal_VkBufferDeviceAddressInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferDeviceAddressInfo * forUnmarshaling,uint8_t ** ptr)7989 void reservedunmarshal_VkBufferDeviceAddressInfo(VulkanStream* vkStream, VkStructureType rootType,
7990                                                  VkBufferDeviceAddressInfo* forUnmarshaling,
7991                                                  uint8_t** ptr) {
7992     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
7993     *ptr += sizeof(VkStructureType);
7994     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
7995         rootType = forUnmarshaling->sType;
7996     }
7997     uint32_t pNext_size;
7998     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
7999     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8000     *ptr += sizeof(uint32_t);
8001     forUnmarshaling->pNext = nullptr;
8002     if (pNext_size) {
8003         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8004         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8005         *ptr += sizeof(VkStructureType);
8006         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8007         vkStream->alloc((void**)&forUnmarshaling->pNext,
8008                         goldfish_vk_extension_struct_size_with_stream_features(
8009                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8010         *(VkStructureType*)forUnmarshaling->pNext = extType;
8011         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8012                                            ptr);
8013     }
8014     uint64_t cgen_var_0;
8015     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
8016     *ptr += 1 * 8;
8017     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
8018 }
8019 
reservedunmarshal_VkBufferOpaqueCaptureAddressCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkBufferOpaqueCaptureAddressCreateInfo * forUnmarshaling,uint8_t ** ptr)8020 void reservedunmarshal_VkBufferOpaqueCaptureAddressCreateInfo(
8021     VulkanStream* vkStream, VkStructureType rootType,
8022     VkBufferOpaqueCaptureAddressCreateInfo* forUnmarshaling, uint8_t** ptr) {
8023     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8024     *ptr += sizeof(VkStructureType);
8025     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8026         rootType = forUnmarshaling->sType;
8027     }
8028     uint32_t pNext_size;
8029     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8030     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8031     *ptr += sizeof(uint32_t);
8032     forUnmarshaling->pNext = nullptr;
8033     if (pNext_size) {
8034         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8035         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8036         *ptr += sizeof(VkStructureType);
8037         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8038         vkStream->alloc((void**)&forUnmarshaling->pNext,
8039                         goldfish_vk_extension_struct_size_with_stream_features(
8040                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8041         *(VkStructureType*)forUnmarshaling->pNext = extType;
8042         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8043                                            ptr);
8044     }
8045     memcpy((uint64_t*)&forUnmarshaling->opaqueCaptureAddress, *ptr, sizeof(uint64_t));
8046     *ptr += sizeof(uint64_t);
8047 }
8048 
reservedunmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(VulkanStream * vkStream,VkStructureType rootType,VkMemoryOpaqueCaptureAddressAllocateInfo * forUnmarshaling,uint8_t ** ptr)8049 void reservedunmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
8050     VulkanStream* vkStream, VkStructureType rootType,
8051     VkMemoryOpaqueCaptureAddressAllocateInfo* forUnmarshaling, uint8_t** ptr) {
8052     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8053     *ptr += sizeof(VkStructureType);
8054     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8055         rootType = forUnmarshaling->sType;
8056     }
8057     uint32_t pNext_size;
8058     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8059     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8060     *ptr += sizeof(uint32_t);
8061     forUnmarshaling->pNext = nullptr;
8062     if (pNext_size) {
8063         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8064         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8065         *ptr += sizeof(VkStructureType);
8066         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8067         vkStream->alloc((void**)&forUnmarshaling->pNext,
8068                         goldfish_vk_extension_struct_size_with_stream_features(
8069                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8070         *(VkStructureType*)forUnmarshaling->pNext = extType;
8071         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8072                                            ptr);
8073     }
8074     memcpy((uint64_t*)&forUnmarshaling->opaqueCaptureAddress, *ptr, sizeof(uint64_t));
8075     *ptr += sizeof(uint64_t);
8076 }
8077 
reservedunmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo(VulkanStream * vkStream,VkStructureType rootType,VkDeviceMemoryOpaqueCaptureAddressInfo * forUnmarshaling,uint8_t ** ptr)8078 void reservedunmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo(
8079     VulkanStream* vkStream, VkStructureType rootType,
8080     VkDeviceMemoryOpaqueCaptureAddressInfo* forUnmarshaling, uint8_t** ptr) {
8081     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8082     *ptr += sizeof(VkStructureType);
8083     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8084         rootType = forUnmarshaling->sType;
8085     }
8086     uint32_t pNext_size;
8087     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8088     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8089     *ptr += sizeof(uint32_t);
8090     forUnmarshaling->pNext = nullptr;
8091     if (pNext_size) {
8092         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8093         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8094         *ptr += sizeof(VkStructureType);
8095         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8096         vkStream->alloc((void**)&forUnmarshaling->pNext,
8097                         goldfish_vk_extension_struct_size_with_stream_features(
8098                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8099         *(VkStructureType*)forUnmarshaling->pNext = extType;
8100         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8101                                            ptr);
8102     }
8103     uint64_t cgen_var_0;
8104     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
8105     *ptr += 1 * 8;
8106     *(VkDeviceMemory*)&forUnmarshaling->memory =
8107         (VkDeviceMemory)unbox_VkDeviceMemory((VkDeviceMemory)(*&cgen_var_0));
8108 }
8109 
8110 #endif
8111 #ifdef VK_VERSION_1_3
reservedunmarshal_VkPhysicalDeviceVulkan13Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan13Features * forUnmarshaling,uint8_t ** ptr)8112 void reservedunmarshal_VkPhysicalDeviceVulkan13Features(
8113     VulkanStream* vkStream, VkStructureType rootType,
8114     VkPhysicalDeviceVulkan13Features* forUnmarshaling, uint8_t** ptr) {
8115     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8116     *ptr += sizeof(VkStructureType);
8117     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8118         rootType = forUnmarshaling->sType;
8119     }
8120     uint32_t pNext_size;
8121     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8122     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8123     *ptr += sizeof(uint32_t);
8124     forUnmarshaling->pNext = nullptr;
8125     if (pNext_size) {
8126         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8127         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8128         *ptr += sizeof(VkStructureType);
8129         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8130         vkStream->alloc((void**)&forUnmarshaling->pNext,
8131                         goldfish_vk_extension_struct_size_with_stream_features(
8132                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8133         *(VkStructureType*)forUnmarshaling->pNext = extType;
8134         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8135                                            ptr);
8136     }
8137     memcpy((VkBool32*)&forUnmarshaling->robustImageAccess, *ptr, sizeof(VkBool32));
8138     *ptr += sizeof(VkBool32);
8139     memcpy((VkBool32*)&forUnmarshaling->inlineUniformBlock, *ptr, sizeof(VkBool32));
8140     *ptr += sizeof(VkBool32);
8141     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingInlineUniformBlockUpdateAfterBind, *ptr,
8142            sizeof(VkBool32));
8143     *ptr += sizeof(VkBool32);
8144     memcpy((VkBool32*)&forUnmarshaling->pipelineCreationCacheControl, *ptr, sizeof(VkBool32));
8145     *ptr += sizeof(VkBool32);
8146     memcpy((VkBool32*)&forUnmarshaling->privateData, *ptr, sizeof(VkBool32));
8147     *ptr += sizeof(VkBool32);
8148     memcpy((VkBool32*)&forUnmarshaling->shaderDemoteToHelperInvocation, *ptr, sizeof(VkBool32));
8149     *ptr += sizeof(VkBool32);
8150     memcpy((VkBool32*)&forUnmarshaling->shaderTerminateInvocation, *ptr, sizeof(VkBool32));
8151     *ptr += sizeof(VkBool32);
8152     memcpy((VkBool32*)&forUnmarshaling->subgroupSizeControl, *ptr, sizeof(VkBool32));
8153     *ptr += sizeof(VkBool32);
8154     memcpy((VkBool32*)&forUnmarshaling->computeFullSubgroups, *ptr, sizeof(VkBool32));
8155     *ptr += sizeof(VkBool32);
8156     memcpy((VkBool32*)&forUnmarshaling->synchronization2, *ptr, sizeof(VkBool32));
8157     *ptr += sizeof(VkBool32);
8158     memcpy((VkBool32*)&forUnmarshaling->textureCompressionASTC_HDR, *ptr, sizeof(VkBool32));
8159     *ptr += sizeof(VkBool32);
8160     memcpy((VkBool32*)&forUnmarshaling->shaderZeroInitializeWorkgroupMemory, *ptr,
8161            sizeof(VkBool32));
8162     *ptr += sizeof(VkBool32);
8163     memcpy((VkBool32*)&forUnmarshaling->dynamicRendering, *ptr, sizeof(VkBool32));
8164     *ptr += sizeof(VkBool32);
8165     memcpy((VkBool32*)&forUnmarshaling->shaderIntegerDotProduct, *ptr, sizeof(VkBool32));
8166     *ptr += sizeof(VkBool32);
8167     memcpy((VkBool32*)&forUnmarshaling->maintenance4, *ptr, sizeof(VkBool32));
8168     *ptr += sizeof(VkBool32);
8169 }
8170 
reservedunmarshal_VkPhysicalDeviceVulkan13Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVulkan13Properties * forUnmarshaling,uint8_t ** ptr)8171 void reservedunmarshal_VkPhysicalDeviceVulkan13Properties(
8172     VulkanStream* vkStream, VkStructureType rootType,
8173     VkPhysicalDeviceVulkan13Properties* forUnmarshaling, uint8_t** ptr) {
8174     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8175     *ptr += sizeof(VkStructureType);
8176     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8177         rootType = forUnmarshaling->sType;
8178     }
8179     uint32_t pNext_size;
8180     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8181     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8182     *ptr += sizeof(uint32_t);
8183     forUnmarshaling->pNext = nullptr;
8184     if (pNext_size) {
8185         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8186         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8187         *ptr += sizeof(VkStructureType);
8188         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8189         vkStream->alloc((void**)&forUnmarshaling->pNext,
8190                         goldfish_vk_extension_struct_size_with_stream_features(
8191                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8192         *(VkStructureType*)forUnmarshaling->pNext = extType;
8193         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8194                                            ptr);
8195     }
8196     memcpy((uint32_t*)&forUnmarshaling->minSubgroupSize, *ptr, sizeof(uint32_t));
8197     *ptr += sizeof(uint32_t);
8198     memcpy((uint32_t*)&forUnmarshaling->maxSubgroupSize, *ptr, sizeof(uint32_t));
8199     *ptr += sizeof(uint32_t);
8200     memcpy((uint32_t*)&forUnmarshaling->maxComputeWorkgroupSubgroups, *ptr, sizeof(uint32_t));
8201     *ptr += sizeof(uint32_t);
8202     memcpy((VkShaderStageFlags*)&forUnmarshaling->requiredSubgroupSizeStages, *ptr,
8203            sizeof(VkShaderStageFlags));
8204     *ptr += sizeof(VkShaderStageFlags);
8205     memcpy((uint32_t*)&forUnmarshaling->maxInlineUniformBlockSize, *ptr, sizeof(uint32_t));
8206     *ptr += sizeof(uint32_t);
8207     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInlineUniformBlocks, *ptr,
8208            sizeof(uint32_t));
8209     *ptr += sizeof(uint32_t);
8210     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
8211            *ptr, sizeof(uint32_t));
8212     *ptr += sizeof(uint32_t);
8213     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetInlineUniformBlocks, *ptr,
8214            sizeof(uint32_t));
8215     *ptr += sizeof(uint32_t);
8216     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInlineUniformBlocks, *ptr,
8217            sizeof(uint32_t));
8218     *ptr += sizeof(uint32_t);
8219     memcpy((uint32_t*)&forUnmarshaling->maxInlineUniformTotalSize, *ptr, sizeof(uint32_t));
8220     *ptr += sizeof(uint32_t);
8221     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct8BitUnsignedAccelerated, *ptr,
8222            sizeof(VkBool32));
8223     *ptr += sizeof(VkBool32);
8224     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct8BitSignedAccelerated, *ptr,
8225            sizeof(VkBool32));
8226     *ptr += sizeof(VkBool32);
8227     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct8BitMixedSignednessAccelerated, *ptr,
8228            sizeof(VkBool32));
8229     *ptr += sizeof(VkBool32);
8230     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedUnsignedAccelerated, *ptr,
8231            sizeof(VkBool32));
8232     *ptr += sizeof(VkBool32);
8233     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedSignedAccelerated, *ptr,
8234            sizeof(VkBool32));
8235     *ptr += sizeof(VkBool32);
8236     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedMixedSignednessAccelerated,
8237            *ptr, sizeof(VkBool32));
8238     *ptr += sizeof(VkBool32);
8239     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct16BitUnsignedAccelerated, *ptr,
8240            sizeof(VkBool32));
8241     *ptr += sizeof(VkBool32);
8242     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct16BitSignedAccelerated, *ptr,
8243            sizeof(VkBool32));
8244     *ptr += sizeof(VkBool32);
8245     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct16BitMixedSignednessAccelerated, *ptr,
8246            sizeof(VkBool32));
8247     *ptr += sizeof(VkBool32);
8248     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct32BitUnsignedAccelerated, *ptr,
8249            sizeof(VkBool32));
8250     *ptr += sizeof(VkBool32);
8251     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct32BitSignedAccelerated, *ptr,
8252            sizeof(VkBool32));
8253     *ptr += sizeof(VkBool32);
8254     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct32BitMixedSignednessAccelerated, *ptr,
8255            sizeof(VkBool32));
8256     *ptr += sizeof(VkBool32);
8257     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct64BitUnsignedAccelerated, *ptr,
8258            sizeof(VkBool32));
8259     *ptr += sizeof(VkBool32);
8260     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct64BitSignedAccelerated, *ptr,
8261            sizeof(VkBool32));
8262     *ptr += sizeof(VkBool32);
8263     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct64BitMixedSignednessAccelerated, *ptr,
8264            sizeof(VkBool32));
8265     *ptr += sizeof(VkBool32);
8266     memcpy(
8267         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
8268         *ptr, sizeof(VkBool32));
8269     *ptr += sizeof(VkBool32);
8270     memcpy(
8271         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitSignedAccelerated,
8272         *ptr, sizeof(VkBool32));
8273     *ptr += sizeof(VkBool32);
8274     memcpy((VkBool32*)&forUnmarshaling
8275                ->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
8276            *ptr, sizeof(VkBool32));
8277     *ptr += sizeof(VkBool32);
8278     memcpy((VkBool32*)&forUnmarshaling
8279                ->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
8280            *ptr, sizeof(VkBool32));
8281     *ptr += sizeof(VkBool32);
8282     memcpy((VkBool32*)&forUnmarshaling
8283                ->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
8284            *ptr, sizeof(VkBool32));
8285     *ptr += sizeof(VkBool32);
8286     memcpy((VkBool32*)&forUnmarshaling
8287                ->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
8288            *ptr, sizeof(VkBool32));
8289     *ptr += sizeof(VkBool32);
8290     memcpy((VkBool32*)&forUnmarshaling
8291                ->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
8292            *ptr, sizeof(VkBool32));
8293     *ptr += sizeof(VkBool32);
8294     memcpy(
8295         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating16BitSignedAccelerated,
8296         *ptr, sizeof(VkBool32));
8297     *ptr += sizeof(VkBool32);
8298     memcpy((VkBool32*)&forUnmarshaling
8299                ->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
8300            *ptr, sizeof(VkBool32));
8301     *ptr += sizeof(VkBool32);
8302     memcpy((VkBool32*)&forUnmarshaling
8303                ->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
8304            *ptr, sizeof(VkBool32));
8305     *ptr += sizeof(VkBool32);
8306     memcpy(
8307         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating32BitSignedAccelerated,
8308         *ptr, sizeof(VkBool32));
8309     *ptr += sizeof(VkBool32);
8310     memcpy((VkBool32*)&forUnmarshaling
8311                ->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
8312            *ptr, sizeof(VkBool32));
8313     *ptr += sizeof(VkBool32);
8314     memcpy((VkBool32*)&forUnmarshaling
8315                ->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
8316            *ptr, sizeof(VkBool32));
8317     *ptr += sizeof(VkBool32);
8318     memcpy(
8319         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating64BitSignedAccelerated,
8320         *ptr, sizeof(VkBool32));
8321     *ptr += sizeof(VkBool32);
8322     memcpy((VkBool32*)&forUnmarshaling
8323                ->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
8324            *ptr, sizeof(VkBool32));
8325     *ptr += sizeof(VkBool32);
8326     memcpy((VkDeviceSize*)&forUnmarshaling->storageTexelBufferOffsetAlignmentBytes, *ptr,
8327            sizeof(VkDeviceSize));
8328     *ptr += sizeof(VkDeviceSize);
8329     memcpy((VkBool32*)&forUnmarshaling->storageTexelBufferOffsetSingleTexelAlignment, *ptr,
8330            sizeof(VkBool32));
8331     *ptr += sizeof(VkBool32);
8332     memcpy((VkDeviceSize*)&forUnmarshaling->uniformTexelBufferOffsetAlignmentBytes, *ptr,
8333            sizeof(VkDeviceSize));
8334     *ptr += sizeof(VkDeviceSize);
8335     memcpy((VkBool32*)&forUnmarshaling->uniformTexelBufferOffsetSingleTexelAlignment, *ptr,
8336            sizeof(VkBool32));
8337     *ptr += sizeof(VkBool32);
8338     memcpy((VkDeviceSize*)&forUnmarshaling->maxBufferSize, *ptr, sizeof(VkDeviceSize));
8339     *ptr += sizeof(VkDeviceSize);
8340 }
8341 
reservedunmarshal_VkPipelineCreationFeedback(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCreationFeedback * forUnmarshaling,uint8_t ** ptr)8342 void reservedunmarshal_VkPipelineCreationFeedback(VulkanStream* vkStream, VkStructureType rootType,
8343                                                   VkPipelineCreationFeedback* forUnmarshaling,
8344                                                   uint8_t** ptr) {
8345     memcpy((VkPipelineCreationFeedbackFlags*)&forUnmarshaling->flags, *ptr,
8346            sizeof(VkPipelineCreationFeedbackFlags));
8347     *ptr += sizeof(VkPipelineCreationFeedbackFlags);
8348     memcpy((uint64_t*)&forUnmarshaling->duration, *ptr, sizeof(uint64_t));
8349     *ptr += sizeof(uint64_t);
8350 }
8351 
reservedunmarshal_VkPipelineCreationFeedbackCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCreationFeedbackCreateInfo * forUnmarshaling,uint8_t ** ptr)8352 void reservedunmarshal_VkPipelineCreationFeedbackCreateInfo(
8353     VulkanStream* vkStream, VkStructureType rootType,
8354     VkPipelineCreationFeedbackCreateInfo* forUnmarshaling, uint8_t** ptr) {
8355     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8356     *ptr += sizeof(VkStructureType);
8357     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8358         rootType = forUnmarshaling->sType;
8359     }
8360     uint32_t pNext_size;
8361     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8362     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8363     *ptr += sizeof(uint32_t);
8364     forUnmarshaling->pNext = nullptr;
8365     if (pNext_size) {
8366         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8367         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8368         *ptr += sizeof(VkStructureType);
8369         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8370         vkStream->alloc((void**)&forUnmarshaling->pNext,
8371                         goldfish_vk_extension_struct_size_with_stream_features(
8372                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8373         *(VkStructureType*)forUnmarshaling->pNext = extType;
8374         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8375                                            ptr);
8376     }
8377     vkStream->alloc((void**)&forUnmarshaling->pPipelineCreationFeedback,
8378                     sizeof(VkPipelineCreationFeedback));
8379     reservedunmarshal_VkPipelineCreationFeedback(
8380         vkStream, rootType,
8381         (VkPipelineCreationFeedback*)(forUnmarshaling->pPipelineCreationFeedback), ptr);
8382     memcpy((uint32_t*)&forUnmarshaling->pipelineStageCreationFeedbackCount, *ptr, sizeof(uint32_t));
8383     *ptr += sizeof(uint32_t);
8384     vkStream->alloc(
8385         (void**)&forUnmarshaling->pPipelineStageCreationFeedbacks,
8386         forUnmarshaling->pipelineStageCreationFeedbackCount * sizeof(VkPipelineCreationFeedback));
8387     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->pipelineStageCreationFeedbackCount; ++i) {
8388         reservedunmarshal_VkPipelineCreationFeedback(
8389             vkStream, rootType,
8390             (VkPipelineCreationFeedback*)(forUnmarshaling->pPipelineStageCreationFeedbacks + i),
8391             ptr);
8392     }
8393 }
8394 
reservedunmarshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderTerminateInvocationFeatures * forUnmarshaling,uint8_t ** ptr)8395 void reservedunmarshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(
8396     VulkanStream* vkStream, VkStructureType rootType,
8397     VkPhysicalDeviceShaderTerminateInvocationFeatures* forUnmarshaling, uint8_t** ptr) {
8398     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8399     *ptr += sizeof(VkStructureType);
8400     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8401         rootType = forUnmarshaling->sType;
8402     }
8403     uint32_t pNext_size;
8404     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8405     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8406     *ptr += sizeof(uint32_t);
8407     forUnmarshaling->pNext = nullptr;
8408     if (pNext_size) {
8409         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8410         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8411         *ptr += sizeof(VkStructureType);
8412         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8413         vkStream->alloc((void**)&forUnmarshaling->pNext,
8414                         goldfish_vk_extension_struct_size_with_stream_features(
8415                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8416         *(VkStructureType*)forUnmarshaling->pNext = extType;
8417         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8418                                            ptr);
8419     }
8420     memcpy((VkBool32*)&forUnmarshaling->shaderTerminateInvocation, *ptr, sizeof(VkBool32));
8421     *ptr += sizeof(VkBool32);
8422 }
8423 
reservedunmarshal_VkPhysicalDeviceToolProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceToolProperties * forUnmarshaling,uint8_t ** ptr)8424 void reservedunmarshal_VkPhysicalDeviceToolProperties(
8425     VulkanStream* vkStream, VkStructureType rootType,
8426     VkPhysicalDeviceToolProperties* forUnmarshaling, uint8_t** ptr) {
8427     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8428     *ptr += sizeof(VkStructureType);
8429     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8430         rootType = forUnmarshaling->sType;
8431     }
8432     uint32_t pNext_size;
8433     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8434     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8435     *ptr += sizeof(uint32_t);
8436     forUnmarshaling->pNext = nullptr;
8437     if (pNext_size) {
8438         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8439         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8440         *ptr += sizeof(VkStructureType);
8441         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8442         vkStream->alloc((void**)&forUnmarshaling->pNext,
8443                         goldfish_vk_extension_struct_size_with_stream_features(
8444                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8445         *(VkStructureType*)forUnmarshaling->pNext = extType;
8446         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8447                                            ptr);
8448     }
8449     memcpy((char*)forUnmarshaling->name, *ptr, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
8450     *ptr += VK_MAX_EXTENSION_NAME_SIZE * sizeof(char);
8451     memcpy((char*)forUnmarshaling->version, *ptr, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
8452     *ptr += VK_MAX_EXTENSION_NAME_SIZE * sizeof(char);
8453     memcpy((VkToolPurposeFlags*)&forUnmarshaling->purposes, *ptr, sizeof(VkToolPurposeFlags));
8454     *ptr += sizeof(VkToolPurposeFlags);
8455     memcpy((char*)forUnmarshaling->description, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
8456     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
8457     memcpy((char*)forUnmarshaling->layer, *ptr, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
8458     *ptr += VK_MAX_EXTENSION_NAME_SIZE * sizeof(char);
8459 }
8460 
reservedunmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures * forUnmarshaling,uint8_t ** ptr)8461 void reservedunmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
8462     VulkanStream* vkStream, VkStructureType rootType,
8463     VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures* forUnmarshaling, uint8_t** ptr) {
8464     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8465     *ptr += sizeof(VkStructureType);
8466     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8467         rootType = forUnmarshaling->sType;
8468     }
8469     uint32_t pNext_size;
8470     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8471     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8472     *ptr += sizeof(uint32_t);
8473     forUnmarshaling->pNext = nullptr;
8474     if (pNext_size) {
8475         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8476         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8477         *ptr += sizeof(VkStructureType);
8478         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8479         vkStream->alloc((void**)&forUnmarshaling->pNext,
8480                         goldfish_vk_extension_struct_size_with_stream_features(
8481                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8482         *(VkStructureType*)forUnmarshaling->pNext = extType;
8483         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8484                                            ptr);
8485     }
8486     memcpy((VkBool32*)&forUnmarshaling->shaderDemoteToHelperInvocation, *ptr, sizeof(VkBool32));
8487     *ptr += sizeof(VkBool32);
8488 }
8489 
reservedunmarshal_VkPhysicalDevicePrivateDataFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePrivateDataFeatures * forUnmarshaling,uint8_t ** ptr)8490 void reservedunmarshal_VkPhysicalDevicePrivateDataFeatures(
8491     VulkanStream* vkStream, VkStructureType rootType,
8492     VkPhysicalDevicePrivateDataFeatures* forUnmarshaling, uint8_t** ptr) {
8493     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8494     *ptr += sizeof(VkStructureType);
8495     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8496         rootType = forUnmarshaling->sType;
8497     }
8498     uint32_t pNext_size;
8499     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8500     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8501     *ptr += sizeof(uint32_t);
8502     forUnmarshaling->pNext = nullptr;
8503     if (pNext_size) {
8504         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8505         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8506         *ptr += sizeof(VkStructureType);
8507         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8508         vkStream->alloc((void**)&forUnmarshaling->pNext,
8509                         goldfish_vk_extension_struct_size_with_stream_features(
8510                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8511         *(VkStructureType*)forUnmarshaling->pNext = extType;
8512         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8513                                            ptr);
8514     }
8515     memcpy((VkBool32*)&forUnmarshaling->privateData, *ptr, sizeof(VkBool32));
8516     *ptr += sizeof(VkBool32);
8517 }
8518 
reservedunmarshal_VkDevicePrivateDataCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDevicePrivateDataCreateInfo * forUnmarshaling,uint8_t ** ptr)8519 void reservedunmarshal_VkDevicePrivateDataCreateInfo(VulkanStream* vkStream,
8520                                                      VkStructureType rootType,
8521                                                      VkDevicePrivateDataCreateInfo* forUnmarshaling,
8522                                                      uint8_t** ptr) {
8523     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8524     *ptr += sizeof(VkStructureType);
8525     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8526         rootType = forUnmarshaling->sType;
8527     }
8528     uint32_t pNext_size;
8529     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8530     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8531     *ptr += sizeof(uint32_t);
8532     forUnmarshaling->pNext = nullptr;
8533     if (pNext_size) {
8534         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8535         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8536         *ptr += sizeof(VkStructureType);
8537         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8538         vkStream->alloc((void**)&forUnmarshaling->pNext,
8539                         goldfish_vk_extension_struct_size_with_stream_features(
8540                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8541         *(VkStructureType*)forUnmarshaling->pNext = extType;
8542         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8543                                            ptr);
8544     }
8545     memcpy((uint32_t*)&forUnmarshaling->privateDataSlotRequestCount, *ptr, sizeof(uint32_t));
8546     *ptr += sizeof(uint32_t);
8547 }
8548 
reservedunmarshal_VkPrivateDataSlotCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPrivateDataSlotCreateInfo * forUnmarshaling,uint8_t ** ptr)8549 void reservedunmarshal_VkPrivateDataSlotCreateInfo(VulkanStream* vkStream, VkStructureType rootType,
8550                                                    VkPrivateDataSlotCreateInfo* forUnmarshaling,
8551                                                    uint8_t** ptr) {
8552     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8553     *ptr += sizeof(VkStructureType);
8554     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8555         rootType = forUnmarshaling->sType;
8556     }
8557     uint32_t pNext_size;
8558     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8559     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8560     *ptr += sizeof(uint32_t);
8561     forUnmarshaling->pNext = nullptr;
8562     if (pNext_size) {
8563         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8564         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8565         *ptr += sizeof(VkStructureType);
8566         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8567         vkStream->alloc((void**)&forUnmarshaling->pNext,
8568                         goldfish_vk_extension_struct_size_with_stream_features(
8569                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8570         *(VkStructureType*)forUnmarshaling->pNext = extType;
8571         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8572                                            ptr);
8573     }
8574     memcpy((VkPrivateDataSlotCreateFlags*)&forUnmarshaling->flags, *ptr,
8575            sizeof(VkPrivateDataSlotCreateFlags));
8576     *ptr += sizeof(VkPrivateDataSlotCreateFlags);
8577 }
8578 
reservedunmarshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePipelineCreationCacheControlFeatures * forUnmarshaling,uint8_t ** ptr)8579 void reservedunmarshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(
8580     VulkanStream* vkStream, VkStructureType rootType,
8581     VkPhysicalDevicePipelineCreationCacheControlFeatures* forUnmarshaling, uint8_t** ptr) {
8582     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8583     *ptr += sizeof(VkStructureType);
8584     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8585         rootType = forUnmarshaling->sType;
8586     }
8587     uint32_t pNext_size;
8588     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8589     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8590     *ptr += sizeof(uint32_t);
8591     forUnmarshaling->pNext = nullptr;
8592     if (pNext_size) {
8593         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8594         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8595         *ptr += sizeof(VkStructureType);
8596         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8597         vkStream->alloc((void**)&forUnmarshaling->pNext,
8598                         goldfish_vk_extension_struct_size_with_stream_features(
8599                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8600         *(VkStructureType*)forUnmarshaling->pNext = extType;
8601         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8602                                            ptr);
8603     }
8604     memcpy((VkBool32*)&forUnmarshaling->pipelineCreationCacheControl, *ptr, sizeof(VkBool32));
8605     *ptr += sizeof(VkBool32);
8606 }
8607 
reservedunmarshal_VkMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,VkMemoryBarrier2 * forUnmarshaling,uint8_t ** ptr)8608 void reservedunmarshal_VkMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
8609                                         VkMemoryBarrier2* forUnmarshaling, uint8_t** ptr) {
8610     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8611     *ptr += sizeof(VkStructureType);
8612     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8613         rootType = forUnmarshaling->sType;
8614     }
8615     uint32_t pNext_size;
8616     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8617     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8618     *ptr += sizeof(uint32_t);
8619     forUnmarshaling->pNext = nullptr;
8620     if (pNext_size) {
8621         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8622         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8623         *ptr += sizeof(VkStructureType);
8624         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8625         vkStream->alloc((void**)&forUnmarshaling->pNext,
8626                         goldfish_vk_extension_struct_size_with_stream_features(
8627                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8628         *(VkStructureType*)forUnmarshaling->pNext = extType;
8629         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8630                                            ptr);
8631     }
8632     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->srcStageMask, *ptr,
8633            sizeof(VkPipelineStageFlags2));
8634     *ptr += sizeof(VkPipelineStageFlags2);
8635     memcpy((VkAccessFlags2*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags2));
8636     *ptr += sizeof(VkAccessFlags2);
8637     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->dstStageMask, *ptr,
8638            sizeof(VkPipelineStageFlags2));
8639     *ptr += sizeof(VkPipelineStageFlags2);
8640     memcpy((VkAccessFlags2*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags2));
8641     *ptr += sizeof(VkAccessFlags2);
8642 }
8643 
reservedunmarshal_VkBufferMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,VkBufferMemoryBarrier2 * forUnmarshaling,uint8_t ** ptr)8644 void reservedunmarshal_VkBufferMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
8645                                               VkBufferMemoryBarrier2* forUnmarshaling,
8646                                               uint8_t** ptr) {
8647     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8648     *ptr += sizeof(VkStructureType);
8649     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8650         rootType = forUnmarshaling->sType;
8651     }
8652     uint32_t pNext_size;
8653     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8654     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8655     *ptr += sizeof(uint32_t);
8656     forUnmarshaling->pNext = nullptr;
8657     if (pNext_size) {
8658         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8659         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8660         *ptr += sizeof(VkStructureType);
8661         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8662         vkStream->alloc((void**)&forUnmarshaling->pNext,
8663                         goldfish_vk_extension_struct_size_with_stream_features(
8664                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8665         *(VkStructureType*)forUnmarshaling->pNext = extType;
8666         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8667                                            ptr);
8668     }
8669     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->srcStageMask, *ptr,
8670            sizeof(VkPipelineStageFlags2));
8671     *ptr += sizeof(VkPipelineStageFlags2);
8672     memcpy((VkAccessFlags2*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags2));
8673     *ptr += sizeof(VkAccessFlags2);
8674     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->dstStageMask, *ptr,
8675            sizeof(VkPipelineStageFlags2));
8676     *ptr += sizeof(VkPipelineStageFlags2);
8677     memcpy((VkAccessFlags2*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags2));
8678     *ptr += sizeof(VkAccessFlags2);
8679     memcpy((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, *ptr, sizeof(uint32_t));
8680     *ptr += sizeof(uint32_t);
8681     memcpy((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, *ptr, sizeof(uint32_t));
8682     *ptr += sizeof(uint32_t);
8683     uint64_t cgen_var_0;
8684     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
8685     *ptr += 1 * 8;
8686     *(VkBuffer*)&forUnmarshaling->buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
8687     memcpy((VkDeviceSize*)&forUnmarshaling->offset, *ptr, sizeof(VkDeviceSize));
8688     *ptr += sizeof(VkDeviceSize);
8689     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
8690     *ptr += sizeof(VkDeviceSize);
8691 }
8692 
reservedunmarshal_VkImageMemoryBarrier2(VulkanStream * vkStream,VkStructureType rootType,VkImageMemoryBarrier2 * forUnmarshaling,uint8_t ** ptr)8693 void reservedunmarshal_VkImageMemoryBarrier2(VulkanStream* vkStream, VkStructureType rootType,
8694                                              VkImageMemoryBarrier2* forUnmarshaling,
8695                                              uint8_t** ptr) {
8696     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8697     *ptr += sizeof(VkStructureType);
8698     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8699         rootType = forUnmarshaling->sType;
8700     }
8701     uint32_t pNext_size;
8702     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8703     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8704     *ptr += sizeof(uint32_t);
8705     forUnmarshaling->pNext = nullptr;
8706     if (pNext_size) {
8707         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8708         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8709         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8716                                            ptr);
8717     }
8718     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->srcStageMask, *ptr,
8719            sizeof(VkPipelineStageFlags2));
8720     *ptr += sizeof(VkPipelineStageFlags2);
8721     memcpy((VkAccessFlags2*)&forUnmarshaling->srcAccessMask, *ptr, sizeof(VkAccessFlags2));
8722     *ptr += sizeof(VkAccessFlags2);
8723     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->dstStageMask, *ptr,
8724            sizeof(VkPipelineStageFlags2));
8725     *ptr += sizeof(VkPipelineStageFlags2);
8726     memcpy((VkAccessFlags2*)&forUnmarshaling->dstAccessMask, *ptr, sizeof(VkAccessFlags2));
8727     *ptr += sizeof(VkAccessFlags2);
8728     memcpy((VkImageLayout*)&forUnmarshaling->oldLayout, *ptr, sizeof(VkImageLayout));
8729     *ptr += sizeof(VkImageLayout);
8730     memcpy((VkImageLayout*)&forUnmarshaling->newLayout, *ptr, sizeof(VkImageLayout));
8731     *ptr += sizeof(VkImageLayout);
8732     memcpy((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, *ptr, sizeof(uint32_t));
8733     *ptr += sizeof(uint32_t);
8734     memcpy((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, *ptr, sizeof(uint32_t));
8735     *ptr += sizeof(uint32_t);
8736     uint64_t cgen_var_0;
8737     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
8738     *ptr += 1 * 8;
8739     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
8740     reservedunmarshal_VkImageSubresourceRange(
8741         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange), ptr);
8742 }
8743 
reservedunmarshal_VkDependencyInfo(VulkanStream * vkStream,VkStructureType rootType,VkDependencyInfo * forUnmarshaling,uint8_t ** ptr)8744 void reservedunmarshal_VkDependencyInfo(VulkanStream* vkStream, VkStructureType rootType,
8745                                         VkDependencyInfo* forUnmarshaling, uint8_t** ptr) {
8746     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8747     *ptr += sizeof(VkStructureType);
8748     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8749         rootType = forUnmarshaling->sType;
8750     }
8751     uint32_t pNext_size;
8752     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8753     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8754     *ptr += sizeof(uint32_t);
8755     forUnmarshaling->pNext = nullptr;
8756     if (pNext_size) {
8757         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8758         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8759         *ptr += sizeof(VkStructureType);
8760         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8761         vkStream->alloc((void**)&forUnmarshaling->pNext,
8762                         goldfish_vk_extension_struct_size_with_stream_features(
8763                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8764         *(VkStructureType*)forUnmarshaling->pNext = extType;
8765         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8766                                            ptr);
8767     }
8768     memcpy((VkDependencyFlags*)&forUnmarshaling->dependencyFlags, *ptr, sizeof(VkDependencyFlags));
8769     *ptr += sizeof(VkDependencyFlags);
8770     memcpy((uint32_t*)&forUnmarshaling->memoryBarrierCount, *ptr, sizeof(uint32_t));
8771     *ptr += sizeof(uint32_t);
8772     vkStream->alloc((void**)&forUnmarshaling->pMemoryBarriers,
8773                     forUnmarshaling->memoryBarrierCount * sizeof(const VkMemoryBarrier2));
8774     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->memoryBarrierCount; ++i) {
8775         reservedunmarshal_VkMemoryBarrier2(
8776             vkStream, rootType, (VkMemoryBarrier2*)(forUnmarshaling->pMemoryBarriers + i), ptr);
8777     }
8778     memcpy((uint32_t*)&forUnmarshaling->bufferMemoryBarrierCount, *ptr, sizeof(uint32_t));
8779     *ptr += sizeof(uint32_t);
8780     vkStream->alloc(
8781         (void**)&forUnmarshaling->pBufferMemoryBarriers,
8782         forUnmarshaling->bufferMemoryBarrierCount * sizeof(const VkBufferMemoryBarrier2));
8783     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bufferMemoryBarrierCount; ++i) {
8784         reservedunmarshal_VkBufferMemoryBarrier2(
8785             vkStream, rootType,
8786             (VkBufferMemoryBarrier2*)(forUnmarshaling->pBufferMemoryBarriers + i), ptr);
8787     }
8788     memcpy((uint32_t*)&forUnmarshaling->imageMemoryBarrierCount, *ptr, sizeof(uint32_t));
8789     *ptr += sizeof(uint32_t);
8790     vkStream->alloc((void**)&forUnmarshaling->pImageMemoryBarriers,
8791                     forUnmarshaling->imageMemoryBarrierCount * sizeof(const VkImageMemoryBarrier2));
8792     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageMemoryBarrierCount; ++i) {
8793         reservedunmarshal_VkImageMemoryBarrier2(
8794             vkStream, rootType, (VkImageMemoryBarrier2*)(forUnmarshaling->pImageMemoryBarriers + i),
8795             ptr);
8796     }
8797 }
8798 
reservedunmarshal_VkSemaphoreSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreSubmitInfo * forUnmarshaling,uint8_t ** ptr)8799 void reservedunmarshal_VkSemaphoreSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
8800                                              VkSemaphoreSubmitInfo* forUnmarshaling,
8801                                              uint8_t** ptr) {
8802     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8803     *ptr += sizeof(VkStructureType);
8804     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8805         rootType = forUnmarshaling->sType;
8806     }
8807     uint32_t pNext_size;
8808     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8809     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8810     *ptr += sizeof(uint32_t);
8811     forUnmarshaling->pNext = nullptr;
8812     if (pNext_size) {
8813         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8814         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8815         *ptr += sizeof(VkStructureType);
8816         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8817         vkStream->alloc((void**)&forUnmarshaling->pNext,
8818                         goldfish_vk_extension_struct_size_with_stream_features(
8819                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8820         *(VkStructureType*)forUnmarshaling->pNext = extType;
8821         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8822                                            ptr);
8823     }
8824     uint64_t cgen_var_0;
8825     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
8826     *ptr += 1 * 8;
8827     *(VkSemaphore*)&forUnmarshaling->semaphore =
8828         (VkSemaphore)unbox_VkSemaphore((VkSemaphore)(*&cgen_var_0));
8829     memcpy((uint64_t*)&forUnmarshaling->value, *ptr, sizeof(uint64_t));
8830     *ptr += sizeof(uint64_t);
8831     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->stageMask, *ptr,
8832            sizeof(VkPipelineStageFlags2));
8833     *ptr += sizeof(VkPipelineStageFlags2);
8834     memcpy((uint32_t*)&forUnmarshaling->deviceIndex, *ptr, sizeof(uint32_t));
8835     *ptr += sizeof(uint32_t);
8836 }
8837 
reservedunmarshal_VkCommandBufferSubmitInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferSubmitInfo * forUnmarshaling,uint8_t ** ptr)8838 void reservedunmarshal_VkCommandBufferSubmitInfo(VulkanStream* vkStream, VkStructureType rootType,
8839                                                  VkCommandBufferSubmitInfo* forUnmarshaling,
8840                                                  uint8_t** ptr) {
8841     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8842     *ptr += sizeof(VkStructureType);
8843     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8844         rootType = forUnmarshaling->sType;
8845     }
8846     uint32_t pNext_size;
8847     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8848     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8849     *ptr += sizeof(uint32_t);
8850     forUnmarshaling->pNext = nullptr;
8851     if (pNext_size) {
8852         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8853         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8854         *ptr += sizeof(VkStructureType);
8855         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8856         vkStream->alloc((void**)&forUnmarshaling->pNext,
8857                         goldfish_vk_extension_struct_size_with_stream_features(
8858                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8859         *(VkStructureType*)forUnmarshaling->pNext = extType;
8860         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8861                                            ptr);
8862     }
8863     uint64_t cgen_var_0;
8864     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
8865     *ptr += 1 * 8;
8866     *(VkCommandBuffer*)&forUnmarshaling->commandBuffer =
8867         (VkCommandBuffer)unbox_VkCommandBuffer((VkCommandBuffer)(*&cgen_var_0));
8868     memcpy((uint32_t*)&forUnmarshaling->deviceMask, *ptr, sizeof(uint32_t));
8869     *ptr += sizeof(uint32_t);
8870 }
8871 
reservedunmarshal_VkSubmitInfo2(VulkanStream * vkStream,VkStructureType rootType,VkSubmitInfo2 * forUnmarshaling,uint8_t ** ptr)8872 void reservedunmarshal_VkSubmitInfo2(VulkanStream* vkStream, VkStructureType rootType,
8873                                      VkSubmitInfo2* forUnmarshaling, uint8_t** ptr) {
8874     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8875     *ptr += sizeof(VkStructureType);
8876     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8877         rootType = forUnmarshaling->sType;
8878     }
8879     uint32_t pNext_size;
8880     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8881     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8882     *ptr += sizeof(uint32_t);
8883     forUnmarshaling->pNext = nullptr;
8884     if (pNext_size) {
8885         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8886         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8887         *ptr += sizeof(VkStructureType);
8888         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8889         vkStream->alloc((void**)&forUnmarshaling->pNext,
8890                         goldfish_vk_extension_struct_size_with_stream_features(
8891                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8892         *(VkStructureType*)forUnmarshaling->pNext = extType;
8893         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8894                                            ptr);
8895     }
8896     memcpy((VkSubmitFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkSubmitFlags));
8897     *ptr += sizeof(VkSubmitFlags);
8898     memcpy((uint32_t*)&forUnmarshaling->waitSemaphoreInfoCount, *ptr, sizeof(uint32_t));
8899     *ptr += sizeof(uint32_t);
8900     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreInfos,
8901                     forUnmarshaling->waitSemaphoreInfoCount * sizeof(const VkSemaphoreSubmitInfo));
8902     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->waitSemaphoreInfoCount; ++i) {
8903         reservedunmarshal_VkSemaphoreSubmitInfo(
8904             vkStream, rootType, (VkSemaphoreSubmitInfo*)(forUnmarshaling->pWaitSemaphoreInfos + i),
8905             ptr);
8906     }
8907     memcpy((uint32_t*)&forUnmarshaling->commandBufferInfoCount, *ptr, sizeof(uint32_t));
8908     *ptr += sizeof(uint32_t);
8909     vkStream->alloc(
8910         (void**)&forUnmarshaling->pCommandBufferInfos,
8911         forUnmarshaling->commandBufferInfoCount * sizeof(const VkCommandBufferSubmitInfo));
8912     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->commandBufferInfoCount; ++i) {
8913         reservedunmarshal_VkCommandBufferSubmitInfo(
8914             vkStream, rootType,
8915             (VkCommandBufferSubmitInfo*)(forUnmarshaling->pCommandBufferInfos + i), ptr);
8916     }
8917     memcpy((uint32_t*)&forUnmarshaling->signalSemaphoreInfoCount, *ptr, sizeof(uint32_t));
8918     *ptr += sizeof(uint32_t);
8919     vkStream->alloc(
8920         (void**)&forUnmarshaling->pSignalSemaphoreInfos,
8921         forUnmarshaling->signalSemaphoreInfoCount * sizeof(const VkSemaphoreSubmitInfo));
8922     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->signalSemaphoreInfoCount; ++i) {
8923         reservedunmarshal_VkSemaphoreSubmitInfo(
8924             vkStream, rootType,
8925             (VkSemaphoreSubmitInfo*)(forUnmarshaling->pSignalSemaphoreInfos + i), ptr);
8926     }
8927 }
8928 
reservedunmarshal_VkPhysicalDeviceSynchronization2Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSynchronization2Features * forUnmarshaling,uint8_t ** ptr)8929 void reservedunmarshal_VkPhysicalDeviceSynchronization2Features(
8930     VulkanStream* vkStream, VkStructureType rootType,
8931     VkPhysicalDeviceSynchronization2Features* forUnmarshaling, uint8_t** ptr) {
8932     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8933     *ptr += sizeof(VkStructureType);
8934     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8935         rootType = forUnmarshaling->sType;
8936     }
8937     uint32_t pNext_size;
8938     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8939     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8940     *ptr += sizeof(uint32_t);
8941     forUnmarshaling->pNext = nullptr;
8942     if (pNext_size) {
8943         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8944         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8945         *ptr += sizeof(VkStructureType);
8946         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8947         vkStream->alloc((void**)&forUnmarshaling->pNext,
8948                         goldfish_vk_extension_struct_size_with_stream_features(
8949                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8950         *(VkStructureType*)forUnmarshaling->pNext = extType;
8951         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8952                                            ptr);
8953     }
8954     memcpy((VkBool32*)&forUnmarshaling->synchronization2, *ptr, sizeof(VkBool32));
8955     *ptr += sizeof(VkBool32);
8956 }
8957 
reservedunmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures * forUnmarshaling,uint8_t ** ptr)8958 void reservedunmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
8959     VulkanStream* vkStream, VkStructureType rootType,
8960     VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures* forUnmarshaling, uint8_t** ptr) {
8961     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8962     *ptr += sizeof(VkStructureType);
8963     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8964         rootType = forUnmarshaling->sType;
8965     }
8966     uint32_t pNext_size;
8967     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8968     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8969     *ptr += sizeof(uint32_t);
8970     forUnmarshaling->pNext = nullptr;
8971     if (pNext_size) {
8972         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
8973         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
8974         *ptr += sizeof(VkStructureType);
8975         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
8976         vkStream->alloc((void**)&forUnmarshaling->pNext,
8977                         goldfish_vk_extension_struct_size_with_stream_features(
8978                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
8979         *(VkStructureType*)forUnmarshaling->pNext = extType;
8980         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
8981                                            ptr);
8982     }
8983     memcpy((VkBool32*)&forUnmarshaling->shaderZeroInitializeWorkgroupMemory, *ptr,
8984            sizeof(VkBool32));
8985     *ptr += sizeof(VkBool32);
8986 }
8987 
reservedunmarshal_VkPhysicalDeviceImageRobustnessFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageRobustnessFeatures * forUnmarshaling,uint8_t ** ptr)8988 void reservedunmarshal_VkPhysicalDeviceImageRobustnessFeatures(
8989     VulkanStream* vkStream, VkStructureType rootType,
8990     VkPhysicalDeviceImageRobustnessFeatures* forUnmarshaling, uint8_t** ptr) {
8991     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
8992     *ptr += sizeof(VkStructureType);
8993     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
8994         rootType = forUnmarshaling->sType;
8995     }
8996     uint32_t pNext_size;
8997     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
8998     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
8999     *ptr += sizeof(uint32_t);
9000     forUnmarshaling->pNext = nullptr;
9001     if (pNext_size) {
9002         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9003         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9004         *ptr += sizeof(VkStructureType);
9005         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9006         vkStream->alloc((void**)&forUnmarshaling->pNext,
9007                         goldfish_vk_extension_struct_size_with_stream_features(
9008                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9009         *(VkStructureType*)forUnmarshaling->pNext = extType;
9010         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9011                                            ptr);
9012     }
9013     memcpy((VkBool32*)&forUnmarshaling->robustImageAccess, *ptr, sizeof(VkBool32));
9014     *ptr += sizeof(VkBool32);
9015 }
9016 
reservedunmarshal_VkBufferCopy2(VulkanStream * vkStream,VkStructureType rootType,VkBufferCopy2 * forUnmarshaling,uint8_t ** ptr)9017 void reservedunmarshal_VkBufferCopy2(VulkanStream* vkStream, VkStructureType rootType,
9018                                      VkBufferCopy2* forUnmarshaling, uint8_t** ptr) {
9019     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9020     *ptr += sizeof(VkStructureType);
9021     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9022         rootType = forUnmarshaling->sType;
9023     }
9024     uint32_t pNext_size;
9025     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9026     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9027     *ptr += sizeof(uint32_t);
9028     forUnmarshaling->pNext = nullptr;
9029     if (pNext_size) {
9030         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9031         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9032         *ptr += sizeof(VkStructureType);
9033         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9034         vkStream->alloc((void**)&forUnmarshaling->pNext,
9035                         goldfish_vk_extension_struct_size_with_stream_features(
9036                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9037         *(VkStructureType*)forUnmarshaling->pNext = extType;
9038         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9039                                            ptr);
9040     }
9041     memcpy((VkDeviceSize*)&forUnmarshaling->srcOffset, *ptr, sizeof(VkDeviceSize));
9042     *ptr += sizeof(VkDeviceSize);
9043     memcpy((VkDeviceSize*)&forUnmarshaling->dstOffset, *ptr, sizeof(VkDeviceSize));
9044     *ptr += sizeof(VkDeviceSize);
9045     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
9046     *ptr += sizeof(VkDeviceSize);
9047 }
9048 
reservedunmarshal_VkCopyBufferInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyBufferInfo2 * forUnmarshaling,uint8_t ** ptr)9049 void reservedunmarshal_VkCopyBufferInfo2(VulkanStream* vkStream, VkStructureType rootType,
9050                                          VkCopyBufferInfo2* forUnmarshaling, uint8_t** ptr) {
9051     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9052     *ptr += sizeof(VkStructureType);
9053     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9054         rootType = forUnmarshaling->sType;
9055     }
9056     uint32_t pNext_size;
9057     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9058     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9059     *ptr += sizeof(uint32_t);
9060     forUnmarshaling->pNext = nullptr;
9061     if (pNext_size) {
9062         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9063         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9064         *ptr += sizeof(VkStructureType);
9065         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9066         vkStream->alloc((void**)&forUnmarshaling->pNext,
9067                         goldfish_vk_extension_struct_size_with_stream_features(
9068                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9069         *(VkStructureType*)forUnmarshaling->pNext = extType;
9070         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9071                                            ptr);
9072     }
9073     uint64_t cgen_var_0;
9074     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9075     *ptr += 1 * 8;
9076     *(VkBuffer*)&forUnmarshaling->srcBuffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
9077     uint64_t cgen_var_1;
9078     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9079     *ptr += 1 * 8;
9080     *(VkBuffer*)&forUnmarshaling->dstBuffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_1));
9081     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
9082     *ptr += sizeof(uint32_t);
9083     vkStream->alloc((void**)&forUnmarshaling->pRegions,
9084                     forUnmarshaling->regionCount * sizeof(const VkBufferCopy2));
9085     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
9086         reservedunmarshal_VkBufferCopy2(vkStream, rootType,
9087                                         (VkBufferCopy2*)(forUnmarshaling->pRegions + i), ptr);
9088     }
9089 }
9090 
reservedunmarshal_VkImageCopy2(VulkanStream * vkStream,VkStructureType rootType,VkImageCopy2 * forUnmarshaling,uint8_t ** ptr)9091 void reservedunmarshal_VkImageCopy2(VulkanStream* vkStream, VkStructureType rootType,
9092                                     VkImageCopy2* forUnmarshaling, uint8_t** ptr) {
9093     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9094     *ptr += sizeof(VkStructureType);
9095     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9096         rootType = forUnmarshaling->sType;
9097     }
9098     uint32_t pNext_size;
9099     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9100     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9101     *ptr += sizeof(uint32_t);
9102     forUnmarshaling->pNext = nullptr;
9103     if (pNext_size) {
9104         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9105         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9106         *ptr += sizeof(VkStructureType);
9107         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9108         vkStream->alloc((void**)&forUnmarshaling->pNext,
9109                         goldfish_vk_extension_struct_size_with_stream_features(
9110                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9111         *(VkStructureType*)forUnmarshaling->pNext = extType;
9112         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9113                                            ptr);
9114     }
9115     reservedunmarshal_VkImageSubresourceLayers(
9116         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource), ptr);
9117     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset),
9118                                  ptr);
9119     reservedunmarshal_VkImageSubresourceLayers(
9120         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource), ptr);
9121     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset),
9122                                  ptr);
9123     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent), ptr);
9124 }
9125 
reservedunmarshal_VkCopyImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageInfo2 * forUnmarshaling,uint8_t ** ptr)9126 void reservedunmarshal_VkCopyImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
9127                                         VkCopyImageInfo2* forUnmarshaling, uint8_t** ptr) {
9128     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9129     *ptr += sizeof(VkStructureType);
9130     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9131         rootType = forUnmarshaling->sType;
9132     }
9133     uint32_t pNext_size;
9134     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9135     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9136     *ptr += sizeof(uint32_t);
9137     forUnmarshaling->pNext = nullptr;
9138     if (pNext_size) {
9139         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9140         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9141         *ptr += sizeof(VkStructureType);
9142         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9143         vkStream->alloc((void**)&forUnmarshaling->pNext,
9144                         goldfish_vk_extension_struct_size_with_stream_features(
9145                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9146         *(VkStructureType*)forUnmarshaling->pNext = extType;
9147         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9148                                            ptr);
9149     }
9150     uint64_t cgen_var_0;
9151     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9152     *ptr += 1 * 8;
9153     *(VkImage*)&forUnmarshaling->srcImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
9154     memcpy((VkImageLayout*)&forUnmarshaling->srcImageLayout, *ptr, sizeof(VkImageLayout));
9155     *ptr += sizeof(VkImageLayout);
9156     uint64_t cgen_var_1;
9157     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9158     *ptr += 1 * 8;
9159     *(VkImage*)&forUnmarshaling->dstImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_1));
9160     memcpy((VkImageLayout*)&forUnmarshaling->dstImageLayout, *ptr, sizeof(VkImageLayout));
9161     *ptr += sizeof(VkImageLayout);
9162     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
9163     *ptr += sizeof(uint32_t);
9164     vkStream->alloc((void**)&forUnmarshaling->pRegions,
9165                     forUnmarshaling->regionCount * sizeof(const VkImageCopy2));
9166     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
9167         reservedunmarshal_VkImageCopy2(vkStream, rootType,
9168                                        (VkImageCopy2*)(forUnmarshaling->pRegions + i), ptr);
9169     }
9170 }
9171 
reservedunmarshal_VkBufferImageCopy2(VulkanStream * vkStream,VkStructureType rootType,VkBufferImageCopy2 * forUnmarshaling,uint8_t ** ptr)9172 void reservedunmarshal_VkBufferImageCopy2(VulkanStream* vkStream, VkStructureType rootType,
9173                                           VkBufferImageCopy2* forUnmarshaling, uint8_t** ptr) {
9174     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9175     *ptr += sizeof(VkStructureType);
9176     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9177         rootType = forUnmarshaling->sType;
9178     }
9179     uint32_t pNext_size;
9180     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9181     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9182     *ptr += sizeof(uint32_t);
9183     forUnmarshaling->pNext = nullptr;
9184     if (pNext_size) {
9185         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9186         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9187         *ptr += sizeof(VkStructureType);
9188         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9189         vkStream->alloc((void**)&forUnmarshaling->pNext,
9190                         goldfish_vk_extension_struct_size_with_stream_features(
9191                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9192         *(VkStructureType*)forUnmarshaling->pNext = extType;
9193         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9194                                            ptr);
9195     }
9196     memcpy((VkDeviceSize*)&forUnmarshaling->bufferOffset, *ptr, sizeof(VkDeviceSize));
9197     *ptr += sizeof(VkDeviceSize);
9198     memcpy((uint32_t*)&forUnmarshaling->bufferRowLength, *ptr, sizeof(uint32_t));
9199     *ptr += sizeof(uint32_t);
9200     memcpy((uint32_t*)&forUnmarshaling->bufferImageHeight, *ptr, sizeof(uint32_t));
9201     *ptr += sizeof(uint32_t);
9202     reservedunmarshal_VkImageSubresourceLayers(
9203         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource), ptr);
9204     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset),
9205                                  ptr);
9206     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent),
9207                                  ptr);
9208 }
9209 
reservedunmarshal_VkCopyBufferToImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyBufferToImageInfo2 * forUnmarshaling,uint8_t ** ptr)9210 void reservedunmarshal_VkCopyBufferToImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
9211                                                 VkCopyBufferToImageInfo2* forUnmarshaling,
9212                                                 uint8_t** ptr) {
9213     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9214     *ptr += sizeof(VkStructureType);
9215     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9216         rootType = forUnmarshaling->sType;
9217     }
9218     uint32_t pNext_size;
9219     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9220     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9221     *ptr += sizeof(uint32_t);
9222     forUnmarshaling->pNext = nullptr;
9223     if (pNext_size) {
9224         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9225         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9226         *ptr += sizeof(VkStructureType);
9227         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9228         vkStream->alloc((void**)&forUnmarshaling->pNext,
9229                         goldfish_vk_extension_struct_size_with_stream_features(
9230                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9231         *(VkStructureType*)forUnmarshaling->pNext = extType;
9232         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9233                                            ptr);
9234     }
9235     uint64_t cgen_var_0;
9236     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9237     *ptr += 1 * 8;
9238     *(VkBuffer*)&forUnmarshaling->srcBuffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
9239     uint64_t cgen_var_1;
9240     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9241     *ptr += 1 * 8;
9242     *(VkImage*)&forUnmarshaling->dstImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_1));
9243     memcpy((VkImageLayout*)&forUnmarshaling->dstImageLayout, *ptr, sizeof(VkImageLayout));
9244     *ptr += sizeof(VkImageLayout);
9245     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
9246     *ptr += sizeof(uint32_t);
9247     vkStream->alloc((void**)&forUnmarshaling->pRegions,
9248                     forUnmarshaling->regionCount * sizeof(const VkBufferImageCopy2));
9249     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
9250         reservedunmarshal_VkBufferImageCopy2(
9251             vkStream, rootType, (VkBufferImageCopy2*)(forUnmarshaling->pRegions + i), ptr);
9252     }
9253 }
9254 
reservedunmarshal_VkCopyImageToBufferInfo2(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageToBufferInfo2 * forUnmarshaling,uint8_t ** ptr)9255 void reservedunmarshal_VkCopyImageToBufferInfo2(VulkanStream* vkStream, VkStructureType rootType,
9256                                                 VkCopyImageToBufferInfo2* forUnmarshaling,
9257                                                 uint8_t** ptr) {
9258     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9259     *ptr += sizeof(VkStructureType);
9260     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9261         rootType = forUnmarshaling->sType;
9262     }
9263     uint32_t pNext_size;
9264     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9265     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9266     *ptr += sizeof(uint32_t);
9267     forUnmarshaling->pNext = nullptr;
9268     if (pNext_size) {
9269         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9270         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9271         *ptr += sizeof(VkStructureType);
9272         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9273         vkStream->alloc((void**)&forUnmarshaling->pNext,
9274                         goldfish_vk_extension_struct_size_with_stream_features(
9275                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9276         *(VkStructureType*)forUnmarshaling->pNext = extType;
9277         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9278                                            ptr);
9279     }
9280     uint64_t cgen_var_0;
9281     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9282     *ptr += 1 * 8;
9283     *(VkImage*)&forUnmarshaling->srcImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
9284     memcpy((VkImageLayout*)&forUnmarshaling->srcImageLayout, *ptr, sizeof(VkImageLayout));
9285     *ptr += sizeof(VkImageLayout);
9286     uint64_t cgen_var_1;
9287     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9288     *ptr += 1 * 8;
9289     *(VkBuffer*)&forUnmarshaling->dstBuffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_1));
9290     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
9291     *ptr += sizeof(uint32_t);
9292     vkStream->alloc((void**)&forUnmarshaling->pRegions,
9293                     forUnmarshaling->regionCount * sizeof(const VkBufferImageCopy2));
9294     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
9295         reservedunmarshal_VkBufferImageCopy2(
9296             vkStream, rootType, (VkBufferImageCopy2*)(forUnmarshaling->pRegions + i), ptr);
9297     }
9298 }
9299 
reservedunmarshal_VkImageBlit2(VulkanStream * vkStream,VkStructureType rootType,VkImageBlit2 * forUnmarshaling,uint8_t ** ptr)9300 void reservedunmarshal_VkImageBlit2(VulkanStream* vkStream, VkStructureType rootType,
9301                                     VkImageBlit2* forUnmarshaling, uint8_t** ptr) {
9302     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9303     *ptr += sizeof(VkStructureType);
9304     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9305         rootType = forUnmarshaling->sType;
9306     }
9307     uint32_t pNext_size;
9308     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9309     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9310     *ptr += sizeof(uint32_t);
9311     forUnmarshaling->pNext = nullptr;
9312     if (pNext_size) {
9313         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9314         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9315         *ptr += sizeof(VkStructureType);
9316         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9317         vkStream->alloc((void**)&forUnmarshaling->pNext,
9318                         goldfish_vk_extension_struct_size_with_stream_features(
9319                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9320         *(VkStructureType*)forUnmarshaling->pNext = extType;
9321         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9322                                            ptr);
9323     }
9324     reservedunmarshal_VkImageSubresourceLayers(
9325         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource), ptr);
9326     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
9327         reservedunmarshal_VkOffset3D(vkStream, rootType,
9328                                      (VkOffset3D*)(forUnmarshaling->srcOffsets + i), ptr);
9329     }
9330     reservedunmarshal_VkImageSubresourceLayers(
9331         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource), ptr);
9332     for (uint32_t i = 0; i < (uint32_t)2; ++i) {
9333         reservedunmarshal_VkOffset3D(vkStream, rootType,
9334                                      (VkOffset3D*)(forUnmarshaling->dstOffsets + i), ptr);
9335     }
9336 }
9337 
reservedunmarshal_VkBlitImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkBlitImageInfo2 * forUnmarshaling,uint8_t ** ptr)9338 void reservedunmarshal_VkBlitImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
9339                                         VkBlitImageInfo2* forUnmarshaling, uint8_t** ptr) {
9340     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9341     *ptr += sizeof(VkStructureType);
9342     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9343         rootType = forUnmarshaling->sType;
9344     }
9345     uint32_t pNext_size;
9346     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9347     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9348     *ptr += sizeof(uint32_t);
9349     forUnmarshaling->pNext = nullptr;
9350     if (pNext_size) {
9351         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9352         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9353         *ptr += sizeof(VkStructureType);
9354         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9355         vkStream->alloc((void**)&forUnmarshaling->pNext,
9356                         goldfish_vk_extension_struct_size_with_stream_features(
9357                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9358         *(VkStructureType*)forUnmarshaling->pNext = extType;
9359         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9360                                            ptr);
9361     }
9362     uint64_t cgen_var_0;
9363     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9364     *ptr += 1 * 8;
9365     *(VkImage*)&forUnmarshaling->srcImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
9366     memcpy((VkImageLayout*)&forUnmarshaling->srcImageLayout, *ptr, sizeof(VkImageLayout));
9367     *ptr += sizeof(VkImageLayout);
9368     uint64_t cgen_var_1;
9369     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9370     *ptr += 1 * 8;
9371     *(VkImage*)&forUnmarshaling->dstImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_1));
9372     memcpy((VkImageLayout*)&forUnmarshaling->dstImageLayout, *ptr, sizeof(VkImageLayout));
9373     *ptr += sizeof(VkImageLayout);
9374     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
9375     *ptr += sizeof(uint32_t);
9376     vkStream->alloc((void**)&forUnmarshaling->pRegions,
9377                     forUnmarshaling->regionCount * sizeof(const VkImageBlit2));
9378     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
9379         reservedunmarshal_VkImageBlit2(vkStream, rootType,
9380                                        (VkImageBlit2*)(forUnmarshaling->pRegions + i), ptr);
9381     }
9382     memcpy((VkFilter*)&forUnmarshaling->filter, *ptr, sizeof(VkFilter));
9383     *ptr += sizeof(VkFilter);
9384 }
9385 
reservedunmarshal_VkImageResolve2(VulkanStream * vkStream,VkStructureType rootType,VkImageResolve2 * forUnmarshaling,uint8_t ** ptr)9386 void reservedunmarshal_VkImageResolve2(VulkanStream* vkStream, VkStructureType rootType,
9387                                        VkImageResolve2* forUnmarshaling, uint8_t** ptr) {
9388     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9389     *ptr += sizeof(VkStructureType);
9390     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9391         rootType = forUnmarshaling->sType;
9392     }
9393     uint32_t pNext_size;
9394     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9395     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9396     *ptr += sizeof(uint32_t);
9397     forUnmarshaling->pNext = nullptr;
9398     if (pNext_size) {
9399         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9400         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9401         *ptr += sizeof(VkStructureType);
9402         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9403         vkStream->alloc((void**)&forUnmarshaling->pNext,
9404                         goldfish_vk_extension_struct_size_with_stream_features(
9405                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9406         *(VkStructureType*)forUnmarshaling->pNext = extType;
9407         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9408                                            ptr);
9409     }
9410     reservedunmarshal_VkImageSubresourceLayers(
9411         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource), ptr);
9412     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->srcOffset),
9413                                  ptr);
9414     reservedunmarshal_VkImageSubresourceLayers(
9415         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource), ptr);
9416     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->dstOffset),
9417                                  ptr);
9418     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->extent), ptr);
9419 }
9420 
reservedunmarshal_VkResolveImageInfo2(VulkanStream * vkStream,VkStructureType rootType,VkResolveImageInfo2 * forUnmarshaling,uint8_t ** ptr)9421 void reservedunmarshal_VkResolveImageInfo2(VulkanStream* vkStream, VkStructureType rootType,
9422                                            VkResolveImageInfo2* forUnmarshaling, uint8_t** ptr) {
9423     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9424     *ptr += sizeof(VkStructureType);
9425     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9426         rootType = forUnmarshaling->sType;
9427     }
9428     uint32_t pNext_size;
9429     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9430     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9431     *ptr += sizeof(uint32_t);
9432     forUnmarshaling->pNext = nullptr;
9433     if (pNext_size) {
9434         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9435         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9436         *ptr += sizeof(VkStructureType);
9437         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9438         vkStream->alloc((void**)&forUnmarshaling->pNext,
9439                         goldfish_vk_extension_struct_size_with_stream_features(
9440                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9441         *(VkStructureType*)forUnmarshaling->pNext = extType;
9442         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9443                                            ptr);
9444     }
9445     uint64_t cgen_var_0;
9446     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9447     *ptr += 1 * 8;
9448     *(VkImage*)&forUnmarshaling->srcImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
9449     memcpy((VkImageLayout*)&forUnmarshaling->srcImageLayout, *ptr, sizeof(VkImageLayout));
9450     *ptr += sizeof(VkImageLayout);
9451     uint64_t cgen_var_1;
9452     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9453     *ptr += 1 * 8;
9454     *(VkImage*)&forUnmarshaling->dstImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_1));
9455     memcpy((VkImageLayout*)&forUnmarshaling->dstImageLayout, *ptr, sizeof(VkImageLayout));
9456     *ptr += sizeof(VkImageLayout);
9457     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
9458     *ptr += sizeof(uint32_t);
9459     vkStream->alloc((void**)&forUnmarshaling->pRegions,
9460                     forUnmarshaling->regionCount * sizeof(const VkImageResolve2));
9461     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
9462         reservedunmarshal_VkImageResolve2(vkStream, rootType,
9463                                           (VkImageResolve2*)(forUnmarshaling->pRegions + i), ptr);
9464     }
9465 }
9466 
reservedunmarshal_VkPhysicalDeviceSubgroupSizeControlFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSubgroupSizeControlFeatures * forUnmarshaling,uint8_t ** ptr)9467 void reservedunmarshal_VkPhysicalDeviceSubgroupSizeControlFeatures(
9468     VulkanStream* vkStream, VkStructureType rootType,
9469     VkPhysicalDeviceSubgroupSizeControlFeatures* forUnmarshaling, uint8_t** ptr) {
9470     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9471     *ptr += sizeof(VkStructureType);
9472     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9473         rootType = forUnmarshaling->sType;
9474     }
9475     uint32_t pNext_size;
9476     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9477     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9478     *ptr += sizeof(uint32_t);
9479     forUnmarshaling->pNext = nullptr;
9480     if (pNext_size) {
9481         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9482         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9483         *ptr += sizeof(VkStructureType);
9484         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9485         vkStream->alloc((void**)&forUnmarshaling->pNext,
9486                         goldfish_vk_extension_struct_size_with_stream_features(
9487                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9488         *(VkStructureType*)forUnmarshaling->pNext = extType;
9489         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9490                                            ptr);
9491     }
9492     memcpy((VkBool32*)&forUnmarshaling->subgroupSizeControl, *ptr, sizeof(VkBool32));
9493     *ptr += sizeof(VkBool32);
9494     memcpy((VkBool32*)&forUnmarshaling->computeFullSubgroups, *ptr, sizeof(VkBool32));
9495     *ptr += sizeof(VkBool32);
9496 }
9497 
reservedunmarshal_VkPhysicalDeviceSubgroupSizeControlProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSubgroupSizeControlProperties * forUnmarshaling,uint8_t ** ptr)9498 void reservedunmarshal_VkPhysicalDeviceSubgroupSizeControlProperties(
9499     VulkanStream* vkStream, VkStructureType rootType,
9500     VkPhysicalDeviceSubgroupSizeControlProperties* forUnmarshaling, uint8_t** ptr) {
9501     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9502     *ptr += sizeof(VkStructureType);
9503     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9504         rootType = forUnmarshaling->sType;
9505     }
9506     uint32_t pNext_size;
9507     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9508     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9509     *ptr += sizeof(uint32_t);
9510     forUnmarshaling->pNext = nullptr;
9511     if (pNext_size) {
9512         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9513         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9514         *ptr += sizeof(VkStructureType);
9515         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9516         vkStream->alloc((void**)&forUnmarshaling->pNext,
9517                         goldfish_vk_extension_struct_size_with_stream_features(
9518                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9519         *(VkStructureType*)forUnmarshaling->pNext = extType;
9520         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9521                                            ptr);
9522     }
9523     memcpy((uint32_t*)&forUnmarshaling->minSubgroupSize, *ptr, sizeof(uint32_t));
9524     *ptr += sizeof(uint32_t);
9525     memcpy((uint32_t*)&forUnmarshaling->maxSubgroupSize, *ptr, sizeof(uint32_t));
9526     *ptr += sizeof(uint32_t);
9527     memcpy((uint32_t*)&forUnmarshaling->maxComputeWorkgroupSubgroups, *ptr, sizeof(uint32_t));
9528     *ptr += sizeof(uint32_t);
9529     memcpy((VkShaderStageFlags*)&forUnmarshaling->requiredSubgroupSizeStages, *ptr,
9530            sizeof(VkShaderStageFlags));
9531     *ptr += sizeof(VkShaderStageFlags);
9532 }
9533 
reservedunmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineShaderStageRequiredSubgroupSizeCreateInfo * forUnmarshaling,uint8_t ** ptr)9534 void reservedunmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(
9535     VulkanStream* vkStream, VkStructureType rootType,
9536     VkPipelineShaderStageRequiredSubgroupSizeCreateInfo* forUnmarshaling, uint8_t** ptr) {
9537     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9538     *ptr += sizeof(VkStructureType);
9539     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9540         rootType = forUnmarshaling->sType;
9541     }
9542     uint32_t pNext_size;
9543     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9544     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9545     *ptr += sizeof(uint32_t);
9546     forUnmarshaling->pNext = nullptr;
9547     if (pNext_size) {
9548         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9549         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9550         *ptr += sizeof(VkStructureType);
9551         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9552         vkStream->alloc((void**)&forUnmarshaling->pNext,
9553                         goldfish_vk_extension_struct_size_with_stream_features(
9554                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9555         *(VkStructureType*)forUnmarshaling->pNext = extType;
9556         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9557                                            ptr);
9558     }
9559     memcpy((uint32_t*)&forUnmarshaling->requiredSubgroupSize, *ptr, sizeof(uint32_t));
9560     *ptr += sizeof(uint32_t);
9561 }
9562 
reservedunmarshal_VkPhysicalDeviceInlineUniformBlockFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceInlineUniformBlockFeatures * forUnmarshaling,uint8_t ** ptr)9563 void reservedunmarshal_VkPhysicalDeviceInlineUniformBlockFeatures(
9564     VulkanStream* vkStream, VkStructureType rootType,
9565     VkPhysicalDeviceInlineUniformBlockFeatures* forUnmarshaling, uint8_t** ptr) {
9566     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9567     *ptr += sizeof(VkStructureType);
9568     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9569         rootType = forUnmarshaling->sType;
9570     }
9571     uint32_t pNext_size;
9572     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9573     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9574     *ptr += sizeof(uint32_t);
9575     forUnmarshaling->pNext = nullptr;
9576     if (pNext_size) {
9577         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9578         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9579         *ptr += sizeof(VkStructureType);
9580         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9581         vkStream->alloc((void**)&forUnmarshaling->pNext,
9582                         goldfish_vk_extension_struct_size_with_stream_features(
9583                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9584         *(VkStructureType*)forUnmarshaling->pNext = extType;
9585         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9586                                            ptr);
9587     }
9588     memcpy((VkBool32*)&forUnmarshaling->inlineUniformBlock, *ptr, sizeof(VkBool32));
9589     *ptr += sizeof(VkBool32);
9590     memcpy((VkBool32*)&forUnmarshaling->descriptorBindingInlineUniformBlockUpdateAfterBind, *ptr,
9591            sizeof(VkBool32));
9592     *ptr += sizeof(VkBool32);
9593 }
9594 
reservedunmarshal_VkPhysicalDeviceInlineUniformBlockProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceInlineUniformBlockProperties * forUnmarshaling,uint8_t ** ptr)9595 void reservedunmarshal_VkPhysicalDeviceInlineUniformBlockProperties(
9596     VulkanStream* vkStream, VkStructureType rootType,
9597     VkPhysicalDeviceInlineUniformBlockProperties* forUnmarshaling, uint8_t** ptr) {
9598     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9599     *ptr += sizeof(VkStructureType);
9600     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9601         rootType = forUnmarshaling->sType;
9602     }
9603     uint32_t pNext_size;
9604     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9605     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9606     *ptr += sizeof(uint32_t);
9607     forUnmarshaling->pNext = nullptr;
9608     if (pNext_size) {
9609         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9610         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9611         *ptr += sizeof(VkStructureType);
9612         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9613         vkStream->alloc((void**)&forUnmarshaling->pNext,
9614                         goldfish_vk_extension_struct_size_with_stream_features(
9615                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9616         *(VkStructureType*)forUnmarshaling->pNext = extType;
9617         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9618                                            ptr);
9619     }
9620     memcpy((uint32_t*)&forUnmarshaling->maxInlineUniformBlockSize, *ptr, sizeof(uint32_t));
9621     *ptr += sizeof(uint32_t);
9622     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInlineUniformBlocks, *ptr,
9623            sizeof(uint32_t));
9624     *ptr += sizeof(uint32_t);
9625     memcpy((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
9626            *ptr, sizeof(uint32_t));
9627     *ptr += sizeof(uint32_t);
9628     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetInlineUniformBlocks, *ptr,
9629            sizeof(uint32_t));
9630     *ptr += sizeof(uint32_t);
9631     memcpy((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInlineUniformBlocks, *ptr,
9632            sizeof(uint32_t));
9633     *ptr += sizeof(uint32_t);
9634 }
9635 
reservedunmarshal_VkWriteDescriptorSetInlineUniformBlock(VulkanStream * vkStream,VkStructureType rootType,VkWriteDescriptorSetInlineUniformBlock * forUnmarshaling,uint8_t ** ptr)9636 void reservedunmarshal_VkWriteDescriptorSetInlineUniformBlock(
9637     VulkanStream* vkStream, VkStructureType rootType,
9638     VkWriteDescriptorSetInlineUniformBlock* forUnmarshaling, uint8_t** ptr) {
9639     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9640     *ptr += sizeof(VkStructureType);
9641     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9642         rootType = forUnmarshaling->sType;
9643     }
9644     uint32_t pNext_size;
9645     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9646     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9647     *ptr += sizeof(uint32_t);
9648     forUnmarshaling->pNext = nullptr;
9649     if (pNext_size) {
9650         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9651         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9652         *ptr += sizeof(VkStructureType);
9653         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9654         vkStream->alloc((void**)&forUnmarshaling->pNext,
9655                         goldfish_vk_extension_struct_size_with_stream_features(
9656                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9657         *(VkStructureType*)forUnmarshaling->pNext = extType;
9658         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9659                                            ptr);
9660     }
9661     memcpy((uint32_t*)&forUnmarshaling->dataSize, *ptr, sizeof(uint32_t));
9662     *ptr += sizeof(uint32_t);
9663     vkStream->alloc((void**)&forUnmarshaling->pData,
9664                     forUnmarshaling->dataSize * sizeof(const uint8_t));
9665     memcpy((void*)forUnmarshaling->pData, *ptr, forUnmarshaling->dataSize * sizeof(const uint8_t));
9666     *ptr += forUnmarshaling->dataSize * sizeof(const uint8_t);
9667 }
9668 
reservedunmarshal_VkDescriptorPoolInlineUniformBlockCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkDescriptorPoolInlineUniformBlockCreateInfo * forUnmarshaling,uint8_t ** ptr)9669 void reservedunmarshal_VkDescriptorPoolInlineUniformBlockCreateInfo(
9670     VulkanStream* vkStream, VkStructureType rootType,
9671     VkDescriptorPoolInlineUniformBlockCreateInfo* forUnmarshaling, uint8_t** ptr) {
9672     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9673     *ptr += sizeof(VkStructureType);
9674     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9675         rootType = forUnmarshaling->sType;
9676     }
9677     uint32_t pNext_size;
9678     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9679     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9680     *ptr += sizeof(uint32_t);
9681     forUnmarshaling->pNext = nullptr;
9682     if (pNext_size) {
9683         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9684         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9685         *ptr += sizeof(VkStructureType);
9686         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9687         vkStream->alloc((void**)&forUnmarshaling->pNext,
9688                         goldfish_vk_extension_struct_size_with_stream_features(
9689                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9690         *(VkStructureType*)forUnmarshaling->pNext = extType;
9691         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9692                                            ptr);
9693     }
9694     memcpy((uint32_t*)&forUnmarshaling->maxInlineUniformBlockBindings, *ptr, sizeof(uint32_t));
9695     *ptr += sizeof(uint32_t);
9696 }
9697 
reservedunmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTextureCompressionASTCHDRFeatures * forUnmarshaling,uint8_t ** ptr)9698 void reservedunmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(
9699     VulkanStream* vkStream, VkStructureType rootType,
9700     VkPhysicalDeviceTextureCompressionASTCHDRFeatures* forUnmarshaling, uint8_t** ptr) {
9701     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9702     *ptr += sizeof(VkStructureType);
9703     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9704         rootType = forUnmarshaling->sType;
9705     }
9706     uint32_t pNext_size;
9707     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9708     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9709     *ptr += sizeof(uint32_t);
9710     forUnmarshaling->pNext = nullptr;
9711     if (pNext_size) {
9712         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9713         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9714         *ptr += sizeof(VkStructureType);
9715         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9716         vkStream->alloc((void**)&forUnmarshaling->pNext,
9717                         goldfish_vk_extension_struct_size_with_stream_features(
9718                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9719         *(VkStructureType*)forUnmarshaling->pNext = extType;
9720         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9721                                            ptr);
9722     }
9723     memcpy((VkBool32*)&forUnmarshaling->textureCompressionASTC_HDR, *ptr, sizeof(VkBool32));
9724     *ptr += sizeof(VkBool32);
9725 }
9726 
reservedunmarshal_VkRenderingAttachmentInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderingAttachmentInfo * forUnmarshaling,uint8_t ** ptr)9727 void reservedunmarshal_VkRenderingAttachmentInfo(VulkanStream* vkStream, VkStructureType rootType,
9728                                                  VkRenderingAttachmentInfo* forUnmarshaling,
9729                                                  uint8_t** ptr) {
9730     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9731     *ptr += sizeof(VkStructureType);
9732     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9733         rootType = forUnmarshaling->sType;
9734     }
9735     uint32_t pNext_size;
9736     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9737     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9738     *ptr += sizeof(uint32_t);
9739     forUnmarshaling->pNext = nullptr;
9740     if (pNext_size) {
9741         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9742         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9743         *ptr += sizeof(VkStructureType);
9744         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9745         vkStream->alloc((void**)&forUnmarshaling->pNext,
9746                         goldfish_vk_extension_struct_size_with_stream_features(
9747                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9748         *(VkStructureType*)forUnmarshaling->pNext = extType;
9749         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9750                                            ptr);
9751     }
9752     uint64_t cgen_var_0;
9753     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
9754     *ptr += 1 * 8;
9755     *(VkImageView*)&forUnmarshaling->imageView =
9756         (VkImageView)unbox_VkImageView((VkImageView)(*&cgen_var_0));
9757     memcpy((VkImageLayout*)&forUnmarshaling->imageLayout, *ptr, sizeof(VkImageLayout));
9758     *ptr += sizeof(VkImageLayout);
9759     memcpy((VkResolveModeFlagBits*)&forUnmarshaling->resolveMode, *ptr,
9760            sizeof(VkResolveModeFlagBits));
9761     *ptr += sizeof(VkResolveModeFlagBits);
9762     uint64_t cgen_var_1;
9763     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
9764     *ptr += 1 * 8;
9765     *(VkImageView*)&forUnmarshaling->resolveImageView =
9766         (VkImageView)unbox_VkImageView((VkImageView)(*&cgen_var_1));
9767     memcpy((VkImageLayout*)&forUnmarshaling->resolveImageLayout, *ptr, sizeof(VkImageLayout));
9768     *ptr += sizeof(VkImageLayout);
9769     memcpy((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, *ptr, sizeof(VkAttachmentLoadOp));
9770     *ptr += sizeof(VkAttachmentLoadOp);
9771     memcpy((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, *ptr, sizeof(VkAttachmentStoreOp));
9772     *ptr += sizeof(VkAttachmentStoreOp);
9773     reservedunmarshal_VkClearValue(vkStream, rootType,
9774                                    (VkClearValue*)(&forUnmarshaling->clearValue), ptr);
9775 }
9776 
reservedunmarshal_VkRenderingInfo(VulkanStream * vkStream,VkStructureType rootType,VkRenderingInfo * forUnmarshaling,uint8_t ** ptr)9777 void reservedunmarshal_VkRenderingInfo(VulkanStream* vkStream, VkStructureType rootType,
9778                                        VkRenderingInfo* forUnmarshaling, uint8_t** ptr) {
9779     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9780     *ptr += sizeof(VkStructureType);
9781     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9782         rootType = forUnmarshaling->sType;
9783     }
9784     uint32_t pNext_size;
9785     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9786     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9787     *ptr += sizeof(uint32_t);
9788     forUnmarshaling->pNext = nullptr;
9789     if (pNext_size) {
9790         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9791         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9792         *ptr += sizeof(VkStructureType);
9793         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9794         vkStream->alloc((void**)&forUnmarshaling->pNext,
9795                         goldfish_vk_extension_struct_size_with_stream_features(
9796                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9797         *(VkStructureType*)forUnmarshaling->pNext = extType;
9798         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9799                                            ptr);
9800     }
9801     memcpy((VkRenderingFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkRenderingFlags));
9802     *ptr += sizeof(VkRenderingFlags);
9803     reservedunmarshal_VkRect2D(vkStream, rootType, (VkRect2D*)(&forUnmarshaling->renderArea), ptr);
9804     memcpy((uint32_t*)&forUnmarshaling->layerCount, *ptr, sizeof(uint32_t));
9805     *ptr += sizeof(uint32_t);
9806     memcpy((uint32_t*)&forUnmarshaling->viewMask, *ptr, sizeof(uint32_t));
9807     *ptr += sizeof(uint32_t);
9808     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
9809     *ptr += sizeof(uint32_t);
9810     vkStream->alloc(
9811         (void**)&forUnmarshaling->pColorAttachments,
9812         forUnmarshaling->colorAttachmentCount * sizeof(const VkRenderingAttachmentInfo));
9813     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i) {
9814         reservedunmarshal_VkRenderingAttachmentInfo(
9815             vkStream, rootType,
9816             (VkRenderingAttachmentInfo*)(forUnmarshaling->pColorAttachments + i), ptr);
9817     }
9818     // WARNING PTR CHECK
9819     memcpy((VkRenderingAttachmentInfo**)&forUnmarshaling->pDepthAttachment, (*ptr), 8);
9820     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDepthAttachment);
9821     *ptr += 8;
9822     if (forUnmarshaling->pDepthAttachment) {
9823         vkStream->alloc((void**)&forUnmarshaling->pDepthAttachment,
9824                         sizeof(const VkRenderingAttachmentInfo));
9825         reservedunmarshal_VkRenderingAttachmentInfo(
9826             vkStream, rootType, (VkRenderingAttachmentInfo*)(forUnmarshaling->pDepthAttachment),
9827             ptr);
9828     }
9829     // WARNING PTR CHECK
9830     memcpy((VkRenderingAttachmentInfo**)&forUnmarshaling->pStencilAttachment, (*ptr), 8);
9831     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pStencilAttachment);
9832     *ptr += 8;
9833     if (forUnmarshaling->pStencilAttachment) {
9834         vkStream->alloc((void**)&forUnmarshaling->pStencilAttachment,
9835                         sizeof(const VkRenderingAttachmentInfo));
9836         reservedunmarshal_VkRenderingAttachmentInfo(
9837             vkStream, rootType, (VkRenderingAttachmentInfo*)(forUnmarshaling->pStencilAttachment),
9838             ptr);
9839     }
9840 }
9841 
reservedunmarshal_VkPipelineRenderingCreateInfo(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRenderingCreateInfo * forUnmarshaling,uint8_t ** ptr)9842 void reservedunmarshal_VkPipelineRenderingCreateInfo(VulkanStream* vkStream,
9843                                                      VkStructureType rootType,
9844                                                      VkPipelineRenderingCreateInfo* forUnmarshaling,
9845                                                      uint8_t** ptr) {
9846     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9847     *ptr += sizeof(VkStructureType);
9848     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9849         rootType = forUnmarshaling->sType;
9850     }
9851     uint32_t pNext_size;
9852     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9853     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9854     *ptr += sizeof(uint32_t);
9855     forUnmarshaling->pNext = nullptr;
9856     if (pNext_size) {
9857         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9858         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9859         *ptr += sizeof(VkStructureType);
9860         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9861         vkStream->alloc((void**)&forUnmarshaling->pNext,
9862                         goldfish_vk_extension_struct_size_with_stream_features(
9863                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9864         *(VkStructureType*)forUnmarshaling->pNext = extType;
9865         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9866                                            ptr);
9867     }
9868     memcpy((uint32_t*)&forUnmarshaling->viewMask, *ptr, sizeof(uint32_t));
9869     *ptr += sizeof(uint32_t);
9870     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
9871     *ptr += sizeof(uint32_t);
9872     // WARNING PTR CHECK
9873     memcpy((VkFormat**)&forUnmarshaling->pColorAttachmentFormats, (*ptr), 8);
9874     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pColorAttachmentFormats);
9875     *ptr += 8;
9876     if (forUnmarshaling->pColorAttachmentFormats) {
9877         vkStream->alloc((void**)&forUnmarshaling->pColorAttachmentFormats,
9878                         forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
9879         memcpy((VkFormat*)forUnmarshaling->pColorAttachmentFormats, *ptr,
9880                forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
9881         *ptr += forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat);
9882     }
9883     memcpy((VkFormat*)&forUnmarshaling->depthAttachmentFormat, *ptr, sizeof(VkFormat));
9884     *ptr += sizeof(VkFormat);
9885     memcpy((VkFormat*)&forUnmarshaling->stencilAttachmentFormat, *ptr, sizeof(VkFormat));
9886     *ptr += sizeof(VkFormat);
9887 }
9888 
reservedunmarshal_VkPhysicalDeviceDynamicRenderingFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDynamicRenderingFeatures * forUnmarshaling,uint8_t ** ptr)9889 void reservedunmarshal_VkPhysicalDeviceDynamicRenderingFeatures(
9890     VulkanStream* vkStream, VkStructureType rootType,
9891     VkPhysicalDeviceDynamicRenderingFeatures* forUnmarshaling, uint8_t** ptr) {
9892     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9893     *ptr += sizeof(VkStructureType);
9894     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9895         rootType = forUnmarshaling->sType;
9896     }
9897     uint32_t pNext_size;
9898     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9899     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9900     *ptr += sizeof(uint32_t);
9901     forUnmarshaling->pNext = nullptr;
9902     if (pNext_size) {
9903         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9904         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9905         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9912                                            ptr);
9913     }
9914     memcpy((VkBool32*)&forUnmarshaling->dynamicRendering, *ptr, sizeof(VkBool32));
9915     *ptr += sizeof(VkBool32);
9916 }
9917 
reservedunmarshal_VkCommandBufferInheritanceRenderingInfo(VulkanStream * vkStream,VkStructureType rootType,VkCommandBufferInheritanceRenderingInfo * forUnmarshaling,uint8_t ** ptr)9918 void reservedunmarshal_VkCommandBufferInheritanceRenderingInfo(
9919     VulkanStream* vkStream, VkStructureType rootType,
9920     VkCommandBufferInheritanceRenderingInfo* forUnmarshaling, uint8_t** ptr) {
9921     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9922     *ptr += sizeof(VkStructureType);
9923     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9924         rootType = forUnmarshaling->sType;
9925     }
9926     uint32_t pNext_size;
9927     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9928     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9929     *ptr += sizeof(uint32_t);
9930     forUnmarshaling->pNext = nullptr;
9931     if (pNext_size) {
9932         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9933         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9934         *ptr += sizeof(VkStructureType);
9935         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9936         vkStream->alloc((void**)&forUnmarshaling->pNext,
9937                         goldfish_vk_extension_struct_size_with_stream_features(
9938                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9939         *(VkStructureType*)forUnmarshaling->pNext = extType;
9940         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9941                                            ptr);
9942     }
9943     memcpy((VkRenderingFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkRenderingFlags));
9944     *ptr += sizeof(VkRenderingFlags);
9945     memcpy((uint32_t*)&forUnmarshaling->viewMask, *ptr, sizeof(uint32_t));
9946     *ptr += sizeof(uint32_t);
9947     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
9948     *ptr += sizeof(uint32_t);
9949     vkStream->alloc((void**)&forUnmarshaling->pColorAttachmentFormats,
9950                     forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
9951     memcpy((VkFormat*)forUnmarshaling->pColorAttachmentFormats, *ptr,
9952            forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
9953     *ptr += forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat);
9954     memcpy((VkFormat*)&forUnmarshaling->depthAttachmentFormat, *ptr, sizeof(VkFormat));
9955     *ptr += sizeof(VkFormat);
9956     memcpy((VkFormat*)&forUnmarshaling->stencilAttachmentFormat, *ptr, sizeof(VkFormat));
9957     *ptr += sizeof(VkFormat);
9958     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->rasterizationSamples, *ptr,
9959            sizeof(VkSampleCountFlagBits));
9960     *ptr += sizeof(VkSampleCountFlagBits);
9961 }
9962 
reservedunmarshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderIntegerDotProductFeatures * forUnmarshaling,uint8_t ** ptr)9963 void reservedunmarshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(
9964     VulkanStream* vkStream, VkStructureType rootType,
9965     VkPhysicalDeviceShaderIntegerDotProductFeatures* forUnmarshaling, uint8_t** ptr) {
9966     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9967     *ptr += sizeof(VkStructureType);
9968     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9969         rootType = forUnmarshaling->sType;
9970     }
9971     uint32_t pNext_size;
9972     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
9973     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
9974     *ptr += sizeof(uint32_t);
9975     forUnmarshaling->pNext = nullptr;
9976     if (pNext_size) {
9977         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
9978         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
9979         *ptr += sizeof(VkStructureType);
9980         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
9981         vkStream->alloc((void**)&forUnmarshaling->pNext,
9982                         goldfish_vk_extension_struct_size_with_stream_features(
9983                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
9984         *(VkStructureType*)forUnmarshaling->pNext = extType;
9985         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
9986                                            ptr);
9987     }
9988     memcpy((VkBool32*)&forUnmarshaling->shaderIntegerDotProduct, *ptr, sizeof(VkBool32));
9989     *ptr += sizeof(VkBool32);
9990 }
9991 
reservedunmarshal_VkPhysicalDeviceShaderIntegerDotProductProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceShaderIntegerDotProductProperties * forUnmarshaling,uint8_t ** ptr)9992 void reservedunmarshal_VkPhysicalDeviceShaderIntegerDotProductProperties(
9993     VulkanStream* vkStream, VkStructureType rootType,
9994     VkPhysicalDeviceShaderIntegerDotProductProperties* forUnmarshaling, uint8_t** ptr) {
9995     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
9996     *ptr += sizeof(VkStructureType);
9997     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
9998         rootType = forUnmarshaling->sType;
9999     }
10000     uint32_t pNext_size;
10001     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10002     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10003     *ptr += sizeof(uint32_t);
10004     forUnmarshaling->pNext = nullptr;
10005     if (pNext_size) {
10006         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10007         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10008         *ptr += sizeof(VkStructureType);
10009         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10010         vkStream->alloc((void**)&forUnmarshaling->pNext,
10011                         goldfish_vk_extension_struct_size_with_stream_features(
10012                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10013         *(VkStructureType*)forUnmarshaling->pNext = extType;
10014         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10015                                            ptr);
10016     }
10017     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct8BitUnsignedAccelerated, *ptr,
10018            sizeof(VkBool32));
10019     *ptr += sizeof(VkBool32);
10020     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct8BitSignedAccelerated, *ptr,
10021            sizeof(VkBool32));
10022     *ptr += sizeof(VkBool32);
10023     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct8BitMixedSignednessAccelerated, *ptr,
10024            sizeof(VkBool32));
10025     *ptr += sizeof(VkBool32);
10026     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedUnsignedAccelerated, *ptr,
10027            sizeof(VkBool32));
10028     *ptr += sizeof(VkBool32);
10029     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedSignedAccelerated, *ptr,
10030            sizeof(VkBool32));
10031     *ptr += sizeof(VkBool32);
10032     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct4x8BitPackedMixedSignednessAccelerated,
10033            *ptr, sizeof(VkBool32));
10034     *ptr += sizeof(VkBool32);
10035     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct16BitUnsignedAccelerated, *ptr,
10036            sizeof(VkBool32));
10037     *ptr += sizeof(VkBool32);
10038     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct16BitSignedAccelerated, *ptr,
10039            sizeof(VkBool32));
10040     *ptr += sizeof(VkBool32);
10041     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct16BitMixedSignednessAccelerated, *ptr,
10042            sizeof(VkBool32));
10043     *ptr += sizeof(VkBool32);
10044     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct32BitUnsignedAccelerated, *ptr,
10045            sizeof(VkBool32));
10046     *ptr += sizeof(VkBool32);
10047     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct32BitSignedAccelerated, *ptr,
10048            sizeof(VkBool32));
10049     *ptr += sizeof(VkBool32);
10050     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct32BitMixedSignednessAccelerated, *ptr,
10051            sizeof(VkBool32));
10052     *ptr += sizeof(VkBool32);
10053     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct64BitUnsignedAccelerated, *ptr,
10054            sizeof(VkBool32));
10055     *ptr += sizeof(VkBool32);
10056     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct64BitSignedAccelerated, *ptr,
10057            sizeof(VkBool32));
10058     *ptr += sizeof(VkBool32);
10059     memcpy((VkBool32*)&forUnmarshaling->integerDotProduct64BitMixedSignednessAccelerated, *ptr,
10060            sizeof(VkBool32));
10061     *ptr += sizeof(VkBool32);
10062     memcpy(
10063         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
10064         *ptr, sizeof(VkBool32));
10065     *ptr += sizeof(VkBool32);
10066     memcpy(
10067         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating8BitSignedAccelerated,
10068         *ptr, sizeof(VkBool32));
10069     *ptr += sizeof(VkBool32);
10070     memcpy((VkBool32*)&forUnmarshaling
10071                ->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
10072            *ptr, sizeof(VkBool32));
10073     *ptr += sizeof(VkBool32);
10074     memcpy((VkBool32*)&forUnmarshaling
10075                ->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
10076            *ptr, sizeof(VkBool32));
10077     *ptr += sizeof(VkBool32);
10078     memcpy((VkBool32*)&forUnmarshaling
10079                ->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
10080            *ptr, sizeof(VkBool32));
10081     *ptr += sizeof(VkBool32);
10082     memcpy((VkBool32*)&forUnmarshaling
10083                ->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
10084            *ptr, sizeof(VkBool32));
10085     *ptr += sizeof(VkBool32);
10086     memcpy((VkBool32*)&forUnmarshaling
10087                ->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
10088            *ptr, sizeof(VkBool32));
10089     *ptr += sizeof(VkBool32);
10090     memcpy(
10091         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating16BitSignedAccelerated,
10092         *ptr, sizeof(VkBool32));
10093     *ptr += sizeof(VkBool32);
10094     memcpy((VkBool32*)&forUnmarshaling
10095                ->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
10096            *ptr, sizeof(VkBool32));
10097     *ptr += sizeof(VkBool32);
10098     memcpy((VkBool32*)&forUnmarshaling
10099                ->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
10100            *ptr, sizeof(VkBool32));
10101     *ptr += sizeof(VkBool32);
10102     memcpy(
10103         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating32BitSignedAccelerated,
10104         *ptr, sizeof(VkBool32));
10105     *ptr += sizeof(VkBool32);
10106     memcpy((VkBool32*)&forUnmarshaling
10107                ->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
10108            *ptr, sizeof(VkBool32));
10109     *ptr += sizeof(VkBool32);
10110     memcpy((VkBool32*)&forUnmarshaling
10111                ->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
10112            *ptr, sizeof(VkBool32));
10113     *ptr += sizeof(VkBool32);
10114     memcpy(
10115         (VkBool32*)&forUnmarshaling->integerDotProductAccumulatingSaturating64BitSignedAccelerated,
10116         *ptr, sizeof(VkBool32));
10117     *ptr += sizeof(VkBool32);
10118     memcpy((VkBool32*)&forUnmarshaling
10119                ->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
10120            *ptr, sizeof(VkBool32));
10121     *ptr += sizeof(VkBool32);
10122 }
10123 
reservedunmarshal_VkPhysicalDeviceTexelBufferAlignmentProperties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTexelBufferAlignmentProperties * forUnmarshaling,uint8_t ** ptr)10124 void reservedunmarshal_VkPhysicalDeviceTexelBufferAlignmentProperties(
10125     VulkanStream* vkStream, VkStructureType rootType,
10126     VkPhysicalDeviceTexelBufferAlignmentProperties* forUnmarshaling, uint8_t** ptr) {
10127     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10128     *ptr += sizeof(VkStructureType);
10129     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10130         rootType = forUnmarshaling->sType;
10131     }
10132     uint32_t pNext_size;
10133     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10134     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10135     *ptr += sizeof(uint32_t);
10136     forUnmarshaling->pNext = nullptr;
10137     if (pNext_size) {
10138         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10139         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10140         *ptr += sizeof(VkStructureType);
10141         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10142         vkStream->alloc((void**)&forUnmarshaling->pNext,
10143                         goldfish_vk_extension_struct_size_with_stream_features(
10144                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10145         *(VkStructureType*)forUnmarshaling->pNext = extType;
10146         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10147                                            ptr);
10148     }
10149     memcpy((VkDeviceSize*)&forUnmarshaling->storageTexelBufferOffsetAlignmentBytes, *ptr,
10150            sizeof(VkDeviceSize));
10151     *ptr += sizeof(VkDeviceSize);
10152     memcpy((VkBool32*)&forUnmarshaling->storageTexelBufferOffsetSingleTexelAlignment, *ptr,
10153            sizeof(VkBool32));
10154     *ptr += sizeof(VkBool32);
10155     memcpy((VkDeviceSize*)&forUnmarshaling->uniformTexelBufferOffsetAlignmentBytes, *ptr,
10156            sizeof(VkDeviceSize));
10157     *ptr += sizeof(VkDeviceSize);
10158     memcpy((VkBool32*)&forUnmarshaling->uniformTexelBufferOffsetSingleTexelAlignment, *ptr,
10159            sizeof(VkBool32));
10160     *ptr += sizeof(VkBool32);
10161 }
10162 
reservedunmarshal_VkFormatProperties3(VulkanStream * vkStream,VkStructureType rootType,VkFormatProperties3 * forUnmarshaling,uint8_t ** ptr)10163 void reservedunmarshal_VkFormatProperties3(VulkanStream* vkStream, VkStructureType rootType,
10164                                            VkFormatProperties3* forUnmarshaling, uint8_t** ptr) {
10165     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10166     *ptr += sizeof(VkStructureType);
10167     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10168         rootType = forUnmarshaling->sType;
10169     }
10170     uint32_t pNext_size;
10171     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10172     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10173     *ptr += sizeof(uint32_t);
10174     forUnmarshaling->pNext = nullptr;
10175     if (pNext_size) {
10176         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10177         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10178         *ptr += sizeof(VkStructureType);
10179         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10180         vkStream->alloc((void**)&forUnmarshaling->pNext,
10181                         goldfish_vk_extension_struct_size_with_stream_features(
10182                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10183         *(VkStructureType*)forUnmarshaling->pNext = extType;
10184         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10185                                            ptr);
10186     }
10187     memcpy((VkFormatFeatureFlags2*)&forUnmarshaling->linearTilingFeatures, *ptr,
10188            sizeof(VkFormatFeatureFlags2));
10189     *ptr += sizeof(VkFormatFeatureFlags2);
10190     memcpy((VkFormatFeatureFlags2*)&forUnmarshaling->optimalTilingFeatures, *ptr,
10191            sizeof(VkFormatFeatureFlags2));
10192     *ptr += sizeof(VkFormatFeatureFlags2);
10193     memcpy((VkFormatFeatureFlags2*)&forUnmarshaling->bufferFeatures, *ptr,
10194            sizeof(VkFormatFeatureFlags2));
10195     *ptr += sizeof(VkFormatFeatureFlags2);
10196 }
10197 
reservedunmarshal_VkPhysicalDeviceMaintenance4Features(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance4Features * forUnmarshaling,uint8_t ** ptr)10198 void reservedunmarshal_VkPhysicalDeviceMaintenance4Features(
10199     VulkanStream* vkStream, VkStructureType rootType,
10200     VkPhysicalDeviceMaintenance4Features* forUnmarshaling, uint8_t** ptr) {
10201     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10202     *ptr += sizeof(VkStructureType);
10203     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10204         rootType = forUnmarshaling->sType;
10205     }
10206     uint32_t pNext_size;
10207     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10208     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10209     *ptr += sizeof(uint32_t);
10210     forUnmarshaling->pNext = nullptr;
10211     if (pNext_size) {
10212         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10213         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10214         *ptr += sizeof(VkStructureType);
10215         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10216         vkStream->alloc((void**)&forUnmarshaling->pNext,
10217                         goldfish_vk_extension_struct_size_with_stream_features(
10218                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10219         *(VkStructureType*)forUnmarshaling->pNext = extType;
10220         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10221                                            ptr);
10222     }
10223     memcpy((VkBool32*)&forUnmarshaling->maintenance4, *ptr, sizeof(VkBool32));
10224     *ptr += sizeof(VkBool32);
10225 }
10226 
reservedunmarshal_VkPhysicalDeviceMaintenance4Properties(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance4Properties * forUnmarshaling,uint8_t ** ptr)10227 void reservedunmarshal_VkPhysicalDeviceMaintenance4Properties(
10228     VulkanStream* vkStream, VkStructureType rootType,
10229     VkPhysicalDeviceMaintenance4Properties* forUnmarshaling, uint8_t** ptr) {
10230     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10231     *ptr += sizeof(VkStructureType);
10232     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10233         rootType = forUnmarshaling->sType;
10234     }
10235     uint32_t pNext_size;
10236     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10237     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10238     *ptr += sizeof(uint32_t);
10239     forUnmarshaling->pNext = nullptr;
10240     if (pNext_size) {
10241         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10242         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10243         *ptr += sizeof(VkStructureType);
10244         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10245         vkStream->alloc((void**)&forUnmarshaling->pNext,
10246                         goldfish_vk_extension_struct_size_with_stream_features(
10247                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10248         *(VkStructureType*)forUnmarshaling->pNext = extType;
10249         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10250                                            ptr);
10251     }
10252     memcpy((VkDeviceSize*)&forUnmarshaling->maxBufferSize, *ptr, sizeof(VkDeviceSize));
10253     *ptr += sizeof(VkDeviceSize);
10254 }
10255 
reservedunmarshal_VkDeviceBufferMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkDeviceBufferMemoryRequirements * forUnmarshaling,uint8_t ** ptr)10256 void reservedunmarshal_VkDeviceBufferMemoryRequirements(
10257     VulkanStream* vkStream, VkStructureType rootType,
10258     VkDeviceBufferMemoryRequirements* forUnmarshaling, uint8_t** ptr) {
10259     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10260     *ptr += sizeof(VkStructureType);
10261     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10262         rootType = forUnmarshaling->sType;
10263     }
10264     uint32_t pNext_size;
10265     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10266     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10267     *ptr += sizeof(uint32_t);
10268     forUnmarshaling->pNext = nullptr;
10269     if (pNext_size) {
10270         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10271         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10272         *ptr += sizeof(VkStructureType);
10273         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10274         vkStream->alloc((void**)&forUnmarshaling->pNext,
10275                         goldfish_vk_extension_struct_size_with_stream_features(
10276                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10277         *(VkStructureType*)forUnmarshaling->pNext = extType;
10278         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10279                                            ptr);
10280     }
10281     vkStream->alloc((void**)&forUnmarshaling->pCreateInfo, sizeof(const VkBufferCreateInfo));
10282     reservedunmarshal_VkBufferCreateInfo(vkStream, rootType,
10283                                          (VkBufferCreateInfo*)(forUnmarshaling->pCreateInfo), ptr);
10284 }
10285 
reservedunmarshal_VkDeviceImageMemoryRequirements(VulkanStream * vkStream,VkStructureType rootType,VkDeviceImageMemoryRequirements * forUnmarshaling,uint8_t ** ptr)10286 void reservedunmarshal_VkDeviceImageMemoryRequirements(
10287     VulkanStream* vkStream, VkStructureType rootType,
10288     VkDeviceImageMemoryRequirements* forUnmarshaling, uint8_t** ptr) {
10289     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10290     *ptr += sizeof(VkStructureType);
10291     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10292         rootType = forUnmarshaling->sType;
10293     }
10294     uint32_t pNext_size;
10295     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10296     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10297     *ptr += sizeof(uint32_t);
10298     forUnmarshaling->pNext = nullptr;
10299     if (pNext_size) {
10300         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10301         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10302         *ptr += sizeof(VkStructureType);
10303         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10304         vkStream->alloc((void**)&forUnmarshaling->pNext,
10305                         goldfish_vk_extension_struct_size_with_stream_features(
10306                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10307         *(VkStructureType*)forUnmarshaling->pNext = extType;
10308         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10309                                            ptr);
10310     }
10311     vkStream->alloc((void**)&forUnmarshaling->pCreateInfo, sizeof(const VkImageCreateInfo));
10312     reservedunmarshal_VkImageCreateInfo(vkStream, rootType,
10313                                         (VkImageCreateInfo*)(forUnmarshaling->pCreateInfo), ptr);
10314     memcpy((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, *ptr,
10315            sizeof(VkImageAspectFlagBits));
10316     *ptr += sizeof(VkImageAspectFlagBits);
10317 }
10318 
10319 #endif
10320 #ifdef VK_KHR_swapchain
reservedunmarshal_VkSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)10321 void reservedunmarshal_VkSwapchainCreateInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10322                                                 VkSwapchainCreateInfoKHR* forUnmarshaling,
10323                                                 uint8_t** ptr) {
10324     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10325     *ptr += sizeof(VkStructureType);
10326     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10327         rootType = forUnmarshaling->sType;
10328     }
10329     uint32_t pNext_size;
10330     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10331     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10332     *ptr += sizeof(uint32_t);
10333     forUnmarshaling->pNext = nullptr;
10334     if (pNext_size) {
10335         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10336         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10337         *ptr += sizeof(VkStructureType);
10338         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10339         vkStream->alloc((void**)&forUnmarshaling->pNext,
10340                         goldfish_vk_extension_struct_size_with_stream_features(
10341                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10342         *(VkStructureType*)forUnmarshaling->pNext = extType;
10343         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10344                                            ptr);
10345     }
10346     memcpy((VkSwapchainCreateFlagsKHR*)&forUnmarshaling->flags, *ptr,
10347            sizeof(VkSwapchainCreateFlagsKHR));
10348     *ptr += sizeof(VkSwapchainCreateFlagsKHR);
10349     uint64_t cgen_var_0;
10350     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10351     *ptr += 1 * 8;
10352     *(VkSurfaceKHR*)&forUnmarshaling->surface =
10353         (VkSurfaceKHR)unbox_VkSurfaceKHR((VkSurfaceKHR)(*&cgen_var_0));
10354     memcpy((uint32_t*)&forUnmarshaling->minImageCount, *ptr, sizeof(uint32_t));
10355     *ptr += sizeof(uint32_t);
10356     memcpy((VkFormat*)&forUnmarshaling->imageFormat, *ptr, sizeof(VkFormat));
10357     *ptr += sizeof(VkFormat);
10358     memcpy((VkColorSpaceKHR*)&forUnmarshaling->imageColorSpace, *ptr, sizeof(VkColorSpaceKHR));
10359     *ptr += sizeof(VkColorSpaceKHR);
10360     reservedunmarshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->imageExtent),
10361                                  ptr);
10362     memcpy((uint32_t*)&forUnmarshaling->imageArrayLayers, *ptr, sizeof(uint32_t));
10363     *ptr += sizeof(uint32_t);
10364     memcpy((VkImageUsageFlags*)&forUnmarshaling->imageUsage, *ptr, sizeof(VkImageUsageFlags));
10365     *ptr += sizeof(VkImageUsageFlags);
10366     memcpy((VkSharingMode*)&forUnmarshaling->imageSharingMode, *ptr, sizeof(VkSharingMode));
10367     *ptr += sizeof(VkSharingMode);
10368     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, *ptr, sizeof(uint32_t));
10369     *ptr += sizeof(uint32_t);
10370     // WARNING PTR CHECK
10371     memcpy((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, (*ptr), 8);
10372     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pQueueFamilyIndices);
10373     *ptr += 8;
10374     if (forUnmarshaling->pQueueFamilyIndices) {
10375         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
10376                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
10377         memcpy((uint32_t*)forUnmarshaling->pQueueFamilyIndices, *ptr,
10378                forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
10379         *ptr += forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t);
10380     }
10381     memcpy((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->preTransform, *ptr,
10382            sizeof(VkSurfaceTransformFlagBitsKHR));
10383     *ptr += sizeof(VkSurfaceTransformFlagBitsKHR);
10384     memcpy((VkCompositeAlphaFlagBitsKHR*)&forUnmarshaling->compositeAlpha, *ptr,
10385            sizeof(VkCompositeAlphaFlagBitsKHR));
10386     *ptr += sizeof(VkCompositeAlphaFlagBitsKHR);
10387     memcpy((VkPresentModeKHR*)&forUnmarshaling->presentMode, *ptr, sizeof(VkPresentModeKHR));
10388     *ptr += sizeof(VkPresentModeKHR);
10389     memcpy((VkBool32*)&forUnmarshaling->clipped, *ptr, sizeof(VkBool32));
10390     *ptr += sizeof(VkBool32);
10391     uint64_t cgen_var_2;
10392     memcpy((uint64_t*)&cgen_var_2, *ptr, 1 * 8);
10393     *ptr += 1 * 8;
10394     *(VkSwapchainKHR*)&forUnmarshaling->oldSwapchain =
10395         (VkSwapchainKHR)unbox_VkSwapchainKHR((VkSwapchainKHR)(*&cgen_var_2));
10396 }
10397 
reservedunmarshal_VkPresentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPresentInfoKHR * forUnmarshaling,uint8_t ** ptr)10398 void reservedunmarshal_VkPresentInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10399                                         VkPresentInfoKHR* forUnmarshaling, uint8_t** ptr) {
10400     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10401     *ptr += sizeof(VkStructureType);
10402     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10403         rootType = forUnmarshaling->sType;
10404     }
10405     uint32_t pNext_size;
10406     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10407     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10408     *ptr += sizeof(uint32_t);
10409     forUnmarshaling->pNext = nullptr;
10410     if (pNext_size) {
10411         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10412         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10413         *ptr += sizeof(VkStructureType);
10414         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10415         vkStream->alloc((void**)&forUnmarshaling->pNext,
10416                         goldfish_vk_extension_struct_size_with_stream_features(
10417                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10418         *(VkStructureType*)forUnmarshaling->pNext = extType;
10419         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10420                                            ptr);
10421     }
10422     memcpy((uint32_t*)&forUnmarshaling->waitSemaphoreCount, *ptr, sizeof(uint32_t));
10423     *ptr += sizeof(uint32_t);
10424     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores,
10425                     forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
10426     if (forUnmarshaling->waitSemaphoreCount) {
10427         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
10428         *ptr += 8 * forUnmarshaling->waitSemaphoreCount;
10429         if (forUnmarshaling) {
10430             for (uint32_t k = 0; k < forUnmarshaling->waitSemaphoreCount; ++k) {
10431                 uint64_t tmpval;
10432                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
10433                 *(((VkSemaphore*)forUnmarshaling->pWaitSemaphores) + k) =
10434                     tmpval ? (VkSemaphore)unbox_VkSemaphore((VkSemaphore)tmpval) : VK_NULL_HANDLE;
10435             }
10436         }
10437     }
10438     memcpy((uint32_t*)&forUnmarshaling->swapchainCount, *ptr, sizeof(uint32_t));
10439     *ptr += sizeof(uint32_t);
10440     vkStream->alloc((void**)&forUnmarshaling->pSwapchains,
10441                     forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
10442     if (forUnmarshaling->swapchainCount) {
10443         uint8_t* cgen_var_1_ptr = (uint8_t*)(*ptr);
10444         *ptr += 8 * forUnmarshaling->swapchainCount;
10445         if (forUnmarshaling) {
10446             for (uint32_t k = 0; k < forUnmarshaling->swapchainCount; ++k) {
10447                 uint64_t tmpval;
10448                 memcpy(&tmpval, cgen_var_1_ptr + k * 8, sizeof(uint64_t));
10449                 *(((VkSwapchainKHR*)forUnmarshaling->pSwapchains) + k) =
10450                     tmpval ? (VkSwapchainKHR)unbox_VkSwapchainKHR((VkSwapchainKHR)tmpval)
10451                            : VK_NULL_HANDLE;
10452             }
10453         }
10454     }
10455     vkStream->alloc((void**)&forUnmarshaling->pImageIndices,
10456                     forUnmarshaling->swapchainCount * sizeof(const uint32_t));
10457     memcpy((uint32_t*)forUnmarshaling->pImageIndices, *ptr,
10458            forUnmarshaling->swapchainCount * sizeof(const uint32_t));
10459     *ptr += forUnmarshaling->swapchainCount * sizeof(const uint32_t);
10460     // WARNING PTR CHECK
10461     memcpy((VkResult**)&forUnmarshaling->pResults, (*ptr), 8);
10462     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pResults);
10463     *ptr += 8;
10464     if (forUnmarshaling->pResults) {
10465         vkStream->alloc((void**)&forUnmarshaling->pResults,
10466                         forUnmarshaling->swapchainCount * sizeof(VkResult));
10467         memcpy((VkResult*)forUnmarshaling->pResults, *ptr,
10468                forUnmarshaling->swapchainCount * sizeof(VkResult));
10469         *ptr += forUnmarshaling->swapchainCount * sizeof(VkResult);
10470     }
10471 }
10472 
reservedunmarshal_VkImageSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkImageSwapchainCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)10473 void reservedunmarshal_VkImageSwapchainCreateInfoKHR(VulkanStream* vkStream,
10474                                                      VkStructureType rootType,
10475                                                      VkImageSwapchainCreateInfoKHR* forUnmarshaling,
10476                                                      uint8_t** ptr) {
10477     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10478     *ptr += sizeof(VkStructureType);
10479     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10480         rootType = forUnmarshaling->sType;
10481     }
10482     uint32_t pNext_size;
10483     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10484     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10485     *ptr += sizeof(uint32_t);
10486     forUnmarshaling->pNext = nullptr;
10487     if (pNext_size) {
10488         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10489         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10490         *ptr += sizeof(VkStructureType);
10491         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10492         vkStream->alloc((void**)&forUnmarshaling->pNext,
10493                         goldfish_vk_extension_struct_size_with_stream_features(
10494                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10495         *(VkStructureType*)forUnmarshaling->pNext = extType;
10496         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10497                                            ptr);
10498     }
10499     uint64_t cgen_var_0;
10500     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10501     *ptr += 1 * 8;
10502     *(VkSwapchainKHR*)&forUnmarshaling->swapchain =
10503         (VkSwapchainKHR)unbox_VkSwapchainKHR((VkSwapchainKHR)(*&cgen_var_0));
10504 }
10505 
reservedunmarshal_VkBindImageMemorySwapchainInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkBindImageMemorySwapchainInfoKHR * forUnmarshaling,uint8_t ** ptr)10506 void reservedunmarshal_VkBindImageMemorySwapchainInfoKHR(
10507     VulkanStream* vkStream, VkStructureType rootType,
10508     VkBindImageMemorySwapchainInfoKHR* forUnmarshaling, uint8_t** ptr) {
10509     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10510     *ptr += sizeof(VkStructureType);
10511     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10512         rootType = forUnmarshaling->sType;
10513     }
10514     uint32_t pNext_size;
10515     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10516     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10517     *ptr += sizeof(uint32_t);
10518     forUnmarshaling->pNext = nullptr;
10519     if (pNext_size) {
10520         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10521         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10522         *ptr += sizeof(VkStructureType);
10523         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10524         vkStream->alloc((void**)&forUnmarshaling->pNext,
10525                         goldfish_vk_extension_struct_size_with_stream_features(
10526                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10527         *(VkStructureType*)forUnmarshaling->pNext = extType;
10528         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10529                                            ptr);
10530     }
10531     uint64_t cgen_var_0;
10532     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10533     *ptr += 1 * 8;
10534     *(VkSwapchainKHR*)&forUnmarshaling->swapchain =
10535         (VkSwapchainKHR)unbox_VkSwapchainKHR((VkSwapchainKHR)(*&cgen_var_0));
10536     memcpy((uint32_t*)&forUnmarshaling->imageIndex, *ptr, sizeof(uint32_t));
10537     *ptr += sizeof(uint32_t);
10538 }
10539 
reservedunmarshal_VkAcquireNextImageInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkAcquireNextImageInfoKHR * forUnmarshaling,uint8_t ** ptr)10540 void reservedunmarshal_VkAcquireNextImageInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10541                                                  VkAcquireNextImageInfoKHR* forUnmarshaling,
10542                                                  uint8_t** ptr) {
10543     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10544     *ptr += sizeof(VkStructureType);
10545     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10546         rootType = forUnmarshaling->sType;
10547     }
10548     uint32_t pNext_size;
10549     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10550     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10551     *ptr += sizeof(uint32_t);
10552     forUnmarshaling->pNext = nullptr;
10553     if (pNext_size) {
10554         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10555         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10556         *ptr += sizeof(VkStructureType);
10557         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10558         vkStream->alloc((void**)&forUnmarshaling->pNext,
10559                         goldfish_vk_extension_struct_size_with_stream_features(
10560                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10561         *(VkStructureType*)forUnmarshaling->pNext = extType;
10562         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10563                                            ptr);
10564     }
10565     uint64_t cgen_var_0;
10566     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10567     *ptr += 1 * 8;
10568     *(VkSwapchainKHR*)&forUnmarshaling->swapchain =
10569         (VkSwapchainKHR)unbox_VkSwapchainKHR((VkSwapchainKHR)(*&cgen_var_0));
10570     memcpy((uint64_t*)&forUnmarshaling->timeout, *ptr, sizeof(uint64_t));
10571     *ptr += sizeof(uint64_t);
10572     uint64_t cgen_var_1;
10573     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
10574     *ptr += 1 * 8;
10575     *(VkSemaphore*)&forUnmarshaling->semaphore =
10576         (VkSemaphore)unbox_VkSemaphore((VkSemaphore)(*&cgen_var_1));
10577     uint64_t cgen_var_2;
10578     memcpy((uint64_t*)&cgen_var_2, *ptr, 1 * 8);
10579     *ptr += 1 * 8;
10580     *(VkFence*)&forUnmarshaling->fence = (VkFence)unbox_VkFence((VkFence)(*&cgen_var_2));
10581     memcpy((uint32_t*)&forUnmarshaling->deviceMask, *ptr, sizeof(uint32_t));
10582     *ptr += sizeof(uint32_t);
10583 }
10584 
reservedunmarshal_VkDeviceGroupPresentCapabilitiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupPresentCapabilitiesKHR * forUnmarshaling,uint8_t ** ptr)10585 void reservedunmarshal_VkDeviceGroupPresentCapabilitiesKHR(
10586     VulkanStream* vkStream, VkStructureType rootType,
10587     VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling, uint8_t** ptr) {
10588     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10589     *ptr += sizeof(VkStructureType);
10590     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10591         rootType = forUnmarshaling->sType;
10592     }
10593     uint32_t pNext_size;
10594     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10595     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10596     *ptr += sizeof(uint32_t);
10597     forUnmarshaling->pNext = nullptr;
10598     if (pNext_size) {
10599         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10600         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10601         *ptr += sizeof(VkStructureType);
10602         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10603         vkStream->alloc((void**)&forUnmarshaling->pNext,
10604                         goldfish_vk_extension_struct_size_with_stream_features(
10605                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10606         *(VkStructureType*)forUnmarshaling->pNext = extType;
10607         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10608                                            ptr);
10609     }
10610     memcpy((uint32_t*)forUnmarshaling->presentMask, *ptr,
10611            VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
10612     *ptr += VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t);
10613     memcpy((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, *ptr,
10614            sizeof(VkDeviceGroupPresentModeFlagsKHR));
10615     *ptr += sizeof(VkDeviceGroupPresentModeFlagsKHR);
10616 }
10617 
reservedunmarshal_VkDeviceGroupPresentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupPresentInfoKHR * forUnmarshaling,uint8_t ** ptr)10618 void reservedunmarshal_VkDeviceGroupPresentInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10619                                                    VkDeviceGroupPresentInfoKHR* forUnmarshaling,
10620                                                    uint8_t** ptr) {
10621     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10622     *ptr += sizeof(VkStructureType);
10623     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10624         rootType = forUnmarshaling->sType;
10625     }
10626     uint32_t pNext_size;
10627     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10628     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10629     *ptr += sizeof(uint32_t);
10630     forUnmarshaling->pNext = nullptr;
10631     if (pNext_size) {
10632         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10633         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10634         *ptr += sizeof(VkStructureType);
10635         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10636         vkStream->alloc((void**)&forUnmarshaling->pNext,
10637                         goldfish_vk_extension_struct_size_with_stream_features(
10638                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10639         *(VkStructureType*)forUnmarshaling->pNext = extType;
10640         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10641                                            ptr);
10642     }
10643     memcpy((uint32_t*)&forUnmarshaling->swapchainCount, *ptr, sizeof(uint32_t));
10644     *ptr += sizeof(uint32_t);
10645     vkStream->alloc((void**)&forUnmarshaling->pDeviceMasks,
10646                     forUnmarshaling->swapchainCount * sizeof(const uint32_t));
10647     memcpy((uint32_t*)forUnmarshaling->pDeviceMasks, *ptr,
10648            forUnmarshaling->swapchainCount * sizeof(const uint32_t));
10649     *ptr += forUnmarshaling->swapchainCount * sizeof(const uint32_t);
10650     memcpy((VkDeviceGroupPresentModeFlagBitsKHR*)&forUnmarshaling->mode, *ptr,
10651            sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
10652     *ptr += sizeof(VkDeviceGroupPresentModeFlagBitsKHR);
10653 }
10654 
reservedunmarshal_VkDeviceGroupSwapchainCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceGroupSwapchainCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)10655 void reservedunmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
10656     VulkanStream* vkStream, VkStructureType rootType,
10657     VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
10658     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10659     *ptr += sizeof(VkStructureType);
10660     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10661         rootType = forUnmarshaling->sType;
10662     }
10663     uint32_t pNext_size;
10664     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10665     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10666     *ptr += sizeof(uint32_t);
10667     forUnmarshaling->pNext = nullptr;
10668     if (pNext_size) {
10669         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10670         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10671         *ptr += sizeof(VkStructureType);
10672         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10673         vkStream->alloc((void**)&forUnmarshaling->pNext,
10674                         goldfish_vk_extension_struct_size_with_stream_features(
10675                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10676         *(VkStructureType*)forUnmarshaling->pNext = extType;
10677         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10678                                            ptr);
10679     }
10680     memcpy((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, *ptr,
10681            sizeof(VkDeviceGroupPresentModeFlagsKHR));
10682     *ptr += sizeof(VkDeviceGroupPresentModeFlagsKHR);
10683 }
10684 
10685 #endif
10686 #ifdef VK_KHR_dynamic_rendering
reservedunmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRenderingFragmentShadingRateAttachmentInfoKHR * forUnmarshaling,uint8_t ** ptr)10687 void reservedunmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
10688     VulkanStream* vkStream, VkStructureType rootType,
10689     VkRenderingFragmentShadingRateAttachmentInfoKHR* forUnmarshaling, uint8_t** ptr) {
10690     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10691     *ptr += sizeof(VkStructureType);
10692     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10693         rootType = forUnmarshaling->sType;
10694     }
10695     uint32_t pNext_size;
10696     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10697     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10698     *ptr += sizeof(uint32_t);
10699     forUnmarshaling->pNext = nullptr;
10700     if (pNext_size) {
10701         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10702         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10703         *ptr += sizeof(VkStructureType);
10704         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10705         vkStream->alloc((void**)&forUnmarshaling->pNext,
10706                         goldfish_vk_extension_struct_size_with_stream_features(
10707                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10708         *(VkStructureType*)forUnmarshaling->pNext = extType;
10709         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10710                                            ptr);
10711     }
10712     uint64_t cgen_var_0;
10713     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10714     *ptr += 1 * 8;
10715     *(VkImageView*)&forUnmarshaling->imageView =
10716         (VkImageView)unbox_VkImageView((VkImageView)(*&cgen_var_0));
10717     memcpy((VkImageLayout*)&forUnmarshaling->imageLayout, *ptr, sizeof(VkImageLayout));
10718     *ptr += sizeof(VkImageLayout);
10719     reservedunmarshal_VkExtent2D(
10720         vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->shadingRateAttachmentTexelSize), ptr);
10721 }
10722 
reservedunmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkRenderingFragmentDensityMapAttachmentInfoEXT * forUnmarshaling,uint8_t ** ptr)10723 void reservedunmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
10724     VulkanStream* vkStream, VkStructureType rootType,
10725     VkRenderingFragmentDensityMapAttachmentInfoEXT* forUnmarshaling, uint8_t** ptr) {
10726     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10727     *ptr += sizeof(VkStructureType);
10728     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10729         rootType = forUnmarshaling->sType;
10730     }
10731     uint32_t pNext_size;
10732     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10733     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10734     *ptr += sizeof(uint32_t);
10735     forUnmarshaling->pNext = nullptr;
10736     if (pNext_size) {
10737         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10738         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10739         *ptr += sizeof(VkStructureType);
10740         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10741         vkStream->alloc((void**)&forUnmarshaling->pNext,
10742                         goldfish_vk_extension_struct_size_with_stream_features(
10743                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10744         *(VkStructureType*)forUnmarshaling->pNext = extType;
10745         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10746                                            ptr);
10747     }
10748     uint64_t cgen_var_0;
10749     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10750     *ptr += 1 * 8;
10751     *(VkImageView*)&forUnmarshaling->imageView =
10752         (VkImageView)unbox_VkImageView((VkImageView)(*&cgen_var_0));
10753     memcpy((VkImageLayout*)&forUnmarshaling->imageLayout, *ptr, sizeof(VkImageLayout));
10754     *ptr += sizeof(VkImageLayout);
10755 }
10756 
reservedunmarshal_VkAttachmentSampleCountInfoAMD(VulkanStream * vkStream,VkStructureType rootType,VkAttachmentSampleCountInfoAMD * forUnmarshaling,uint8_t ** ptr)10757 void reservedunmarshal_VkAttachmentSampleCountInfoAMD(
10758     VulkanStream* vkStream, VkStructureType rootType,
10759     VkAttachmentSampleCountInfoAMD* forUnmarshaling, uint8_t** ptr) {
10760     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10761     *ptr += sizeof(VkStructureType);
10762     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10763         rootType = forUnmarshaling->sType;
10764     }
10765     uint32_t pNext_size;
10766     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10767     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10768     *ptr += sizeof(uint32_t);
10769     forUnmarshaling->pNext = nullptr;
10770     if (pNext_size) {
10771         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10772         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10773         *ptr += sizeof(VkStructureType);
10774         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10775         vkStream->alloc((void**)&forUnmarshaling->pNext,
10776                         goldfish_vk_extension_struct_size_with_stream_features(
10777                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10778         *(VkStructureType*)forUnmarshaling->pNext = extType;
10779         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10780                                            ptr);
10781     }
10782     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
10783     *ptr += sizeof(uint32_t);
10784     // WARNING PTR CHECK
10785     memcpy((VkSampleCountFlagBits**)&forUnmarshaling->pColorAttachmentSamples, (*ptr), 8);
10786     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pColorAttachmentSamples);
10787     *ptr += 8;
10788     if (forUnmarshaling->pColorAttachmentSamples) {
10789         vkStream->alloc(
10790             (void**)&forUnmarshaling->pColorAttachmentSamples,
10791             forUnmarshaling->colorAttachmentCount * sizeof(const VkSampleCountFlagBits));
10792         memcpy((VkSampleCountFlagBits*)forUnmarshaling->pColorAttachmentSamples, *ptr,
10793                forUnmarshaling->colorAttachmentCount * sizeof(const VkSampleCountFlagBits));
10794         *ptr += forUnmarshaling->colorAttachmentCount * sizeof(const VkSampleCountFlagBits);
10795     }
10796     memcpy((VkSampleCountFlagBits*)&forUnmarshaling->depthStencilAttachmentSamples, *ptr,
10797            sizeof(VkSampleCountFlagBits));
10798     *ptr += sizeof(VkSampleCountFlagBits);
10799 }
10800 
reservedunmarshal_VkMultiviewPerViewAttributesInfoNVX(VulkanStream * vkStream,VkStructureType rootType,VkMultiviewPerViewAttributesInfoNVX * forUnmarshaling,uint8_t ** ptr)10801 void reservedunmarshal_VkMultiviewPerViewAttributesInfoNVX(
10802     VulkanStream* vkStream, VkStructureType rootType,
10803     VkMultiviewPerViewAttributesInfoNVX* forUnmarshaling, uint8_t** ptr) {
10804     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10805     *ptr += sizeof(VkStructureType);
10806     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10807         rootType = forUnmarshaling->sType;
10808     }
10809     uint32_t pNext_size;
10810     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10811     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10812     *ptr += sizeof(uint32_t);
10813     forUnmarshaling->pNext = nullptr;
10814     if (pNext_size) {
10815         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10816         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10817         *ptr += sizeof(VkStructureType);
10818         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10819         vkStream->alloc((void**)&forUnmarshaling->pNext,
10820                         goldfish_vk_extension_struct_size_with_stream_features(
10821                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10822         *(VkStructureType*)forUnmarshaling->pNext = extType;
10823         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10824                                            ptr);
10825     }
10826     memcpy((VkBool32*)&forUnmarshaling->perViewAttributes, *ptr, sizeof(VkBool32));
10827     *ptr += sizeof(VkBool32);
10828     memcpy((VkBool32*)&forUnmarshaling->perViewAttributesPositionXOnly, *ptr, sizeof(VkBool32));
10829     *ptr += sizeof(VkBool32);
10830 }
10831 
10832 #endif
10833 #ifdef VK_KHR_external_semaphore_fd
reservedunmarshal_VkImportSemaphoreFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkImportSemaphoreFdInfoKHR * forUnmarshaling,uint8_t ** ptr)10834 void reservedunmarshal_VkImportSemaphoreFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10835                                                   VkImportSemaphoreFdInfoKHR* forUnmarshaling,
10836                                                   uint8_t** ptr) {
10837     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10838     *ptr += sizeof(VkStructureType);
10839     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10840         rootType = forUnmarshaling->sType;
10841     }
10842     uint32_t pNext_size;
10843     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10844     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10845     *ptr += sizeof(uint32_t);
10846     forUnmarshaling->pNext = nullptr;
10847     if (pNext_size) {
10848         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10849         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10850         *ptr += sizeof(VkStructureType);
10851         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10852         vkStream->alloc((void**)&forUnmarshaling->pNext,
10853                         goldfish_vk_extension_struct_size_with_stream_features(
10854                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10855         *(VkStructureType*)forUnmarshaling->pNext = extType;
10856         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10857                                            ptr);
10858     }
10859     uint64_t cgen_var_0;
10860     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10861     *ptr += 1 * 8;
10862     *(VkSemaphore*)&forUnmarshaling->semaphore =
10863         (VkSemaphore)unbox_VkSemaphore((VkSemaphore)(*&cgen_var_0));
10864     memcpy((VkSemaphoreImportFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkSemaphoreImportFlags));
10865     *ptr += sizeof(VkSemaphoreImportFlags);
10866     memcpy((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
10867            sizeof(VkExternalSemaphoreHandleTypeFlagBits));
10868     *ptr += sizeof(VkExternalSemaphoreHandleTypeFlagBits);
10869     memcpy((int*)&forUnmarshaling->fd, *ptr, sizeof(int));
10870     *ptr += sizeof(int);
10871 }
10872 
reservedunmarshal_VkSemaphoreGetFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkSemaphoreGetFdInfoKHR * forUnmarshaling,uint8_t ** ptr)10873 void reservedunmarshal_VkSemaphoreGetFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10874                                                VkSemaphoreGetFdInfoKHR* forUnmarshaling,
10875                                                uint8_t** ptr) {
10876     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10877     *ptr += sizeof(VkStructureType);
10878     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10879         rootType = forUnmarshaling->sType;
10880     }
10881     uint32_t pNext_size;
10882     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10883     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10884     *ptr += sizeof(uint32_t);
10885     forUnmarshaling->pNext = nullptr;
10886     if (pNext_size) {
10887         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10888         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10889         *ptr += sizeof(VkStructureType);
10890         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10891         vkStream->alloc((void**)&forUnmarshaling->pNext,
10892                         goldfish_vk_extension_struct_size_with_stream_features(
10893                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10894         *(VkStructureType*)forUnmarshaling->pNext = extType;
10895         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10896                                            ptr);
10897     }
10898     uint64_t cgen_var_0;
10899     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
10900     *ptr += 1 * 8;
10901     *(VkSemaphore*)&forUnmarshaling->semaphore =
10902         (VkSemaphore)unbox_VkSemaphore((VkSemaphore)(*&cgen_var_0));
10903     memcpy((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
10904            sizeof(VkExternalSemaphoreHandleTypeFlagBits));
10905     *ptr += sizeof(VkExternalSemaphoreHandleTypeFlagBits);
10906 }
10907 
10908 #endif
10909 #ifdef VK_KHR_incremental_present
reservedunmarshal_VkRectLayerKHR(VulkanStream * vkStream,VkStructureType rootType,VkRectLayerKHR * forUnmarshaling,uint8_t ** ptr)10910 void reservedunmarshal_VkRectLayerKHR(VulkanStream* vkStream, VkStructureType rootType,
10911                                       VkRectLayerKHR* forUnmarshaling, uint8_t** ptr) {
10912     reservedunmarshal_VkOffset2D(vkStream, rootType, (VkOffset2D*)(&forUnmarshaling->offset), ptr);
10913     reservedunmarshal_VkExtent2D(vkStream, rootType, (VkExtent2D*)(&forUnmarshaling->extent), ptr);
10914     memcpy((uint32_t*)&forUnmarshaling->layer, *ptr, sizeof(uint32_t));
10915     *ptr += sizeof(uint32_t);
10916 }
10917 
reservedunmarshal_VkPresentRegionKHR(VulkanStream * vkStream,VkStructureType rootType,VkPresentRegionKHR * forUnmarshaling,uint8_t ** ptr)10918 void reservedunmarshal_VkPresentRegionKHR(VulkanStream* vkStream, VkStructureType rootType,
10919                                           VkPresentRegionKHR* forUnmarshaling, uint8_t** ptr) {
10920     memcpy((uint32_t*)&forUnmarshaling->rectangleCount, *ptr, sizeof(uint32_t));
10921     *ptr += sizeof(uint32_t);
10922     // WARNING PTR CHECK
10923     memcpy((VkRectLayerKHR**)&forUnmarshaling->pRectangles, (*ptr), 8);
10924     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pRectangles);
10925     *ptr += 8;
10926     if (forUnmarshaling->pRectangles) {
10927         vkStream->alloc((void**)&forUnmarshaling->pRectangles,
10928                         forUnmarshaling->rectangleCount * sizeof(const VkRectLayerKHR));
10929         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->rectangleCount; ++i) {
10930             reservedunmarshal_VkRectLayerKHR(
10931                 vkStream, rootType, (VkRectLayerKHR*)(forUnmarshaling->pRectangles + i), ptr);
10932         }
10933     }
10934 }
10935 
reservedunmarshal_VkPresentRegionsKHR(VulkanStream * vkStream,VkStructureType rootType,VkPresentRegionsKHR * forUnmarshaling,uint8_t ** ptr)10936 void reservedunmarshal_VkPresentRegionsKHR(VulkanStream* vkStream, VkStructureType rootType,
10937                                            VkPresentRegionsKHR* forUnmarshaling, uint8_t** ptr) {
10938     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10939     *ptr += sizeof(VkStructureType);
10940     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10941         rootType = forUnmarshaling->sType;
10942     }
10943     uint32_t pNext_size;
10944     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10945     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10946     *ptr += sizeof(uint32_t);
10947     forUnmarshaling->pNext = nullptr;
10948     if (pNext_size) {
10949         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10950         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10951         *ptr += sizeof(VkStructureType);
10952         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10953         vkStream->alloc((void**)&forUnmarshaling->pNext,
10954                         goldfish_vk_extension_struct_size_with_stream_features(
10955                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10956         *(VkStructureType*)forUnmarshaling->pNext = extType;
10957         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
10958                                            ptr);
10959     }
10960     memcpy((uint32_t*)&forUnmarshaling->swapchainCount, *ptr, sizeof(uint32_t));
10961     *ptr += sizeof(uint32_t);
10962     // WARNING PTR CHECK
10963     memcpy((VkPresentRegionKHR**)&forUnmarshaling->pRegions, (*ptr), 8);
10964     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pRegions);
10965     *ptr += 8;
10966     if (forUnmarshaling->pRegions) {
10967         vkStream->alloc((void**)&forUnmarshaling->pRegions,
10968                         forUnmarshaling->swapchainCount * sizeof(const VkPresentRegionKHR));
10969         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->swapchainCount; ++i) {
10970             reservedunmarshal_VkPresentRegionKHR(
10971                 vkStream, rootType, (VkPresentRegionKHR*)(forUnmarshaling->pRegions + i), ptr);
10972         }
10973     }
10974 }
10975 
10976 #endif
10977 #ifdef VK_KHR_external_fence_fd
reservedunmarshal_VkImportFenceFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkImportFenceFdInfoKHR * forUnmarshaling,uint8_t ** ptr)10978 void reservedunmarshal_VkImportFenceFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
10979                                               VkImportFenceFdInfoKHR* forUnmarshaling,
10980                                               uint8_t** ptr) {
10981     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
10982     *ptr += sizeof(VkStructureType);
10983     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
10984         rootType = forUnmarshaling->sType;
10985     }
10986     uint32_t pNext_size;
10987     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
10988     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
10989     *ptr += sizeof(uint32_t);
10990     forUnmarshaling->pNext = nullptr;
10991     if (pNext_size) {
10992         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
10993         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
10994         *ptr += sizeof(VkStructureType);
10995         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
10996         vkStream->alloc((void**)&forUnmarshaling->pNext,
10997                         goldfish_vk_extension_struct_size_with_stream_features(
10998                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
10999         *(VkStructureType*)forUnmarshaling->pNext = extType;
11000         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11001                                            ptr);
11002     }
11003     uint64_t cgen_var_0;
11004     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
11005     *ptr += 1 * 8;
11006     *(VkFence*)&forUnmarshaling->fence = (VkFence)unbox_VkFence((VkFence)(*&cgen_var_0));
11007     memcpy((VkFenceImportFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkFenceImportFlags));
11008     *ptr += sizeof(VkFenceImportFlags);
11009     memcpy((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
11010            sizeof(VkExternalFenceHandleTypeFlagBits));
11011     *ptr += sizeof(VkExternalFenceHandleTypeFlagBits);
11012     memcpy((int*)&forUnmarshaling->fd, *ptr, sizeof(int));
11013     *ptr += sizeof(int);
11014 }
11015 
reservedunmarshal_VkFenceGetFdInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkFenceGetFdInfoKHR * forUnmarshaling,uint8_t ** ptr)11016 void reservedunmarshal_VkFenceGetFdInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
11017                                            VkFenceGetFdInfoKHR* forUnmarshaling, uint8_t** ptr) {
11018     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11019     *ptr += sizeof(VkStructureType);
11020     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11021         rootType = forUnmarshaling->sType;
11022     }
11023     uint32_t pNext_size;
11024     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11025     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11026     *ptr += sizeof(uint32_t);
11027     forUnmarshaling->pNext = nullptr;
11028     if (pNext_size) {
11029         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11030         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11031         *ptr += sizeof(VkStructureType);
11032         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11033         vkStream->alloc((void**)&forUnmarshaling->pNext,
11034                         goldfish_vk_extension_struct_size_with_stream_features(
11035                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11036         *(VkStructureType*)forUnmarshaling->pNext = extType;
11037         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11038                                            ptr);
11039     }
11040     uint64_t cgen_var_0;
11041     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
11042     *ptr += 1 * 8;
11043     *(VkFence*)&forUnmarshaling->fence = (VkFence)unbox_VkFence((VkFence)(*&cgen_var_0));
11044     memcpy((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
11045            sizeof(VkExternalFenceHandleTypeFlagBits));
11046     *ptr += sizeof(VkExternalFenceHandleTypeFlagBits);
11047 }
11048 
11049 #endif
11050 #ifdef VK_KHR_pipeline_executable_properties
reservedunmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR * forUnmarshaling,uint8_t ** ptr)11051 void reservedunmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
11052     VulkanStream* vkStream, VkStructureType rootType,
11053     VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* forUnmarshaling, uint8_t** ptr) {
11054     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11055     *ptr += sizeof(VkStructureType);
11056     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11057         rootType = forUnmarshaling->sType;
11058     }
11059     uint32_t pNext_size;
11060     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11061     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11062     *ptr += sizeof(uint32_t);
11063     forUnmarshaling->pNext = nullptr;
11064     if (pNext_size) {
11065         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11066         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11067         *ptr += sizeof(VkStructureType);
11068         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11069         vkStream->alloc((void**)&forUnmarshaling->pNext,
11070                         goldfish_vk_extension_struct_size_with_stream_features(
11071                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11072         *(VkStructureType*)forUnmarshaling->pNext = extType;
11073         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11074                                            ptr);
11075     }
11076     memcpy((VkBool32*)&forUnmarshaling->pipelineExecutableInfo, *ptr, sizeof(VkBool32));
11077     *ptr += sizeof(VkBool32);
11078 }
11079 
reservedunmarshal_VkPipelineInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineInfoKHR * forUnmarshaling,uint8_t ** ptr)11080 void reservedunmarshal_VkPipelineInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
11081                                          VkPipelineInfoKHR* forUnmarshaling, uint8_t** ptr) {
11082     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11083     *ptr += sizeof(VkStructureType);
11084     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11085         rootType = forUnmarshaling->sType;
11086     }
11087     uint32_t pNext_size;
11088     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11089     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11090     *ptr += sizeof(uint32_t);
11091     forUnmarshaling->pNext = nullptr;
11092     if (pNext_size) {
11093         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11094         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11095         *ptr += sizeof(VkStructureType);
11096         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11097         vkStream->alloc((void**)&forUnmarshaling->pNext,
11098                         goldfish_vk_extension_struct_size_with_stream_features(
11099                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11100         *(VkStructureType*)forUnmarshaling->pNext = extType;
11101         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11102                                            ptr);
11103     }
11104     uint64_t cgen_var_0;
11105     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
11106     *ptr += 1 * 8;
11107     *(VkPipeline*)&forUnmarshaling->pipeline =
11108         (VkPipeline)unbox_VkPipeline((VkPipeline)(*&cgen_var_0));
11109 }
11110 
reservedunmarshal_VkPipelineExecutablePropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutablePropertiesKHR * forUnmarshaling,uint8_t ** ptr)11111 void reservedunmarshal_VkPipelineExecutablePropertiesKHR(
11112     VulkanStream* vkStream, VkStructureType rootType,
11113     VkPipelineExecutablePropertiesKHR* forUnmarshaling, uint8_t** ptr) {
11114     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11115     *ptr += sizeof(VkStructureType);
11116     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11117         rootType = forUnmarshaling->sType;
11118     }
11119     uint32_t pNext_size;
11120     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11121     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11122     *ptr += sizeof(uint32_t);
11123     forUnmarshaling->pNext = nullptr;
11124     if (pNext_size) {
11125         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11126         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11127         *ptr += sizeof(VkStructureType);
11128         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11129         vkStream->alloc((void**)&forUnmarshaling->pNext,
11130                         goldfish_vk_extension_struct_size_with_stream_features(
11131                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11132         *(VkStructureType*)forUnmarshaling->pNext = extType;
11133         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11134                                            ptr);
11135     }
11136     memcpy((VkShaderStageFlags*)&forUnmarshaling->stages, *ptr, sizeof(VkShaderStageFlags));
11137     *ptr += sizeof(VkShaderStageFlags);
11138     memcpy((char*)forUnmarshaling->name, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11139     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
11140     memcpy((char*)forUnmarshaling->description, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11141     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
11142     memcpy((uint32_t*)&forUnmarshaling->subgroupSize, *ptr, sizeof(uint32_t));
11143     *ptr += sizeof(uint32_t);
11144 }
11145 
reservedunmarshal_VkPipelineExecutableInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableInfoKHR * forUnmarshaling,uint8_t ** ptr)11146 void reservedunmarshal_VkPipelineExecutableInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
11147                                                    VkPipelineExecutableInfoKHR* forUnmarshaling,
11148                                                    uint8_t** ptr) {
11149     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11150     *ptr += sizeof(VkStructureType);
11151     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11152         rootType = forUnmarshaling->sType;
11153     }
11154     uint32_t pNext_size;
11155     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11156     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11157     *ptr += sizeof(uint32_t);
11158     forUnmarshaling->pNext = nullptr;
11159     if (pNext_size) {
11160         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11161         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11162         *ptr += sizeof(VkStructureType);
11163         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11164         vkStream->alloc((void**)&forUnmarshaling->pNext,
11165                         goldfish_vk_extension_struct_size_with_stream_features(
11166                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11167         *(VkStructureType*)forUnmarshaling->pNext = extType;
11168         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11169                                            ptr);
11170     }
11171     uint64_t cgen_var_0;
11172     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
11173     *ptr += 1 * 8;
11174     *(VkPipeline*)&forUnmarshaling->pipeline =
11175         (VkPipeline)unbox_VkPipeline((VkPipeline)(*&cgen_var_0));
11176     memcpy((uint32_t*)&forUnmarshaling->executableIndex, *ptr, sizeof(uint32_t));
11177     *ptr += sizeof(uint32_t);
11178 }
11179 
reservedunmarshal_VkPipelineExecutableStatisticValueKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableStatisticValueKHR * forUnmarshaling,uint8_t ** ptr)11180 void reservedunmarshal_VkPipelineExecutableStatisticValueKHR(
11181     VulkanStream* vkStream, VkStructureType rootType,
11182     VkPipelineExecutableStatisticValueKHR* forUnmarshaling, uint8_t** ptr) {
11183     memcpy((VkBool32*)&forUnmarshaling->b32, *ptr, sizeof(VkBool32));
11184     *ptr += sizeof(VkBool32);
11185 }
11186 
reservedunmarshal_VkPipelineExecutableStatisticKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableStatisticKHR * forUnmarshaling,uint8_t ** ptr)11187 void reservedunmarshal_VkPipelineExecutableStatisticKHR(
11188     VulkanStream* vkStream, VkStructureType rootType,
11189     VkPipelineExecutableStatisticKHR* forUnmarshaling, uint8_t** ptr) {
11190     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11191     *ptr += sizeof(VkStructureType);
11192     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11193         rootType = forUnmarshaling->sType;
11194     }
11195     uint32_t pNext_size;
11196     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11197     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11198     *ptr += sizeof(uint32_t);
11199     forUnmarshaling->pNext = nullptr;
11200     if (pNext_size) {
11201         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11202         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11203         *ptr += sizeof(VkStructureType);
11204         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11205         vkStream->alloc((void**)&forUnmarshaling->pNext,
11206                         goldfish_vk_extension_struct_size_with_stream_features(
11207                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11208         *(VkStructureType*)forUnmarshaling->pNext = extType;
11209         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11210                                            ptr);
11211     }
11212     memcpy((char*)forUnmarshaling->name, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11213     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
11214     memcpy((char*)forUnmarshaling->description, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11215     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
11216     memcpy((VkPipelineExecutableStatisticFormatKHR*)&forUnmarshaling->format, *ptr,
11217            sizeof(VkPipelineExecutableStatisticFormatKHR));
11218     *ptr += sizeof(VkPipelineExecutableStatisticFormatKHR);
11219     reservedunmarshal_VkPipelineExecutableStatisticValueKHR(
11220         vkStream, rootType, (VkPipelineExecutableStatisticValueKHR*)(&forUnmarshaling->value), ptr);
11221 }
11222 
reservedunmarshal_VkPipelineExecutableInternalRepresentationKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineExecutableInternalRepresentationKHR * forUnmarshaling,uint8_t ** ptr)11223 void reservedunmarshal_VkPipelineExecutableInternalRepresentationKHR(
11224     VulkanStream* vkStream, VkStructureType rootType,
11225     VkPipelineExecutableInternalRepresentationKHR* forUnmarshaling, uint8_t** ptr) {
11226     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11227     *ptr += sizeof(VkStructureType);
11228     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11229         rootType = forUnmarshaling->sType;
11230     }
11231     uint32_t pNext_size;
11232     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11233     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11234     *ptr += sizeof(uint32_t);
11235     forUnmarshaling->pNext = nullptr;
11236     if (pNext_size) {
11237         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11238         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11239         *ptr += sizeof(VkStructureType);
11240         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11241         vkStream->alloc((void**)&forUnmarshaling->pNext,
11242                         goldfish_vk_extension_struct_size_with_stream_features(
11243                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11244         *(VkStructureType*)forUnmarshaling->pNext = extType;
11245         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11246                                            ptr);
11247     }
11248     memcpy((char*)forUnmarshaling->name, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11249     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
11250     memcpy((char*)forUnmarshaling->description, *ptr, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11251     *ptr += VK_MAX_DESCRIPTION_SIZE * sizeof(char);
11252     memcpy((VkBool32*)&forUnmarshaling->isText, *ptr, sizeof(VkBool32));
11253     *ptr += sizeof(VkBool32);
11254     memcpy((size_t*)&forUnmarshaling->dataSize, (*ptr), 8);
11255     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->dataSize);
11256     *ptr += 8;
11257     // WARNING PTR CHECK
11258     memcpy((void**)&forUnmarshaling->pData, (*ptr), 8);
11259     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pData);
11260     *ptr += 8;
11261     if (forUnmarshaling->pData) {
11262         vkStream->alloc((void**)&forUnmarshaling->pData,
11263                         forUnmarshaling->dataSize * sizeof(uint8_t));
11264         memcpy((void*)forUnmarshaling->pData, *ptr, forUnmarshaling->dataSize * sizeof(uint8_t));
11265         *ptr += forUnmarshaling->dataSize * sizeof(uint8_t);
11266     }
11267 }
11268 
11269 #endif
11270 #ifdef VK_KHR_pipeline_library
reservedunmarshal_VkPipelineLibraryCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineLibraryCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)11271 void reservedunmarshal_VkPipelineLibraryCreateInfoKHR(
11272     VulkanStream* vkStream, VkStructureType rootType,
11273     VkPipelineLibraryCreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
11274     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11275     *ptr += sizeof(VkStructureType);
11276     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11277         rootType = forUnmarshaling->sType;
11278     }
11279     uint32_t pNext_size;
11280     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11281     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11282     *ptr += sizeof(uint32_t);
11283     forUnmarshaling->pNext = nullptr;
11284     if (pNext_size) {
11285         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11286         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11287         *ptr += sizeof(VkStructureType);
11288         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11289         vkStream->alloc((void**)&forUnmarshaling->pNext,
11290                         goldfish_vk_extension_struct_size_with_stream_features(
11291                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11292         *(VkStructureType*)forUnmarshaling->pNext = extType;
11293         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11294                                            ptr);
11295     }
11296     memcpy((uint32_t*)&forUnmarshaling->libraryCount, *ptr, sizeof(uint32_t));
11297     *ptr += sizeof(uint32_t);
11298     vkStream->alloc((void**)&forUnmarshaling->pLibraries,
11299                     forUnmarshaling->libraryCount * sizeof(const VkPipeline));
11300     if (forUnmarshaling->libraryCount) {
11301         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
11302         *ptr += 8 * forUnmarshaling->libraryCount;
11303         if (forUnmarshaling) {
11304             for (uint32_t k = 0; k < forUnmarshaling->libraryCount; ++k) {
11305                 uint64_t tmpval;
11306                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
11307                 *(((VkPipeline*)forUnmarshaling->pLibraries) + k) =
11308                     tmpval ? (VkPipeline)unbox_VkPipeline((VkPipeline)tmpval) : VK_NULL_HANDLE;
11309             }
11310         }
11311     }
11312 }
11313 
11314 #endif
11315 #ifdef VK_KHR_synchronization2
reservedunmarshal_VkQueueFamilyCheckpointProperties2NV(VulkanStream * vkStream,VkStructureType rootType,VkQueueFamilyCheckpointProperties2NV * forUnmarshaling,uint8_t ** ptr)11316 void reservedunmarshal_VkQueueFamilyCheckpointProperties2NV(
11317     VulkanStream* vkStream, VkStructureType rootType,
11318     VkQueueFamilyCheckpointProperties2NV* forUnmarshaling, uint8_t** ptr) {
11319     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11320     *ptr += sizeof(VkStructureType);
11321     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11322         rootType = forUnmarshaling->sType;
11323     }
11324     uint32_t pNext_size;
11325     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11326     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11327     *ptr += sizeof(uint32_t);
11328     forUnmarshaling->pNext = nullptr;
11329     if (pNext_size) {
11330         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11331         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11332         *ptr += sizeof(VkStructureType);
11333         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11334         vkStream->alloc((void**)&forUnmarshaling->pNext,
11335                         goldfish_vk_extension_struct_size_with_stream_features(
11336                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11337         *(VkStructureType*)forUnmarshaling->pNext = extType;
11338         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11339                                            ptr);
11340     }
11341     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->checkpointExecutionStageMask, *ptr,
11342            sizeof(VkPipelineStageFlags2));
11343     *ptr += sizeof(VkPipelineStageFlags2);
11344 }
11345 
reservedunmarshal_VkCheckpointData2NV(VulkanStream * vkStream,VkStructureType rootType,VkCheckpointData2NV * forUnmarshaling,uint8_t ** ptr)11346 void reservedunmarshal_VkCheckpointData2NV(VulkanStream* vkStream, VkStructureType rootType,
11347                                            VkCheckpointData2NV* forUnmarshaling, uint8_t** ptr) {
11348     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11349     *ptr += sizeof(VkStructureType);
11350     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11351         rootType = forUnmarshaling->sType;
11352     }
11353     uint32_t pNext_size;
11354     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11355     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11356     *ptr += sizeof(uint32_t);
11357     forUnmarshaling->pNext = nullptr;
11358     if (pNext_size) {
11359         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11360         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11361         *ptr += sizeof(VkStructureType);
11362         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11363         vkStream->alloc((void**)&forUnmarshaling->pNext,
11364                         goldfish_vk_extension_struct_size_with_stream_features(
11365                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11366         *(VkStructureType*)forUnmarshaling->pNext = extType;
11367         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11368                                            ptr);
11369     }
11370     memcpy((VkPipelineStageFlags2*)&forUnmarshaling->stage, *ptr, sizeof(VkPipelineStageFlags2));
11371     *ptr += sizeof(VkPipelineStageFlags2);
11372     // WARNING PTR CHECK
11373     memcpy((void**)&forUnmarshaling->pCheckpointMarker, (*ptr), 8);
11374     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pCheckpointMarker);
11375     *ptr += 8;
11376     if (forUnmarshaling->pCheckpointMarker) {
11377         vkStream->alloc((void**)&forUnmarshaling->pCheckpointMarker, sizeof(uint8_t));
11378         memcpy((void*)forUnmarshaling->pCheckpointMarker, *ptr, sizeof(uint8_t));
11379         *ptr += sizeof(uint8_t);
11380     }
11381 }
11382 
11383 #endif
11384 #ifdef VK_KHR_maintenance5
reservedunmarshal_VkPhysicalDeviceMaintenance5FeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance5FeaturesKHR * forUnmarshaling,uint8_t ** ptr)11385 void reservedunmarshal_VkPhysicalDeviceMaintenance5FeaturesKHR(
11386     VulkanStream* vkStream, VkStructureType rootType,
11387     VkPhysicalDeviceMaintenance5FeaturesKHR* forUnmarshaling, uint8_t** ptr) {
11388     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11389     *ptr += sizeof(VkStructureType);
11390     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11391         rootType = forUnmarshaling->sType;
11392     }
11393     uint32_t pNext_size;
11394     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11395     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11396     *ptr += sizeof(uint32_t);
11397     forUnmarshaling->pNext = nullptr;
11398     if (pNext_size) {
11399         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11400         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11401         *ptr += sizeof(VkStructureType);
11402         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11403         vkStream->alloc((void**)&forUnmarshaling->pNext,
11404                         goldfish_vk_extension_struct_size_with_stream_features(
11405                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11406         *(VkStructureType*)forUnmarshaling->pNext = extType;
11407         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11408                                            ptr);
11409     }
11410     memcpy((VkBool32*)&forUnmarshaling->maintenance5, *ptr, sizeof(VkBool32));
11411     *ptr += sizeof(VkBool32);
11412 }
11413 
reservedunmarshal_VkPhysicalDeviceMaintenance5PropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceMaintenance5PropertiesKHR * forUnmarshaling,uint8_t ** ptr)11414 void reservedunmarshal_VkPhysicalDeviceMaintenance5PropertiesKHR(
11415     VulkanStream* vkStream, VkStructureType rootType,
11416     VkPhysicalDeviceMaintenance5PropertiesKHR* forUnmarshaling, uint8_t** ptr) {
11417     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11418     *ptr += sizeof(VkStructureType);
11419     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11420         rootType = forUnmarshaling->sType;
11421     }
11422     uint32_t pNext_size;
11423     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11424     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11425     *ptr += sizeof(uint32_t);
11426     forUnmarshaling->pNext = nullptr;
11427     if (pNext_size) {
11428         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11429         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11430         *ptr += sizeof(VkStructureType);
11431         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11432         vkStream->alloc((void**)&forUnmarshaling->pNext,
11433                         goldfish_vk_extension_struct_size_with_stream_features(
11434                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11435         *(VkStructureType*)forUnmarshaling->pNext = extType;
11436         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11437                                            ptr);
11438     }
11439     memcpy((VkBool32*)&forUnmarshaling->earlyFragmentMultisampleCoverageAfterSampleCounting, *ptr,
11440            sizeof(VkBool32));
11441     *ptr += sizeof(VkBool32);
11442     memcpy((VkBool32*)&forUnmarshaling->earlyFragmentSampleMaskTestBeforeSampleCounting, *ptr,
11443            sizeof(VkBool32));
11444     *ptr += sizeof(VkBool32);
11445     memcpy((VkBool32*)&forUnmarshaling->depthStencilSwizzleOneSupport, *ptr, sizeof(VkBool32));
11446     *ptr += sizeof(VkBool32);
11447     memcpy((VkBool32*)&forUnmarshaling->polygonModePointSize, *ptr, sizeof(VkBool32));
11448     *ptr += sizeof(VkBool32);
11449     memcpy((VkBool32*)&forUnmarshaling->nonStrictSinglePixelWideLinesUseParallelogram, *ptr,
11450            sizeof(VkBool32));
11451     *ptr += sizeof(VkBool32);
11452     memcpy((VkBool32*)&forUnmarshaling->nonStrictWideLinesUseParallelogram, *ptr, sizeof(VkBool32));
11453     *ptr += sizeof(VkBool32);
11454 }
11455 
reservedunmarshal_VkRenderingAreaInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRenderingAreaInfoKHR * forUnmarshaling,uint8_t ** ptr)11456 void reservedunmarshal_VkRenderingAreaInfoKHR(VulkanStream* vkStream, VkStructureType rootType,
11457                                               VkRenderingAreaInfoKHR* forUnmarshaling,
11458                                               uint8_t** ptr) {
11459     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11460     *ptr += sizeof(VkStructureType);
11461     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11462         rootType = forUnmarshaling->sType;
11463     }
11464     uint32_t pNext_size;
11465     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11466     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11467     *ptr += sizeof(uint32_t);
11468     forUnmarshaling->pNext = nullptr;
11469     if (pNext_size) {
11470         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11471         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11472         *ptr += sizeof(VkStructureType);
11473         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11474         vkStream->alloc((void**)&forUnmarshaling->pNext,
11475                         goldfish_vk_extension_struct_size_with_stream_features(
11476                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11477         *(VkStructureType*)forUnmarshaling->pNext = extType;
11478         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11479                                            ptr);
11480     }
11481     memcpy((uint32_t*)&forUnmarshaling->viewMask, *ptr, sizeof(uint32_t));
11482     *ptr += sizeof(uint32_t);
11483     memcpy((uint32_t*)&forUnmarshaling->colorAttachmentCount, *ptr, sizeof(uint32_t));
11484     *ptr += sizeof(uint32_t);
11485     // WARNING PTR CHECK
11486     memcpy((VkFormat**)&forUnmarshaling->pColorAttachmentFormats, (*ptr), 8);
11487     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pColorAttachmentFormats);
11488     *ptr += 8;
11489     if (forUnmarshaling->pColorAttachmentFormats) {
11490         vkStream->alloc((void**)&forUnmarshaling->pColorAttachmentFormats,
11491                         forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
11492         memcpy((VkFormat*)forUnmarshaling->pColorAttachmentFormats, *ptr,
11493                forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat));
11494         *ptr += forUnmarshaling->colorAttachmentCount * sizeof(const VkFormat);
11495     }
11496     memcpy((VkFormat*)&forUnmarshaling->depthAttachmentFormat, *ptr, sizeof(VkFormat));
11497     *ptr += sizeof(VkFormat);
11498     memcpy((VkFormat*)&forUnmarshaling->stencilAttachmentFormat, *ptr, sizeof(VkFormat));
11499     *ptr += sizeof(VkFormat);
11500 }
11501 
reservedunmarshal_VkImageSubresource2KHR(VulkanStream * vkStream,VkStructureType rootType,VkImageSubresource2KHR * forUnmarshaling,uint8_t ** ptr)11502 void reservedunmarshal_VkImageSubresource2KHR(VulkanStream* vkStream, VkStructureType rootType,
11503                                               VkImageSubresource2KHR* forUnmarshaling,
11504                                               uint8_t** ptr) {
11505     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11506     *ptr += sizeof(VkStructureType);
11507     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11508         rootType = forUnmarshaling->sType;
11509     }
11510     uint32_t pNext_size;
11511     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11512     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11513     *ptr += sizeof(uint32_t);
11514     forUnmarshaling->pNext = nullptr;
11515     if (pNext_size) {
11516         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11517         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11518         *ptr += sizeof(VkStructureType);
11519         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11520         vkStream->alloc((void**)&forUnmarshaling->pNext,
11521                         goldfish_vk_extension_struct_size_with_stream_features(
11522                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11523         *(VkStructureType*)forUnmarshaling->pNext = extType;
11524         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11525                                            ptr);
11526     }
11527     reservedunmarshal_VkImageSubresource(
11528         vkStream, rootType, (VkImageSubresource*)(&forUnmarshaling->imageSubresource), ptr);
11529 }
11530 
reservedunmarshal_VkDeviceImageSubresourceInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkDeviceImageSubresourceInfoKHR * forUnmarshaling,uint8_t ** ptr)11531 void reservedunmarshal_VkDeviceImageSubresourceInfoKHR(
11532     VulkanStream* vkStream, VkStructureType rootType,
11533     VkDeviceImageSubresourceInfoKHR* forUnmarshaling, uint8_t** ptr) {
11534     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11535     *ptr += sizeof(VkStructureType);
11536     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11537         rootType = forUnmarshaling->sType;
11538     }
11539     uint32_t pNext_size;
11540     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11541     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11542     *ptr += sizeof(uint32_t);
11543     forUnmarshaling->pNext = nullptr;
11544     if (pNext_size) {
11545         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11546         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11547         *ptr += sizeof(VkStructureType);
11548         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11549         vkStream->alloc((void**)&forUnmarshaling->pNext,
11550                         goldfish_vk_extension_struct_size_with_stream_features(
11551                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11552         *(VkStructureType*)forUnmarshaling->pNext = extType;
11553         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11554                                            ptr);
11555     }
11556     vkStream->alloc((void**)&forUnmarshaling->pCreateInfo, sizeof(const VkImageCreateInfo));
11557     reservedunmarshal_VkImageCreateInfo(vkStream, rootType,
11558                                         (VkImageCreateInfo*)(forUnmarshaling->pCreateInfo), ptr);
11559     vkStream->alloc((void**)&forUnmarshaling->pSubresource, sizeof(const VkImageSubresource2KHR));
11560     reservedunmarshal_VkImageSubresource2KHR(
11561         vkStream, rootType, (VkImageSubresource2KHR*)(forUnmarshaling->pSubresource), ptr);
11562 }
11563 
reservedunmarshal_VkSubresourceLayout2KHR(VulkanStream * vkStream,VkStructureType rootType,VkSubresourceLayout2KHR * forUnmarshaling,uint8_t ** ptr)11564 void reservedunmarshal_VkSubresourceLayout2KHR(VulkanStream* vkStream, VkStructureType rootType,
11565                                                VkSubresourceLayout2KHR* forUnmarshaling,
11566                                                uint8_t** ptr) {
11567     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11568     *ptr += sizeof(VkStructureType);
11569     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11570         rootType = forUnmarshaling->sType;
11571     }
11572     uint32_t pNext_size;
11573     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11574     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11575     *ptr += sizeof(uint32_t);
11576     forUnmarshaling->pNext = nullptr;
11577     if (pNext_size) {
11578         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11579         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11580         *ptr += sizeof(VkStructureType);
11581         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11582         vkStream->alloc((void**)&forUnmarshaling->pNext,
11583                         goldfish_vk_extension_struct_size_with_stream_features(
11584                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11585         *(VkStructureType*)forUnmarshaling->pNext = extType;
11586         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11587                                            ptr);
11588     }
11589     reservedunmarshal_VkSubresourceLayout(
11590         vkStream, rootType, (VkSubresourceLayout*)(&forUnmarshaling->subresourceLayout), ptr);
11591 }
11592 
reservedunmarshal_VkPipelineCreateFlags2CreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineCreateFlags2CreateInfoKHR * forUnmarshaling,uint8_t ** ptr)11593 void reservedunmarshal_VkPipelineCreateFlags2CreateInfoKHR(
11594     VulkanStream* vkStream, VkStructureType rootType,
11595     VkPipelineCreateFlags2CreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
11596     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11597     *ptr += sizeof(VkStructureType);
11598     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11599         rootType = forUnmarshaling->sType;
11600     }
11601     uint32_t pNext_size;
11602     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11603     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11604     *ptr += sizeof(uint32_t);
11605     forUnmarshaling->pNext = nullptr;
11606     if (pNext_size) {
11607         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11608         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11609         *ptr += sizeof(VkStructureType);
11610         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11611         vkStream->alloc((void**)&forUnmarshaling->pNext,
11612                         goldfish_vk_extension_struct_size_with_stream_features(
11613                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11614         *(VkStructureType*)forUnmarshaling->pNext = extType;
11615         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11616                                            ptr);
11617     }
11618     memcpy((VkPipelineCreateFlags2KHR*)&forUnmarshaling->flags, *ptr,
11619            sizeof(VkPipelineCreateFlags2KHR));
11620     *ptr += sizeof(VkPipelineCreateFlags2KHR);
11621 }
11622 
reservedunmarshal_VkBufferUsageFlags2CreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkBufferUsageFlags2CreateInfoKHR * forUnmarshaling,uint8_t ** ptr)11623 void reservedunmarshal_VkBufferUsageFlags2CreateInfoKHR(
11624     VulkanStream* vkStream, VkStructureType rootType,
11625     VkBufferUsageFlags2CreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
11626     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11627     *ptr += sizeof(VkStructureType);
11628     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11629         rootType = forUnmarshaling->sType;
11630     }
11631     uint32_t pNext_size;
11632     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11633     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11634     *ptr += sizeof(uint32_t);
11635     forUnmarshaling->pNext = nullptr;
11636     if (pNext_size) {
11637         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11638         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11639         *ptr += sizeof(VkStructureType);
11640         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11641         vkStream->alloc((void**)&forUnmarshaling->pNext,
11642                         goldfish_vk_extension_struct_size_with_stream_features(
11643                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11644         *(VkStructureType*)forUnmarshaling->pNext = extType;
11645         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11646                                            ptr);
11647     }
11648     memcpy((VkBufferUsageFlags2KHR*)&forUnmarshaling->usage, *ptr, sizeof(VkBufferUsageFlags2KHR));
11649     *ptr += sizeof(VkBufferUsageFlags2KHR);
11650 }
11651 
11652 #endif
11653 #ifdef VK_KHR_line_rasterization
reservedunmarshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceLineRasterizationFeaturesKHR * forUnmarshaling,uint8_t ** ptr)11654 void reservedunmarshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(
11655     VulkanStream* vkStream, VkStructureType rootType,
11656     VkPhysicalDeviceLineRasterizationFeaturesKHR* forUnmarshaling, uint8_t** ptr) {
11657     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11658     *ptr += sizeof(VkStructureType);
11659     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11660         rootType = forUnmarshaling->sType;
11661     }
11662     uint32_t pNext_size;
11663     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11664     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11665     *ptr += sizeof(uint32_t);
11666     forUnmarshaling->pNext = nullptr;
11667     if (pNext_size) {
11668         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11669         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11670         *ptr += sizeof(VkStructureType);
11671         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11672         vkStream->alloc((void**)&forUnmarshaling->pNext,
11673                         goldfish_vk_extension_struct_size_with_stream_features(
11674                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11675         *(VkStructureType*)forUnmarshaling->pNext = extType;
11676         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11677                                            ptr);
11678     }
11679     memcpy((VkBool32*)&forUnmarshaling->rectangularLines, *ptr, sizeof(VkBool32));
11680     *ptr += sizeof(VkBool32);
11681     memcpy((VkBool32*)&forUnmarshaling->bresenhamLines, *ptr, sizeof(VkBool32));
11682     *ptr += sizeof(VkBool32);
11683     memcpy((VkBool32*)&forUnmarshaling->smoothLines, *ptr, sizeof(VkBool32));
11684     *ptr += sizeof(VkBool32);
11685     memcpy((VkBool32*)&forUnmarshaling->stippledRectangularLines, *ptr, sizeof(VkBool32));
11686     *ptr += sizeof(VkBool32);
11687     memcpy((VkBool32*)&forUnmarshaling->stippledBresenhamLines, *ptr, sizeof(VkBool32));
11688     *ptr += sizeof(VkBool32);
11689     memcpy((VkBool32*)&forUnmarshaling->stippledSmoothLines, *ptr, sizeof(VkBool32));
11690     *ptr += sizeof(VkBool32);
11691 }
11692 
reservedunmarshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceLineRasterizationPropertiesKHR * forUnmarshaling,uint8_t ** ptr)11693 void reservedunmarshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(
11694     VulkanStream* vkStream, VkStructureType rootType,
11695     VkPhysicalDeviceLineRasterizationPropertiesKHR* forUnmarshaling, uint8_t** ptr) {
11696     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11697     *ptr += sizeof(VkStructureType);
11698     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11699         rootType = forUnmarshaling->sType;
11700     }
11701     uint32_t pNext_size;
11702     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11703     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11704     *ptr += sizeof(uint32_t);
11705     forUnmarshaling->pNext = nullptr;
11706     if (pNext_size) {
11707         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11708         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11709         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11716                                            ptr);
11717     }
11718     memcpy((uint32_t*)&forUnmarshaling->lineSubPixelPrecisionBits, *ptr, sizeof(uint32_t));
11719     *ptr += sizeof(uint32_t);
11720 }
11721 
reservedunmarshal_VkPipelineRasterizationLineStateCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationLineStateCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)11722 void reservedunmarshal_VkPipelineRasterizationLineStateCreateInfoKHR(
11723     VulkanStream* vkStream, VkStructureType rootType,
11724     VkPipelineRasterizationLineStateCreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
11725     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11726     *ptr += sizeof(VkStructureType);
11727     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11728         rootType = forUnmarshaling->sType;
11729     }
11730     uint32_t pNext_size;
11731     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11732     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11733     *ptr += sizeof(uint32_t);
11734     forUnmarshaling->pNext = nullptr;
11735     if (pNext_size) {
11736         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11737         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11738         *ptr += sizeof(VkStructureType);
11739         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11740         vkStream->alloc((void**)&forUnmarshaling->pNext,
11741                         goldfish_vk_extension_struct_size_with_stream_features(
11742                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11743         *(VkStructureType*)forUnmarshaling->pNext = extType;
11744         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11745                                            ptr);
11746     }
11747     memcpy((VkLineRasterizationModeKHR*)&forUnmarshaling->lineRasterizationMode, *ptr,
11748            sizeof(VkLineRasterizationModeKHR));
11749     *ptr += sizeof(VkLineRasterizationModeKHR);
11750     memcpy((VkBool32*)&forUnmarshaling->stippledLineEnable, *ptr, sizeof(VkBool32));
11751     *ptr += sizeof(VkBool32);
11752     memcpy((uint32_t*)&forUnmarshaling->lineStippleFactor, *ptr, sizeof(uint32_t));
11753     *ptr += sizeof(uint32_t);
11754     memcpy((uint16_t*)&forUnmarshaling->lineStipplePattern, *ptr, sizeof(uint16_t));
11755     *ptr += sizeof(uint16_t);
11756 }
11757 
11758 #endif
11759 #ifdef VK_ANDROID_native_buffer
reservedunmarshal_VkNativeBufferUsage2ANDROID(VulkanStream * vkStream,VkStructureType rootType,VkNativeBufferUsage2ANDROID * forUnmarshaling,uint8_t ** ptr)11760 void reservedunmarshal_VkNativeBufferUsage2ANDROID(VulkanStream* vkStream, VkStructureType rootType,
11761                                                    VkNativeBufferUsage2ANDROID* forUnmarshaling,
11762                                                    uint8_t** ptr) {
11763     memcpy((uint64_t*)&forUnmarshaling->consumer, *ptr, sizeof(uint64_t));
11764     *ptr += sizeof(uint64_t);
11765     memcpy((uint64_t*)&forUnmarshaling->producer, *ptr, sizeof(uint64_t));
11766     *ptr += sizeof(uint64_t);
11767 }
11768 
reservedunmarshal_VkNativeBufferANDROID(VulkanStream * vkStream,VkStructureType rootType,VkNativeBufferANDROID * forUnmarshaling,uint8_t ** ptr)11769 void reservedunmarshal_VkNativeBufferANDROID(VulkanStream* vkStream, VkStructureType rootType,
11770                                              VkNativeBufferANDROID* forUnmarshaling,
11771                                              uint8_t** ptr) {
11772     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11773     *ptr += sizeof(VkStructureType);
11774     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11775         rootType = forUnmarshaling->sType;
11776     }
11777     uint32_t pNext_size;
11778     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11779     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11780     *ptr += sizeof(uint32_t);
11781     forUnmarshaling->pNext = nullptr;
11782     if (pNext_size) {
11783         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11784         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11785         *ptr += sizeof(VkStructureType);
11786         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11787         vkStream->alloc((void**)&forUnmarshaling->pNext,
11788                         goldfish_vk_extension_struct_size_with_stream_features(
11789                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11790         *(VkStructureType*)forUnmarshaling->pNext = extType;
11791         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11792                                            ptr);
11793     }
11794     // WARNING PTR CHECK
11795     memcpy((uint32_t**)&forUnmarshaling->handle, (*ptr), 8);
11796     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->handle);
11797     *ptr += 8;
11798     if (forUnmarshaling->handle) {
11799         vkStream->alloc((void**)&forUnmarshaling->handle, sizeof(const uint32_t));
11800         memcpy((uint32_t*)forUnmarshaling->handle, *ptr, sizeof(const uint32_t));
11801         *ptr += sizeof(const uint32_t);
11802     }
11803     memcpy((int*)&forUnmarshaling->stride, *ptr, sizeof(int));
11804     *ptr += sizeof(int);
11805     memcpy((int*)&forUnmarshaling->format, *ptr, sizeof(int));
11806     *ptr += sizeof(int);
11807     memcpy((int*)&forUnmarshaling->usage, *ptr, sizeof(int));
11808     *ptr += sizeof(int);
11809     reservedunmarshal_VkNativeBufferUsage2ANDROID(
11810         vkStream, rootType, (VkNativeBufferUsage2ANDROID*)(&forUnmarshaling->usage2), ptr);
11811 }
11812 
reservedunmarshal_VkSwapchainImageCreateInfoANDROID(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainImageCreateInfoANDROID * forUnmarshaling,uint8_t ** ptr)11813 void reservedunmarshal_VkSwapchainImageCreateInfoANDROID(
11814     VulkanStream* vkStream, VkStructureType rootType,
11815     VkSwapchainImageCreateInfoANDROID* forUnmarshaling, uint8_t** ptr) {
11816     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11817     *ptr += sizeof(VkStructureType);
11818     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11819         rootType = forUnmarshaling->sType;
11820     }
11821     uint32_t pNext_size;
11822     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11823     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11824     *ptr += sizeof(uint32_t);
11825     forUnmarshaling->pNext = nullptr;
11826     if (pNext_size) {
11827         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11828         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11829         *ptr += sizeof(VkStructureType);
11830         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11831         vkStream->alloc((void**)&forUnmarshaling->pNext,
11832                         goldfish_vk_extension_struct_size_with_stream_features(
11833                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11834         *(VkStructureType*)forUnmarshaling->pNext = extType;
11835         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11836                                            ptr);
11837     }
11838     memcpy((VkSwapchainImageUsageFlagsANDROID*)&forUnmarshaling->usage, *ptr,
11839            sizeof(VkSwapchainImageUsageFlagsANDROID));
11840     *ptr += sizeof(VkSwapchainImageUsageFlagsANDROID);
11841 }
11842 
reservedunmarshal_VkPhysicalDevicePresentationPropertiesANDROID(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePresentationPropertiesANDROID * forUnmarshaling,uint8_t ** ptr)11843 void reservedunmarshal_VkPhysicalDevicePresentationPropertiesANDROID(
11844     VulkanStream* vkStream, VkStructureType rootType,
11845     VkPhysicalDevicePresentationPropertiesANDROID* forUnmarshaling, uint8_t** ptr) {
11846     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11847     *ptr += sizeof(VkStructureType);
11848     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11849         rootType = forUnmarshaling->sType;
11850     }
11851     uint32_t pNext_size;
11852     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11853     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11854     *ptr += sizeof(uint32_t);
11855     forUnmarshaling->pNext = nullptr;
11856     if (pNext_size) {
11857         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11858         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11859         *ptr += sizeof(VkStructureType);
11860         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11861         vkStream->alloc((void**)&forUnmarshaling->pNext,
11862                         goldfish_vk_extension_struct_size_with_stream_features(
11863                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11864         *(VkStructureType*)forUnmarshaling->pNext = extType;
11865         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11866                                            ptr);
11867     }
11868     memcpy((VkBool32*)&forUnmarshaling->sharedImage, *ptr, sizeof(VkBool32));
11869     *ptr += sizeof(VkBool32);
11870 }
11871 
11872 #endif
11873 #ifdef VK_EXT_debug_report
reservedunmarshal_VkDebugReportCallbackCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugReportCallbackCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)11874 void reservedunmarshal_VkDebugReportCallbackCreateInfoEXT(
11875     VulkanStream* vkStream, VkStructureType rootType,
11876     VkDebugReportCallbackCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
11877     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11878     *ptr += sizeof(VkStructureType);
11879     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11880         rootType = forUnmarshaling->sType;
11881     }
11882     uint32_t pNext_size;
11883     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11884     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11885     *ptr += sizeof(uint32_t);
11886     forUnmarshaling->pNext = nullptr;
11887     if (pNext_size) {
11888         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11889         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11890         *ptr += sizeof(VkStructureType);
11891         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11892         vkStream->alloc((void**)&forUnmarshaling->pNext,
11893                         goldfish_vk_extension_struct_size_with_stream_features(
11894                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11895         *(VkStructureType*)forUnmarshaling->pNext = extType;
11896         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11897                                            ptr);
11898     }
11899     memcpy((VkDebugReportFlagsEXT*)&forUnmarshaling->flags, *ptr, sizeof(VkDebugReportFlagsEXT));
11900     *ptr += sizeof(VkDebugReportFlagsEXT);
11901     memcpy((PFN_vkDebugReportCallbackEXT*)&forUnmarshaling->pfnCallback, (*ptr), 8);
11902     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnCallback);
11903     *ptr += 8;
11904     // WARNING PTR CHECK
11905     memcpy((void**)&forUnmarshaling->pUserData, (*ptr), 8);
11906     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pUserData);
11907     *ptr += 8;
11908     if (forUnmarshaling->pUserData) {
11909         vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
11910         memcpy((void*)forUnmarshaling->pUserData, *ptr, sizeof(uint8_t));
11911         *ptr += sizeof(uint8_t);
11912     }
11913 }
11914 
11915 #endif
11916 #ifdef VK_EXT_transform_feedback
reservedunmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTransformFeedbackFeaturesEXT * forUnmarshaling,uint8_t ** ptr)11917 void reservedunmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
11918     VulkanStream* vkStream, VkStructureType rootType,
11919     VkPhysicalDeviceTransformFeedbackFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
11920     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11921     *ptr += sizeof(VkStructureType);
11922     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11923         rootType = forUnmarshaling->sType;
11924     }
11925     uint32_t pNext_size;
11926     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11927     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11928     *ptr += sizeof(uint32_t);
11929     forUnmarshaling->pNext = nullptr;
11930     if (pNext_size) {
11931         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11932         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11933         *ptr += sizeof(VkStructureType);
11934         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11935         vkStream->alloc((void**)&forUnmarshaling->pNext,
11936                         goldfish_vk_extension_struct_size_with_stream_features(
11937                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11938         *(VkStructureType*)forUnmarshaling->pNext = extType;
11939         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11940                                            ptr);
11941     }
11942     memcpy((VkBool32*)&forUnmarshaling->transformFeedback, *ptr, sizeof(VkBool32));
11943     *ptr += sizeof(VkBool32);
11944     memcpy((VkBool32*)&forUnmarshaling->geometryStreams, *ptr, sizeof(VkBool32));
11945     *ptr += sizeof(VkBool32);
11946 }
11947 
reservedunmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTransformFeedbackPropertiesEXT * forUnmarshaling,uint8_t ** ptr)11948 void reservedunmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
11949     VulkanStream* vkStream, VkStructureType rootType,
11950     VkPhysicalDeviceTransformFeedbackPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
11951     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
11952     *ptr += sizeof(VkStructureType);
11953     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
11954         rootType = forUnmarshaling->sType;
11955     }
11956     uint32_t pNext_size;
11957     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
11958     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
11959     *ptr += sizeof(uint32_t);
11960     forUnmarshaling->pNext = nullptr;
11961     if (pNext_size) {
11962         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
11963         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
11964         *ptr += sizeof(VkStructureType);
11965         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
11966         vkStream->alloc((void**)&forUnmarshaling->pNext,
11967                         goldfish_vk_extension_struct_size_with_stream_features(
11968                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
11969         *(VkStructureType*)forUnmarshaling->pNext = extType;
11970         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
11971                                            ptr);
11972     }
11973     memcpy((uint32_t*)&forUnmarshaling->maxTransformFeedbackStreams, *ptr, sizeof(uint32_t));
11974     *ptr += sizeof(uint32_t);
11975     memcpy((uint32_t*)&forUnmarshaling->maxTransformFeedbackBuffers, *ptr, sizeof(uint32_t));
11976     *ptr += sizeof(uint32_t);
11977     memcpy((VkDeviceSize*)&forUnmarshaling->maxTransformFeedbackBufferSize, *ptr,
11978            sizeof(VkDeviceSize));
11979     *ptr += sizeof(VkDeviceSize);
11980     memcpy((uint32_t*)&forUnmarshaling->maxTransformFeedbackStreamDataSize, *ptr, sizeof(uint32_t));
11981     *ptr += sizeof(uint32_t);
11982     memcpy((uint32_t*)&forUnmarshaling->maxTransformFeedbackBufferDataSize, *ptr, sizeof(uint32_t));
11983     *ptr += sizeof(uint32_t);
11984     memcpy((uint32_t*)&forUnmarshaling->maxTransformFeedbackBufferDataStride, *ptr,
11985            sizeof(uint32_t));
11986     *ptr += sizeof(uint32_t);
11987     memcpy((VkBool32*)&forUnmarshaling->transformFeedbackQueries, *ptr, sizeof(VkBool32));
11988     *ptr += sizeof(VkBool32);
11989     memcpy((VkBool32*)&forUnmarshaling->transformFeedbackStreamsLinesTriangles, *ptr,
11990            sizeof(VkBool32));
11991     *ptr += sizeof(VkBool32);
11992     memcpy((VkBool32*)&forUnmarshaling->transformFeedbackRasterizationStreamSelect, *ptr,
11993            sizeof(VkBool32));
11994     *ptr += sizeof(VkBool32);
11995     memcpy((VkBool32*)&forUnmarshaling->transformFeedbackDraw, *ptr, sizeof(VkBool32));
11996     *ptr += sizeof(VkBool32);
11997 }
11998 
reservedunmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationStateStreamCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)11999 void reservedunmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
12000     VulkanStream* vkStream, VkStructureType rootType,
12001     VkPipelineRasterizationStateStreamCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12002     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12003     *ptr += sizeof(VkStructureType);
12004     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12005         rootType = forUnmarshaling->sType;
12006     }
12007     uint32_t pNext_size;
12008     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12009     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12010     *ptr += sizeof(uint32_t);
12011     forUnmarshaling->pNext = nullptr;
12012     if (pNext_size) {
12013         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12014         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12015         *ptr += sizeof(VkStructureType);
12016         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12017         vkStream->alloc((void**)&forUnmarshaling->pNext,
12018                         goldfish_vk_extension_struct_size_with_stream_features(
12019                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12020         *(VkStructureType*)forUnmarshaling->pNext = extType;
12021         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12022                                            ptr);
12023     }
12024     memcpy((VkPipelineRasterizationStateStreamCreateFlagsEXT*)&forUnmarshaling->flags, *ptr,
12025            sizeof(VkPipelineRasterizationStateStreamCreateFlagsEXT));
12026     *ptr += sizeof(VkPipelineRasterizationStateStreamCreateFlagsEXT);
12027     memcpy((uint32_t*)&forUnmarshaling->rasterizationStream, *ptr, sizeof(uint32_t));
12028     *ptr += sizeof(uint32_t);
12029 }
12030 
12031 #endif
12032 #ifdef VK_EXT_depth_clip_enable
reservedunmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDepthClipEnableFeaturesEXT * forUnmarshaling,uint8_t ** ptr)12033 void reservedunmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
12034     VulkanStream* vkStream, VkStructureType rootType,
12035     VkPhysicalDeviceDepthClipEnableFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
12036     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12037     *ptr += sizeof(VkStructureType);
12038     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12039         rootType = forUnmarshaling->sType;
12040     }
12041     uint32_t pNext_size;
12042     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12043     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12044     *ptr += sizeof(uint32_t);
12045     forUnmarshaling->pNext = nullptr;
12046     if (pNext_size) {
12047         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12048         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12049         *ptr += sizeof(VkStructureType);
12050         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12051         vkStream->alloc((void**)&forUnmarshaling->pNext,
12052                         goldfish_vk_extension_struct_size_with_stream_features(
12053                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12054         *(VkStructureType*)forUnmarshaling->pNext = extType;
12055         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12056                                            ptr);
12057     }
12058     memcpy((VkBool32*)&forUnmarshaling->depthClipEnable, *ptr, sizeof(VkBool32));
12059     *ptr += sizeof(VkBool32);
12060 }
12061 
reservedunmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationDepthClipStateCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)12062 void reservedunmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
12063     VulkanStream* vkStream, VkStructureType rootType,
12064     VkPipelineRasterizationDepthClipStateCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12065     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12066     *ptr += sizeof(VkStructureType);
12067     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12068         rootType = forUnmarshaling->sType;
12069     }
12070     uint32_t pNext_size;
12071     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12072     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12073     *ptr += sizeof(uint32_t);
12074     forUnmarshaling->pNext = nullptr;
12075     if (pNext_size) {
12076         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12077         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12078         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12085                                            ptr);
12086     }
12087     memcpy((VkPipelineRasterizationDepthClipStateCreateFlagsEXT*)&forUnmarshaling->flags, *ptr,
12088            sizeof(VkPipelineRasterizationDepthClipStateCreateFlagsEXT));
12089     *ptr += sizeof(VkPipelineRasterizationDepthClipStateCreateFlagsEXT);
12090     memcpy((VkBool32*)&forUnmarshaling->depthClipEnable, *ptr, sizeof(VkBool32));
12091     *ptr += sizeof(VkBool32);
12092 }
12093 
12094 #endif
12095 #ifdef VK_EXT_debug_utils
reservedunmarshal_VkDebugUtilsLabelEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsLabelEXT * forUnmarshaling,uint8_t ** ptr)12096 void reservedunmarshal_VkDebugUtilsLabelEXT(VulkanStream* vkStream, VkStructureType rootType,
12097                                             VkDebugUtilsLabelEXT* forUnmarshaling, uint8_t** ptr) {
12098     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12099     *ptr += sizeof(VkStructureType);
12100     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12101         rootType = forUnmarshaling->sType;
12102     }
12103     uint32_t pNext_size;
12104     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12105     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12106     *ptr += sizeof(uint32_t);
12107     forUnmarshaling->pNext = nullptr;
12108     if (pNext_size) {
12109         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12110         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12111         *ptr += sizeof(VkStructureType);
12112         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12113         vkStream->alloc((void**)&forUnmarshaling->pNext,
12114                         goldfish_vk_extension_struct_size_with_stream_features(
12115                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12116         *(VkStructureType*)forUnmarshaling->pNext = extType;
12117         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12118                                            ptr);
12119     }
12120     vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pLabelName, ptr);
12121     memcpy((float*)forUnmarshaling->color, *ptr, 4 * sizeof(float));
12122     *ptr += 4 * sizeof(float);
12123 }
12124 
reservedunmarshal_VkDebugUtilsObjectNameInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsObjectNameInfoEXT * forUnmarshaling,uint8_t ** ptr)12125 void reservedunmarshal_VkDebugUtilsObjectNameInfoEXT(VulkanStream* vkStream,
12126                                                      VkStructureType rootType,
12127                                                      VkDebugUtilsObjectNameInfoEXT* forUnmarshaling,
12128                                                      uint8_t** ptr) {
12129     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12130     *ptr += sizeof(VkStructureType);
12131     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12132         rootType = forUnmarshaling->sType;
12133     }
12134     uint32_t pNext_size;
12135     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12136     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12137     *ptr += sizeof(uint32_t);
12138     forUnmarshaling->pNext = nullptr;
12139     if (pNext_size) {
12140         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12141         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12142         *ptr += sizeof(VkStructureType);
12143         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12144         vkStream->alloc((void**)&forUnmarshaling->pNext,
12145                         goldfish_vk_extension_struct_size_with_stream_features(
12146                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12147         *(VkStructureType*)forUnmarshaling->pNext = extType;
12148         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12149                                            ptr);
12150     }
12151     memcpy((VkObjectType*)&forUnmarshaling->objectType, *ptr, sizeof(VkObjectType));
12152     *ptr += sizeof(VkObjectType);
12153     memcpy((uint64_t*)&forUnmarshaling->objectHandle, *ptr, sizeof(uint64_t));
12154     *ptr += sizeof(uint64_t);
12155     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
12156         // WARNING PTR CHECK
12157         memcpy((char**)&forUnmarshaling->pObjectName, (*ptr), 8);
12158         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pObjectName);
12159         *ptr += 8;
12160         if (forUnmarshaling->pObjectName) {
12161             vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pObjectName, ptr);
12162         }
12163     } else {
12164         vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pObjectName, ptr);
12165     }
12166 }
12167 
reservedunmarshal_VkDebugUtilsMessengerCallbackDataEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsMessengerCallbackDataEXT * forUnmarshaling,uint8_t ** ptr)12168 void reservedunmarshal_VkDebugUtilsMessengerCallbackDataEXT(
12169     VulkanStream* vkStream, VkStructureType rootType,
12170     VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling, uint8_t** ptr) {
12171     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12172     *ptr += sizeof(VkStructureType);
12173     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12174         rootType = forUnmarshaling->sType;
12175     }
12176     uint32_t pNext_size;
12177     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12178     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12179     *ptr += sizeof(uint32_t);
12180     forUnmarshaling->pNext = nullptr;
12181     if (pNext_size) {
12182         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12183         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12184         *ptr += sizeof(VkStructureType);
12185         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12186         vkStream->alloc((void**)&forUnmarshaling->pNext,
12187                         goldfish_vk_extension_struct_size_with_stream_features(
12188                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12189         *(VkStructureType*)forUnmarshaling->pNext = extType;
12190         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12191                                            ptr);
12192     }
12193     memcpy((VkDebugUtilsMessengerCallbackDataFlagsEXT*)&forUnmarshaling->flags, *ptr,
12194            sizeof(VkDebugUtilsMessengerCallbackDataFlagsEXT));
12195     *ptr += sizeof(VkDebugUtilsMessengerCallbackDataFlagsEXT);
12196     if (vkStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
12197         // WARNING PTR CHECK
12198         memcpy((char**)&forUnmarshaling->pMessageIdName, (*ptr), 8);
12199         android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pMessageIdName);
12200         *ptr += 8;
12201         if (forUnmarshaling->pMessageIdName) {
12202             vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pMessageIdName, ptr);
12203         }
12204     } else {
12205         vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pMessageIdName, ptr);
12206     }
12207     memcpy((int32_t*)&forUnmarshaling->messageIdNumber, *ptr, sizeof(int32_t));
12208     *ptr += sizeof(int32_t);
12209     vkStream->loadStringInPlaceWithStreamPtr((char**)&forUnmarshaling->pMessage, ptr);
12210     memcpy((uint32_t*)&forUnmarshaling->queueLabelCount, *ptr, sizeof(uint32_t));
12211     *ptr += sizeof(uint32_t);
12212     vkStream->alloc((void**)&forUnmarshaling->pQueueLabels,
12213                     forUnmarshaling->queueLabelCount * sizeof(const VkDebugUtilsLabelEXT));
12214     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->queueLabelCount; ++i) {
12215         reservedunmarshal_VkDebugUtilsLabelEXT(
12216             vkStream, rootType, (VkDebugUtilsLabelEXT*)(forUnmarshaling->pQueueLabels + i), ptr);
12217     }
12218     memcpy((uint32_t*)&forUnmarshaling->cmdBufLabelCount, *ptr, sizeof(uint32_t));
12219     *ptr += sizeof(uint32_t);
12220     vkStream->alloc((void**)&forUnmarshaling->pCmdBufLabels,
12221                     forUnmarshaling->cmdBufLabelCount * sizeof(const VkDebugUtilsLabelEXT));
12222     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->cmdBufLabelCount; ++i) {
12223         reservedunmarshal_VkDebugUtilsLabelEXT(
12224             vkStream, rootType, (VkDebugUtilsLabelEXT*)(forUnmarshaling->pCmdBufLabels + i), ptr);
12225     }
12226     memcpy((uint32_t*)&forUnmarshaling->objectCount, *ptr, sizeof(uint32_t));
12227     *ptr += sizeof(uint32_t);
12228     vkStream->alloc((void**)&forUnmarshaling->pObjects,
12229                     forUnmarshaling->objectCount * sizeof(const VkDebugUtilsObjectNameInfoEXT));
12230     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->objectCount; ++i) {
12231         reservedunmarshal_VkDebugUtilsObjectNameInfoEXT(
12232             vkStream, rootType, (VkDebugUtilsObjectNameInfoEXT*)(forUnmarshaling->pObjects + i),
12233             ptr);
12234     }
12235 }
12236 
reservedunmarshal_VkDebugUtilsMessengerCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsMessengerCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)12237 void reservedunmarshal_VkDebugUtilsMessengerCreateInfoEXT(
12238     VulkanStream* vkStream, VkStructureType rootType,
12239     VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12240     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12241     *ptr += sizeof(VkStructureType);
12242     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12243         rootType = forUnmarshaling->sType;
12244     }
12245     uint32_t pNext_size;
12246     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12247     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12248     *ptr += sizeof(uint32_t);
12249     forUnmarshaling->pNext = nullptr;
12250     if (pNext_size) {
12251         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12252         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12253         *ptr += sizeof(VkStructureType);
12254         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12255         vkStream->alloc((void**)&forUnmarshaling->pNext,
12256                         goldfish_vk_extension_struct_size_with_stream_features(
12257                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12258         *(VkStructureType*)forUnmarshaling->pNext = extType;
12259         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12260                                            ptr);
12261     }
12262     memcpy((VkDebugUtilsMessengerCreateFlagsEXT*)&forUnmarshaling->flags, *ptr,
12263            sizeof(VkDebugUtilsMessengerCreateFlagsEXT));
12264     *ptr += sizeof(VkDebugUtilsMessengerCreateFlagsEXT);
12265     memcpy((VkDebugUtilsMessageSeverityFlagsEXT*)&forUnmarshaling->messageSeverity, *ptr,
12266            sizeof(VkDebugUtilsMessageSeverityFlagsEXT));
12267     *ptr += sizeof(VkDebugUtilsMessageSeverityFlagsEXT);
12268     memcpy((VkDebugUtilsMessageTypeFlagsEXT*)&forUnmarshaling->messageType, *ptr,
12269            sizeof(VkDebugUtilsMessageTypeFlagsEXT));
12270     *ptr += sizeof(VkDebugUtilsMessageTypeFlagsEXT);
12271     memcpy((PFN_vkDebugUtilsMessengerCallbackEXT*)&forUnmarshaling->pfnUserCallback, (*ptr), 8);
12272     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnUserCallback);
12273     *ptr += 8;
12274     // WARNING PTR CHECK
12275     memcpy((void**)&forUnmarshaling->pUserData, (*ptr), 8);
12276     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pUserData);
12277     *ptr += 8;
12278     if (forUnmarshaling->pUserData) {
12279         vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
12280         memcpy((void*)forUnmarshaling->pUserData, *ptr, sizeof(uint8_t));
12281         *ptr += sizeof(uint8_t);
12282     }
12283 }
12284 
reservedunmarshal_VkDebugUtilsObjectTagInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDebugUtilsObjectTagInfoEXT * forUnmarshaling,uint8_t ** ptr)12285 void reservedunmarshal_VkDebugUtilsObjectTagInfoEXT(VulkanStream* vkStream,
12286                                                     VkStructureType rootType,
12287                                                     VkDebugUtilsObjectTagInfoEXT* forUnmarshaling,
12288                                                     uint8_t** ptr) {
12289     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12290     *ptr += sizeof(VkStructureType);
12291     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12292         rootType = forUnmarshaling->sType;
12293     }
12294     uint32_t pNext_size;
12295     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12296     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12297     *ptr += sizeof(uint32_t);
12298     forUnmarshaling->pNext = nullptr;
12299     if (pNext_size) {
12300         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12301         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12302         *ptr += sizeof(VkStructureType);
12303         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12304         vkStream->alloc((void**)&forUnmarshaling->pNext,
12305                         goldfish_vk_extension_struct_size_with_stream_features(
12306                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12307         *(VkStructureType*)forUnmarshaling->pNext = extType;
12308         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12309                                            ptr);
12310     }
12311     memcpy((VkObjectType*)&forUnmarshaling->objectType, *ptr, sizeof(VkObjectType));
12312     *ptr += sizeof(VkObjectType);
12313     memcpy((uint64_t*)&forUnmarshaling->objectHandle, *ptr, sizeof(uint64_t));
12314     *ptr += sizeof(uint64_t);
12315     memcpy((uint64_t*)&forUnmarshaling->tagName, *ptr, sizeof(uint64_t));
12316     *ptr += sizeof(uint64_t);
12317     memcpy((size_t*)&forUnmarshaling->tagSize, (*ptr), 8);
12318     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->tagSize);
12319     *ptr += 8;
12320     vkStream->alloc((void**)&forUnmarshaling->pTag,
12321                     forUnmarshaling->tagSize * sizeof(const uint8_t));
12322     memcpy((void*)forUnmarshaling->pTag, *ptr, forUnmarshaling->tagSize * sizeof(const uint8_t));
12323     *ptr += forUnmarshaling->tagSize * sizeof(const uint8_t);
12324 }
12325 
12326 #endif
12327 #ifdef VK_EXT_image_drm_format_modifier
reservedunmarshal_VkDrmFormatModifierPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12328 void reservedunmarshal_VkDrmFormatModifierPropertiesEXT(
12329     VulkanStream* vkStream, VkStructureType rootType,
12330     VkDrmFormatModifierPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12331     memcpy((uint64_t*)&forUnmarshaling->drmFormatModifier, *ptr, sizeof(uint64_t));
12332     *ptr += sizeof(uint64_t);
12333     memcpy((uint32_t*)&forUnmarshaling->drmFormatModifierPlaneCount, *ptr, sizeof(uint32_t));
12334     *ptr += sizeof(uint32_t);
12335     memcpy((VkFormatFeatureFlags*)&forUnmarshaling->drmFormatModifierTilingFeatures, *ptr,
12336            sizeof(VkFormatFeatureFlags));
12337     *ptr += sizeof(VkFormatFeatureFlags);
12338 }
12339 
reservedunmarshal_VkDrmFormatModifierPropertiesListEXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierPropertiesListEXT * forUnmarshaling,uint8_t ** ptr)12340 void reservedunmarshal_VkDrmFormatModifierPropertiesListEXT(
12341     VulkanStream* vkStream, VkStructureType rootType,
12342     VkDrmFormatModifierPropertiesListEXT* forUnmarshaling, uint8_t** ptr) {
12343     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12344     *ptr += sizeof(VkStructureType);
12345     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12346         rootType = forUnmarshaling->sType;
12347     }
12348     uint32_t pNext_size;
12349     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12350     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12351     *ptr += sizeof(uint32_t);
12352     forUnmarshaling->pNext = nullptr;
12353     if (pNext_size) {
12354         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12355         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12356         *ptr += sizeof(VkStructureType);
12357         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12358         vkStream->alloc((void**)&forUnmarshaling->pNext,
12359                         goldfish_vk_extension_struct_size_with_stream_features(
12360                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12361         *(VkStructureType*)forUnmarshaling->pNext = extType;
12362         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12363                                            ptr);
12364     }
12365     memcpy((uint32_t*)&forUnmarshaling->drmFormatModifierCount, *ptr, sizeof(uint32_t));
12366     *ptr += sizeof(uint32_t);
12367     // WARNING PTR CHECK
12368     memcpy((VkDrmFormatModifierPropertiesEXT**)&forUnmarshaling->pDrmFormatModifierProperties,
12369            (*ptr), 8);
12370     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDrmFormatModifierProperties);
12371     *ptr += 8;
12372     if (forUnmarshaling->pDrmFormatModifierProperties) {
12373         vkStream->alloc(
12374             (void**)&forUnmarshaling->pDrmFormatModifierProperties,
12375             forUnmarshaling->drmFormatModifierCount * sizeof(VkDrmFormatModifierPropertiesEXT));
12376         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->drmFormatModifierCount; ++i) {
12377             reservedunmarshal_VkDrmFormatModifierPropertiesEXT(
12378                 vkStream, rootType,
12379                 (VkDrmFormatModifierPropertiesEXT*)(forUnmarshaling->pDrmFormatModifierProperties +
12380                                                     i),
12381                 ptr);
12382         }
12383     }
12384 }
12385 
reservedunmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageDrmFormatModifierInfoEXT * forUnmarshaling,uint8_t ** ptr)12386 void reservedunmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
12387     VulkanStream* vkStream, VkStructureType rootType,
12388     VkPhysicalDeviceImageDrmFormatModifierInfoEXT* forUnmarshaling, uint8_t** ptr) {
12389     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12390     *ptr += sizeof(VkStructureType);
12391     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12392         rootType = forUnmarshaling->sType;
12393     }
12394     uint32_t pNext_size;
12395     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12396     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12397     *ptr += sizeof(uint32_t);
12398     forUnmarshaling->pNext = nullptr;
12399     if (pNext_size) {
12400         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12401         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12402         *ptr += sizeof(VkStructureType);
12403         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12404         vkStream->alloc((void**)&forUnmarshaling->pNext,
12405                         goldfish_vk_extension_struct_size_with_stream_features(
12406                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12407         *(VkStructureType*)forUnmarshaling->pNext = extType;
12408         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12409                                            ptr);
12410     }
12411     memcpy((uint64_t*)&forUnmarshaling->drmFormatModifier, *ptr, sizeof(uint64_t));
12412     *ptr += sizeof(uint64_t);
12413     memcpy((VkSharingMode*)&forUnmarshaling->sharingMode, *ptr, sizeof(VkSharingMode));
12414     *ptr += sizeof(VkSharingMode);
12415     memcpy((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, *ptr, sizeof(uint32_t));
12416     *ptr += sizeof(uint32_t);
12417     // WARNING PTR CHECK
12418     memcpy((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, (*ptr), 8);
12419     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pQueueFamilyIndices);
12420     *ptr += 8;
12421     if (forUnmarshaling->pQueueFamilyIndices) {
12422         vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices,
12423                         forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
12424         memcpy((uint32_t*)forUnmarshaling->pQueueFamilyIndices, *ptr,
12425                forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
12426         *ptr += forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t);
12427     }
12428 }
12429 
reservedunmarshal_VkImageDrmFormatModifierListCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageDrmFormatModifierListCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)12430 void reservedunmarshal_VkImageDrmFormatModifierListCreateInfoEXT(
12431     VulkanStream* vkStream, VkStructureType rootType,
12432     VkImageDrmFormatModifierListCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12433     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12434     *ptr += sizeof(VkStructureType);
12435     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12436         rootType = forUnmarshaling->sType;
12437     }
12438     uint32_t pNext_size;
12439     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12440     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12441     *ptr += sizeof(uint32_t);
12442     forUnmarshaling->pNext = nullptr;
12443     if (pNext_size) {
12444         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12445         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12446         *ptr += sizeof(VkStructureType);
12447         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12448         vkStream->alloc((void**)&forUnmarshaling->pNext,
12449                         goldfish_vk_extension_struct_size_with_stream_features(
12450                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12451         *(VkStructureType*)forUnmarshaling->pNext = extType;
12452         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12453                                            ptr);
12454     }
12455     memcpy((uint32_t*)&forUnmarshaling->drmFormatModifierCount, *ptr, sizeof(uint32_t));
12456     *ptr += sizeof(uint32_t);
12457     vkStream->alloc((void**)&forUnmarshaling->pDrmFormatModifiers,
12458                     forUnmarshaling->drmFormatModifierCount * sizeof(const uint64_t));
12459     memcpy((uint64_t*)forUnmarshaling->pDrmFormatModifiers, *ptr,
12460            forUnmarshaling->drmFormatModifierCount * sizeof(const uint64_t));
12461     *ptr += forUnmarshaling->drmFormatModifierCount * sizeof(const uint64_t);
12462 }
12463 
reservedunmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageDrmFormatModifierExplicitCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)12464 void reservedunmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
12465     VulkanStream* vkStream, VkStructureType rootType,
12466     VkImageDrmFormatModifierExplicitCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12467     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12468     *ptr += sizeof(VkStructureType);
12469     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12470         rootType = forUnmarshaling->sType;
12471     }
12472     uint32_t pNext_size;
12473     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12474     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12475     *ptr += sizeof(uint32_t);
12476     forUnmarshaling->pNext = nullptr;
12477     if (pNext_size) {
12478         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12479         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12480         *ptr += sizeof(VkStructureType);
12481         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12482         vkStream->alloc((void**)&forUnmarshaling->pNext,
12483                         goldfish_vk_extension_struct_size_with_stream_features(
12484                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12485         *(VkStructureType*)forUnmarshaling->pNext = extType;
12486         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12487                                            ptr);
12488     }
12489     memcpy((uint64_t*)&forUnmarshaling->drmFormatModifier, *ptr, sizeof(uint64_t));
12490     *ptr += sizeof(uint64_t);
12491     memcpy((uint32_t*)&forUnmarshaling->drmFormatModifierPlaneCount, *ptr, sizeof(uint32_t));
12492     *ptr += sizeof(uint32_t);
12493     vkStream->alloc(
12494         (void**)&forUnmarshaling->pPlaneLayouts,
12495         forUnmarshaling->drmFormatModifierPlaneCount * sizeof(const VkSubresourceLayout));
12496     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->drmFormatModifierPlaneCount; ++i) {
12497         reservedunmarshal_VkSubresourceLayout(
12498             vkStream, rootType, (VkSubresourceLayout*)(forUnmarshaling->pPlaneLayouts + i), ptr);
12499     }
12500 }
12501 
reservedunmarshal_VkImageDrmFormatModifierPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageDrmFormatModifierPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12502 void reservedunmarshal_VkImageDrmFormatModifierPropertiesEXT(
12503     VulkanStream* vkStream, VkStructureType rootType,
12504     VkImageDrmFormatModifierPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12505     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12506     *ptr += sizeof(VkStructureType);
12507     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12508         rootType = forUnmarshaling->sType;
12509     }
12510     uint32_t pNext_size;
12511     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12512     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12513     *ptr += sizeof(uint32_t);
12514     forUnmarshaling->pNext = nullptr;
12515     if (pNext_size) {
12516         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12517         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12518         *ptr += sizeof(VkStructureType);
12519         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12520         vkStream->alloc((void**)&forUnmarshaling->pNext,
12521                         goldfish_vk_extension_struct_size_with_stream_features(
12522                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12523         *(VkStructureType*)forUnmarshaling->pNext = extType;
12524         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12525                                            ptr);
12526     }
12527     memcpy((uint64_t*)&forUnmarshaling->drmFormatModifier, *ptr, sizeof(uint64_t));
12528     *ptr += sizeof(uint64_t);
12529 }
12530 
reservedunmarshal_VkDrmFormatModifierProperties2EXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierProperties2EXT * forUnmarshaling,uint8_t ** ptr)12531 void reservedunmarshal_VkDrmFormatModifierProperties2EXT(
12532     VulkanStream* vkStream, VkStructureType rootType,
12533     VkDrmFormatModifierProperties2EXT* forUnmarshaling, uint8_t** ptr) {
12534     memcpy((uint64_t*)&forUnmarshaling->drmFormatModifier, *ptr, sizeof(uint64_t));
12535     *ptr += sizeof(uint64_t);
12536     memcpy((uint32_t*)&forUnmarshaling->drmFormatModifierPlaneCount, *ptr, sizeof(uint32_t));
12537     *ptr += sizeof(uint32_t);
12538     memcpy((VkFormatFeatureFlags2*)&forUnmarshaling->drmFormatModifierTilingFeatures, *ptr,
12539            sizeof(VkFormatFeatureFlags2));
12540     *ptr += sizeof(VkFormatFeatureFlags2);
12541 }
12542 
reservedunmarshal_VkDrmFormatModifierPropertiesList2EXT(VulkanStream * vkStream,VkStructureType rootType,VkDrmFormatModifierPropertiesList2EXT * forUnmarshaling,uint8_t ** ptr)12543 void reservedunmarshal_VkDrmFormatModifierPropertiesList2EXT(
12544     VulkanStream* vkStream, VkStructureType rootType,
12545     VkDrmFormatModifierPropertiesList2EXT* forUnmarshaling, uint8_t** ptr) {
12546     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12547     *ptr += sizeof(VkStructureType);
12548     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12549         rootType = forUnmarshaling->sType;
12550     }
12551     uint32_t pNext_size;
12552     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12553     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12554     *ptr += sizeof(uint32_t);
12555     forUnmarshaling->pNext = nullptr;
12556     if (pNext_size) {
12557         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12558         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12559         *ptr += sizeof(VkStructureType);
12560         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12561         vkStream->alloc((void**)&forUnmarshaling->pNext,
12562                         goldfish_vk_extension_struct_size_with_stream_features(
12563                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12564         *(VkStructureType*)forUnmarshaling->pNext = extType;
12565         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12566                                            ptr);
12567     }
12568     memcpy((uint32_t*)&forUnmarshaling->drmFormatModifierCount, *ptr, sizeof(uint32_t));
12569     *ptr += sizeof(uint32_t);
12570     // WARNING PTR CHECK
12571     memcpy((VkDrmFormatModifierProperties2EXT**)&forUnmarshaling->pDrmFormatModifierProperties,
12572            (*ptr), 8);
12573     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDrmFormatModifierProperties);
12574     *ptr += 8;
12575     if (forUnmarshaling->pDrmFormatModifierProperties) {
12576         vkStream->alloc(
12577             (void**)&forUnmarshaling->pDrmFormatModifierProperties,
12578             forUnmarshaling->drmFormatModifierCount * sizeof(VkDrmFormatModifierProperties2EXT));
12579         for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->drmFormatModifierCount; ++i) {
12580             reservedunmarshal_VkDrmFormatModifierProperties2EXT(
12581                 vkStream, rootType,
12582                 (VkDrmFormatModifierProperties2EXT*)(forUnmarshaling->pDrmFormatModifierProperties +
12583                                                      i),
12584                 ptr);
12585         }
12586     }
12587 }
12588 
12589 #endif
12590 #ifdef VK_EXT_external_memory_host
reservedunmarshal_VkImportMemoryHostPointerInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkImportMemoryHostPointerInfoEXT * forUnmarshaling,uint8_t ** ptr)12591 void reservedunmarshal_VkImportMemoryHostPointerInfoEXT(
12592     VulkanStream* vkStream, VkStructureType rootType,
12593     VkImportMemoryHostPointerInfoEXT* forUnmarshaling, uint8_t** ptr) {
12594     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12595     *ptr += sizeof(VkStructureType);
12596     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12597         rootType = forUnmarshaling->sType;
12598     }
12599     uint32_t pNext_size;
12600     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12601     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12602     *ptr += sizeof(uint32_t);
12603     forUnmarshaling->pNext = nullptr;
12604     if (pNext_size) {
12605         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12606         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12607         *ptr += sizeof(VkStructureType);
12608         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12609         vkStream->alloc((void**)&forUnmarshaling->pNext,
12610                         goldfish_vk_extension_struct_size_with_stream_features(
12611                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12612         *(VkStructureType*)forUnmarshaling->pNext = extType;
12613         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12614                                            ptr);
12615     }
12616     memcpy((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, *ptr,
12617            sizeof(VkExternalMemoryHandleTypeFlagBits));
12618     *ptr += sizeof(VkExternalMemoryHandleTypeFlagBits);
12619     vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(uint8_t));
12620     memcpy((void*)forUnmarshaling->pHostPointer, *ptr, sizeof(uint8_t));
12621     *ptr += sizeof(uint8_t);
12622 }
12623 
reservedunmarshal_VkMemoryHostPointerPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkMemoryHostPointerPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12624 void reservedunmarshal_VkMemoryHostPointerPropertiesEXT(
12625     VulkanStream* vkStream, VkStructureType rootType,
12626     VkMemoryHostPointerPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12627     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12628     *ptr += sizeof(VkStructureType);
12629     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12630         rootType = forUnmarshaling->sType;
12631     }
12632     uint32_t pNext_size;
12633     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12634     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12635     *ptr += sizeof(uint32_t);
12636     forUnmarshaling->pNext = nullptr;
12637     if (pNext_size) {
12638         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12639         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12640         *ptr += sizeof(VkStructureType);
12641         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12642         vkStream->alloc((void**)&forUnmarshaling->pNext,
12643                         goldfish_vk_extension_struct_size_with_stream_features(
12644                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12645         *(VkStructureType*)forUnmarshaling->pNext = extType;
12646         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12647                                            ptr);
12648     }
12649     memcpy((uint32_t*)&forUnmarshaling->memoryTypeBits, *ptr, sizeof(uint32_t));
12650     *ptr += sizeof(uint32_t);
12651 }
12652 
reservedunmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExternalMemoryHostPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12653 void reservedunmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
12654     VulkanStream* vkStream, VkStructureType rootType,
12655     VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12656     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12657     *ptr += sizeof(VkStructureType);
12658     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12659         rootType = forUnmarshaling->sType;
12660     }
12661     uint32_t pNext_size;
12662     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12663     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12664     *ptr += sizeof(uint32_t);
12665     forUnmarshaling->pNext = nullptr;
12666     if (pNext_size) {
12667         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12668         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12669         *ptr += sizeof(VkStructureType);
12670         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12671         vkStream->alloc((void**)&forUnmarshaling->pNext,
12672                         goldfish_vk_extension_struct_size_with_stream_features(
12673                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12674         *(VkStructureType*)forUnmarshaling->pNext = extType;
12675         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12676                                            ptr);
12677     }
12678     memcpy((VkDeviceSize*)&forUnmarshaling->minImportedHostPointerAlignment, *ptr,
12679            sizeof(VkDeviceSize));
12680     *ptr += sizeof(VkDeviceSize);
12681 }
12682 
12683 #endif
12684 #ifdef VK_EXT_vertex_attribute_divisor
reservedunmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12685 void reservedunmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
12686     VulkanStream* vkStream, VkStructureType rootType,
12687     VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12688     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12689     *ptr += sizeof(VkStructureType);
12690     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12691         rootType = forUnmarshaling->sType;
12692     }
12693     uint32_t pNext_size;
12694     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12695     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12696     *ptr += sizeof(uint32_t);
12697     forUnmarshaling->pNext = nullptr;
12698     if (pNext_size) {
12699         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12700         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12701         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12708                                            ptr);
12709     }
12710     memcpy((uint32_t*)&forUnmarshaling->maxVertexAttribDivisor, *ptr, sizeof(uint32_t));
12711     *ptr += sizeof(uint32_t);
12712 }
12713 
reservedunmarshal_VkVertexInputBindingDivisorDescriptionEXT(VulkanStream * vkStream,VkStructureType rootType,VkVertexInputBindingDivisorDescriptionEXT * forUnmarshaling,uint8_t ** ptr)12714 void reservedunmarshal_VkVertexInputBindingDivisorDescriptionEXT(
12715     VulkanStream* vkStream, VkStructureType rootType,
12716     VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling, uint8_t** ptr) {
12717     memcpy((uint32_t*)&forUnmarshaling->binding, *ptr, sizeof(uint32_t));
12718     *ptr += sizeof(uint32_t);
12719     memcpy((uint32_t*)&forUnmarshaling->divisor, *ptr, sizeof(uint32_t));
12720     *ptr += sizeof(uint32_t);
12721 }
12722 
reservedunmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineVertexInputDivisorStateCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)12723 void reservedunmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
12724     VulkanStream* vkStream, VkStructureType rootType,
12725     VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12726     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12727     *ptr += sizeof(VkStructureType);
12728     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12729         rootType = forUnmarshaling->sType;
12730     }
12731     uint32_t pNext_size;
12732     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12733     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12734     *ptr += sizeof(uint32_t);
12735     forUnmarshaling->pNext = nullptr;
12736     if (pNext_size) {
12737         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12738         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12739         *ptr += sizeof(VkStructureType);
12740         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12741         vkStream->alloc((void**)&forUnmarshaling->pNext,
12742                         goldfish_vk_extension_struct_size_with_stream_features(
12743                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12744         *(VkStructureType*)forUnmarshaling->pNext = extType;
12745         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12746                                            ptr);
12747     }
12748     memcpy((uint32_t*)&forUnmarshaling->vertexBindingDivisorCount, *ptr, sizeof(uint32_t));
12749     *ptr += sizeof(uint32_t);
12750     vkStream->alloc((void**)&forUnmarshaling->pVertexBindingDivisors,
12751                     forUnmarshaling->vertexBindingDivisorCount *
12752                         sizeof(const VkVertexInputBindingDivisorDescriptionEXT));
12753     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexBindingDivisorCount; ++i) {
12754         reservedunmarshal_VkVertexInputBindingDivisorDescriptionEXT(
12755             vkStream, rootType,
12756             (VkVertexInputBindingDivisorDescriptionEXT*)(forUnmarshaling->pVertexBindingDivisors +
12757                                                          i),
12758             ptr);
12759     }
12760 }
12761 
reservedunmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT * forUnmarshaling,uint8_t ** ptr)12762 void reservedunmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
12763     VulkanStream* vkStream, VkStructureType rootType,
12764     VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
12765     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12766     *ptr += sizeof(VkStructureType);
12767     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12768         rootType = forUnmarshaling->sType;
12769     }
12770     uint32_t pNext_size;
12771     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12772     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12773     *ptr += sizeof(uint32_t);
12774     forUnmarshaling->pNext = nullptr;
12775     if (pNext_size) {
12776         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12777         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12778         *ptr += sizeof(VkStructureType);
12779         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12780         vkStream->alloc((void**)&forUnmarshaling->pNext,
12781                         goldfish_vk_extension_struct_size_with_stream_features(
12782                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12783         *(VkStructureType*)forUnmarshaling->pNext = extType;
12784         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12785                                            ptr);
12786     }
12787     memcpy((VkBool32*)&forUnmarshaling->vertexAttributeInstanceRateDivisor, *ptr, sizeof(VkBool32));
12788     *ptr += sizeof(VkBool32);
12789     memcpy((VkBool32*)&forUnmarshaling->vertexAttributeInstanceRateZeroDivisor, *ptr,
12790            sizeof(VkBool32));
12791     *ptr += sizeof(VkBool32);
12792 }
12793 
12794 #endif
12795 #ifdef VK_EXT_fragment_density_map
reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFragmentDensityMapFeaturesEXT * forUnmarshaling,uint8_t ** ptr)12796 void reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
12797     VulkanStream* vkStream, VkStructureType rootType,
12798     VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
12799     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12800     *ptr += sizeof(VkStructureType);
12801     forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
12802     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12803         rootType = forUnmarshaling->sType;
12804     }
12805     uint32_t pNext_size;
12806     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12807     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12808     *ptr += sizeof(uint32_t);
12809     forUnmarshaling->pNext = nullptr;
12810     if (pNext_size) {
12811         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12812         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12813         *ptr += sizeof(VkStructureType);
12814         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12815         vkStream->alloc((void**)&forUnmarshaling->pNext,
12816                         goldfish_vk_extension_struct_size_with_stream_features(
12817                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12818         *(VkStructureType*)forUnmarshaling->pNext = extType;
12819         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12820                                            ptr);
12821     }
12822     memcpy((VkBool32*)&forUnmarshaling->fragmentDensityMap, *ptr, sizeof(VkBool32));
12823     *ptr += sizeof(VkBool32);
12824     memcpy((VkBool32*)&forUnmarshaling->fragmentDensityMapDynamic, *ptr, sizeof(VkBool32));
12825     *ptr += sizeof(VkBool32);
12826     memcpy((VkBool32*)&forUnmarshaling->fragmentDensityMapNonSubsampledImages, *ptr,
12827            sizeof(VkBool32));
12828     *ptr += sizeof(VkBool32);
12829 }
12830 
reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceFragmentDensityMapPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12831 void reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
12832     VulkanStream* vkStream, VkStructureType rootType,
12833     VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12834     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12835     *ptr += sizeof(VkStructureType);
12836     forUnmarshaling->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
12837     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12838         rootType = forUnmarshaling->sType;
12839     }
12840     uint32_t pNext_size;
12841     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12842     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12843     *ptr += sizeof(uint32_t);
12844     forUnmarshaling->pNext = nullptr;
12845     if (pNext_size) {
12846         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12847         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12848         *ptr += sizeof(VkStructureType);
12849         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12850         vkStream->alloc((void**)&forUnmarshaling->pNext,
12851                         goldfish_vk_extension_struct_size_with_stream_features(
12852                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12853         *(VkStructureType*)forUnmarshaling->pNext = extType;
12854         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12855                                            ptr);
12856     }
12857     reservedunmarshal_VkExtent2D(vkStream, rootType,
12858                                  (VkExtent2D*)(&forUnmarshaling->minFragmentDensityTexelSize), ptr);
12859     reservedunmarshal_VkExtent2D(vkStream, rootType,
12860                                  (VkExtent2D*)(&forUnmarshaling->maxFragmentDensityTexelSize), ptr);
12861     memcpy((VkBool32*)&forUnmarshaling->fragmentDensityInvocations, *ptr, sizeof(VkBool32));
12862     *ptr += sizeof(VkBool32);
12863 }
12864 
reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkRenderPassFragmentDensityMapCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)12865 void reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
12866     VulkanStream* vkStream, VkStructureType rootType,
12867     VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
12868     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12869     *ptr += sizeof(VkStructureType);
12870     forUnmarshaling->sType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
12871     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12872         rootType = forUnmarshaling->sType;
12873     }
12874     uint32_t pNext_size;
12875     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12876     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12877     *ptr += sizeof(uint32_t);
12878     forUnmarshaling->pNext = nullptr;
12879     if (pNext_size) {
12880         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12881         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12882         *ptr += sizeof(VkStructureType);
12883         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12884         vkStream->alloc((void**)&forUnmarshaling->pNext,
12885                         goldfish_vk_extension_struct_size_with_stream_features(
12886                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12887         *(VkStructureType*)forUnmarshaling->pNext = extType;
12888         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12889                                            ptr);
12890     }
12891     reservedunmarshal_VkAttachmentReference(
12892         vkStream, rootType,
12893         (VkAttachmentReference*)(&forUnmarshaling->fragmentDensityMapAttachment), ptr);
12894 }
12895 
12896 #endif
12897 #ifdef VK_EXT_validation_features
reservedunmarshal_VkValidationFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkValidationFeaturesEXT * forUnmarshaling,uint8_t ** ptr)12898 void reservedunmarshal_VkValidationFeaturesEXT(VulkanStream* vkStream, VkStructureType rootType,
12899                                                VkValidationFeaturesEXT* forUnmarshaling,
12900                                                uint8_t** ptr) {
12901     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12902     *ptr += sizeof(VkStructureType);
12903     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12904         rootType = forUnmarshaling->sType;
12905     }
12906     uint32_t pNext_size;
12907     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12908     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12909     *ptr += sizeof(uint32_t);
12910     forUnmarshaling->pNext = nullptr;
12911     if (pNext_size) {
12912         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12913         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12914         *ptr += sizeof(VkStructureType);
12915         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12916         vkStream->alloc((void**)&forUnmarshaling->pNext,
12917                         goldfish_vk_extension_struct_size_with_stream_features(
12918                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12919         *(VkStructureType*)forUnmarshaling->pNext = extType;
12920         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12921                                            ptr);
12922     }
12923     memcpy((uint32_t*)&forUnmarshaling->enabledValidationFeatureCount, *ptr, sizeof(uint32_t));
12924     *ptr += sizeof(uint32_t);
12925     vkStream->alloc((void**)&forUnmarshaling->pEnabledValidationFeatures,
12926                     forUnmarshaling->enabledValidationFeatureCount *
12927                         sizeof(const VkValidationFeatureEnableEXT));
12928     memcpy((VkValidationFeatureEnableEXT*)forUnmarshaling->pEnabledValidationFeatures, *ptr,
12929            forUnmarshaling->enabledValidationFeatureCount *
12930                sizeof(const VkValidationFeatureEnableEXT));
12931     *ptr +=
12932         forUnmarshaling->enabledValidationFeatureCount * sizeof(const VkValidationFeatureEnableEXT);
12933     memcpy((uint32_t*)&forUnmarshaling->disabledValidationFeatureCount, *ptr, sizeof(uint32_t));
12934     *ptr += sizeof(uint32_t);
12935     vkStream->alloc((void**)&forUnmarshaling->pDisabledValidationFeatures,
12936                     forUnmarshaling->disabledValidationFeatureCount *
12937                         sizeof(const VkValidationFeatureDisableEXT));
12938     memcpy((VkValidationFeatureDisableEXT*)forUnmarshaling->pDisabledValidationFeatures, *ptr,
12939            forUnmarshaling->disabledValidationFeatureCount *
12940                sizeof(const VkValidationFeatureDisableEXT));
12941     *ptr += forUnmarshaling->disabledValidationFeatureCount *
12942             sizeof(const VkValidationFeatureDisableEXT);
12943 }
12944 
12945 #endif
12946 #ifdef VK_EXT_provoking_vertex
reservedunmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProvokingVertexFeaturesEXT * forUnmarshaling,uint8_t ** ptr)12947 void reservedunmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
12948     VulkanStream* vkStream, VkStructureType rootType,
12949     VkPhysicalDeviceProvokingVertexFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
12950     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12951     *ptr += sizeof(VkStructureType);
12952     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12953         rootType = forUnmarshaling->sType;
12954     }
12955     uint32_t pNext_size;
12956     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12957     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12958     *ptr += sizeof(uint32_t);
12959     forUnmarshaling->pNext = nullptr;
12960     if (pNext_size) {
12961         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12962         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12963         *ptr += sizeof(VkStructureType);
12964         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12965         vkStream->alloc((void**)&forUnmarshaling->pNext,
12966                         goldfish_vk_extension_struct_size_with_stream_features(
12967                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
12968         *(VkStructureType*)forUnmarshaling->pNext = extType;
12969         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
12970                                            ptr);
12971     }
12972     memcpy((VkBool32*)&forUnmarshaling->provokingVertexLast, *ptr, sizeof(VkBool32));
12973     *ptr += sizeof(VkBool32);
12974     memcpy((VkBool32*)&forUnmarshaling->transformFeedbackPreservesProvokingVertex, *ptr,
12975            sizeof(VkBool32));
12976     *ptr += sizeof(VkBool32);
12977 }
12978 
reservedunmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceProvokingVertexPropertiesEXT * forUnmarshaling,uint8_t ** ptr)12979 void reservedunmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
12980     VulkanStream* vkStream, VkStructureType rootType,
12981     VkPhysicalDeviceProvokingVertexPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
12982     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
12983     *ptr += sizeof(VkStructureType);
12984     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
12985         rootType = forUnmarshaling->sType;
12986     }
12987     uint32_t pNext_size;
12988     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
12989     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
12990     *ptr += sizeof(uint32_t);
12991     forUnmarshaling->pNext = nullptr;
12992     if (pNext_size) {
12993         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
12994         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
12995         *ptr += sizeof(VkStructureType);
12996         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
12997         vkStream->alloc((void**)&forUnmarshaling->pNext,
12998                         goldfish_vk_extension_struct_size_with_stream_features(
12999                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13000         *(VkStructureType*)forUnmarshaling->pNext = extType;
13001         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13002                                            ptr);
13003     }
13004     memcpy((VkBool32*)&forUnmarshaling->provokingVertexModePerPipeline, *ptr, sizeof(VkBool32));
13005     *ptr += sizeof(VkBool32);
13006     memcpy((VkBool32*)&forUnmarshaling->transformFeedbackPreservesTriangleFanProvokingVertex, *ptr,
13007            sizeof(VkBool32));
13008     *ptr += sizeof(VkBool32);
13009 }
13010 
reservedunmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineRasterizationProvokingVertexStateCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)13011 void reservedunmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
13012     VulkanStream* vkStream, VkStructureType rootType,
13013     VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
13014     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13015     *ptr += sizeof(VkStructureType);
13016     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13017         rootType = forUnmarshaling->sType;
13018     }
13019     uint32_t pNext_size;
13020     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13021     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13022     *ptr += sizeof(uint32_t);
13023     forUnmarshaling->pNext = nullptr;
13024     if (pNext_size) {
13025         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13026         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13027         *ptr += sizeof(VkStructureType);
13028         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13029         vkStream->alloc((void**)&forUnmarshaling->pNext,
13030                         goldfish_vk_extension_struct_size_with_stream_features(
13031                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13032         *(VkStructureType*)forUnmarshaling->pNext = extType;
13033         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13034                                            ptr);
13035     }
13036     memcpy((VkProvokingVertexModeEXT*)&forUnmarshaling->provokingVertexMode, *ptr,
13037            sizeof(VkProvokingVertexModeEXT));
13038     *ptr += sizeof(VkProvokingVertexModeEXT);
13039 }
13040 
13041 #endif
13042 #ifdef VK_EXT_index_type_uint8
reservedunmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceIndexTypeUint8FeaturesEXT * forUnmarshaling,uint8_t ** ptr)13043 void reservedunmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
13044     VulkanStream* vkStream, VkStructureType rootType,
13045     VkPhysicalDeviceIndexTypeUint8FeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13046     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13047     *ptr += sizeof(VkStructureType);
13048     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13049         rootType = forUnmarshaling->sType;
13050     }
13051     uint32_t pNext_size;
13052     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13053     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13054     *ptr += sizeof(uint32_t);
13055     forUnmarshaling->pNext = nullptr;
13056     if (pNext_size) {
13057         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13058         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13059         *ptr += sizeof(VkStructureType);
13060         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13061         vkStream->alloc((void**)&forUnmarshaling->pNext,
13062                         goldfish_vk_extension_struct_size_with_stream_features(
13063                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13064         *(VkStructureType*)forUnmarshaling->pNext = extType;
13065         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13066                                            ptr);
13067     }
13068     memcpy((VkBool32*)&forUnmarshaling->indexTypeUint8, *ptr, sizeof(VkBool32));
13069     *ptr += sizeof(VkBool32);
13070 }
13071 
13072 #endif
13073 #ifdef VK_EXT_extended_dynamic_state
reservedunmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExtendedDynamicStateFeaturesEXT * forUnmarshaling,uint8_t ** ptr)13074 void reservedunmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
13075     VulkanStream* vkStream, VkStructureType rootType,
13076     VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13077     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13078     *ptr += sizeof(VkStructureType);
13079     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13080         rootType = forUnmarshaling->sType;
13081     }
13082     uint32_t pNext_size;
13083     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13084     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13085     *ptr += sizeof(uint32_t);
13086     forUnmarshaling->pNext = nullptr;
13087     if (pNext_size) {
13088         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13089         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13090         *ptr += sizeof(VkStructureType);
13091         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13092         vkStream->alloc((void**)&forUnmarshaling->pNext,
13093                         goldfish_vk_extension_struct_size_with_stream_features(
13094                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13095         *(VkStructureType*)forUnmarshaling->pNext = extType;
13096         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13097                                            ptr);
13098     }
13099     memcpy((VkBool32*)&forUnmarshaling->extendedDynamicState, *ptr, sizeof(VkBool32));
13100     *ptr += sizeof(VkBool32);
13101 }
13102 
13103 #endif
13104 #ifdef VK_EXT_host_image_copy
reservedunmarshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceHostImageCopyFeaturesEXT * forUnmarshaling,uint8_t ** ptr)13105 void reservedunmarshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(
13106     VulkanStream* vkStream, VkStructureType rootType,
13107     VkPhysicalDeviceHostImageCopyFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13108     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13109     *ptr += sizeof(VkStructureType);
13110     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13111         rootType = forUnmarshaling->sType;
13112     }
13113     uint32_t pNext_size;
13114     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13115     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13116     *ptr += sizeof(uint32_t);
13117     forUnmarshaling->pNext = nullptr;
13118     if (pNext_size) {
13119         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13120         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13121         *ptr += sizeof(VkStructureType);
13122         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13123         vkStream->alloc((void**)&forUnmarshaling->pNext,
13124                         goldfish_vk_extension_struct_size_with_stream_features(
13125                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13126         *(VkStructureType*)forUnmarshaling->pNext = extType;
13127         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13128                                            ptr);
13129     }
13130     memcpy((VkBool32*)&forUnmarshaling->hostImageCopy, *ptr, sizeof(VkBool32));
13131     *ptr += sizeof(VkBool32);
13132 }
13133 
reservedunmarshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceHostImageCopyPropertiesEXT * forUnmarshaling,uint8_t ** ptr)13134 void reservedunmarshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(
13135     VulkanStream* vkStream, VkStructureType rootType,
13136     VkPhysicalDeviceHostImageCopyPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
13137     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13138     *ptr += sizeof(VkStructureType);
13139     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13140         rootType = forUnmarshaling->sType;
13141     }
13142     uint32_t pNext_size;
13143     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13144     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13145     *ptr += sizeof(uint32_t);
13146     forUnmarshaling->pNext = nullptr;
13147     if (pNext_size) {
13148         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13149         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13150         *ptr += sizeof(VkStructureType);
13151         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13152         vkStream->alloc((void**)&forUnmarshaling->pNext,
13153                         goldfish_vk_extension_struct_size_with_stream_features(
13154                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13155         *(VkStructureType*)forUnmarshaling->pNext = extType;
13156         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13157                                            ptr);
13158     }
13159     memcpy((uint32_t*)&forUnmarshaling->copySrcLayoutCount, *ptr, sizeof(uint32_t));
13160     *ptr += sizeof(uint32_t);
13161     // WARNING PTR CHECK
13162     memcpy((VkImageLayout**)&forUnmarshaling->pCopySrcLayouts, (*ptr), 8);
13163     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pCopySrcLayouts);
13164     *ptr += 8;
13165     if (forUnmarshaling->pCopySrcLayouts) {
13166         vkStream->alloc((void**)&forUnmarshaling->pCopySrcLayouts,
13167                         forUnmarshaling->copySrcLayoutCount * sizeof(VkImageLayout));
13168         memcpy((VkImageLayout*)forUnmarshaling->pCopySrcLayouts, *ptr,
13169                forUnmarshaling->copySrcLayoutCount * sizeof(VkImageLayout));
13170         *ptr += forUnmarshaling->copySrcLayoutCount * sizeof(VkImageLayout);
13171     }
13172     memcpy((uint32_t*)&forUnmarshaling->copyDstLayoutCount, *ptr, sizeof(uint32_t));
13173     *ptr += sizeof(uint32_t);
13174     // WARNING PTR CHECK
13175     memcpy((VkImageLayout**)&forUnmarshaling->pCopyDstLayouts, (*ptr), 8);
13176     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pCopyDstLayouts);
13177     *ptr += 8;
13178     if (forUnmarshaling->pCopyDstLayouts) {
13179         vkStream->alloc((void**)&forUnmarshaling->pCopyDstLayouts,
13180                         forUnmarshaling->copyDstLayoutCount * sizeof(VkImageLayout));
13181         memcpy((VkImageLayout*)forUnmarshaling->pCopyDstLayouts, *ptr,
13182                forUnmarshaling->copyDstLayoutCount * sizeof(VkImageLayout));
13183         *ptr += forUnmarshaling->copyDstLayoutCount * sizeof(VkImageLayout);
13184     }
13185     memcpy((uint8_t*)forUnmarshaling->optimalTilingLayoutUUID, *ptr,
13186            VK_UUID_SIZE * sizeof(uint8_t));
13187     *ptr += VK_UUID_SIZE * sizeof(uint8_t);
13188     memcpy((VkBool32*)&forUnmarshaling->identicalMemoryTypeRequirements, *ptr, sizeof(VkBool32));
13189     *ptr += sizeof(VkBool32);
13190 }
13191 
reservedunmarshal_VkMemoryToImageCopyEXT(VulkanStream * vkStream,VkStructureType rootType,VkMemoryToImageCopyEXT * forUnmarshaling,uint8_t ** ptr)13192 void reservedunmarshal_VkMemoryToImageCopyEXT(VulkanStream* vkStream, VkStructureType rootType,
13193                                               VkMemoryToImageCopyEXT* forUnmarshaling,
13194                                               uint8_t** ptr) {
13195     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13196     *ptr += sizeof(VkStructureType);
13197     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13198         rootType = forUnmarshaling->sType;
13199     }
13200     uint32_t pNext_size;
13201     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13202     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13203     *ptr += sizeof(uint32_t);
13204     forUnmarshaling->pNext = nullptr;
13205     if (pNext_size) {
13206         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13207         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13208         *ptr += sizeof(VkStructureType);
13209         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13210         vkStream->alloc((void**)&forUnmarshaling->pNext,
13211                         goldfish_vk_extension_struct_size_with_stream_features(
13212                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13213         *(VkStructureType*)forUnmarshaling->pNext = extType;
13214         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13215                                            ptr);
13216     }
13217     vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(const uint8_t));
13218     memcpy((void*)forUnmarshaling->pHostPointer, *ptr, sizeof(const uint8_t));
13219     *ptr += sizeof(const uint8_t);
13220     memcpy((uint32_t*)&forUnmarshaling->memoryRowLength, *ptr, sizeof(uint32_t));
13221     *ptr += sizeof(uint32_t);
13222     memcpy((uint32_t*)&forUnmarshaling->memoryImageHeight, *ptr, sizeof(uint32_t));
13223     *ptr += sizeof(uint32_t);
13224     reservedunmarshal_VkImageSubresourceLayers(
13225         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource), ptr);
13226     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset),
13227                                  ptr);
13228     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent),
13229                                  ptr);
13230 }
13231 
reservedunmarshal_VkImageToMemoryCopyEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageToMemoryCopyEXT * forUnmarshaling,uint8_t ** ptr)13232 void reservedunmarshal_VkImageToMemoryCopyEXT(VulkanStream* vkStream, VkStructureType rootType,
13233                                               VkImageToMemoryCopyEXT* forUnmarshaling,
13234                                               uint8_t** ptr) {
13235     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13236     *ptr += sizeof(VkStructureType);
13237     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13238         rootType = forUnmarshaling->sType;
13239     }
13240     uint32_t pNext_size;
13241     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13242     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13243     *ptr += sizeof(uint32_t);
13244     forUnmarshaling->pNext = nullptr;
13245     if (pNext_size) {
13246         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13247         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13248         *ptr += sizeof(VkStructureType);
13249         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13250         vkStream->alloc((void**)&forUnmarshaling->pNext,
13251                         goldfish_vk_extension_struct_size_with_stream_features(
13252                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13253         *(VkStructureType*)forUnmarshaling->pNext = extType;
13254         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13255                                            ptr);
13256     }
13257     vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(uint8_t));
13258     memcpy((void*)forUnmarshaling->pHostPointer, *ptr, sizeof(uint8_t));
13259     *ptr += sizeof(uint8_t);
13260     memcpy((uint32_t*)&forUnmarshaling->memoryRowLength, *ptr, sizeof(uint32_t));
13261     *ptr += sizeof(uint32_t);
13262     memcpy((uint32_t*)&forUnmarshaling->memoryImageHeight, *ptr, sizeof(uint32_t));
13263     *ptr += sizeof(uint32_t);
13264     reservedunmarshal_VkImageSubresourceLayers(
13265         vkStream, rootType, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource), ptr);
13266     reservedunmarshal_VkOffset3D(vkStream, rootType, (VkOffset3D*)(&forUnmarshaling->imageOffset),
13267                                  ptr);
13268     reservedunmarshal_VkExtent3D(vkStream, rootType, (VkExtent3D*)(&forUnmarshaling->imageExtent),
13269                                  ptr);
13270 }
13271 
reservedunmarshal_VkCopyMemoryToImageInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkCopyMemoryToImageInfoEXT * forUnmarshaling,uint8_t ** ptr)13272 void reservedunmarshal_VkCopyMemoryToImageInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
13273                                                   VkCopyMemoryToImageInfoEXT* forUnmarshaling,
13274                                                   uint8_t** ptr) {
13275     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13276     *ptr += sizeof(VkStructureType);
13277     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13278         rootType = forUnmarshaling->sType;
13279     }
13280     uint32_t pNext_size;
13281     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13282     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13283     *ptr += sizeof(uint32_t);
13284     forUnmarshaling->pNext = nullptr;
13285     if (pNext_size) {
13286         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13287         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13288         *ptr += sizeof(VkStructureType);
13289         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13290         vkStream->alloc((void**)&forUnmarshaling->pNext,
13291                         goldfish_vk_extension_struct_size_with_stream_features(
13292                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13293         *(VkStructureType*)forUnmarshaling->pNext = extType;
13294         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13295                                            ptr);
13296     }
13297     memcpy((VkHostImageCopyFlagsEXT*)&forUnmarshaling->flags, *ptr,
13298            sizeof(VkHostImageCopyFlagsEXT));
13299     *ptr += sizeof(VkHostImageCopyFlagsEXT);
13300     uint64_t cgen_var_0;
13301     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
13302     *ptr += 1 * 8;
13303     *(VkImage*)&forUnmarshaling->dstImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
13304     memcpy((VkImageLayout*)&forUnmarshaling->dstImageLayout, *ptr, sizeof(VkImageLayout));
13305     *ptr += sizeof(VkImageLayout);
13306     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
13307     *ptr += sizeof(uint32_t);
13308     vkStream->alloc((void**)&forUnmarshaling->pRegions,
13309                     forUnmarshaling->regionCount * sizeof(const VkMemoryToImageCopyEXT));
13310     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
13311         reservedunmarshal_VkMemoryToImageCopyEXT(
13312             vkStream, rootType, (VkMemoryToImageCopyEXT*)(forUnmarshaling->pRegions + i), ptr);
13313     }
13314 }
13315 
reservedunmarshal_VkCopyImageToMemoryInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageToMemoryInfoEXT * forUnmarshaling,uint8_t ** ptr)13316 void reservedunmarshal_VkCopyImageToMemoryInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
13317                                                   VkCopyImageToMemoryInfoEXT* forUnmarshaling,
13318                                                   uint8_t** ptr) {
13319     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13320     *ptr += sizeof(VkStructureType);
13321     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13322         rootType = forUnmarshaling->sType;
13323     }
13324     uint32_t pNext_size;
13325     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13326     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13327     *ptr += sizeof(uint32_t);
13328     forUnmarshaling->pNext = nullptr;
13329     if (pNext_size) {
13330         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13331         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13332         *ptr += sizeof(VkStructureType);
13333         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13334         vkStream->alloc((void**)&forUnmarshaling->pNext,
13335                         goldfish_vk_extension_struct_size_with_stream_features(
13336                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13337         *(VkStructureType*)forUnmarshaling->pNext = extType;
13338         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13339                                            ptr);
13340     }
13341     memcpy((VkHostImageCopyFlagsEXT*)&forUnmarshaling->flags, *ptr,
13342            sizeof(VkHostImageCopyFlagsEXT));
13343     *ptr += sizeof(VkHostImageCopyFlagsEXT);
13344     uint64_t cgen_var_0;
13345     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
13346     *ptr += 1 * 8;
13347     *(VkImage*)&forUnmarshaling->srcImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
13348     memcpy((VkImageLayout*)&forUnmarshaling->srcImageLayout, *ptr, sizeof(VkImageLayout));
13349     *ptr += sizeof(VkImageLayout);
13350     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
13351     *ptr += sizeof(uint32_t);
13352     vkStream->alloc((void**)&forUnmarshaling->pRegions,
13353                     forUnmarshaling->regionCount * sizeof(const VkImageToMemoryCopyEXT));
13354     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
13355         reservedunmarshal_VkImageToMemoryCopyEXT(
13356             vkStream, rootType, (VkImageToMemoryCopyEXT*)(forUnmarshaling->pRegions + i), ptr);
13357     }
13358 }
13359 
reservedunmarshal_VkCopyImageToImageInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkCopyImageToImageInfoEXT * forUnmarshaling,uint8_t ** ptr)13360 void reservedunmarshal_VkCopyImageToImageInfoEXT(VulkanStream* vkStream, VkStructureType rootType,
13361                                                  VkCopyImageToImageInfoEXT* forUnmarshaling,
13362                                                  uint8_t** ptr) {
13363     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13364     *ptr += sizeof(VkStructureType);
13365     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13366         rootType = forUnmarshaling->sType;
13367     }
13368     uint32_t pNext_size;
13369     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13370     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13371     *ptr += sizeof(uint32_t);
13372     forUnmarshaling->pNext = nullptr;
13373     if (pNext_size) {
13374         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13375         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13376         *ptr += sizeof(VkStructureType);
13377         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13378         vkStream->alloc((void**)&forUnmarshaling->pNext,
13379                         goldfish_vk_extension_struct_size_with_stream_features(
13380                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13381         *(VkStructureType*)forUnmarshaling->pNext = extType;
13382         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13383                                            ptr);
13384     }
13385     memcpy((VkHostImageCopyFlagsEXT*)&forUnmarshaling->flags, *ptr,
13386            sizeof(VkHostImageCopyFlagsEXT));
13387     *ptr += sizeof(VkHostImageCopyFlagsEXT);
13388     uint64_t cgen_var_0;
13389     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
13390     *ptr += 1 * 8;
13391     *(VkImage*)&forUnmarshaling->srcImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
13392     memcpy((VkImageLayout*)&forUnmarshaling->srcImageLayout, *ptr, sizeof(VkImageLayout));
13393     *ptr += sizeof(VkImageLayout);
13394     uint64_t cgen_var_1;
13395     memcpy((uint64_t*)&cgen_var_1, *ptr, 1 * 8);
13396     *ptr += 1 * 8;
13397     *(VkImage*)&forUnmarshaling->dstImage = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_1));
13398     memcpy((VkImageLayout*)&forUnmarshaling->dstImageLayout, *ptr, sizeof(VkImageLayout));
13399     *ptr += sizeof(VkImageLayout);
13400     memcpy((uint32_t*)&forUnmarshaling->regionCount, *ptr, sizeof(uint32_t));
13401     *ptr += sizeof(uint32_t);
13402     vkStream->alloc((void**)&forUnmarshaling->pRegions,
13403                     forUnmarshaling->regionCount * sizeof(const VkImageCopy2));
13404     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->regionCount; ++i) {
13405         reservedunmarshal_VkImageCopy2(vkStream, rootType,
13406                                        (VkImageCopy2*)(forUnmarshaling->pRegions + i), ptr);
13407     }
13408 }
13409 
reservedunmarshal_VkHostImageLayoutTransitionInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkHostImageLayoutTransitionInfoEXT * forUnmarshaling,uint8_t ** ptr)13410 void reservedunmarshal_VkHostImageLayoutTransitionInfoEXT(
13411     VulkanStream* vkStream, VkStructureType rootType,
13412     VkHostImageLayoutTransitionInfoEXT* forUnmarshaling, uint8_t** ptr) {
13413     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13414     *ptr += sizeof(VkStructureType);
13415     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13416         rootType = forUnmarshaling->sType;
13417     }
13418     uint32_t pNext_size;
13419     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13420     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13421     *ptr += sizeof(uint32_t);
13422     forUnmarshaling->pNext = nullptr;
13423     if (pNext_size) {
13424         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13425         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13426         *ptr += sizeof(VkStructureType);
13427         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13428         vkStream->alloc((void**)&forUnmarshaling->pNext,
13429                         goldfish_vk_extension_struct_size_with_stream_features(
13430                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13431         *(VkStructureType*)forUnmarshaling->pNext = extType;
13432         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13433                                            ptr);
13434     }
13435     uint64_t cgen_var_0;
13436     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
13437     *ptr += 1 * 8;
13438     *(VkImage*)&forUnmarshaling->image = (VkImage)unbox_VkImage((VkImage)(*&cgen_var_0));
13439     memcpy((VkImageLayout*)&forUnmarshaling->oldLayout, *ptr, sizeof(VkImageLayout));
13440     *ptr += sizeof(VkImageLayout);
13441     memcpy((VkImageLayout*)&forUnmarshaling->newLayout, *ptr, sizeof(VkImageLayout));
13442     *ptr += sizeof(VkImageLayout);
13443     reservedunmarshal_VkImageSubresourceRange(
13444         vkStream, rootType, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange), ptr);
13445 }
13446 
reservedunmarshal_VkSubresourceHostMemcpySizeEXT(VulkanStream * vkStream,VkStructureType rootType,VkSubresourceHostMemcpySizeEXT * forUnmarshaling,uint8_t ** ptr)13447 void reservedunmarshal_VkSubresourceHostMemcpySizeEXT(
13448     VulkanStream* vkStream, VkStructureType rootType,
13449     VkSubresourceHostMemcpySizeEXT* forUnmarshaling, uint8_t** ptr) {
13450     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13451     *ptr += sizeof(VkStructureType);
13452     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13453         rootType = forUnmarshaling->sType;
13454     }
13455     uint32_t pNext_size;
13456     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13457     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13458     *ptr += sizeof(uint32_t);
13459     forUnmarshaling->pNext = nullptr;
13460     if (pNext_size) {
13461         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13462         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13463         *ptr += sizeof(VkStructureType);
13464         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13465         vkStream->alloc((void**)&forUnmarshaling->pNext,
13466                         goldfish_vk_extension_struct_size_with_stream_features(
13467                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13468         *(VkStructureType*)forUnmarshaling->pNext = extType;
13469         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13470                                            ptr);
13471     }
13472     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
13473     *ptr += sizeof(VkDeviceSize);
13474 }
13475 
reservedunmarshal_VkHostImageCopyDevicePerformanceQueryEXT(VulkanStream * vkStream,VkStructureType rootType,VkHostImageCopyDevicePerformanceQueryEXT * forUnmarshaling,uint8_t ** ptr)13476 void reservedunmarshal_VkHostImageCopyDevicePerformanceQueryEXT(
13477     VulkanStream* vkStream, VkStructureType rootType,
13478     VkHostImageCopyDevicePerformanceQueryEXT* forUnmarshaling, uint8_t** ptr) {
13479     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13480     *ptr += sizeof(VkStructureType);
13481     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13482         rootType = forUnmarshaling->sType;
13483     }
13484     uint32_t pNext_size;
13485     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13486     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13487     *ptr += sizeof(uint32_t);
13488     forUnmarshaling->pNext = nullptr;
13489     if (pNext_size) {
13490         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13491         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13492         *ptr += sizeof(VkStructureType);
13493         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13494         vkStream->alloc((void**)&forUnmarshaling->pNext,
13495                         goldfish_vk_extension_struct_size_with_stream_features(
13496                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13497         *(VkStructureType*)forUnmarshaling->pNext = extType;
13498         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13499                                            ptr);
13500     }
13501     memcpy((VkBool32*)&forUnmarshaling->optimalDeviceAccess, *ptr, sizeof(VkBool32));
13502     *ptr += sizeof(VkBool32);
13503     memcpy((VkBool32*)&forUnmarshaling->identicalMemoryLayout, *ptr, sizeof(VkBool32));
13504     *ptr += sizeof(VkBool32);
13505 }
13506 
13507 #endif
13508 #ifdef VK_EXT_swapchain_maintenance1
reservedunmarshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT * forUnmarshaling,uint8_t ** ptr)13509 void reservedunmarshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(
13510     VulkanStream* vkStream, VkStructureType rootType,
13511     VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13512     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13513     *ptr += sizeof(VkStructureType);
13514     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13515         rootType = forUnmarshaling->sType;
13516     }
13517     uint32_t pNext_size;
13518     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13519     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13520     *ptr += sizeof(uint32_t);
13521     forUnmarshaling->pNext = nullptr;
13522     if (pNext_size) {
13523         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13524         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13525         *ptr += sizeof(VkStructureType);
13526         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13527         vkStream->alloc((void**)&forUnmarshaling->pNext,
13528                         goldfish_vk_extension_struct_size_with_stream_features(
13529                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13530         *(VkStructureType*)forUnmarshaling->pNext = extType;
13531         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13532                                            ptr);
13533     }
13534     memcpy((VkBool32*)&forUnmarshaling->swapchainMaintenance1, *ptr, sizeof(VkBool32));
13535     *ptr += sizeof(VkBool32);
13536 }
13537 
reservedunmarshal_VkSwapchainPresentFenceInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentFenceInfoEXT * forUnmarshaling,uint8_t ** ptr)13538 void reservedunmarshal_VkSwapchainPresentFenceInfoEXT(
13539     VulkanStream* vkStream, VkStructureType rootType,
13540     VkSwapchainPresentFenceInfoEXT* forUnmarshaling, uint8_t** ptr) {
13541     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13542     *ptr += sizeof(VkStructureType);
13543     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13544         rootType = forUnmarshaling->sType;
13545     }
13546     uint32_t pNext_size;
13547     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13548     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13549     *ptr += sizeof(uint32_t);
13550     forUnmarshaling->pNext = nullptr;
13551     if (pNext_size) {
13552         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13553         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13554         *ptr += sizeof(VkStructureType);
13555         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13556         vkStream->alloc((void**)&forUnmarshaling->pNext,
13557                         goldfish_vk_extension_struct_size_with_stream_features(
13558                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13559         *(VkStructureType*)forUnmarshaling->pNext = extType;
13560         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13561                                            ptr);
13562     }
13563     memcpy((uint32_t*)&forUnmarshaling->swapchainCount, *ptr, sizeof(uint32_t));
13564     *ptr += sizeof(uint32_t);
13565     vkStream->alloc((void**)&forUnmarshaling->pFences,
13566                     forUnmarshaling->swapchainCount * sizeof(const VkFence));
13567     if (forUnmarshaling->swapchainCount) {
13568         uint8_t* cgen_var_0_ptr = (uint8_t*)(*ptr);
13569         *ptr += 8 * forUnmarshaling->swapchainCount;
13570         if (forUnmarshaling) {
13571             for (uint32_t k = 0; k < forUnmarshaling->swapchainCount; ++k) {
13572                 uint64_t tmpval;
13573                 memcpy(&tmpval, cgen_var_0_ptr + k * 8, sizeof(uint64_t));
13574                 *(((VkFence*)forUnmarshaling->pFences) + k) =
13575                     tmpval ? (VkFence)unbox_VkFence((VkFence)tmpval) : VK_NULL_HANDLE;
13576             }
13577         }
13578     }
13579 }
13580 
reservedunmarshal_VkSwapchainPresentModesCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentModesCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)13581 void reservedunmarshal_VkSwapchainPresentModesCreateInfoEXT(
13582     VulkanStream* vkStream, VkStructureType rootType,
13583     VkSwapchainPresentModesCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
13584     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13585     *ptr += sizeof(VkStructureType);
13586     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13587         rootType = forUnmarshaling->sType;
13588     }
13589     uint32_t pNext_size;
13590     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13591     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13592     *ptr += sizeof(uint32_t);
13593     forUnmarshaling->pNext = nullptr;
13594     if (pNext_size) {
13595         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13596         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13597         *ptr += sizeof(VkStructureType);
13598         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13599         vkStream->alloc((void**)&forUnmarshaling->pNext,
13600                         goldfish_vk_extension_struct_size_with_stream_features(
13601                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13602         *(VkStructureType*)forUnmarshaling->pNext = extType;
13603         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13604                                            ptr);
13605     }
13606     memcpy((uint32_t*)&forUnmarshaling->presentModeCount, *ptr, sizeof(uint32_t));
13607     *ptr += sizeof(uint32_t);
13608     vkStream->alloc((void**)&forUnmarshaling->pPresentModes,
13609                     forUnmarshaling->presentModeCount * sizeof(const VkPresentModeKHR));
13610     memcpy((VkPresentModeKHR*)forUnmarshaling->pPresentModes, *ptr,
13611            forUnmarshaling->presentModeCount * sizeof(const VkPresentModeKHR));
13612     *ptr += forUnmarshaling->presentModeCount * sizeof(const VkPresentModeKHR);
13613 }
13614 
reservedunmarshal_VkSwapchainPresentModeInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentModeInfoEXT * forUnmarshaling,uint8_t ** ptr)13615 void reservedunmarshal_VkSwapchainPresentModeInfoEXT(VulkanStream* vkStream,
13616                                                      VkStructureType rootType,
13617                                                      VkSwapchainPresentModeInfoEXT* forUnmarshaling,
13618                                                      uint8_t** ptr) {
13619     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13620     *ptr += sizeof(VkStructureType);
13621     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13622         rootType = forUnmarshaling->sType;
13623     }
13624     uint32_t pNext_size;
13625     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13626     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13627     *ptr += sizeof(uint32_t);
13628     forUnmarshaling->pNext = nullptr;
13629     if (pNext_size) {
13630         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13631         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13632         *ptr += sizeof(VkStructureType);
13633         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13634         vkStream->alloc((void**)&forUnmarshaling->pNext,
13635                         goldfish_vk_extension_struct_size_with_stream_features(
13636                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13637         *(VkStructureType*)forUnmarshaling->pNext = extType;
13638         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13639                                            ptr);
13640     }
13641     memcpy((uint32_t*)&forUnmarshaling->swapchainCount, *ptr, sizeof(uint32_t));
13642     *ptr += sizeof(uint32_t);
13643     vkStream->alloc((void**)&forUnmarshaling->pPresentModes,
13644                     forUnmarshaling->swapchainCount * sizeof(const VkPresentModeKHR));
13645     memcpy((VkPresentModeKHR*)forUnmarshaling->pPresentModes, *ptr,
13646            forUnmarshaling->swapchainCount * sizeof(const VkPresentModeKHR));
13647     *ptr += forUnmarshaling->swapchainCount * sizeof(const VkPresentModeKHR);
13648 }
13649 
reservedunmarshal_VkSwapchainPresentScalingCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSwapchainPresentScalingCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)13650 void reservedunmarshal_VkSwapchainPresentScalingCreateInfoEXT(
13651     VulkanStream* vkStream, VkStructureType rootType,
13652     VkSwapchainPresentScalingCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
13653     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13654     *ptr += sizeof(VkStructureType);
13655     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13656         rootType = forUnmarshaling->sType;
13657     }
13658     uint32_t pNext_size;
13659     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13660     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13661     *ptr += sizeof(uint32_t);
13662     forUnmarshaling->pNext = nullptr;
13663     if (pNext_size) {
13664         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13665         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13666         *ptr += sizeof(VkStructureType);
13667         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13668         vkStream->alloc((void**)&forUnmarshaling->pNext,
13669                         goldfish_vk_extension_struct_size_with_stream_features(
13670                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13671         *(VkStructureType*)forUnmarshaling->pNext = extType;
13672         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13673                                            ptr);
13674     }
13675     memcpy((VkPresentScalingFlagsEXT*)&forUnmarshaling->scalingBehavior, *ptr,
13676            sizeof(VkPresentScalingFlagsEXT));
13677     *ptr += sizeof(VkPresentScalingFlagsEXT);
13678     memcpy((VkPresentGravityFlagsEXT*)&forUnmarshaling->presentGravityX, *ptr,
13679            sizeof(VkPresentGravityFlagsEXT));
13680     *ptr += sizeof(VkPresentGravityFlagsEXT);
13681     memcpy((VkPresentGravityFlagsEXT*)&forUnmarshaling->presentGravityY, *ptr,
13682            sizeof(VkPresentGravityFlagsEXT));
13683     *ptr += sizeof(VkPresentGravityFlagsEXT);
13684 }
13685 
reservedunmarshal_VkReleaseSwapchainImagesInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkReleaseSwapchainImagesInfoEXT * forUnmarshaling,uint8_t ** ptr)13686 void reservedunmarshal_VkReleaseSwapchainImagesInfoEXT(
13687     VulkanStream* vkStream, VkStructureType rootType,
13688     VkReleaseSwapchainImagesInfoEXT* forUnmarshaling, uint8_t** ptr) {
13689     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13690     *ptr += sizeof(VkStructureType);
13691     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13692         rootType = forUnmarshaling->sType;
13693     }
13694     uint32_t pNext_size;
13695     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13696     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13697     *ptr += sizeof(uint32_t);
13698     forUnmarshaling->pNext = nullptr;
13699     if (pNext_size) {
13700         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13701         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13702         *ptr += sizeof(VkStructureType);
13703         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13704         vkStream->alloc((void**)&forUnmarshaling->pNext,
13705                         goldfish_vk_extension_struct_size_with_stream_features(
13706                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13707         *(VkStructureType*)forUnmarshaling->pNext = extType;
13708         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13709                                            ptr);
13710     }
13711     uint64_t cgen_var_0;
13712     memcpy((uint64_t*)&cgen_var_0, *ptr, 1 * 8);
13713     *ptr += 1 * 8;
13714     *(VkSwapchainKHR*)&forUnmarshaling->swapchain =
13715         (VkSwapchainKHR)unbox_VkSwapchainKHR((VkSwapchainKHR)(*&cgen_var_0));
13716     memcpy((uint32_t*)&forUnmarshaling->imageIndexCount, *ptr, sizeof(uint32_t));
13717     *ptr += sizeof(uint32_t);
13718     vkStream->alloc((void**)&forUnmarshaling->pImageIndices,
13719                     forUnmarshaling->imageIndexCount * sizeof(const uint32_t));
13720     memcpy((uint32_t*)forUnmarshaling->pImageIndices, *ptr,
13721            forUnmarshaling->imageIndexCount * sizeof(const uint32_t));
13722     *ptr += forUnmarshaling->imageIndexCount * sizeof(const uint32_t);
13723 }
13724 
13725 #endif
13726 #ifdef VK_EXT_texel_buffer_alignment
reservedunmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT * forUnmarshaling,uint8_t ** ptr)13727 void reservedunmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
13728     VulkanStream* vkStream, VkStructureType rootType,
13729     VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13730     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13731     *ptr += sizeof(VkStructureType);
13732     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13733         rootType = forUnmarshaling->sType;
13734     }
13735     uint32_t pNext_size;
13736     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13737     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13738     *ptr += sizeof(uint32_t);
13739     forUnmarshaling->pNext = nullptr;
13740     if (pNext_size) {
13741         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13742         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13743         *ptr += sizeof(VkStructureType);
13744         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13745         vkStream->alloc((void**)&forUnmarshaling->pNext,
13746                         goldfish_vk_extension_struct_size_with_stream_features(
13747                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13748         *(VkStructureType*)forUnmarshaling->pNext = extType;
13749         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13750                                            ptr);
13751     }
13752     memcpy((VkBool32*)&forUnmarshaling->texelBufferAlignment, *ptr, sizeof(VkBool32));
13753     *ptr += sizeof(VkBool32);
13754 }
13755 
13756 #endif
13757 #ifdef VK_EXT_device_memory_report
reservedunmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceDeviceMemoryReportFeaturesEXT * forUnmarshaling,uint8_t ** ptr)13758 void reservedunmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
13759     VulkanStream* vkStream, VkStructureType rootType,
13760     VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13761     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13762     *ptr += sizeof(VkStructureType);
13763     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13764         rootType = forUnmarshaling->sType;
13765     }
13766     uint32_t pNext_size;
13767     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13768     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13769     *ptr += sizeof(uint32_t);
13770     forUnmarshaling->pNext = nullptr;
13771     if (pNext_size) {
13772         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13773         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13774         *ptr += sizeof(VkStructureType);
13775         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13776         vkStream->alloc((void**)&forUnmarshaling->pNext,
13777                         goldfish_vk_extension_struct_size_with_stream_features(
13778                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13779         *(VkStructureType*)forUnmarshaling->pNext = extType;
13780         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13781                                            ptr);
13782     }
13783     memcpy((VkBool32*)&forUnmarshaling->deviceMemoryReport, *ptr, sizeof(VkBool32));
13784     *ptr += sizeof(VkBool32);
13785 }
13786 
reservedunmarshal_VkDeviceMemoryReportCallbackDataEXT(VulkanStream * vkStream,VkStructureType rootType,VkDeviceMemoryReportCallbackDataEXT * forUnmarshaling,uint8_t ** ptr)13787 void reservedunmarshal_VkDeviceMemoryReportCallbackDataEXT(
13788     VulkanStream* vkStream, VkStructureType rootType,
13789     VkDeviceMemoryReportCallbackDataEXT* forUnmarshaling, uint8_t** ptr) {
13790     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13791     *ptr += sizeof(VkStructureType);
13792     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13793         rootType = forUnmarshaling->sType;
13794     }
13795     uint32_t pNext_size;
13796     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13797     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13798     *ptr += sizeof(uint32_t);
13799     forUnmarshaling->pNext = nullptr;
13800     if (pNext_size) {
13801         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13802         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13803         *ptr += sizeof(VkStructureType);
13804         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13805         vkStream->alloc((void**)&forUnmarshaling->pNext,
13806                         goldfish_vk_extension_struct_size_with_stream_features(
13807                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13808         *(VkStructureType*)forUnmarshaling->pNext = extType;
13809         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13810                                            ptr);
13811     }
13812     memcpy((VkDeviceMemoryReportFlagsEXT*)&forUnmarshaling->flags, *ptr,
13813            sizeof(VkDeviceMemoryReportFlagsEXT));
13814     *ptr += sizeof(VkDeviceMemoryReportFlagsEXT);
13815     memcpy((VkDeviceMemoryReportEventTypeEXT*)&forUnmarshaling->type, *ptr,
13816            sizeof(VkDeviceMemoryReportEventTypeEXT));
13817     *ptr += sizeof(VkDeviceMemoryReportEventTypeEXT);
13818     memcpy((uint64_t*)&forUnmarshaling->memoryObjectId, *ptr, sizeof(uint64_t));
13819     *ptr += sizeof(uint64_t);
13820     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
13821     *ptr += sizeof(VkDeviceSize);
13822     memcpy((VkObjectType*)&forUnmarshaling->objectType, *ptr, sizeof(VkObjectType));
13823     *ptr += sizeof(VkObjectType);
13824     memcpy((uint64_t*)&forUnmarshaling->objectHandle, *ptr, sizeof(uint64_t));
13825     *ptr += sizeof(uint64_t);
13826     memcpy((uint32_t*)&forUnmarshaling->heapIndex, *ptr, sizeof(uint32_t));
13827     *ptr += sizeof(uint32_t);
13828 }
13829 
reservedunmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkDeviceDeviceMemoryReportCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)13830 void reservedunmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
13831     VulkanStream* vkStream, VkStructureType rootType,
13832     VkDeviceDeviceMemoryReportCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
13833     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13834     *ptr += sizeof(VkStructureType);
13835     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13836         rootType = forUnmarshaling->sType;
13837     }
13838     uint32_t pNext_size;
13839     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13840     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13841     *ptr += sizeof(uint32_t);
13842     forUnmarshaling->pNext = nullptr;
13843     if (pNext_size) {
13844         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13845         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13846         *ptr += sizeof(VkStructureType);
13847         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13848         vkStream->alloc((void**)&forUnmarshaling->pNext,
13849                         goldfish_vk_extension_struct_size_with_stream_features(
13850                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13851         *(VkStructureType*)forUnmarshaling->pNext = extType;
13852         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13853                                            ptr);
13854     }
13855     memcpy((VkDeviceMemoryReportFlagsEXT*)&forUnmarshaling->flags, *ptr,
13856            sizeof(VkDeviceMemoryReportFlagsEXT));
13857     *ptr += sizeof(VkDeviceMemoryReportFlagsEXT);
13858     memcpy((PFN_vkDeviceMemoryReportCallbackEXT*)&forUnmarshaling->pfnUserCallback, (*ptr), 8);
13859     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pfnUserCallback);
13860     *ptr += 8;
13861     vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
13862     memcpy((void*)forUnmarshaling->pUserData, *ptr, sizeof(uint8_t));
13863     *ptr += sizeof(uint8_t);
13864 }
13865 
13866 #endif
13867 #ifdef VK_EXT_robustness2
reservedunmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRobustness2FeaturesEXT * forUnmarshaling,uint8_t ** ptr)13868 void reservedunmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(
13869     VulkanStream* vkStream, VkStructureType rootType,
13870     VkPhysicalDeviceRobustness2FeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13871     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13872     *ptr += sizeof(VkStructureType);
13873     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13874         rootType = forUnmarshaling->sType;
13875     }
13876     uint32_t pNext_size;
13877     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13878     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13879     *ptr += sizeof(uint32_t);
13880     forUnmarshaling->pNext = nullptr;
13881     if (pNext_size) {
13882         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13883         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13884         *ptr += sizeof(VkStructureType);
13885         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13886         vkStream->alloc((void**)&forUnmarshaling->pNext,
13887                         goldfish_vk_extension_struct_size_with_stream_features(
13888                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13889         *(VkStructureType*)forUnmarshaling->pNext = extType;
13890         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13891                                            ptr);
13892     }
13893     memcpy((VkBool32*)&forUnmarshaling->robustBufferAccess2, *ptr, sizeof(VkBool32));
13894     *ptr += sizeof(VkBool32);
13895     memcpy((VkBool32*)&forUnmarshaling->robustImageAccess2, *ptr, sizeof(VkBool32));
13896     *ptr += sizeof(VkBool32);
13897     memcpy((VkBool32*)&forUnmarshaling->nullDescriptor, *ptr, sizeof(VkBool32));
13898     *ptr += sizeof(VkBool32);
13899 }
13900 
reservedunmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRobustness2PropertiesEXT * forUnmarshaling,uint8_t ** ptr)13901 void reservedunmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(
13902     VulkanStream* vkStream, VkStructureType rootType,
13903     VkPhysicalDeviceRobustness2PropertiesEXT* forUnmarshaling, uint8_t** ptr) {
13904     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13905     *ptr += sizeof(VkStructureType);
13906     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13907         rootType = forUnmarshaling->sType;
13908     }
13909     uint32_t pNext_size;
13910     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13911     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13912     *ptr += sizeof(uint32_t);
13913     forUnmarshaling->pNext = nullptr;
13914     if (pNext_size) {
13915         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13916         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13917         *ptr += sizeof(VkStructureType);
13918         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13919         vkStream->alloc((void**)&forUnmarshaling->pNext,
13920                         goldfish_vk_extension_struct_size_with_stream_features(
13921                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13922         *(VkStructureType*)forUnmarshaling->pNext = extType;
13923         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13924                                            ptr);
13925     }
13926     memcpy((VkDeviceSize*)&forUnmarshaling->robustStorageBufferAccessSizeAlignment, *ptr,
13927            sizeof(VkDeviceSize));
13928     *ptr += sizeof(VkDeviceSize);
13929     memcpy((VkDeviceSize*)&forUnmarshaling->robustUniformBufferAccessSizeAlignment, *ptr,
13930            sizeof(VkDeviceSize));
13931     *ptr += sizeof(VkDeviceSize);
13932 }
13933 
13934 #endif
13935 #ifdef VK_EXT_custom_border_color
reservedunmarshal_VkSamplerCustomBorderColorCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkSamplerCustomBorderColorCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)13936 void reservedunmarshal_VkSamplerCustomBorderColorCreateInfoEXT(
13937     VulkanStream* vkStream, VkStructureType rootType,
13938     VkSamplerCustomBorderColorCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
13939     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13940     *ptr += sizeof(VkStructureType);
13941     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13942         rootType = forUnmarshaling->sType;
13943     }
13944     uint32_t pNext_size;
13945     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13946     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13947     *ptr += sizeof(uint32_t);
13948     forUnmarshaling->pNext = nullptr;
13949     if (pNext_size) {
13950         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13951         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13952         *ptr += sizeof(VkStructureType);
13953         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13954         vkStream->alloc((void**)&forUnmarshaling->pNext,
13955                         goldfish_vk_extension_struct_size_with_stream_features(
13956                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13957         *(VkStructureType*)forUnmarshaling->pNext = extType;
13958         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13959                                            ptr);
13960     }
13961     reservedunmarshal_VkClearColorValue(
13962         vkStream, rootType, (VkClearColorValue*)(&forUnmarshaling->customBorderColor), ptr);
13963     memcpy((VkFormat*)&forUnmarshaling->format, *ptr, sizeof(VkFormat));
13964     *ptr += sizeof(VkFormat);
13965 }
13966 
reservedunmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceCustomBorderColorPropertiesEXT * forUnmarshaling,uint8_t ** ptr)13967 void reservedunmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
13968     VulkanStream* vkStream, VkStructureType rootType,
13969     VkPhysicalDeviceCustomBorderColorPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
13970     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
13971     *ptr += sizeof(VkStructureType);
13972     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
13973         rootType = forUnmarshaling->sType;
13974     }
13975     uint32_t pNext_size;
13976     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
13977     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
13978     *ptr += sizeof(uint32_t);
13979     forUnmarshaling->pNext = nullptr;
13980     if (pNext_size) {
13981         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
13982         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
13983         *ptr += sizeof(VkStructureType);
13984         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
13985         vkStream->alloc((void**)&forUnmarshaling->pNext,
13986                         goldfish_vk_extension_struct_size_with_stream_features(
13987                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
13988         *(VkStructureType*)forUnmarshaling->pNext = extType;
13989         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
13990                                            ptr);
13991     }
13992     memcpy((uint32_t*)&forUnmarshaling->maxCustomBorderColorSamplers, *ptr, sizeof(uint32_t));
13993     *ptr += sizeof(uint32_t);
13994 }
13995 
reservedunmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceCustomBorderColorFeaturesEXT * forUnmarshaling,uint8_t ** ptr)13996 void reservedunmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
13997     VulkanStream* vkStream, VkStructureType rootType,
13998     VkPhysicalDeviceCustomBorderColorFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
13999     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14000     *ptr += sizeof(VkStructureType);
14001     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14002         rootType = forUnmarshaling->sType;
14003     }
14004     uint32_t pNext_size;
14005     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14006     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14007     *ptr += sizeof(uint32_t);
14008     forUnmarshaling->pNext = nullptr;
14009     if (pNext_size) {
14010         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14011         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14012         *ptr += sizeof(VkStructureType);
14013         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14014         vkStream->alloc((void**)&forUnmarshaling->pNext,
14015                         goldfish_vk_extension_struct_size_with_stream_features(
14016                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14017         *(VkStructureType*)forUnmarshaling->pNext = extType;
14018         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14019                                            ptr);
14020     }
14021     memcpy((VkBool32*)&forUnmarshaling->customBorderColors, *ptr, sizeof(VkBool32));
14022     *ptr += sizeof(VkBool32);
14023     memcpy((VkBool32*)&forUnmarshaling->customBorderColorWithoutFormat, *ptr, sizeof(VkBool32));
14024     *ptr += sizeof(VkBool32);
14025 }
14026 
14027 #endif
14028 #ifdef VK_EXT_graphics_pipeline_library
reservedunmarshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14029 void reservedunmarshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(
14030     VulkanStream* vkStream, VkStructureType rootType,
14031     VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14032     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14033     *ptr += sizeof(VkStructureType);
14034     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14035         rootType = forUnmarshaling->sType;
14036     }
14037     uint32_t pNext_size;
14038     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14039     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14040     *ptr += sizeof(uint32_t);
14041     forUnmarshaling->pNext = nullptr;
14042     if (pNext_size) {
14043         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14044         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14045         *ptr += sizeof(VkStructureType);
14046         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14047         vkStream->alloc((void**)&forUnmarshaling->pNext,
14048                         goldfish_vk_extension_struct_size_with_stream_features(
14049                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14050         *(VkStructureType*)forUnmarshaling->pNext = extType;
14051         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14052                                            ptr);
14053     }
14054     memcpy((VkBool32*)&forUnmarshaling->graphicsPipelineLibrary, *ptr, sizeof(VkBool32));
14055     *ptr += sizeof(VkBool32);
14056 }
14057 
reservedunmarshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT * forUnmarshaling,uint8_t ** ptr)14058 void reservedunmarshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(
14059     VulkanStream* vkStream, VkStructureType rootType,
14060     VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
14061     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14062     *ptr += sizeof(VkStructureType);
14063     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14064         rootType = forUnmarshaling->sType;
14065     }
14066     uint32_t pNext_size;
14067     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14068     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14069     *ptr += sizeof(uint32_t);
14070     forUnmarshaling->pNext = nullptr;
14071     if (pNext_size) {
14072         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14073         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14074         *ptr += sizeof(VkStructureType);
14075         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14076         vkStream->alloc((void**)&forUnmarshaling->pNext,
14077                         goldfish_vk_extension_struct_size_with_stream_features(
14078                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14079         *(VkStructureType*)forUnmarshaling->pNext = extType;
14080         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14081                                            ptr);
14082     }
14083     memcpy((VkBool32*)&forUnmarshaling->graphicsPipelineLibraryFastLinking, *ptr, sizeof(VkBool32));
14084     *ptr += sizeof(VkBool32);
14085     memcpy((VkBool32*)&forUnmarshaling->graphicsPipelineLibraryIndependentInterpolationDecoration,
14086            *ptr, sizeof(VkBool32));
14087     *ptr += sizeof(VkBool32);
14088 }
14089 
reservedunmarshal_VkGraphicsPipelineLibraryCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkGraphicsPipelineLibraryCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)14090 void reservedunmarshal_VkGraphicsPipelineLibraryCreateInfoEXT(
14091     VulkanStream* vkStream, VkStructureType rootType,
14092     VkGraphicsPipelineLibraryCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
14093     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14094     *ptr += sizeof(VkStructureType);
14095     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14096         rootType = forUnmarshaling->sType;
14097     }
14098     uint32_t pNext_size;
14099     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14100     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14101     *ptr += sizeof(uint32_t);
14102     forUnmarshaling->pNext = nullptr;
14103     if (pNext_size) {
14104         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14105         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14106         *ptr += 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         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14113                                            ptr);
14114     }
14115     memcpy((VkGraphicsPipelineLibraryFlagsEXT*)&forUnmarshaling->flags, *ptr,
14116            sizeof(VkGraphicsPipelineLibraryFlagsEXT));
14117     *ptr += sizeof(VkGraphicsPipelineLibraryFlagsEXT);
14118 }
14119 
14120 #endif
14121 #ifdef VK_EXT_ycbcr_2plane_444_formats
reservedunmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14122 void reservedunmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
14123     VulkanStream* vkStream, VkStructureType rootType,
14124     VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14125     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14126     *ptr += sizeof(VkStructureType);
14127     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14128         rootType = forUnmarshaling->sType;
14129     }
14130     uint32_t pNext_size;
14131     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14132     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14133     *ptr += sizeof(uint32_t);
14134     forUnmarshaling->pNext = nullptr;
14135     if (pNext_size) {
14136         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14137         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14138         *ptr += sizeof(VkStructureType);
14139         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14140         vkStream->alloc((void**)&forUnmarshaling->pNext,
14141                         goldfish_vk_extension_struct_size_with_stream_features(
14142                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14143         *(VkStructureType*)forUnmarshaling->pNext = extType;
14144         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14145                                            ptr);
14146     }
14147     memcpy((VkBool32*)&forUnmarshaling->ycbcr2plane444Formats, *ptr, sizeof(VkBool32));
14148     *ptr += sizeof(VkBool32);
14149 }
14150 
14151 #endif
14152 #ifdef VK_EXT_image_compression_control
reservedunmarshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageCompressionControlFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14153 void reservedunmarshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(
14154     VulkanStream* vkStream, VkStructureType rootType,
14155     VkPhysicalDeviceImageCompressionControlFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14156     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14157     *ptr += sizeof(VkStructureType);
14158     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14159         rootType = forUnmarshaling->sType;
14160     }
14161     uint32_t pNext_size;
14162     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14163     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14164     *ptr += sizeof(uint32_t);
14165     forUnmarshaling->pNext = nullptr;
14166     if (pNext_size) {
14167         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14168         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14169         *ptr += sizeof(VkStructureType);
14170         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14171         vkStream->alloc((void**)&forUnmarshaling->pNext,
14172                         goldfish_vk_extension_struct_size_with_stream_features(
14173                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14174         *(VkStructureType*)forUnmarshaling->pNext = extType;
14175         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14176                                            ptr);
14177     }
14178     memcpy((VkBool32*)&forUnmarshaling->imageCompressionControl, *ptr, sizeof(VkBool32));
14179     *ptr += sizeof(VkBool32);
14180 }
14181 
reservedunmarshal_VkImageCompressionControlEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageCompressionControlEXT * forUnmarshaling,uint8_t ** ptr)14182 void reservedunmarshal_VkImageCompressionControlEXT(VulkanStream* vkStream,
14183                                                     VkStructureType rootType,
14184                                                     VkImageCompressionControlEXT* forUnmarshaling,
14185                                                     uint8_t** ptr) {
14186     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14187     *ptr += sizeof(VkStructureType);
14188     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14189         rootType = forUnmarshaling->sType;
14190     }
14191     uint32_t pNext_size;
14192     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14193     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14194     *ptr += sizeof(uint32_t);
14195     forUnmarshaling->pNext = nullptr;
14196     if (pNext_size) {
14197         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14198         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14199         *ptr += sizeof(VkStructureType);
14200         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14201         vkStream->alloc((void**)&forUnmarshaling->pNext,
14202                         goldfish_vk_extension_struct_size_with_stream_features(
14203                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14204         *(VkStructureType*)forUnmarshaling->pNext = extType;
14205         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14206                                            ptr);
14207     }
14208     memcpy((VkImageCompressionFlagsEXT*)&forUnmarshaling->flags, *ptr,
14209            sizeof(VkImageCompressionFlagsEXT));
14210     *ptr += sizeof(VkImageCompressionFlagsEXT);
14211     memcpy((uint32_t*)&forUnmarshaling->compressionControlPlaneCount, *ptr, sizeof(uint32_t));
14212     *ptr += sizeof(uint32_t);
14213     // WARNING PTR CHECK
14214     memcpy((VkImageCompressionFixedRateFlagsEXT**)&forUnmarshaling->pFixedRateFlags, (*ptr), 8);
14215     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pFixedRateFlags);
14216     *ptr += 8;
14217     if (forUnmarshaling->pFixedRateFlags) {
14218         vkStream->alloc((void**)&forUnmarshaling->pFixedRateFlags,
14219                         forUnmarshaling->compressionControlPlaneCount *
14220                             sizeof(VkImageCompressionFixedRateFlagsEXT));
14221         memcpy((VkImageCompressionFixedRateFlagsEXT*)forUnmarshaling->pFixedRateFlags, *ptr,
14222                forUnmarshaling->compressionControlPlaneCount *
14223                    sizeof(VkImageCompressionFixedRateFlagsEXT));
14224         *ptr += forUnmarshaling->compressionControlPlaneCount *
14225                 sizeof(VkImageCompressionFixedRateFlagsEXT);
14226     }
14227 }
14228 
reservedunmarshal_VkImageCompressionPropertiesEXT(VulkanStream * vkStream,VkStructureType rootType,VkImageCompressionPropertiesEXT * forUnmarshaling,uint8_t ** ptr)14229 void reservedunmarshal_VkImageCompressionPropertiesEXT(
14230     VulkanStream* vkStream, VkStructureType rootType,
14231     VkImageCompressionPropertiesEXT* forUnmarshaling, uint8_t** ptr) {
14232     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14233     *ptr += sizeof(VkStructureType);
14234     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14235         rootType = forUnmarshaling->sType;
14236     }
14237     uint32_t pNext_size;
14238     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14239     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14240     *ptr += sizeof(uint32_t);
14241     forUnmarshaling->pNext = nullptr;
14242     if (pNext_size) {
14243         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14244         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14245         *ptr += sizeof(VkStructureType);
14246         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14247         vkStream->alloc((void**)&forUnmarshaling->pNext,
14248                         goldfish_vk_extension_struct_size_with_stream_features(
14249                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14250         *(VkStructureType*)forUnmarshaling->pNext = extType;
14251         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14252                                            ptr);
14253     }
14254     memcpy((VkImageCompressionFlagsEXT*)&forUnmarshaling->imageCompressionFlags, *ptr,
14255            sizeof(VkImageCompressionFlagsEXT));
14256     *ptr += sizeof(VkImageCompressionFlagsEXT);
14257     memcpy((VkImageCompressionFixedRateFlagsEXT*)&forUnmarshaling->imageCompressionFixedRateFlags,
14258            *ptr, sizeof(VkImageCompressionFixedRateFlagsEXT));
14259     *ptr += sizeof(VkImageCompressionFixedRateFlagsEXT);
14260 }
14261 
14262 #endif
14263 #ifdef VK_EXT_4444_formats
reservedunmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevice4444FormatsFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14264 void reservedunmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(
14265     VulkanStream* vkStream, VkStructureType rootType,
14266     VkPhysicalDevice4444FormatsFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14267     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14268     *ptr += sizeof(VkStructureType);
14269     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14270         rootType = forUnmarshaling->sType;
14271     }
14272     uint32_t pNext_size;
14273     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14274     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14275     *ptr += sizeof(uint32_t);
14276     forUnmarshaling->pNext = nullptr;
14277     if (pNext_size) {
14278         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14279         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14280         *ptr += sizeof(VkStructureType);
14281         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14282         vkStream->alloc((void**)&forUnmarshaling->pNext,
14283                         goldfish_vk_extension_struct_size_with_stream_features(
14284                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14285         *(VkStructureType*)forUnmarshaling->pNext = extType;
14286         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14287                                            ptr);
14288     }
14289     memcpy((VkBool32*)&forUnmarshaling->formatA4R4G4B4, *ptr, sizeof(VkBool32));
14290     *ptr += sizeof(VkBool32);
14291     memcpy((VkBool32*)&forUnmarshaling->formatA4B4G4R4, *ptr, sizeof(VkBool32));
14292     *ptr += sizeof(VkBool32);
14293 }
14294 
14295 #endif
14296 #ifdef VK_EXT_primitive_topology_list_restart
reservedunmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14297 void reservedunmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
14298     VulkanStream* vkStream, VkStructureType rootType,
14299     VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14300     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14301     *ptr += sizeof(VkStructureType);
14302     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14303         rootType = forUnmarshaling->sType;
14304     }
14305     uint32_t pNext_size;
14306     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14307     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14308     *ptr += sizeof(uint32_t);
14309     forUnmarshaling->pNext = nullptr;
14310     if (pNext_size) {
14311         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14312         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14313         *ptr += sizeof(VkStructureType);
14314         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14315         vkStream->alloc((void**)&forUnmarshaling->pNext,
14316                         goldfish_vk_extension_struct_size_with_stream_features(
14317                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14318         *(VkStructureType*)forUnmarshaling->pNext = extType;
14319         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14320                                            ptr);
14321     }
14322     memcpy((VkBool32*)&forUnmarshaling->primitiveTopologyListRestart, *ptr, sizeof(VkBool32));
14323     *ptr += sizeof(VkBool32);
14324     memcpy((VkBool32*)&forUnmarshaling->primitiveTopologyPatchListRestart, *ptr, sizeof(VkBool32));
14325     *ptr += sizeof(VkBool32);
14326 }
14327 
14328 #endif
14329 #ifdef VK_EXT_extended_dynamic_state2
reservedunmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceExtendedDynamicState2FeaturesEXT * forUnmarshaling,uint8_t ** ptr)14330 void reservedunmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
14331     VulkanStream* vkStream, VkStructureType rootType,
14332     VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14333     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14334     *ptr += sizeof(VkStructureType);
14335     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14336         rootType = forUnmarshaling->sType;
14337     }
14338     uint32_t pNext_size;
14339     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14340     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14341     *ptr += sizeof(uint32_t);
14342     forUnmarshaling->pNext = nullptr;
14343     if (pNext_size) {
14344         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14345         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14346         *ptr += sizeof(VkStructureType);
14347         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14348         vkStream->alloc((void**)&forUnmarshaling->pNext,
14349                         goldfish_vk_extension_struct_size_with_stream_features(
14350                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14351         *(VkStructureType*)forUnmarshaling->pNext = extType;
14352         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14353                                            ptr);
14354     }
14355     memcpy((VkBool32*)&forUnmarshaling->extendedDynamicState2, *ptr, sizeof(VkBool32));
14356     *ptr += sizeof(VkBool32);
14357     memcpy((VkBool32*)&forUnmarshaling->extendedDynamicState2LogicOp, *ptr, sizeof(VkBool32));
14358     *ptr += sizeof(VkBool32);
14359     memcpy((VkBool32*)&forUnmarshaling->extendedDynamicState2PatchControlPoints, *ptr,
14360            sizeof(VkBool32));
14361     *ptr += sizeof(VkBool32);
14362 }
14363 
14364 #endif
14365 #ifdef VK_EXT_color_write_enable
reservedunmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceColorWriteEnableFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14366 void reservedunmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
14367     VulkanStream* vkStream, VkStructureType rootType,
14368     VkPhysicalDeviceColorWriteEnableFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14369     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14370     *ptr += sizeof(VkStructureType);
14371     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14372         rootType = forUnmarshaling->sType;
14373     }
14374     uint32_t pNext_size;
14375     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14376     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14377     *ptr += sizeof(uint32_t);
14378     forUnmarshaling->pNext = nullptr;
14379     if (pNext_size) {
14380         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14381         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14382         *ptr += sizeof(VkStructureType);
14383         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14384         vkStream->alloc((void**)&forUnmarshaling->pNext,
14385                         goldfish_vk_extension_struct_size_with_stream_features(
14386                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14387         *(VkStructureType*)forUnmarshaling->pNext = extType;
14388         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14389                                            ptr);
14390     }
14391     memcpy((VkBool32*)&forUnmarshaling->colorWriteEnable, *ptr, sizeof(VkBool32));
14392     *ptr += sizeof(VkBool32);
14393 }
14394 
reservedunmarshal_VkPipelineColorWriteCreateInfoEXT(VulkanStream * vkStream,VkStructureType rootType,VkPipelineColorWriteCreateInfoEXT * forUnmarshaling,uint8_t ** ptr)14395 void reservedunmarshal_VkPipelineColorWriteCreateInfoEXT(
14396     VulkanStream* vkStream, VkStructureType rootType,
14397     VkPipelineColorWriteCreateInfoEXT* forUnmarshaling, uint8_t** ptr) {
14398     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14399     *ptr += sizeof(VkStructureType);
14400     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14401         rootType = forUnmarshaling->sType;
14402     }
14403     uint32_t pNext_size;
14404     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14405     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14406     *ptr += sizeof(uint32_t);
14407     forUnmarshaling->pNext = nullptr;
14408     if (pNext_size) {
14409         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14410         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14411         *ptr += sizeof(VkStructureType);
14412         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14413         vkStream->alloc((void**)&forUnmarshaling->pNext,
14414                         goldfish_vk_extension_struct_size_with_stream_features(
14415                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14416         *(VkStructureType*)forUnmarshaling->pNext = extType;
14417         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14418                                            ptr);
14419     }
14420     memcpy((uint32_t*)&forUnmarshaling->attachmentCount, *ptr, sizeof(uint32_t));
14421     *ptr += sizeof(uint32_t);
14422     vkStream->alloc((void**)&forUnmarshaling->pColorWriteEnables,
14423                     forUnmarshaling->attachmentCount * sizeof(const VkBool32));
14424     memcpy((VkBool32*)forUnmarshaling->pColorWriteEnables, *ptr,
14425            forUnmarshaling->attachmentCount * sizeof(const VkBool32));
14426     *ptr += forUnmarshaling->attachmentCount * sizeof(const VkBool32);
14427 }
14428 
14429 #endif
14430 #ifdef VK_GOOGLE_gfxstream
reservedunmarshal_VkImportColorBufferGOOGLE(VulkanStream * vkStream,VkStructureType rootType,VkImportColorBufferGOOGLE * forUnmarshaling,uint8_t ** ptr)14431 void reservedunmarshal_VkImportColorBufferGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
14432                                                  VkImportColorBufferGOOGLE* forUnmarshaling,
14433                                                  uint8_t** ptr) {
14434     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14435     *ptr += sizeof(VkStructureType);
14436     forUnmarshaling->sType = VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE;
14437     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14438         rootType = forUnmarshaling->sType;
14439     }
14440     uint32_t pNext_size;
14441     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14442     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14443     *ptr += sizeof(uint32_t);
14444     forUnmarshaling->pNext = nullptr;
14445     if (pNext_size) {
14446         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14447         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14448         *ptr += sizeof(VkStructureType);
14449         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14450         vkStream->alloc((void**)&forUnmarshaling->pNext,
14451                         goldfish_vk_extension_struct_size_with_stream_features(
14452                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14453         *(VkStructureType*)forUnmarshaling->pNext = extType;
14454         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14455                                            ptr);
14456     }
14457     memcpy((uint32_t*)&forUnmarshaling->colorBuffer, *ptr, sizeof(uint32_t));
14458     *ptr += sizeof(uint32_t);
14459 }
14460 
reservedunmarshal_VkImportBufferGOOGLE(VulkanStream * vkStream,VkStructureType rootType,VkImportBufferGOOGLE * forUnmarshaling,uint8_t ** ptr)14461 void reservedunmarshal_VkImportBufferGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
14462                                             VkImportBufferGOOGLE* forUnmarshaling, uint8_t** ptr) {
14463     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14464     *ptr += sizeof(VkStructureType);
14465     forUnmarshaling->sType = VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE;
14466     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14467         rootType = forUnmarshaling->sType;
14468     }
14469     uint32_t pNext_size;
14470     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14471     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14472     *ptr += sizeof(uint32_t);
14473     forUnmarshaling->pNext = nullptr;
14474     if (pNext_size) {
14475         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14476         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14477         *ptr += sizeof(VkStructureType);
14478         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14479         vkStream->alloc((void**)&forUnmarshaling->pNext,
14480                         goldfish_vk_extension_struct_size_with_stream_features(
14481                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14482         *(VkStructureType*)forUnmarshaling->pNext = extType;
14483         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14484                                            ptr);
14485     }
14486     memcpy((uint32_t*)&forUnmarshaling->buffer, *ptr, sizeof(uint32_t));
14487     *ptr += sizeof(uint32_t);
14488 }
14489 
reservedunmarshal_VkCreateBlobGOOGLE(VulkanStream * vkStream,VkStructureType rootType,VkCreateBlobGOOGLE * forUnmarshaling,uint8_t ** ptr)14490 void reservedunmarshal_VkCreateBlobGOOGLE(VulkanStream* vkStream, VkStructureType rootType,
14491                                           VkCreateBlobGOOGLE* forUnmarshaling, uint8_t** ptr) {
14492     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14493     *ptr += sizeof(VkStructureType);
14494     forUnmarshaling->sType = VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE;
14495     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14496         rootType = forUnmarshaling->sType;
14497     }
14498     uint32_t pNext_size;
14499     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14500     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14501     *ptr += sizeof(uint32_t);
14502     forUnmarshaling->pNext = nullptr;
14503     if (pNext_size) {
14504         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14505         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14506         *ptr += sizeof(VkStructureType);
14507         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14508         vkStream->alloc((void**)&forUnmarshaling->pNext,
14509                         goldfish_vk_extension_struct_size_with_stream_features(
14510                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14511         *(VkStructureType*)forUnmarshaling->pNext = extType;
14512         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14513                                            ptr);
14514     }
14515     memcpy((uint32_t*)&forUnmarshaling->blobMem, *ptr, sizeof(uint32_t));
14516     *ptr += sizeof(uint32_t);
14517     memcpy((uint32_t*)&forUnmarshaling->blobFlags, *ptr, sizeof(uint32_t));
14518     *ptr += sizeof(uint32_t);
14519     memcpy((uint64_t*)&forUnmarshaling->blobId, *ptr, sizeof(uint64_t));
14520     *ptr += sizeof(uint64_t);
14521 }
14522 
14523 #endif
14524 #ifdef VK_EXT_image_compression_control_swapchain
reservedunmarshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT * forUnmarshaling,uint8_t ** ptr)14525 void reservedunmarshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
14526     VulkanStream* vkStream, VkStructureType rootType,
14527     VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT* forUnmarshaling, uint8_t** ptr) {
14528     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14529     *ptr += sizeof(VkStructureType);
14530     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14531         rootType = forUnmarshaling->sType;
14532     }
14533     uint32_t pNext_size;
14534     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14535     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14536     *ptr += sizeof(uint32_t);
14537     forUnmarshaling->pNext = nullptr;
14538     if (pNext_size) {
14539         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14540         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14541         *ptr += sizeof(VkStructureType);
14542         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14543         vkStream->alloc((void**)&forUnmarshaling->pNext,
14544                         goldfish_vk_extension_struct_size_with_stream_features(
14545                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14546         *(VkStructureType*)forUnmarshaling->pNext = extType;
14547         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14548                                            ptr);
14549     }
14550     memcpy((VkBool32*)&forUnmarshaling->imageCompressionControlSwapchain, *ptr, sizeof(VkBool32));
14551     *ptr += sizeof(VkBool32);
14552 }
14553 
14554 #endif
14555 #ifdef VK_KHR_ray_tracing_pipeline
reservedunmarshal_VkRayTracingShaderGroupCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRayTracingShaderGroupCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)14556 void reservedunmarshal_VkRayTracingShaderGroupCreateInfoKHR(
14557     VulkanStream* vkStream, VkStructureType rootType,
14558     VkRayTracingShaderGroupCreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
14559     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14560     *ptr += sizeof(VkStructureType);
14561     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14562         rootType = forUnmarshaling->sType;
14563     }
14564     uint32_t pNext_size;
14565     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14566     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14567     *ptr += sizeof(uint32_t);
14568     forUnmarshaling->pNext = nullptr;
14569     if (pNext_size) {
14570         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14571         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14572         *ptr += sizeof(VkStructureType);
14573         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14574         vkStream->alloc((void**)&forUnmarshaling->pNext,
14575                         goldfish_vk_extension_struct_size_with_stream_features(
14576                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14577         *(VkStructureType*)forUnmarshaling->pNext = extType;
14578         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14579                                            ptr);
14580     }
14581     memcpy((VkRayTracingShaderGroupTypeKHR*)&forUnmarshaling->type, *ptr,
14582            sizeof(VkRayTracingShaderGroupTypeKHR));
14583     *ptr += sizeof(VkRayTracingShaderGroupTypeKHR);
14584     memcpy((uint32_t*)&forUnmarshaling->generalShader, *ptr, sizeof(uint32_t));
14585     *ptr += sizeof(uint32_t);
14586     memcpy((uint32_t*)&forUnmarshaling->closestHitShader, *ptr, sizeof(uint32_t));
14587     *ptr += sizeof(uint32_t);
14588     memcpy((uint32_t*)&forUnmarshaling->anyHitShader, *ptr, sizeof(uint32_t));
14589     *ptr += sizeof(uint32_t);
14590     memcpy((uint32_t*)&forUnmarshaling->intersectionShader, *ptr, sizeof(uint32_t));
14591     *ptr += sizeof(uint32_t);
14592     // WARNING PTR CHECK
14593     memcpy((void**)&forUnmarshaling->pShaderGroupCaptureReplayHandle, (*ptr), 8);
14594     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pShaderGroupCaptureReplayHandle);
14595     *ptr += 8;
14596     if (forUnmarshaling->pShaderGroupCaptureReplayHandle) {
14597         vkStream->alloc((void**)&forUnmarshaling->pShaderGroupCaptureReplayHandle,
14598                         sizeof(const uint8_t));
14599         memcpy((void*)forUnmarshaling->pShaderGroupCaptureReplayHandle, *ptr,
14600                sizeof(const uint8_t));
14601         *ptr += sizeof(const uint8_t);
14602     }
14603 }
14604 
reservedunmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRayTracingPipelineInterfaceCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)14605 void reservedunmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
14606     VulkanStream* vkStream, VkStructureType rootType,
14607     VkRayTracingPipelineInterfaceCreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
14608     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14609     *ptr += sizeof(VkStructureType);
14610     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14611         rootType = forUnmarshaling->sType;
14612     }
14613     uint32_t pNext_size;
14614     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14615     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14616     *ptr += sizeof(uint32_t);
14617     forUnmarshaling->pNext = nullptr;
14618     if (pNext_size) {
14619         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14620         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14621         *ptr += sizeof(VkStructureType);
14622         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14623         vkStream->alloc((void**)&forUnmarshaling->pNext,
14624                         goldfish_vk_extension_struct_size_with_stream_features(
14625                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14626         *(VkStructureType*)forUnmarshaling->pNext = extType;
14627         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14628                                            ptr);
14629     }
14630     memcpy((uint32_t*)&forUnmarshaling->maxPipelineRayPayloadSize, *ptr, sizeof(uint32_t));
14631     *ptr += sizeof(uint32_t);
14632     memcpy((uint32_t*)&forUnmarshaling->maxPipelineRayHitAttributeSize, *ptr, sizeof(uint32_t));
14633     *ptr += sizeof(uint32_t);
14634 }
14635 
reservedunmarshal_VkRayTracingPipelineCreateInfoKHR(VulkanStream * vkStream,VkStructureType rootType,VkRayTracingPipelineCreateInfoKHR * forUnmarshaling,uint8_t ** ptr)14636 void reservedunmarshal_VkRayTracingPipelineCreateInfoKHR(
14637     VulkanStream* vkStream, VkStructureType rootType,
14638     VkRayTracingPipelineCreateInfoKHR* forUnmarshaling, uint8_t** ptr) {
14639     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14640     *ptr += sizeof(VkStructureType);
14641     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14642         rootType = forUnmarshaling->sType;
14643     }
14644     uint32_t pNext_size;
14645     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14646     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14647     *ptr += sizeof(uint32_t);
14648     forUnmarshaling->pNext = nullptr;
14649     if (pNext_size) {
14650         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14651         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14652         *ptr += sizeof(VkStructureType);
14653         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14654         vkStream->alloc((void**)&forUnmarshaling->pNext,
14655                         goldfish_vk_extension_struct_size_with_stream_features(
14656                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14657         *(VkStructureType*)forUnmarshaling->pNext = extType;
14658         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14659                                            ptr);
14660     }
14661     memcpy((VkPipelineCreateFlags*)&forUnmarshaling->flags, *ptr, sizeof(VkPipelineCreateFlags));
14662     *ptr += sizeof(VkPipelineCreateFlags);
14663     memcpy((uint32_t*)&forUnmarshaling->stageCount, *ptr, sizeof(uint32_t));
14664     *ptr += sizeof(uint32_t);
14665     vkStream->alloc((void**)&forUnmarshaling->pStages,
14666                     forUnmarshaling->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
14667     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->stageCount; ++i) {
14668         reservedunmarshal_VkPipelineShaderStageCreateInfo(
14669             vkStream, rootType, (VkPipelineShaderStageCreateInfo*)(forUnmarshaling->pStages + i),
14670             ptr);
14671     }
14672     memcpy((uint32_t*)&forUnmarshaling->groupCount, *ptr, sizeof(uint32_t));
14673     *ptr += sizeof(uint32_t);
14674     vkStream->alloc(
14675         (void**)&forUnmarshaling->pGroups,
14676         forUnmarshaling->groupCount * sizeof(const VkRayTracingShaderGroupCreateInfoKHR));
14677     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->groupCount; ++i) {
14678         reservedunmarshal_VkRayTracingShaderGroupCreateInfoKHR(
14679             vkStream, rootType,
14680             (VkRayTracingShaderGroupCreateInfoKHR*)(forUnmarshaling->pGroups + i), ptr);
14681     }
14682     memcpy((uint32_t*)&forUnmarshaling->maxPipelineRayRecursionDepth, *ptr, sizeof(uint32_t));
14683     *ptr += sizeof(uint32_t);
14684     // WARNING PTR CHECK
14685     memcpy((VkPipelineLibraryCreateInfoKHR**)&forUnmarshaling->pLibraryInfo, (*ptr), 8);
14686     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pLibraryInfo);
14687     *ptr += 8;
14688     if (forUnmarshaling->pLibraryInfo) {
14689         vkStream->alloc((void**)&forUnmarshaling->pLibraryInfo,
14690                         sizeof(const VkPipelineLibraryCreateInfoKHR));
14691         reservedunmarshal_VkPipelineLibraryCreateInfoKHR(
14692             vkStream, rootType, (VkPipelineLibraryCreateInfoKHR*)(forUnmarshaling->pLibraryInfo),
14693             ptr);
14694     }
14695     // WARNING PTR CHECK
14696     memcpy((VkRayTracingPipelineInterfaceCreateInfoKHR**)&forUnmarshaling->pLibraryInterface,
14697            (*ptr), 8);
14698     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pLibraryInterface);
14699     *ptr += 8;
14700     if (forUnmarshaling->pLibraryInterface) {
14701         vkStream->alloc((void**)&forUnmarshaling->pLibraryInterface,
14702                         sizeof(const VkRayTracingPipelineInterfaceCreateInfoKHR));
14703         reservedunmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
14704             vkStream, rootType,
14705             (VkRayTracingPipelineInterfaceCreateInfoKHR*)(forUnmarshaling->pLibraryInterface), ptr);
14706     }
14707     // WARNING PTR CHECK
14708     memcpy((VkPipelineDynamicStateCreateInfo**)&forUnmarshaling->pDynamicState, (*ptr), 8);
14709     android::base::Stream::fromBe64((uint8_t*)&forUnmarshaling->pDynamicState);
14710     *ptr += 8;
14711     if (forUnmarshaling->pDynamicState) {
14712         vkStream->alloc((void**)&forUnmarshaling->pDynamicState,
14713                         sizeof(const VkPipelineDynamicStateCreateInfo));
14714         reservedunmarshal_VkPipelineDynamicStateCreateInfo(
14715             vkStream, rootType, (VkPipelineDynamicStateCreateInfo*)(forUnmarshaling->pDynamicState),
14716             ptr);
14717     }
14718     uint64_t cgen_var_3;
14719     memcpy((uint64_t*)&cgen_var_3, *ptr, 1 * 8);
14720     *ptr += 1 * 8;
14721     *(VkPipelineLayout*)&forUnmarshaling->layout =
14722         (VkPipelineLayout)unbox_VkPipelineLayout((VkPipelineLayout)(*&cgen_var_3));
14723     uint64_t cgen_var_4;
14724     memcpy((uint64_t*)&cgen_var_4, *ptr, 1 * 8);
14725     *ptr += 1 * 8;
14726     *(VkPipeline*)&forUnmarshaling->basePipelineHandle =
14727         (VkPipeline)unbox_VkPipeline((VkPipeline)(*&cgen_var_4));
14728     memcpy((int32_t*)&forUnmarshaling->basePipelineIndex, *ptr, sizeof(int32_t));
14729     *ptr += sizeof(int32_t);
14730 }
14731 
reservedunmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRayTracingPipelineFeaturesKHR * forUnmarshaling,uint8_t ** ptr)14732 void reservedunmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
14733     VulkanStream* vkStream, VkStructureType rootType,
14734     VkPhysicalDeviceRayTracingPipelineFeaturesKHR* forUnmarshaling, uint8_t** ptr) {
14735     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14736     *ptr += sizeof(VkStructureType);
14737     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14738         rootType = forUnmarshaling->sType;
14739     }
14740     uint32_t pNext_size;
14741     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14742     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14743     *ptr += sizeof(uint32_t);
14744     forUnmarshaling->pNext = nullptr;
14745     if (pNext_size) {
14746         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14747         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14748         *ptr += sizeof(VkStructureType);
14749         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14750         vkStream->alloc((void**)&forUnmarshaling->pNext,
14751                         goldfish_vk_extension_struct_size_with_stream_features(
14752                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14753         *(VkStructureType*)forUnmarshaling->pNext = extType;
14754         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14755                                            ptr);
14756     }
14757     memcpy((VkBool32*)&forUnmarshaling->rayTracingPipeline, *ptr, sizeof(VkBool32));
14758     *ptr += sizeof(VkBool32);
14759     memcpy((VkBool32*)&forUnmarshaling->rayTracingPipelineShaderGroupHandleCaptureReplay, *ptr,
14760            sizeof(VkBool32));
14761     *ptr += sizeof(VkBool32);
14762     memcpy((VkBool32*)&forUnmarshaling->rayTracingPipelineShaderGroupHandleCaptureReplayMixed, *ptr,
14763            sizeof(VkBool32));
14764     *ptr += sizeof(VkBool32);
14765     memcpy((VkBool32*)&forUnmarshaling->rayTracingPipelineTraceRaysIndirect, *ptr,
14766            sizeof(VkBool32));
14767     *ptr += sizeof(VkBool32);
14768     memcpy((VkBool32*)&forUnmarshaling->rayTraversalPrimitiveCulling, *ptr, sizeof(VkBool32));
14769     *ptr += sizeof(VkBool32);
14770 }
14771 
reservedunmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(VulkanStream * vkStream,VkStructureType rootType,VkPhysicalDeviceRayTracingPipelinePropertiesKHR * forUnmarshaling,uint8_t ** ptr)14772 void reservedunmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
14773     VulkanStream* vkStream, VkStructureType rootType,
14774     VkPhysicalDeviceRayTracingPipelinePropertiesKHR* forUnmarshaling, uint8_t** ptr) {
14775     memcpy((VkStructureType*)&forUnmarshaling->sType, *ptr, sizeof(VkStructureType));
14776     *ptr += sizeof(VkStructureType);
14777     if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM) {
14778         rootType = forUnmarshaling->sType;
14779     }
14780     uint32_t pNext_size;
14781     memcpy((uint32_t*)&pNext_size, *ptr, sizeof(uint32_t));
14782     android::base::Stream::fromBe32((uint8_t*)&pNext_size);
14783     *ptr += sizeof(uint32_t);
14784     forUnmarshaling->pNext = nullptr;
14785     if (pNext_size) {
14786         vkStream->alloc((void**)&forUnmarshaling->pNext, sizeof(VkStructureType));
14787         memcpy((void*)forUnmarshaling->pNext, *ptr, sizeof(VkStructureType));
14788         *ptr += sizeof(VkStructureType);
14789         VkStructureType extType = *(VkStructureType*)(forUnmarshaling->pNext);
14790         vkStream->alloc((void**)&forUnmarshaling->pNext,
14791                         goldfish_vk_extension_struct_size_with_stream_features(
14792                             vkStream->getFeatureBits(), rootType, forUnmarshaling->pNext));
14793         *(VkStructureType*)forUnmarshaling->pNext = extType;
14794         reservedunmarshal_extension_struct(vkStream, rootType, (void*)(forUnmarshaling->pNext),
14795                                            ptr);
14796     }
14797     memcpy((uint32_t*)&forUnmarshaling->shaderGroupHandleSize, *ptr, sizeof(uint32_t));
14798     *ptr += sizeof(uint32_t);
14799     memcpy((uint32_t*)&forUnmarshaling->maxRayRecursionDepth, *ptr, sizeof(uint32_t));
14800     *ptr += sizeof(uint32_t);
14801     memcpy((uint32_t*)&forUnmarshaling->maxShaderGroupStride, *ptr, sizeof(uint32_t));
14802     *ptr += sizeof(uint32_t);
14803     memcpy((uint32_t*)&forUnmarshaling->shaderGroupBaseAlignment, *ptr, sizeof(uint32_t));
14804     *ptr += sizeof(uint32_t);
14805     memcpy((uint32_t*)&forUnmarshaling->shaderGroupHandleCaptureReplaySize, *ptr, sizeof(uint32_t));
14806     *ptr += sizeof(uint32_t);
14807     memcpy((uint32_t*)&forUnmarshaling->maxRayDispatchInvocationCount, *ptr, sizeof(uint32_t));
14808     *ptr += sizeof(uint32_t);
14809     memcpy((uint32_t*)&forUnmarshaling->shaderGroupHandleAlignment, *ptr, sizeof(uint32_t));
14810     *ptr += sizeof(uint32_t);
14811     memcpy((uint32_t*)&forUnmarshaling->maxRayHitAttributeSize, *ptr, sizeof(uint32_t));
14812     *ptr += sizeof(uint32_t);
14813 }
14814 
reservedunmarshal_VkStridedDeviceAddressRegionKHR(VulkanStream * vkStream,VkStructureType rootType,VkStridedDeviceAddressRegionKHR * forUnmarshaling,uint8_t ** ptr)14815 void reservedunmarshal_VkStridedDeviceAddressRegionKHR(
14816     VulkanStream* vkStream, VkStructureType rootType,
14817     VkStridedDeviceAddressRegionKHR* forUnmarshaling, uint8_t** ptr) {
14818     memcpy((VkDeviceAddress*)&forUnmarshaling->deviceAddress, *ptr, sizeof(VkDeviceAddress));
14819     *ptr += sizeof(VkDeviceAddress);
14820     memcpy((VkDeviceSize*)&forUnmarshaling->stride, *ptr, sizeof(VkDeviceSize));
14821     *ptr += sizeof(VkDeviceSize);
14822     memcpy((VkDeviceSize*)&forUnmarshaling->size, *ptr, sizeof(VkDeviceSize));
14823     *ptr += sizeof(VkDeviceSize);
14824 }
14825 
reservedunmarshal_VkTraceRaysIndirectCommandKHR(VulkanStream * vkStream,VkStructureType rootType,VkTraceRaysIndirectCommandKHR * forUnmarshaling,uint8_t ** ptr)14826 void reservedunmarshal_VkTraceRaysIndirectCommandKHR(VulkanStream* vkStream,
14827                                                      VkStructureType rootType,
14828                                                      VkTraceRaysIndirectCommandKHR* forUnmarshaling,
14829                                                      uint8_t** ptr) {
14830     memcpy((uint32_t*)&forUnmarshaling->width, *ptr, sizeof(uint32_t));
14831     *ptr += sizeof(uint32_t);
14832     memcpy((uint32_t*)&forUnmarshaling->height, *ptr, sizeof(uint32_t));
14833     *ptr += sizeof(uint32_t);
14834     memcpy((uint32_t*)&forUnmarshaling->depth, *ptr, sizeof(uint32_t));
14835     *ptr += sizeof(uint32_t);
14836 }
14837 
14838 #endif
reservedunmarshal_extension_struct(VulkanStream * vkStream,VkStructureType rootType,void * structExtension_out,uint8_t ** ptr)14839 void reservedunmarshal_extension_struct(VulkanStream* vkStream, VkStructureType rootType,
14840                                         void* structExtension_out, uint8_t** ptr) {
14841     VkInstanceCreateInfo* structAccess = (VkInstanceCreateInfo*)(structExtension_out);
14842     uint32_t currExtSize = goldfish_vk_extension_struct_size_with_stream_features(
14843         vkStream->getFeatureBits(), rootType, structExtension_out);
14844     if (!currExtSize && structExtension_out) {
14845         // unknown struct extension; skip and call on its pNext field
14846         reservedunmarshal_extension_struct(vkStream, rootType, (void*)structAccess->pNext, ptr);
14847         return;
14848     } else {
14849         // known or null extension struct
14850         if (!currExtSize) {
14851             // exit if this was a null extension struct (size == 0 in this branch)
14852             return;
14853         }
14854     }
14855     if (!structExtension_out) {
14856         return;
14857     }
14858     uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension_out);
14859     switch (structType) {
14860 #ifdef VK_VERSION_1_0
14861         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: {
14862             reservedunmarshal_VkShaderModuleCreateInfo(
14863                 vkStream, rootType,
14864                 reinterpret_cast<VkShaderModuleCreateInfo*>(structExtension_out), ptr);
14865             break;
14866         }
14867 #endif
14868 #ifdef VK_VERSION_1_1
14869         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
14870             reservedunmarshal_VkPhysicalDeviceSubgroupProperties(
14871                 vkStream, rootType,
14872                 reinterpret_cast<VkPhysicalDeviceSubgroupProperties*>(structExtension_out), ptr);
14873             break;
14874         }
14875         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
14876             reservedunmarshal_VkPhysicalDevice16BitStorageFeatures(
14877                 vkStream, rootType,
14878                 reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(structExtension_out), ptr);
14879             break;
14880         }
14881         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
14882             reservedunmarshal_VkMemoryDedicatedRequirements(
14883                 vkStream, rootType,
14884                 reinterpret_cast<VkMemoryDedicatedRequirements*>(structExtension_out), ptr);
14885             break;
14886         }
14887         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
14888             reservedunmarshal_VkMemoryDedicatedAllocateInfo(
14889                 vkStream, rootType,
14890                 reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(structExtension_out), ptr);
14891             break;
14892         }
14893         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
14894             reservedunmarshal_VkMemoryAllocateFlagsInfo(
14895                 vkStream, rootType,
14896                 reinterpret_cast<VkMemoryAllocateFlagsInfo*>(structExtension_out), ptr);
14897             break;
14898         }
14899         case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
14900             reservedunmarshal_VkDeviceGroupRenderPassBeginInfo(
14901                 vkStream, rootType,
14902                 reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(structExtension_out), ptr);
14903             break;
14904         }
14905         case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
14906             reservedunmarshal_VkDeviceGroupCommandBufferBeginInfo(
14907                 vkStream, rootType,
14908                 reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(structExtension_out), ptr);
14909             break;
14910         }
14911         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
14912             reservedunmarshal_VkDeviceGroupSubmitInfo(
14913                 vkStream, rootType, reinterpret_cast<VkDeviceGroupSubmitInfo*>(structExtension_out),
14914                 ptr);
14915             break;
14916         }
14917         case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
14918             reservedunmarshal_VkDeviceGroupBindSparseInfo(
14919                 vkStream, rootType,
14920                 reinterpret_cast<VkDeviceGroupBindSparseInfo*>(structExtension_out), ptr);
14921             break;
14922         }
14923         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
14924             reservedunmarshal_VkBindBufferMemoryDeviceGroupInfo(
14925                 vkStream, rootType,
14926                 reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(structExtension_out), ptr);
14927             break;
14928         }
14929         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
14930             reservedunmarshal_VkBindImageMemoryDeviceGroupInfo(
14931                 vkStream, rootType,
14932                 reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(structExtension_out), ptr);
14933             break;
14934         }
14935         case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
14936             reservedunmarshal_VkDeviceGroupDeviceCreateInfo(
14937                 vkStream, rootType,
14938                 reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(structExtension_out), ptr);
14939             break;
14940         }
14941         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
14942             reservedunmarshal_VkPhysicalDeviceFeatures2(
14943                 vkStream, rootType,
14944                 reinterpret_cast<VkPhysicalDeviceFeatures2*>(structExtension_out), ptr);
14945             break;
14946         }
14947         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
14948             reservedunmarshal_VkPhysicalDevicePointClippingProperties(
14949                 vkStream, rootType,
14950                 reinterpret_cast<VkPhysicalDevicePointClippingProperties*>(structExtension_out),
14951                 ptr);
14952             break;
14953         }
14954         case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
14955             reservedunmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
14956                 vkStream, rootType,
14957                 reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(structExtension_out),
14958                 ptr);
14959             break;
14960         }
14961         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
14962             reservedunmarshal_VkImageViewUsageCreateInfo(
14963                 vkStream, rootType,
14964                 reinterpret_cast<VkImageViewUsageCreateInfo*>(structExtension_out), ptr);
14965             break;
14966         }
14967         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
14968             reservedunmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
14969                 vkStream, rootType,
14970                 reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(
14971                     structExtension_out),
14972                 ptr);
14973             break;
14974         }
14975         case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
14976             reservedunmarshal_VkRenderPassMultiviewCreateInfo(
14977                 vkStream, rootType,
14978                 reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(structExtension_out), ptr);
14979             break;
14980         }
14981         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
14982             reservedunmarshal_VkPhysicalDeviceMultiviewFeatures(
14983                 vkStream, rootType,
14984                 reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(structExtension_out), ptr);
14985             break;
14986         }
14987         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
14988             reservedunmarshal_VkPhysicalDeviceMultiviewProperties(
14989                 vkStream, rootType,
14990                 reinterpret_cast<VkPhysicalDeviceMultiviewProperties*>(structExtension_out), ptr);
14991             break;
14992         }
14993         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
14994             reservedunmarshal_VkPhysicalDeviceVariablePointersFeatures(
14995                 vkStream, rootType,
14996                 reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>(structExtension_out),
14997                 ptr);
14998             break;
14999         }
15000         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
15001             reservedunmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
15002                 vkStream, rootType,
15003                 reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension_out),
15004                 ptr);
15005             break;
15006         }
15007         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
15008             reservedunmarshal_VkPhysicalDeviceProtectedMemoryProperties(
15009                 vkStream, rootType,
15010                 reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties*>(structExtension_out),
15011                 ptr);
15012             break;
15013         }
15014         case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
15015             reservedunmarshal_VkProtectedSubmitInfo(
15016                 vkStream, rootType, reinterpret_cast<VkProtectedSubmitInfo*>(structExtension_out),
15017                 ptr);
15018             break;
15019         }
15020         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
15021             reservedunmarshal_VkSamplerYcbcrConversionInfo(
15022                 vkStream, rootType,
15023                 reinterpret_cast<VkSamplerYcbcrConversionInfo*>(structExtension_out), ptr);
15024             break;
15025         }
15026         case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
15027             reservedunmarshal_VkBindImagePlaneMemoryInfo(
15028                 vkStream, rootType,
15029                 reinterpret_cast<VkBindImagePlaneMemoryInfo*>(structExtension_out), ptr);
15030             break;
15031         }
15032         case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
15033             reservedunmarshal_VkImagePlaneMemoryRequirementsInfo(
15034                 vkStream, rootType,
15035                 reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(structExtension_out), ptr);
15036             break;
15037         }
15038         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
15039             reservedunmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
15040                 vkStream, rootType,
15041                 reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(
15042                     structExtension_out),
15043                 ptr);
15044             break;
15045         }
15046         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
15047             reservedunmarshal_VkSamplerYcbcrConversionImageFormatProperties(
15048                 vkStream, rootType,
15049                 reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>(
15050                     structExtension_out),
15051                 ptr);
15052             break;
15053         }
15054         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
15055             reservedunmarshal_VkPhysicalDeviceExternalImageFormatInfo(
15056                 vkStream, rootType,
15057                 reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out),
15058                 ptr);
15059             break;
15060         }
15061         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
15062             reservedunmarshal_VkExternalImageFormatProperties(
15063                 vkStream, rootType,
15064                 reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out), ptr);
15065             break;
15066         }
15067         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
15068             reservedunmarshal_VkPhysicalDeviceIDProperties(
15069                 vkStream, rootType,
15070                 reinterpret_cast<VkPhysicalDeviceIDProperties*>(structExtension_out), ptr);
15071             break;
15072         }
15073         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
15074             reservedunmarshal_VkExternalMemoryImageCreateInfo(
15075                 vkStream, rootType,
15076                 reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out), ptr);
15077             break;
15078         }
15079         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
15080             reservedunmarshal_VkExternalMemoryBufferCreateInfo(
15081                 vkStream, rootType,
15082                 reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out), ptr);
15083             break;
15084         }
15085         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
15086             reservedunmarshal_VkExportMemoryAllocateInfo(
15087                 vkStream, rootType,
15088                 reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out), ptr);
15089             break;
15090         }
15091         case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
15092             reservedunmarshal_VkExportFenceCreateInfo(
15093                 vkStream, rootType, reinterpret_cast<VkExportFenceCreateInfo*>(structExtension_out),
15094                 ptr);
15095             break;
15096         }
15097         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
15098             reservedunmarshal_VkExportSemaphoreCreateInfo(
15099                 vkStream, rootType,
15100                 reinterpret_cast<VkExportSemaphoreCreateInfo*>(structExtension_out), ptr);
15101             break;
15102         }
15103         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
15104             reservedunmarshal_VkPhysicalDeviceMaintenance3Properties(
15105                 vkStream, rootType,
15106                 reinterpret_cast<VkPhysicalDeviceMaintenance3Properties*>(structExtension_out),
15107                 ptr);
15108             break;
15109         }
15110         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
15111             reservedunmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(
15112                 vkStream, rootType,
15113                 reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>(
15114                     structExtension_out),
15115                 ptr);
15116             break;
15117         }
15118 #endif
15119 #ifdef VK_VERSION_1_2
15120         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
15121             reservedunmarshal_VkPhysicalDeviceVulkan11Features(
15122                 vkStream, rootType,
15123                 reinterpret_cast<VkPhysicalDeviceVulkan11Features*>(structExtension_out), ptr);
15124             break;
15125         }
15126         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: {
15127             reservedunmarshal_VkPhysicalDeviceVulkan11Properties(
15128                 vkStream, rootType,
15129                 reinterpret_cast<VkPhysicalDeviceVulkan11Properties*>(structExtension_out), ptr);
15130             break;
15131         }
15132         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
15133             reservedunmarshal_VkPhysicalDeviceVulkan12Features(
15134                 vkStream, rootType,
15135                 reinterpret_cast<VkPhysicalDeviceVulkan12Features*>(structExtension_out), ptr);
15136             break;
15137         }
15138         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: {
15139             reservedunmarshal_VkPhysicalDeviceVulkan12Properties(
15140                 vkStream, rootType,
15141                 reinterpret_cast<VkPhysicalDeviceVulkan12Properties*>(structExtension_out), ptr);
15142             break;
15143         }
15144         case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: {
15145             reservedunmarshal_VkImageFormatListCreateInfo(
15146                 vkStream, rootType,
15147                 reinterpret_cast<VkImageFormatListCreateInfo*>(structExtension_out), ptr);
15148             break;
15149         }
15150         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: {
15151             reservedunmarshal_VkPhysicalDevice8BitStorageFeatures(
15152                 vkStream, rootType,
15153                 reinterpret_cast<VkPhysicalDevice8BitStorageFeatures*>(structExtension_out), ptr);
15154             break;
15155         }
15156         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: {
15157             reservedunmarshal_VkPhysicalDeviceDriverProperties(
15158                 vkStream, rootType,
15159                 reinterpret_cast<VkPhysicalDeviceDriverProperties*>(structExtension_out), ptr);
15160             break;
15161         }
15162         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: {
15163             reservedunmarshal_VkPhysicalDeviceShaderAtomicInt64Features(
15164                 vkStream, rootType,
15165                 reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features*>(structExtension_out),
15166                 ptr);
15167             break;
15168         }
15169         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: {
15170             reservedunmarshal_VkPhysicalDeviceShaderFloat16Int8Features(
15171                 vkStream, rootType,
15172                 reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features*>(structExtension_out),
15173                 ptr);
15174             break;
15175         }
15176         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: {
15177             reservedunmarshal_VkPhysicalDeviceFloatControlsProperties(
15178                 vkStream, rootType,
15179                 reinterpret_cast<VkPhysicalDeviceFloatControlsProperties*>(structExtension_out),
15180                 ptr);
15181             break;
15182         }
15183         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: {
15184             reservedunmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
15185                 vkStream, rootType,
15186                 reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo*>(structExtension_out),
15187                 ptr);
15188             break;
15189         }
15190         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: {
15191             reservedunmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(
15192                 vkStream, rootType,
15193                 reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures*>(structExtension_out),
15194                 ptr);
15195             break;
15196         }
15197         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: {
15198             reservedunmarshal_VkPhysicalDeviceDescriptorIndexingProperties(
15199                 vkStream, rootType,
15200                 reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties*>(
15201                     structExtension_out),
15202                 ptr);
15203             break;
15204         }
15205         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: {
15206             reservedunmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
15207                 vkStream, rootType,
15208                 reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo*>(
15209                     structExtension_out),
15210                 ptr);
15211             break;
15212         }
15213         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: {
15214             reservedunmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
15215                 vkStream, rootType,
15216                 reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport*>(
15217                     structExtension_out),
15218                 ptr);
15219             break;
15220         }
15221         case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: {
15222             reservedunmarshal_VkSubpassDescriptionDepthStencilResolve(
15223                 vkStream, rootType,
15224                 reinterpret_cast<VkSubpassDescriptionDepthStencilResolve*>(structExtension_out),
15225                 ptr);
15226             break;
15227         }
15228         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: {
15229             reservedunmarshal_VkPhysicalDeviceDepthStencilResolveProperties(
15230                 vkStream, rootType,
15231                 reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties*>(
15232                     structExtension_out),
15233                 ptr);
15234             break;
15235         }
15236         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
15237             reservedunmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
15238                 vkStream, rootType,
15239                 reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures*>(structExtension_out),
15240                 ptr);
15241             break;
15242         }
15243         case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: {
15244             reservedunmarshal_VkImageStencilUsageCreateInfo(
15245                 vkStream, rootType,
15246                 reinterpret_cast<VkImageStencilUsageCreateInfo*>(structExtension_out), ptr);
15247             break;
15248         }
15249         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: {
15250             reservedunmarshal_VkSamplerReductionModeCreateInfo(
15251                 vkStream, rootType,
15252                 reinterpret_cast<VkSamplerReductionModeCreateInfo*>(structExtension_out), ptr);
15253             break;
15254         }
15255         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: {
15256             reservedunmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
15257                 vkStream, rootType,
15258                 reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties*>(
15259                     structExtension_out),
15260                 ptr);
15261             break;
15262         }
15263         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: {
15264             reservedunmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
15265                 vkStream, rootType,
15266                 reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures*>(structExtension_out),
15267                 ptr);
15268             break;
15269         }
15270         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: {
15271             reservedunmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(
15272                 vkStream, rootType,
15273                 reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures*>(
15274                     structExtension_out),
15275                 ptr);
15276             break;
15277         }
15278         case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: {
15279             reservedunmarshal_VkFramebufferAttachmentsCreateInfo(
15280                 vkStream, rootType,
15281                 reinterpret_cast<VkFramebufferAttachmentsCreateInfo*>(structExtension_out), ptr);
15282             break;
15283         }
15284         case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: {
15285             reservedunmarshal_VkRenderPassAttachmentBeginInfo(
15286                 vkStream, rootType,
15287                 reinterpret_cast<VkRenderPassAttachmentBeginInfo*>(structExtension_out), ptr);
15288             break;
15289         }
15290         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: {
15291             reservedunmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
15292                 vkStream, rootType,
15293                 reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(
15294                     structExtension_out),
15295                 ptr);
15296             break;
15297         }
15298         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: {
15299             reservedunmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
15300                 vkStream, rootType,
15301                 reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(
15302                     structExtension_out),
15303                 ptr);
15304             break;
15305         }
15306         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: {
15307             reservedunmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
15308                 vkStream, rootType,
15309                 reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(
15310                     structExtension_out),
15311                 ptr);
15312             break;
15313         }
15314         case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: {
15315             reservedunmarshal_VkAttachmentReferenceStencilLayout(
15316                 vkStream, rootType,
15317                 reinterpret_cast<VkAttachmentReferenceStencilLayout*>(structExtension_out), ptr);
15318             break;
15319         }
15320         case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: {
15321             reservedunmarshal_VkAttachmentDescriptionStencilLayout(
15322                 vkStream, rootType,
15323                 reinterpret_cast<VkAttachmentDescriptionStencilLayout*>(structExtension_out), ptr);
15324             break;
15325         }
15326         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: {
15327             reservedunmarshal_VkPhysicalDeviceHostQueryResetFeatures(
15328                 vkStream, rootType,
15329                 reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures*>(structExtension_out),
15330                 ptr);
15331             break;
15332         }
15333         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: {
15334             reservedunmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
15335                 vkStream, rootType,
15336                 reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures*>(structExtension_out),
15337                 ptr);
15338             break;
15339         }
15340         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: {
15341             reservedunmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(
15342                 vkStream, rootType,
15343                 reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties*>(structExtension_out),
15344                 ptr);
15345             break;
15346         }
15347         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: {
15348             reservedunmarshal_VkSemaphoreTypeCreateInfo(
15349                 vkStream, rootType,
15350                 reinterpret_cast<VkSemaphoreTypeCreateInfo*>(structExtension_out), ptr);
15351             break;
15352         }
15353         case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: {
15354             reservedunmarshal_VkTimelineSemaphoreSubmitInfo(
15355                 vkStream, rootType,
15356                 reinterpret_cast<VkTimelineSemaphoreSubmitInfo*>(structExtension_out), ptr);
15357             break;
15358         }
15359         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: {
15360             reservedunmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
15361                 vkStream, rootType,
15362                 reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures*>(structExtension_out),
15363                 ptr);
15364             break;
15365         }
15366         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: {
15367             reservedunmarshal_VkBufferOpaqueCaptureAddressCreateInfo(
15368                 vkStream, rootType,
15369                 reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension_out),
15370                 ptr);
15371             break;
15372         }
15373         case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: {
15374             reservedunmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
15375                 vkStream, rootType,
15376                 reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension_out),
15377                 ptr);
15378             break;
15379         }
15380 #endif
15381 #ifdef VK_VERSION_1_3
15382         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: {
15383             reservedunmarshal_VkPhysicalDeviceVulkan13Features(
15384                 vkStream, rootType,
15385                 reinterpret_cast<VkPhysicalDeviceVulkan13Features*>(structExtension_out), ptr);
15386             break;
15387         }
15388         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: {
15389             reservedunmarshal_VkPhysicalDeviceVulkan13Properties(
15390                 vkStream, rootType,
15391                 reinterpret_cast<VkPhysicalDeviceVulkan13Properties*>(structExtension_out), ptr);
15392             break;
15393         }
15394         case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: {
15395             reservedunmarshal_VkPipelineCreationFeedbackCreateInfo(
15396                 vkStream, rootType,
15397                 reinterpret_cast<VkPipelineCreationFeedbackCreateInfo*>(structExtension_out), ptr);
15398             break;
15399         }
15400         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: {
15401             reservedunmarshal_VkPhysicalDeviceShaderTerminateInvocationFeatures(
15402                 vkStream, rootType,
15403                 reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeatures*>(
15404                     structExtension_out),
15405                 ptr);
15406             break;
15407         }
15408         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: {
15409             reservedunmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
15410                 vkStream, rootType,
15411                 reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>(
15412                     structExtension_out),
15413                 ptr);
15414             break;
15415         }
15416         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: {
15417             reservedunmarshal_VkPhysicalDevicePrivateDataFeatures(
15418                 vkStream, rootType,
15419                 reinterpret_cast<VkPhysicalDevicePrivateDataFeatures*>(structExtension_out), ptr);
15420             break;
15421         }
15422         case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: {
15423             reservedunmarshal_VkDevicePrivateDataCreateInfo(
15424                 vkStream, rootType,
15425                 reinterpret_cast<VkDevicePrivateDataCreateInfo*>(structExtension_out), ptr);
15426             break;
15427         }
15428         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: {
15429             reservedunmarshal_VkPhysicalDevicePipelineCreationCacheControlFeatures(
15430                 vkStream, rootType,
15431                 reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeatures*>(
15432                     structExtension_out),
15433                 ptr);
15434             break;
15435         }
15436         case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: {
15437             reservedunmarshal_VkMemoryBarrier2(
15438                 vkStream, rootType, reinterpret_cast<VkMemoryBarrier2*>(structExtension_out), ptr);
15439             break;
15440         }
15441         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
15442             reservedunmarshal_VkPhysicalDeviceSynchronization2Features(
15443                 vkStream, rootType,
15444                 reinterpret_cast<VkPhysicalDeviceSynchronization2Features*>(structExtension_out),
15445                 ptr);
15446             break;
15447         }
15448         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: {
15449             reservedunmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
15450                 vkStream, rootType,
15451                 reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>(
15452                     structExtension_out),
15453                 ptr);
15454             break;
15455         }
15456         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: {
15457             reservedunmarshal_VkPhysicalDeviceImageRobustnessFeatures(
15458                 vkStream, rootType,
15459                 reinterpret_cast<VkPhysicalDeviceImageRobustnessFeatures*>(structExtension_out),
15460                 ptr);
15461             break;
15462         }
15463         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
15464             reservedunmarshal_VkPhysicalDeviceSubgroupSizeControlFeatures(
15465                 vkStream, rootType,
15466                 reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeatures*>(structExtension_out),
15467                 ptr);
15468             break;
15469         }
15470         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: {
15471             reservedunmarshal_VkPhysicalDeviceSubgroupSizeControlProperties(
15472                 vkStream, rootType,
15473                 reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlProperties*>(
15474                     structExtension_out),
15475                 ptr);
15476             break;
15477         }
15478         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: {
15479             reservedunmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfo(
15480                 vkStream, rootType,
15481                 reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfo*>(
15482                     structExtension_out),
15483                 ptr);
15484             break;
15485         }
15486         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: {
15487             reservedunmarshal_VkPhysicalDeviceInlineUniformBlockFeatures(
15488                 vkStream, rootType,
15489                 reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeatures*>(structExtension_out),
15490                 ptr);
15491             break;
15492         }
15493         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: {
15494             reservedunmarshal_VkPhysicalDeviceInlineUniformBlockProperties(
15495                 vkStream, rootType,
15496                 reinterpret_cast<VkPhysicalDeviceInlineUniformBlockProperties*>(
15497                     structExtension_out),
15498                 ptr);
15499             break;
15500         }
15501         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: {
15502             reservedunmarshal_VkWriteDescriptorSetInlineUniformBlock(
15503                 vkStream, rootType,
15504                 reinterpret_cast<VkWriteDescriptorSetInlineUniformBlock*>(structExtension_out),
15505                 ptr);
15506             break;
15507         }
15508         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: {
15509             reservedunmarshal_VkDescriptorPoolInlineUniformBlockCreateInfo(
15510                 vkStream, rootType,
15511                 reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfo*>(
15512                     structExtension_out),
15513                 ptr);
15514             break;
15515         }
15516         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
15517             reservedunmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeatures(
15518                 vkStream, rootType,
15519                 reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>(
15520                     structExtension_out),
15521                 ptr);
15522             break;
15523         }
15524         case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: {
15525             reservedunmarshal_VkPipelineRenderingCreateInfo(
15526                 vkStream, rootType,
15527                 reinterpret_cast<VkPipelineRenderingCreateInfo*>(structExtension_out), ptr);
15528             break;
15529         }
15530         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
15531             reservedunmarshal_VkPhysicalDeviceDynamicRenderingFeatures(
15532                 vkStream, rootType,
15533                 reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeatures*>(structExtension_out),
15534                 ptr);
15535             break;
15536         }
15537         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: {
15538             reservedunmarshal_VkCommandBufferInheritanceRenderingInfo(
15539                 vkStream, rootType,
15540                 reinterpret_cast<VkCommandBufferInheritanceRenderingInfo*>(structExtension_out),
15541                 ptr);
15542             break;
15543         }
15544         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: {
15545             reservedunmarshal_VkPhysicalDeviceShaderIntegerDotProductFeatures(
15546                 vkStream, rootType,
15547                 reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeatures*>(
15548                     structExtension_out),
15549                 ptr);
15550             break;
15551         }
15552         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: {
15553             reservedunmarshal_VkPhysicalDeviceShaderIntegerDotProductProperties(
15554                 vkStream, rootType,
15555                 reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductProperties*>(
15556                     structExtension_out),
15557                 ptr);
15558             break;
15559         }
15560         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: {
15561             reservedunmarshal_VkPhysicalDeviceTexelBufferAlignmentProperties(
15562                 vkStream, rootType,
15563                 reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentProperties*>(
15564                     structExtension_out),
15565                 ptr);
15566             break;
15567         }
15568         case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: {
15569             reservedunmarshal_VkFormatProperties3(
15570                 vkStream, rootType, reinterpret_cast<VkFormatProperties3*>(structExtension_out),
15571                 ptr);
15572             break;
15573         }
15574         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
15575             reservedunmarshal_VkPhysicalDeviceMaintenance4Features(
15576                 vkStream, rootType,
15577                 reinterpret_cast<VkPhysicalDeviceMaintenance4Features*>(structExtension_out), ptr);
15578             break;
15579         }
15580         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: {
15581             reservedunmarshal_VkPhysicalDeviceMaintenance4Properties(
15582                 vkStream, rootType,
15583                 reinterpret_cast<VkPhysicalDeviceMaintenance4Properties*>(structExtension_out),
15584                 ptr);
15585             break;
15586         }
15587 #endif
15588 #ifdef VK_KHR_swapchain
15589         case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: {
15590             reservedunmarshal_VkImageSwapchainCreateInfoKHR(
15591                 vkStream, rootType,
15592                 reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(structExtension_out), ptr);
15593             break;
15594         }
15595         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
15596             reservedunmarshal_VkBindImageMemorySwapchainInfoKHR(
15597                 vkStream, rootType,
15598                 reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(structExtension_out), ptr);
15599             break;
15600         }
15601         case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: {
15602             reservedunmarshal_VkDeviceGroupPresentInfoKHR(
15603                 vkStream, rootType,
15604                 reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(structExtension_out), ptr);
15605             break;
15606         }
15607         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: {
15608             reservedunmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
15609                 vkStream, rootType,
15610                 reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension_out), ptr);
15611             break;
15612         }
15613 #endif
15614 #ifdef VK_KHR_dynamic_rendering
15615         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: {
15616             reservedunmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
15617                 vkStream, rootType,
15618                 reinterpret_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR*>(
15619                     structExtension_out),
15620                 ptr);
15621             break;
15622         }
15623         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
15624             reservedunmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
15625                 vkStream, rootType,
15626                 reinterpret_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT*>(
15627                     structExtension_out),
15628                 ptr);
15629             break;
15630         }
15631         case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: {
15632             reservedunmarshal_VkAttachmentSampleCountInfoAMD(
15633                 vkStream, rootType,
15634                 reinterpret_cast<VkAttachmentSampleCountInfoAMD*>(structExtension_out), ptr);
15635             break;
15636         }
15637         case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: {
15638             reservedunmarshal_VkMultiviewPerViewAttributesInfoNVX(
15639                 vkStream, rootType,
15640                 reinterpret_cast<VkMultiviewPerViewAttributesInfoNVX*>(structExtension_out), ptr);
15641             break;
15642         }
15643 #endif
15644 #ifdef VK_KHR_incremental_present
15645         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
15646             reservedunmarshal_VkPresentRegionsKHR(
15647                 vkStream, rootType, reinterpret_cast<VkPresentRegionsKHR*>(structExtension_out),
15648                 ptr);
15649             break;
15650         }
15651 #endif
15652 #ifdef VK_KHR_pipeline_executable_properties
15653         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
15654             reservedunmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
15655                 vkStream, rootType,
15656                 reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(
15657                     structExtension_out),
15658                 ptr);
15659             break;
15660         }
15661 #endif
15662 #ifdef VK_KHR_pipeline_library
15663         case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: {
15664             reservedunmarshal_VkPipelineLibraryCreateInfoKHR(
15665                 vkStream, rootType,
15666                 reinterpret_cast<VkPipelineLibraryCreateInfoKHR*>(structExtension_out), ptr);
15667             break;
15668         }
15669 #endif
15670 #ifdef VK_KHR_synchronization2
15671         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: {
15672             reservedunmarshal_VkQueueFamilyCheckpointProperties2NV(
15673                 vkStream, rootType,
15674                 reinterpret_cast<VkQueueFamilyCheckpointProperties2NV*>(structExtension_out), ptr);
15675             break;
15676         }
15677 #endif
15678 #ifdef VK_KHR_maintenance5
15679         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR: {
15680             reservedunmarshal_VkPhysicalDeviceMaintenance5FeaturesKHR(
15681                 vkStream, rootType,
15682                 reinterpret_cast<VkPhysicalDeviceMaintenance5FeaturesKHR*>(structExtension_out),
15683                 ptr);
15684             break;
15685         }
15686         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR: {
15687             reservedunmarshal_VkPhysicalDeviceMaintenance5PropertiesKHR(
15688                 vkStream, rootType,
15689                 reinterpret_cast<VkPhysicalDeviceMaintenance5PropertiesKHR*>(structExtension_out),
15690                 ptr);
15691             break;
15692         }
15693         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR: {
15694             reservedunmarshal_VkPipelineCreateFlags2CreateInfoKHR(
15695                 vkStream, rootType,
15696                 reinterpret_cast<VkPipelineCreateFlags2CreateInfoKHR*>(structExtension_out), ptr);
15697             break;
15698         }
15699         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR: {
15700             reservedunmarshal_VkBufferUsageFlags2CreateInfoKHR(
15701                 vkStream, rootType,
15702                 reinterpret_cast<VkBufferUsageFlags2CreateInfoKHR*>(structExtension_out), ptr);
15703             break;
15704         }
15705 #endif
15706 #ifdef VK_KHR_line_rasterization
15707         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR: {
15708             reservedunmarshal_VkPhysicalDeviceLineRasterizationFeaturesKHR(
15709                 vkStream, rootType,
15710                 reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesKHR*>(
15711                     structExtension_out),
15712                 ptr);
15713             break;
15714         }
15715         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR: {
15716             reservedunmarshal_VkPhysicalDeviceLineRasterizationPropertiesKHR(
15717                 vkStream, rootType,
15718                 reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesKHR*>(
15719                     structExtension_out),
15720                 ptr);
15721             break;
15722         }
15723         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR: {
15724             reservedunmarshal_VkPipelineRasterizationLineStateCreateInfoKHR(
15725                 vkStream, rootType,
15726                 reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoKHR*>(
15727                     structExtension_out),
15728                 ptr);
15729             break;
15730         }
15731 #endif
15732 #ifdef VK_ANDROID_native_buffer
15733         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
15734             reservedunmarshal_VkNativeBufferANDROID(
15735                 vkStream, rootType, reinterpret_cast<VkNativeBufferANDROID*>(structExtension_out),
15736                 ptr);
15737             break;
15738         }
15739 #endif
15740 #ifdef VK_EXT_debug_report
15741         case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: {
15742             reservedunmarshal_VkDebugReportCallbackCreateInfoEXT(
15743                 vkStream, rootType,
15744                 reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(structExtension_out), ptr);
15745             break;
15746         }
15747 #endif
15748 #ifdef VK_EXT_transform_feedback
15749         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
15750             reservedunmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
15751                 vkStream, rootType,
15752                 reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(
15753                     structExtension_out),
15754                 ptr);
15755             break;
15756         }
15757         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
15758             reservedunmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
15759                 vkStream, rootType,
15760                 reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(
15761                     structExtension_out),
15762                 ptr);
15763             break;
15764         }
15765         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
15766             reservedunmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
15767                 vkStream, rootType,
15768                 reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(
15769                     structExtension_out),
15770                 ptr);
15771             break;
15772         }
15773 #endif
15774 #ifdef VK_EXT_depth_clip_enable
15775         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
15776             reservedunmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
15777                 vkStream, rootType,
15778                 reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(structExtension_out),
15779                 ptr);
15780             break;
15781         }
15782         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
15783             reservedunmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
15784                 vkStream, rootType,
15785                 reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(
15786                     structExtension_out),
15787                 ptr);
15788             break;
15789         }
15790 #endif
15791 #ifdef VK_EXT_debug_utils
15792         case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: {
15793             reservedunmarshal_VkDebugUtilsObjectNameInfoEXT(
15794                 vkStream, rootType,
15795                 reinterpret_cast<VkDebugUtilsObjectNameInfoEXT*>(structExtension_out), ptr);
15796             break;
15797         }
15798         case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: {
15799             reservedunmarshal_VkDebugUtilsMessengerCreateInfoEXT(
15800                 vkStream, rootType,
15801                 reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(structExtension_out), ptr);
15802             break;
15803         }
15804 #endif
15805 #ifdef VK_EXT_image_drm_format_modifier
15806         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
15807             reservedunmarshal_VkDrmFormatModifierPropertiesListEXT(
15808                 vkStream, rootType,
15809                 reinterpret_cast<VkDrmFormatModifierPropertiesListEXT*>(structExtension_out), ptr);
15810             break;
15811         }
15812         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
15813             reservedunmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
15814                 vkStream, rootType,
15815                 reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(
15816                     structExtension_out),
15817                 ptr);
15818             break;
15819         }
15820         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
15821             reservedunmarshal_VkImageDrmFormatModifierListCreateInfoEXT(
15822                 vkStream, rootType,
15823                 reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(structExtension_out),
15824                 ptr);
15825             break;
15826         }
15827         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
15828             reservedunmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
15829                 vkStream, rootType,
15830                 reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(
15831                     structExtension_out),
15832                 ptr);
15833             break;
15834         }
15835         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
15836             reservedunmarshal_VkDrmFormatModifierPropertiesList2EXT(
15837                 vkStream, rootType,
15838                 reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT*>(structExtension_out), ptr);
15839             break;
15840         }
15841 #endif
15842 #ifdef VK_EXT_external_memory_host
15843         case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: {
15844             reservedunmarshal_VkImportMemoryHostPointerInfoEXT(
15845                 vkStream, rootType,
15846                 reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(structExtension_out), ptr);
15847             break;
15848         }
15849         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: {
15850             reservedunmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
15851                 vkStream, rootType,
15852                 reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(
15853                     structExtension_out),
15854                 ptr);
15855             break;
15856         }
15857 #endif
15858 #ifdef VK_EXT_vertex_attribute_divisor
15859         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
15860             reservedunmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
15861                 vkStream, rootType,
15862                 reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(
15863                     structExtension_out),
15864                 ptr);
15865             break;
15866         }
15867         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: {
15868             reservedunmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
15869                 vkStream, rootType,
15870                 reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(
15871                     structExtension_out),
15872                 ptr);
15873             break;
15874         }
15875         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
15876             reservedunmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
15877                 vkStream, rootType,
15878                 reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(
15879                     structExtension_out),
15880                 ptr);
15881             break;
15882         }
15883 #endif
15884 #ifdef VK_EXT_fragment_density_map
15885         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
15886             switch (rootType) {
15887                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
15888                     reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
15889                         vkStream, rootType,
15890                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
15891                             structExtension_out),
15892                         ptr);
15893                     break;
15894                 }
15895                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
15896                     reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
15897                         vkStream, rootType,
15898                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
15899                             structExtension_out),
15900                         ptr);
15901                     break;
15902                 }
15903                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
15904                     reservedunmarshal_VkImportColorBufferGOOGLE(
15905                         vkStream, rootType,
15906                         reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out), ptr);
15907                     break;
15908                 }
15909                 default: {
15910                     reservedunmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
15911                         vkStream, rootType,
15912                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(
15913                             structExtension_out),
15914                         ptr);
15915                     break;
15916                 }
15917             }
15918             break;
15919         }
15920         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
15921             switch (rootType) {
15922                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
15923                     reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
15924                         vkStream, rootType,
15925                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
15926                             structExtension_out),
15927                         ptr);
15928                     break;
15929                 }
15930                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
15931                     reservedunmarshal_VkCreateBlobGOOGLE(
15932                         vkStream, rootType,
15933                         reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out), ptr);
15934                     break;
15935                 }
15936                 default: {
15937                     reservedunmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
15938                         vkStream, rootType,
15939                         reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(
15940                             structExtension_out),
15941                         ptr);
15942                     break;
15943                 }
15944             }
15945             break;
15946         }
15947         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
15948             switch (rootType) {
15949                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
15950                     reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
15951                         vkStream, rootType,
15952                         reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
15953                             structExtension_out),
15954                         ptr);
15955                     break;
15956                 }
15957                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
15958                     reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
15959                         vkStream, rootType,
15960                         reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
15961                             structExtension_out),
15962                         ptr);
15963                     break;
15964                 }
15965                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
15966                     reservedunmarshal_VkImportBufferGOOGLE(
15967                         vkStream, rootType,
15968                         reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out), ptr);
15969                     break;
15970                 }
15971                 default: {
15972                     reservedunmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
15973                         vkStream, rootType,
15974                         reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(
15975                             structExtension_out),
15976                         ptr);
15977                     break;
15978                 }
15979             }
15980             break;
15981         }
15982 #endif
15983 #ifdef VK_EXT_validation_features
15984         case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: {
15985             reservedunmarshal_VkValidationFeaturesEXT(
15986                 vkStream, rootType, reinterpret_cast<VkValidationFeaturesEXT*>(structExtension_out),
15987                 ptr);
15988             break;
15989         }
15990 #endif
15991 #ifdef VK_EXT_provoking_vertex
15992         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
15993             reservedunmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
15994                 vkStream, rootType,
15995                 reinterpret_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT*>(structExtension_out),
15996                 ptr);
15997             break;
15998         }
15999         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
16000             reservedunmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
16001                 vkStream, rootType,
16002                 reinterpret_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT*>(
16003                     structExtension_out),
16004                 ptr);
16005             break;
16006         }
16007         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
16008             reservedunmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
16009                 vkStream, rootType,
16010                 reinterpret_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT*>(
16011                     structExtension_out),
16012                 ptr);
16013             break;
16014         }
16015 #endif
16016 #ifdef VK_EXT_index_type_uint8
16017         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: {
16018             reservedunmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
16019                 vkStream, rootType,
16020                 reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(structExtension_out),
16021                 ptr);
16022             break;
16023         }
16024 #endif
16025 #ifdef VK_EXT_extended_dynamic_state
16026         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
16027             reservedunmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
16028                 vkStream, rootType,
16029                 reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(
16030                     structExtension_out),
16031                 ptr);
16032             break;
16033         }
16034 #endif
16035 #ifdef VK_EXT_host_image_copy
16036         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT: {
16037             reservedunmarshal_VkPhysicalDeviceHostImageCopyFeaturesEXT(
16038                 vkStream, rootType,
16039                 reinterpret_cast<VkPhysicalDeviceHostImageCopyFeaturesEXT*>(structExtension_out),
16040                 ptr);
16041             break;
16042         }
16043         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT: {
16044             reservedunmarshal_VkPhysicalDeviceHostImageCopyPropertiesEXT(
16045                 vkStream, rootType,
16046                 reinterpret_cast<VkPhysicalDeviceHostImageCopyPropertiesEXT*>(structExtension_out),
16047                 ptr);
16048             break;
16049         }
16050         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT: {
16051             reservedunmarshal_VkSubresourceHostMemcpySizeEXT(
16052                 vkStream, rootType,
16053                 reinterpret_cast<VkSubresourceHostMemcpySizeEXT*>(structExtension_out), ptr);
16054             break;
16055         }
16056         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT: {
16057             reservedunmarshal_VkHostImageCopyDevicePerformanceQueryEXT(
16058                 vkStream, rootType,
16059                 reinterpret_cast<VkHostImageCopyDevicePerformanceQueryEXT*>(structExtension_out),
16060                 ptr);
16061             break;
16062         }
16063 #endif
16064 #ifdef VK_EXT_swapchain_maintenance1
16065         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: {
16066             reservedunmarshal_VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT(
16067                 vkStream, rootType,
16068                 reinterpret_cast<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT*>(
16069                     structExtension_out),
16070                 ptr);
16071             break;
16072         }
16073         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: {
16074             reservedunmarshal_VkSwapchainPresentFenceInfoEXT(
16075                 vkStream, rootType,
16076                 reinterpret_cast<VkSwapchainPresentFenceInfoEXT*>(structExtension_out), ptr);
16077             break;
16078         }
16079         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: {
16080             reservedunmarshal_VkSwapchainPresentModesCreateInfoEXT(
16081                 vkStream, rootType,
16082                 reinterpret_cast<VkSwapchainPresentModesCreateInfoEXT*>(structExtension_out), ptr);
16083             break;
16084         }
16085         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: {
16086             reservedunmarshal_VkSwapchainPresentModeInfoEXT(
16087                 vkStream, rootType,
16088                 reinterpret_cast<VkSwapchainPresentModeInfoEXT*>(structExtension_out), ptr);
16089             break;
16090         }
16091         case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: {
16092             reservedunmarshal_VkSwapchainPresentScalingCreateInfoEXT(
16093                 vkStream, rootType,
16094                 reinterpret_cast<VkSwapchainPresentScalingCreateInfoEXT*>(structExtension_out),
16095                 ptr);
16096             break;
16097         }
16098 #endif
16099 #ifdef VK_EXT_texel_buffer_alignment
16100         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
16101             reservedunmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
16102                 vkStream, rootType,
16103                 reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(
16104                     structExtension_out),
16105                 ptr);
16106             break;
16107         }
16108 #endif
16109 #ifdef VK_EXT_device_memory_report
16110         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
16111             reservedunmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
16112                 vkStream, rootType,
16113                 reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(
16114                     structExtension_out),
16115                 ptr);
16116             break;
16117         }
16118         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
16119             reservedunmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
16120                 vkStream, rootType,
16121                 reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension_out),
16122                 ptr);
16123             break;
16124         }
16125 #endif
16126 #ifdef VK_EXT_robustness2
16127         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
16128             reservedunmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(
16129                 vkStream, rootType,
16130                 reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension_out),
16131                 ptr);
16132             break;
16133         }
16134         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
16135             reservedunmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(
16136                 vkStream, rootType,
16137                 reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension_out),
16138                 ptr);
16139             break;
16140         }
16141 #endif
16142 #ifdef VK_EXT_custom_border_color
16143         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
16144             reservedunmarshal_VkSamplerCustomBorderColorCreateInfoEXT(
16145                 vkStream, rootType,
16146                 reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension_out),
16147                 ptr);
16148             break;
16149         }
16150         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
16151             reservedunmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
16152                 vkStream, rootType,
16153                 reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(
16154                     structExtension_out),
16155                 ptr);
16156             break;
16157         }
16158         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
16159             reservedunmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
16160                 vkStream, rootType,
16161                 reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(
16162                     structExtension_out),
16163                 ptr);
16164             break;
16165         }
16166 #endif
16167 #ifdef VK_EXT_graphics_pipeline_library
16168         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
16169             reservedunmarshal_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(
16170                 vkStream, rootType,
16171                 reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*>(
16172                     structExtension_out),
16173                 ptr);
16174             break;
16175         }
16176         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
16177             reservedunmarshal_VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(
16178                 vkStream, rootType,
16179                 reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT*>(
16180                     structExtension_out),
16181                 ptr);
16182             break;
16183         }
16184         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
16185             reservedunmarshal_VkGraphicsPipelineLibraryCreateInfoEXT(
16186                 vkStream, rootType,
16187                 reinterpret_cast<VkGraphicsPipelineLibraryCreateInfoEXT*>(structExtension_out),
16188                 ptr);
16189             break;
16190         }
16191 #endif
16192 #ifdef VK_EXT_ycbcr_2plane_444_formats
16193         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
16194             reservedunmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
16195                 vkStream, rootType,
16196                 reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(
16197                     structExtension_out),
16198                 ptr);
16199             break;
16200         }
16201 #endif
16202 #ifdef VK_EXT_image_compression_control
16203         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
16204             reservedunmarshal_VkPhysicalDeviceImageCompressionControlFeaturesEXT(
16205                 vkStream, rootType,
16206                 reinterpret_cast<VkPhysicalDeviceImageCompressionControlFeaturesEXT*>(
16207                     structExtension_out),
16208                 ptr);
16209             break;
16210         }
16211         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
16212             reservedunmarshal_VkImageCompressionControlEXT(
16213                 vkStream, rootType,
16214                 reinterpret_cast<VkImageCompressionControlEXT*>(structExtension_out), ptr);
16215             break;
16216         }
16217         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
16218             reservedunmarshal_VkImageCompressionPropertiesEXT(
16219                 vkStream, rootType,
16220                 reinterpret_cast<VkImageCompressionPropertiesEXT*>(structExtension_out), ptr);
16221             break;
16222         }
16223 #endif
16224 #ifdef VK_EXT_4444_formats
16225         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
16226             reservedunmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(
16227                 vkStream, rootType,
16228                 reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension_out),
16229                 ptr);
16230             break;
16231         }
16232 #endif
16233 #ifdef VK_EXT_primitive_topology_list_restart
16234         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
16235             reservedunmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
16236                 vkStream, rootType,
16237                 reinterpret_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(
16238                     structExtension_out),
16239                 ptr);
16240             break;
16241         }
16242 #endif
16243 #ifdef VK_EXT_extended_dynamic_state2
16244         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
16245             reservedunmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
16246                 vkStream, rootType,
16247                 reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(
16248                     structExtension_out),
16249                 ptr);
16250             break;
16251         }
16252 #endif
16253 #ifdef VK_EXT_color_write_enable
16254         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
16255             reservedunmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
16256                 vkStream, rootType,
16257                 reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(structExtension_out),
16258                 ptr);
16259             break;
16260         }
16261         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
16262             reservedunmarshal_VkPipelineColorWriteCreateInfoEXT(
16263                 vkStream, rootType,
16264                 reinterpret_cast<VkPipelineColorWriteCreateInfoEXT*>(structExtension_out), ptr);
16265             break;
16266         }
16267 #endif
16268 #ifdef VK_GOOGLE_gfxstream
16269         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
16270             reservedunmarshal_VkImportColorBufferGOOGLE(
16271                 vkStream, rootType,
16272                 reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out), ptr);
16273             break;
16274         }
16275         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
16276             reservedunmarshal_VkImportBufferGOOGLE(
16277                 vkStream, rootType, reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out),
16278                 ptr);
16279             break;
16280         }
16281         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
16282             reservedunmarshal_VkCreateBlobGOOGLE(
16283                 vkStream, rootType, reinterpret_cast<VkCreateBlobGOOGLE*>(structExtension_out),
16284                 ptr);
16285             break;
16286         }
16287 #endif
16288 #ifdef VK_EXT_image_compression_control_swapchain
16289         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
16290             reservedunmarshal_VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
16291                 vkStream, rootType,
16292                 reinterpret_cast<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*>(
16293                     structExtension_out),
16294                 ptr);
16295             break;
16296         }
16297 #endif
16298 #ifdef VK_KHR_ray_tracing_pipeline
16299         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: {
16300             reservedunmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
16301                 vkStream, rootType,
16302                 reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(
16303                     structExtension_out),
16304                 ptr);
16305             break;
16306         }
16307         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: {
16308             reservedunmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
16309                 vkStream, rootType,
16310                 reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(
16311                     structExtension_out),
16312                 ptr);
16313             break;
16314         }
16315 #endif
16316         default: {
16317             // fatal; the switch is only taken if the extension struct is known
16318             fprintf(stderr, " %s, Unhandled Vulkan structure type %s [%d], aborting.\n", __func__,
16319                     string_VkStructureType(VkStructureType(structType)), structType);
16320             abort();
16321         }
16322     }
16323 }
16324 
16325 }  // namespace vk
16326 }  // namespace gfxstream
16327