blob: ba8cc087aad737467c6d67b1b1b3b1ba652f19f7 [file] [log] [blame]
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001// 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_deepcopy_guest
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
25#include "goldfish_vk_deepcopy_guest.h"
26
27
Lingfeng Yang750c5642018-11-13 17:03:11 -080028#include "goldfish_vk_extension_structs_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080029#include "goldfish_vk_private_defs.h"
Lingfeng Yang750c5642018-11-13 17:03:11 -080030
Yilong Li04218f72021-02-19 01:31:17 -080031#include "vk_util.h"
32
Lingfeng Yang71b596b2018-11-07 18:03:25 -080033
34namespace goldfish_vk {
35
Lingfeng Yang750c5642018-11-13 17:03:11 -080036void deepcopy_extension_struct(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070037 BumpPool* pool,
Lingfeng Yang750c5642018-11-13 17:03:11 -080038 const void* structExtension,
39 void* structExtension_out);
40
Lingfeng Yang71b596b2018-11-07 18:03:25 -080041#ifdef VK_VERSION_1_0
Yilong Lia8d45f12021-02-07 02:30:21 -080042void deepcopy_VkExtent2D(
43 BumpPool* pool,
44 const VkExtent2D* from,
45 VkExtent2D* to)
46{
47 (void)pool;
48 *to = *from;
49}
50
51void deepcopy_VkExtent3D(
52 BumpPool* pool,
53 const VkExtent3D* from,
54 VkExtent3D* to)
55{
56 (void)pool;
57 *to = *from;
58}
59
60void deepcopy_VkOffset2D(
61 BumpPool* pool,
62 const VkOffset2D* from,
63 VkOffset2D* to)
64{
65 (void)pool;
66 *to = *from;
67}
68
69void deepcopy_VkOffset3D(
70 BumpPool* pool,
71 const VkOffset3D* from,
72 VkOffset3D* to)
73{
74 (void)pool;
75 *to = *from;
76}
77
78void deepcopy_VkRect2D(
79 BumpPool* pool,
80 const VkRect2D* from,
81 VkRect2D* to)
82{
83 (void)pool;
84 *to = *from;
85 deepcopy_VkOffset2D(pool, &from->offset, (VkOffset2D*)(&to->offset));
86 deepcopy_VkExtent2D(pool, &from->extent, (VkExtent2D*)(&to->extent));
87}
88
89void deepcopy_VkBaseInStructure(
90 BumpPool* pool,
91 const VkBaseInStructure* from,
92 VkBaseInStructure* to)
93{
94 (void)pool;
95 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080096 const void* from_pNext = from;
97 size_t pNext_size = 0u;
98 while (!pNext_size && from_pNext)
99 {
100 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
101 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
102 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800103 to->pNext = nullptr;
104 if (pNext_size)
105 {
106 to->pNext = (const VkBaseInStructure*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800107 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800108 }
109}
110
111void deepcopy_VkBaseOutStructure(
112 BumpPool* pool,
113 const VkBaseOutStructure* from,
114 VkBaseOutStructure* to)
115{
116 (void)pool;
117 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800118 const void* from_pNext = from;
119 size_t pNext_size = 0u;
120 while (!pNext_size && from_pNext)
121 {
122 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
123 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
124 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800125 to->pNext = nullptr;
126 if (pNext_size)
127 {
128 to->pNext = (VkBaseOutStructure*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800129 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800130 }
131}
132
133void deepcopy_VkBufferMemoryBarrier(
134 BumpPool* pool,
135 const VkBufferMemoryBarrier* from,
136 VkBufferMemoryBarrier* to)
137{
138 (void)pool;
139 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800140 const void* from_pNext = from;
141 size_t pNext_size = 0u;
142 while (!pNext_size && from_pNext)
143 {
144 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
145 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
146 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800147 to->pNext = nullptr;
148 if (pNext_size)
149 {
150 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800151 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800152 }
153}
154
155void deepcopy_VkDispatchIndirectCommand(
156 BumpPool* pool,
157 const VkDispatchIndirectCommand* from,
158 VkDispatchIndirectCommand* to)
159{
160 (void)pool;
161 *to = *from;
162}
163
164void deepcopy_VkDrawIndexedIndirectCommand(
165 BumpPool* pool,
166 const VkDrawIndexedIndirectCommand* from,
167 VkDrawIndexedIndirectCommand* to)
168{
169 (void)pool;
170 *to = *from;
171}
172
173void deepcopy_VkDrawIndirectCommand(
174 BumpPool* pool,
175 const VkDrawIndirectCommand* from,
176 VkDrawIndirectCommand* to)
177{
178 (void)pool;
179 *to = *from;
180}
181
182void deepcopy_VkImageSubresourceRange(
183 BumpPool* pool,
184 const VkImageSubresourceRange* from,
185 VkImageSubresourceRange* to)
186{
187 (void)pool;
188 *to = *from;
189}
190
191void deepcopy_VkImageMemoryBarrier(
192 BumpPool* pool,
193 const VkImageMemoryBarrier* from,
194 VkImageMemoryBarrier* to)
195{
196 (void)pool;
197 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800198 const void* from_pNext = from;
199 size_t pNext_size = 0u;
200 while (!pNext_size && from_pNext)
201 {
202 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
203 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
204 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800205 to->pNext = nullptr;
206 if (pNext_size)
207 {
208 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800209 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800210 }
211 deepcopy_VkImageSubresourceRange(pool, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
212}
213
214void deepcopy_VkMemoryBarrier(
215 BumpPool* pool,
216 const VkMemoryBarrier* from,
217 VkMemoryBarrier* to)
218{
219 (void)pool;
220 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800221 const void* from_pNext = from;
222 size_t pNext_size = 0u;
223 while (!pNext_size && from_pNext)
224 {
225 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
226 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
227 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800228 to->pNext = nullptr;
229 if (pNext_size)
230 {
231 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800232 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800233 }
234}
235
236void deepcopy_VkAllocationCallbacks(
237 BumpPool* pool,
238 const VkAllocationCallbacks* from,
239 VkAllocationCallbacks* to)
240{
241 (void)pool;
242 *to = *from;
243 to->pUserData = nullptr;
244 if (from->pUserData)
245 {
246 to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
247 }
248}
249
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800250void deepcopy_VkApplicationInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700251 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800252 const VkApplicationInfo* from,
253 VkApplicationInfo* to)
254{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800255 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800256 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800257 const void* from_pNext = from;
258 size_t pNext_size = 0u;
259 while (!pNext_size && from_pNext)
260 {
261 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
262 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
263 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800264 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800265 if (pNext_size)
266 {
267 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800268 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800269 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800270 to->pApplicationName = nullptr;
271 if (from->pApplicationName)
272 {
273 to->pApplicationName = pool->strDup(from->pApplicationName);
274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800275 to->pEngineName = nullptr;
276 if (from->pEngineName)
277 {
278 to->pEngineName = pool->strDup(from->pEngineName);
279 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800280}
281
Yilong Lia8d45f12021-02-07 02:30:21 -0800282void deepcopy_VkFormatProperties(
283 BumpPool* pool,
284 const VkFormatProperties* from,
285 VkFormatProperties* to)
286{
287 (void)pool;
288 *to = *from;
289}
290
291void deepcopy_VkImageFormatProperties(
292 BumpPool* pool,
293 const VkImageFormatProperties* from,
294 VkImageFormatProperties* to)
295{
296 (void)pool;
297 *to = *from;
298 deepcopy_VkExtent3D(pool, &from->maxExtent, (VkExtent3D*)(&to->maxExtent));
299}
300
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800301void deepcopy_VkInstanceCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700302 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800303 const VkInstanceCreateInfo* from,
304 VkInstanceCreateInfo* to)
305{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800306 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800307 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800308 const void* from_pNext = from;
309 size_t pNext_size = 0u;
310 while (!pNext_size && from_pNext)
311 {
312 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
313 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
314 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800315 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800316 if (pNext_size)
317 {
318 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800319 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800320 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800321 to->pApplicationInfo = nullptr;
322 if (from->pApplicationInfo)
323 {
324 to->pApplicationInfo = (VkApplicationInfo*)pool->alloc(sizeof(const VkApplicationInfo));
325 deepcopy_VkApplicationInfo(pool, from->pApplicationInfo, (VkApplicationInfo*)(to->pApplicationInfo));
326 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800327 to->ppEnabledLayerNames = nullptr;
328 if (from->ppEnabledLayerNames && from->enabledLayerCount)
329 {
330 to->ppEnabledLayerNames = pool->strDupArray(from->ppEnabledLayerNames, from->enabledLayerCount);
331 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800332 to->ppEnabledExtensionNames = nullptr;
333 if (from->ppEnabledExtensionNames && from->enabledExtensionCount)
334 {
335 to->ppEnabledExtensionNames = pool->strDupArray(from->ppEnabledExtensionNames, from->enabledExtensionCount);
336 }
337}
338
Yilong Lia8d45f12021-02-07 02:30:21 -0800339void deepcopy_VkMemoryHeap(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700340 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -0800341 const VkMemoryHeap* from,
342 VkMemoryHeap* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800343{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800344 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800345 *to = *from;
Yilong Lia8d45f12021-02-07 02:30:21 -0800346}
347
348void deepcopy_VkMemoryType(
349 BumpPool* pool,
350 const VkMemoryType* from,
351 VkMemoryType* to)
352{
353 (void)pool;
354 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800355}
356
357void deepcopy_VkPhysicalDeviceFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700358 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800359 const VkPhysicalDeviceFeatures* from,
360 VkPhysicalDeviceFeatures* to)
361{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800362 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800363 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800364}
365
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800366void deepcopy_VkPhysicalDeviceLimits(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700367 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800368 const VkPhysicalDeviceLimits* from,
369 VkPhysicalDeviceLimits* to)
370{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800371 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800372 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800373 memcpy(to->maxComputeWorkGroupCount, from->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800374 memcpy(to->maxComputeWorkGroupSize, from->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800375 memcpy(to->maxViewportDimensions, from->maxViewportDimensions, 2 * sizeof(uint32_t));
376 memcpy(to->viewportBoundsRange, from->viewportBoundsRange, 2 * sizeof(float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800377 memcpy(to->pointSizeRange, from->pointSizeRange, 2 * sizeof(float));
378 memcpy(to->lineWidthRange, from->lineWidthRange, 2 * sizeof(float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800379}
380
Yilong Lia8d45f12021-02-07 02:30:21 -0800381void deepcopy_VkPhysicalDeviceMemoryProperties(
382 BumpPool* pool,
383 const VkPhysicalDeviceMemoryProperties* from,
384 VkPhysicalDeviceMemoryProperties* to)
385{
386 (void)pool;
387 *to = *from;
388 for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
389 {
390 deepcopy_VkMemoryType(pool, from->memoryTypes + i, (VkMemoryType*)(to->memoryTypes + i));
391 }
392 for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
393 {
394 deepcopy_VkMemoryHeap(pool, from->memoryHeaps + i, (VkMemoryHeap*)(to->memoryHeaps + i));
395 }
396}
397
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800398void deepcopy_VkPhysicalDeviceSparseProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700399 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800400 const VkPhysicalDeviceSparseProperties* from,
401 VkPhysicalDeviceSparseProperties* to)
402{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800403 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800404 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800405}
406
407void deepcopy_VkPhysicalDeviceProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700408 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800409 const VkPhysicalDeviceProperties* from,
410 VkPhysicalDeviceProperties* to)
411{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800412 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800413 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800414 memcpy(to->deviceName, from->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
415 memcpy(to->pipelineCacheUUID, from->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
416 deepcopy_VkPhysicalDeviceLimits(pool, &from->limits, (VkPhysicalDeviceLimits*)(&to->limits));
417 deepcopy_VkPhysicalDeviceSparseProperties(pool, &from->sparseProperties, (VkPhysicalDeviceSparseProperties*)(&to->sparseProperties));
418}
419
420void deepcopy_VkQueueFamilyProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700421 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800422 const VkQueueFamilyProperties* from,
423 VkQueueFamilyProperties* to)
424{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800425 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800426 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800427 deepcopy_VkExtent3D(pool, &from->minImageTransferGranularity, (VkExtent3D*)(&to->minImageTransferGranularity));
428}
429
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800430void deepcopy_VkDeviceQueueCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700431 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800432 const VkDeviceQueueCreateInfo* from,
433 VkDeviceQueueCreateInfo* to)
434{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800435 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800436 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800437 const void* from_pNext = from;
438 size_t pNext_size = 0u;
439 while (!pNext_size && from_pNext)
440 {
441 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
442 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
443 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800444 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800445 if (pNext_size)
446 {
447 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800448 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800449 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800450 to->pQueuePriorities = nullptr;
451 if (from->pQueuePriorities)
452 {
453 to->pQueuePriorities = (float*)pool->dupArray(from->pQueuePriorities, from->queueCount * sizeof(const float));
454 }
455}
456
457void deepcopy_VkDeviceCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700458 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800459 const VkDeviceCreateInfo* from,
460 VkDeviceCreateInfo* to)
461{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800462 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800463 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800464 const void* from_pNext = from;
465 size_t pNext_size = 0u;
466 while (!pNext_size && from_pNext)
467 {
468 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
469 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
470 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800471 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800472 if (pNext_size)
473 {
474 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800475 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800476 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800477 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800478 {
Yilong Libd10ec92021-02-10 13:24:27 -0800479 to->pQueueCreateInfos = nullptr;
480 if (from->pQueueCreateInfos)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800481 {
Yilong Libd10ec92021-02-10 13:24:27 -0800482 to->pQueueCreateInfos = (VkDeviceQueueCreateInfo*)pool->alloc(from->queueCreateInfoCount * sizeof(const VkDeviceQueueCreateInfo));
483 to->queueCreateInfoCount = from->queueCreateInfoCount;
484 for (uint32_t i = 0; i < (uint32_t)from->queueCreateInfoCount; ++i)
485 {
486 deepcopy_VkDeviceQueueCreateInfo(pool, from->pQueueCreateInfos + i, (VkDeviceQueueCreateInfo*)(to->pQueueCreateInfos + i));
487 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800488 }
489 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800490 to->ppEnabledLayerNames = nullptr;
491 if (from->ppEnabledLayerNames && from->enabledLayerCount)
492 {
493 to->ppEnabledLayerNames = pool->strDupArray(from->ppEnabledLayerNames, from->enabledLayerCount);
494 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800495 to->ppEnabledExtensionNames = nullptr;
496 if (from->ppEnabledExtensionNames && from->enabledExtensionCount)
497 {
498 to->ppEnabledExtensionNames = pool->strDupArray(from->ppEnabledExtensionNames, from->enabledExtensionCount);
499 }
500 to->pEnabledFeatures = nullptr;
501 if (from->pEnabledFeatures)
502 {
503 to->pEnabledFeatures = (VkPhysicalDeviceFeatures*)pool->alloc(sizeof(const VkPhysicalDeviceFeatures));
504 deepcopy_VkPhysicalDeviceFeatures(pool, from->pEnabledFeatures, (VkPhysicalDeviceFeatures*)(to->pEnabledFeatures));
505 }
506}
507
508void deepcopy_VkExtensionProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700509 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800510 const VkExtensionProperties* from,
511 VkExtensionProperties* to)
512{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800513 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800514 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800515 memcpy(to->extensionName, from->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800516}
517
518void deepcopy_VkLayerProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700519 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800520 const VkLayerProperties* from,
521 VkLayerProperties* to)
522{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800523 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800524 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800525 memcpy(to->layerName, from->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800526 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
527}
528
529void deepcopy_VkSubmitInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700530 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800531 const VkSubmitInfo* from,
532 VkSubmitInfo* to)
533{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800534 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800535 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800536 const void* from_pNext = from;
537 size_t pNext_size = 0u;
538 while (!pNext_size && from_pNext)
539 {
540 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
541 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
542 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800543 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800544 if (pNext_size)
545 {
546 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800547 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800548 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800549 to->pWaitSemaphores = nullptr;
550 if (from->pWaitSemaphores)
551 {
552 to->pWaitSemaphores = (VkSemaphore*)pool->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
553 }
554 to->pWaitDstStageMask = nullptr;
555 if (from->pWaitDstStageMask)
556 {
557 to->pWaitDstStageMask = (VkPipelineStageFlags*)pool->dupArray(from->pWaitDstStageMask, from->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
558 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800559 to->pCommandBuffers = nullptr;
560 if (from->pCommandBuffers)
561 {
562 to->pCommandBuffers = (VkCommandBuffer*)pool->dupArray(from->pCommandBuffers, from->commandBufferCount * sizeof(const VkCommandBuffer));
563 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800564 to->pSignalSemaphores = nullptr;
565 if (from->pSignalSemaphores)
566 {
567 to->pSignalSemaphores = (VkSemaphore*)pool->dupArray(from->pSignalSemaphores, from->signalSemaphoreCount * sizeof(const VkSemaphore));
568 }
569}
570
Yilong Lia8d45f12021-02-07 02:30:21 -0800571void deepcopy_VkMappedMemoryRange(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700572 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -0800573 const VkMappedMemoryRange* from,
574 VkMappedMemoryRange* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800575{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800576 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800577 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800578 const void* from_pNext = from;
579 size_t pNext_size = 0u;
580 while (!pNext_size && from_pNext)
581 {
582 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
583 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
584 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800585 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800586 if (pNext_size)
587 {
588 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800589 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800590 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800591}
592
Yilong Lia8d45f12021-02-07 02:30:21 -0800593void deepcopy_VkMemoryAllocateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700594 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -0800595 const VkMemoryAllocateInfo* from,
596 VkMemoryAllocateInfo* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800597{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800598 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800599 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800600 const void* from_pNext = from;
601 size_t pNext_size = 0u;
602 while (!pNext_size && from_pNext)
603 {
604 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
605 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
606 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800607 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800608 if (pNext_size)
609 {
610 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800611 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800612 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800613}
614
615void deepcopy_VkMemoryRequirements(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700616 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800617 const VkMemoryRequirements* from,
618 VkMemoryRequirements* to)
619{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800620 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800621 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800622}
623
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800624void deepcopy_VkSparseMemoryBind(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700625 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800626 const VkSparseMemoryBind* from,
627 VkSparseMemoryBind* to)
628{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800629 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800630 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800631}
632
633void deepcopy_VkSparseBufferMemoryBindInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700634 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800635 const VkSparseBufferMemoryBindInfo* from,
636 VkSparseBufferMemoryBindInfo* to)
637{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800638 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800639 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -0800640 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800641 {
Yilong Libd10ec92021-02-10 13:24:27 -0800642 to->pBinds = nullptr;
643 if (from->pBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800644 {
Yilong Libd10ec92021-02-10 13:24:27 -0800645 to->pBinds = (VkSparseMemoryBind*)pool->alloc(from->bindCount * sizeof(const VkSparseMemoryBind));
646 to->bindCount = from->bindCount;
647 for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
648 {
649 deepcopy_VkSparseMemoryBind(pool, from->pBinds + i, (VkSparseMemoryBind*)(to->pBinds + i));
650 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800651 }
652 }
653}
654
655void deepcopy_VkSparseImageOpaqueMemoryBindInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700656 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800657 const VkSparseImageOpaqueMemoryBindInfo* from,
658 VkSparseImageOpaqueMemoryBindInfo* to)
659{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800660 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800661 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -0800662 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800663 {
Yilong Libd10ec92021-02-10 13:24:27 -0800664 to->pBinds = nullptr;
665 if (from->pBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800666 {
Yilong Libd10ec92021-02-10 13:24:27 -0800667 to->pBinds = (VkSparseMemoryBind*)pool->alloc(from->bindCount * sizeof(const VkSparseMemoryBind));
668 to->bindCount = from->bindCount;
669 for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
670 {
671 deepcopy_VkSparseMemoryBind(pool, from->pBinds + i, (VkSparseMemoryBind*)(to->pBinds + i));
672 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800673 }
674 }
675}
676
677void deepcopy_VkImageSubresource(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700678 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800679 const VkImageSubresource* from,
680 VkImageSubresource* to)
681{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800682 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800683 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800684}
685
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800686void deepcopy_VkSparseImageMemoryBind(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700687 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800688 const VkSparseImageMemoryBind* from,
689 VkSparseImageMemoryBind* to)
690{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800691 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800692 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800693 deepcopy_VkImageSubresource(pool, &from->subresource, (VkImageSubresource*)(&to->subresource));
694 deepcopy_VkOffset3D(pool, &from->offset, (VkOffset3D*)(&to->offset));
695 deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800696}
697
698void deepcopy_VkSparseImageMemoryBindInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700699 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800700 const VkSparseImageMemoryBindInfo* from,
701 VkSparseImageMemoryBindInfo* to)
702{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800703 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800704 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -0800705 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800706 {
Yilong Libd10ec92021-02-10 13:24:27 -0800707 to->pBinds = nullptr;
708 if (from->pBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800709 {
Yilong Libd10ec92021-02-10 13:24:27 -0800710 to->pBinds = (VkSparseImageMemoryBind*)pool->alloc(from->bindCount * sizeof(const VkSparseImageMemoryBind));
711 to->bindCount = from->bindCount;
712 for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
713 {
714 deepcopy_VkSparseImageMemoryBind(pool, from->pBinds + i, (VkSparseImageMemoryBind*)(to->pBinds + i));
715 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800716 }
717 }
718}
719
720void deepcopy_VkBindSparseInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700721 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800722 const VkBindSparseInfo* from,
723 VkBindSparseInfo* to)
724{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800725 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800726 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800727 const void* from_pNext = from;
728 size_t pNext_size = 0u;
729 while (!pNext_size && from_pNext)
730 {
731 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
732 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
733 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800734 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800735 if (pNext_size)
736 {
737 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800738 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800739 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800740 to->pWaitSemaphores = nullptr;
741 if (from->pWaitSemaphores)
742 {
743 to->pWaitSemaphores = (VkSemaphore*)pool->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
744 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800745 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800746 {
Yilong Libd10ec92021-02-10 13:24:27 -0800747 to->pBufferBinds = nullptr;
748 if (from->pBufferBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800749 {
Yilong Libd10ec92021-02-10 13:24:27 -0800750 to->pBufferBinds = (VkSparseBufferMemoryBindInfo*)pool->alloc(from->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
751 to->bufferBindCount = from->bufferBindCount;
752 for (uint32_t i = 0; i < (uint32_t)from->bufferBindCount; ++i)
753 {
754 deepcopy_VkSparseBufferMemoryBindInfo(pool, from->pBufferBinds + i, (VkSparseBufferMemoryBindInfo*)(to->pBufferBinds + i));
755 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800756 }
757 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800758 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800759 {
Yilong Libd10ec92021-02-10 13:24:27 -0800760 to->pImageOpaqueBinds = nullptr;
761 if (from->pImageOpaqueBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800762 {
Yilong Libd10ec92021-02-10 13:24:27 -0800763 to->pImageOpaqueBinds = (VkSparseImageOpaqueMemoryBindInfo*)pool->alloc(from->imageOpaqueBindCount * sizeof(const VkSparseImageOpaqueMemoryBindInfo));
764 to->imageOpaqueBindCount = from->imageOpaqueBindCount;
765 for (uint32_t i = 0; i < (uint32_t)from->imageOpaqueBindCount; ++i)
766 {
767 deepcopy_VkSparseImageOpaqueMemoryBindInfo(pool, from->pImageOpaqueBinds + i, (VkSparseImageOpaqueMemoryBindInfo*)(to->pImageOpaqueBinds + i));
768 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800769 }
770 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800771 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800772 {
Yilong Libd10ec92021-02-10 13:24:27 -0800773 to->pImageBinds = nullptr;
774 if (from->pImageBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800775 {
Yilong Libd10ec92021-02-10 13:24:27 -0800776 to->pImageBinds = (VkSparseImageMemoryBindInfo*)pool->alloc(from->imageBindCount * sizeof(const VkSparseImageMemoryBindInfo));
777 to->imageBindCount = from->imageBindCount;
778 for (uint32_t i = 0; i < (uint32_t)from->imageBindCount; ++i)
779 {
780 deepcopy_VkSparseImageMemoryBindInfo(pool, from->pImageBinds + i, (VkSparseImageMemoryBindInfo*)(to->pImageBinds + i));
781 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800782 }
783 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800784 to->pSignalSemaphores = nullptr;
785 if (from->pSignalSemaphores)
786 {
787 to->pSignalSemaphores = (VkSemaphore*)pool->dupArray(from->pSignalSemaphores, from->signalSemaphoreCount * sizeof(const VkSemaphore));
788 }
789}
790
Yilong Lia8d45f12021-02-07 02:30:21 -0800791void deepcopy_VkSparseImageFormatProperties(
792 BumpPool* pool,
793 const VkSparseImageFormatProperties* from,
794 VkSparseImageFormatProperties* to)
795{
796 (void)pool;
797 *to = *from;
798 deepcopy_VkExtent3D(pool, &from->imageGranularity, (VkExtent3D*)(&to->imageGranularity));
799}
800
801void deepcopy_VkSparseImageMemoryRequirements(
802 BumpPool* pool,
803 const VkSparseImageMemoryRequirements* from,
804 VkSparseImageMemoryRequirements* to)
805{
806 (void)pool;
807 *to = *from;
808 deepcopy_VkSparseImageFormatProperties(pool, &from->formatProperties, (VkSparseImageFormatProperties*)(&to->formatProperties));
809}
810
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800811void deepcopy_VkFenceCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700812 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800813 const VkFenceCreateInfo* from,
814 VkFenceCreateInfo* to)
815{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800816 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800817 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800818 const void* from_pNext = from;
819 size_t pNext_size = 0u;
820 while (!pNext_size && from_pNext)
821 {
822 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
823 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
824 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800825 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800826 if (pNext_size)
827 {
828 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800829 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800830 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800831}
832
833void deepcopy_VkSemaphoreCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700834 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800835 const VkSemaphoreCreateInfo* from,
836 VkSemaphoreCreateInfo* to)
837{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800838 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800839 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800840 const void* from_pNext = from;
841 size_t pNext_size = 0u;
842 while (!pNext_size && from_pNext)
843 {
844 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
845 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
846 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800847 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800848 if (pNext_size)
849 {
850 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800851 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800852 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800853}
854
855void deepcopy_VkEventCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700856 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800857 const VkEventCreateInfo* from,
858 VkEventCreateInfo* to)
859{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800860 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800861 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800862 const void* from_pNext = from;
863 size_t pNext_size = 0u;
864 while (!pNext_size && from_pNext)
865 {
866 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
867 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
868 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800869 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800870 if (pNext_size)
871 {
872 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800873 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800874 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800875}
876
877void deepcopy_VkQueryPoolCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700878 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800879 const VkQueryPoolCreateInfo* from,
880 VkQueryPoolCreateInfo* to)
881{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800882 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800883 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800884 const void* from_pNext = from;
885 size_t pNext_size = 0u;
886 while (!pNext_size && from_pNext)
887 {
888 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
889 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
890 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800891 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800892 if (pNext_size)
893 {
894 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800895 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800896 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800897}
898
899void deepcopy_VkBufferCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700900 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800901 const VkBufferCreateInfo* from,
902 VkBufferCreateInfo* to)
903{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800904 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800905 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800906 const void* from_pNext = from;
907 size_t pNext_size = 0u;
908 while (!pNext_size && from_pNext)
909 {
910 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
911 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
912 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800913 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800914 if (pNext_size)
915 {
916 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800917 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800918 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800919 to->pQueueFamilyIndices = nullptr;
920 if (from->pQueueFamilyIndices)
921 {
922 to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
923 }
924}
925
926void deepcopy_VkBufferViewCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700927 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800928 const VkBufferViewCreateInfo* from,
929 VkBufferViewCreateInfo* to)
930{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800931 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800932 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800933 const void* from_pNext = from;
934 size_t pNext_size = 0u;
935 while (!pNext_size && from_pNext)
936 {
937 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
938 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
939 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800940 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800941 if (pNext_size)
942 {
943 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800944 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800945 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800946}
947
948void deepcopy_VkImageCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700949 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800950 const VkImageCreateInfo* from,
951 VkImageCreateInfo* to)
952{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800953 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800954 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -0800955 const void* from_pNext = from;
956 size_t pNext_size = 0u;
957 while (!pNext_size && from_pNext)
958 {
959 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
960 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
961 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800962 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800963 if (pNext_size)
964 {
965 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -0800966 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800967 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800968 deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800969 to->pQueueFamilyIndices = nullptr;
970 if (from->pQueueFamilyIndices)
971 {
972 to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
973 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800974}
975
976void deepcopy_VkSubresourceLayout(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700977 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800978 const VkSubresourceLayout* from,
979 VkSubresourceLayout* to)
980{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800981 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800982 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800983}
984
985void deepcopy_VkComponentMapping(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700986 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800987 const VkComponentMapping* from,
988 VkComponentMapping* to)
989{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800990 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800991 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800992}
993
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800994void deepcopy_VkImageViewCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -0700995 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800996 const VkImageViewCreateInfo* from,
997 VkImageViewCreateInfo* to)
998{
Lingfeng Yang36891c52018-11-09 14:18:35 -0800999 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001000 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001001 const void* from_pNext = from;
1002 size_t pNext_size = 0u;
1003 while (!pNext_size && from_pNext)
1004 {
1005 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1006 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1007 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001008 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001009 if (pNext_size)
1010 {
1011 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001012 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001013 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001014 deepcopy_VkComponentMapping(pool, &from->components, (VkComponentMapping*)(&to->components));
1015 deepcopy_VkImageSubresourceRange(pool, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
1016}
1017
1018void deepcopy_VkShaderModuleCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001019 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001020 const VkShaderModuleCreateInfo* from,
1021 VkShaderModuleCreateInfo* to)
1022{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001023 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001024 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001025 const void* from_pNext = from;
1026 size_t pNext_size = 0u;
1027 while (!pNext_size && from_pNext)
1028 {
1029 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1030 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1031 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001032 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001033 if (pNext_size)
1034 {
1035 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001036 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001037 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001038 to->pCode = nullptr;
1039 if (from->pCode)
1040 {
1041 to->pCode = (uint32_t*)pool->dupArray(from->pCode, (from->codeSize / 4) * sizeof(const uint32_t));
1042 }
1043}
1044
1045void deepcopy_VkPipelineCacheCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001046 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001047 const VkPipelineCacheCreateInfo* from,
1048 VkPipelineCacheCreateInfo* to)
1049{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001050 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001051 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001052 const void* from_pNext = from;
1053 size_t pNext_size = 0u;
1054 while (!pNext_size && from_pNext)
1055 {
1056 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1057 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1058 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001059 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001060 if (pNext_size)
1061 {
1062 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001063 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001064 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001065 to->pInitialData = nullptr;
1066 if (from->pInitialData)
1067 {
1068 to->pInitialData = (void*)pool->dupArray(from->pInitialData, from->initialDataSize * sizeof(const uint8_t));
1069 }
1070}
1071
1072void deepcopy_VkSpecializationMapEntry(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001073 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001074 const VkSpecializationMapEntry* from,
1075 VkSpecializationMapEntry* to)
1076{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001077 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001078 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001079}
1080
1081void deepcopy_VkSpecializationInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001082 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001083 const VkSpecializationInfo* from,
1084 VkSpecializationInfo* to)
1085{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001086 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001087 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08001088 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001089 {
Yilong Libd10ec92021-02-10 13:24:27 -08001090 to->pMapEntries = nullptr;
1091 if (from->pMapEntries)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001092 {
Yilong Libd10ec92021-02-10 13:24:27 -08001093 to->pMapEntries = (VkSpecializationMapEntry*)pool->alloc(from->mapEntryCount * sizeof(const VkSpecializationMapEntry));
1094 to->mapEntryCount = from->mapEntryCount;
1095 for (uint32_t i = 0; i < (uint32_t)from->mapEntryCount; ++i)
1096 {
1097 deepcopy_VkSpecializationMapEntry(pool, from->pMapEntries + i, (VkSpecializationMapEntry*)(to->pMapEntries + i));
1098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001099 }
1100 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001101 to->pData = nullptr;
1102 if (from->pData)
1103 {
1104 to->pData = (void*)pool->dupArray(from->pData, from->dataSize * sizeof(const uint8_t));
1105 }
1106}
1107
1108void deepcopy_VkPipelineShaderStageCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001109 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001110 const VkPipelineShaderStageCreateInfo* from,
1111 VkPipelineShaderStageCreateInfo* to)
1112{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001113 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001114 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001115 const void* from_pNext = from;
1116 size_t pNext_size = 0u;
1117 while (!pNext_size && from_pNext)
1118 {
1119 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1120 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1121 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001122 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001123 if (pNext_size)
1124 {
1125 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001126 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001127 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001128 to->pName = nullptr;
1129 if (from->pName)
1130 {
1131 to->pName = pool->strDup(from->pName);
1132 }
1133 to->pSpecializationInfo = nullptr;
1134 if (from->pSpecializationInfo)
1135 {
1136 to->pSpecializationInfo = (VkSpecializationInfo*)pool->alloc(sizeof(const VkSpecializationInfo));
1137 deepcopy_VkSpecializationInfo(pool, from->pSpecializationInfo, (VkSpecializationInfo*)(to->pSpecializationInfo));
1138 }
1139}
1140
Yilong Lia8d45f12021-02-07 02:30:21 -08001141void deepcopy_VkComputePipelineCreateInfo(
1142 BumpPool* pool,
1143 const VkComputePipelineCreateInfo* from,
1144 VkComputePipelineCreateInfo* to)
1145{
1146 (void)pool;
1147 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001148 const void* from_pNext = from;
1149 size_t pNext_size = 0u;
1150 while (!pNext_size && from_pNext)
1151 {
1152 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1153 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1154 }
Yilong Lia8d45f12021-02-07 02:30:21 -08001155 to->pNext = nullptr;
1156 if (pNext_size)
1157 {
1158 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001159 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08001160 }
1161 deepcopy_VkPipelineShaderStageCreateInfo(pool, &from->stage, (VkPipelineShaderStageCreateInfo*)(&to->stage));
1162}
1163
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001164void deepcopy_VkVertexInputBindingDescription(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001165 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001166 const VkVertexInputBindingDescription* from,
1167 VkVertexInputBindingDescription* to)
1168{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001169 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001170 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001171}
1172
1173void deepcopy_VkVertexInputAttributeDescription(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001174 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001175 const VkVertexInputAttributeDescription* from,
1176 VkVertexInputAttributeDescription* to)
1177{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001178 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001179 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001180}
1181
1182void deepcopy_VkPipelineVertexInputStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001183 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001184 const VkPipelineVertexInputStateCreateInfo* from,
1185 VkPipelineVertexInputStateCreateInfo* to)
1186{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001187 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001188 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001189 const void* from_pNext = from;
1190 size_t pNext_size = 0u;
1191 while (!pNext_size && from_pNext)
1192 {
1193 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1194 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1195 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001196 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001197 if (pNext_size)
1198 {
1199 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001200 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001201 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001202 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001203 {
Yilong Libd10ec92021-02-10 13:24:27 -08001204 to->pVertexBindingDescriptions = nullptr;
1205 if (from->pVertexBindingDescriptions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001206 {
Yilong Libd10ec92021-02-10 13:24:27 -08001207 to->pVertexBindingDescriptions = (VkVertexInputBindingDescription*)pool->alloc(from->vertexBindingDescriptionCount * sizeof(const VkVertexInputBindingDescription));
1208 to->vertexBindingDescriptionCount = from->vertexBindingDescriptionCount;
1209 for (uint32_t i = 0; i < (uint32_t)from->vertexBindingDescriptionCount; ++i)
1210 {
1211 deepcopy_VkVertexInputBindingDescription(pool, from->pVertexBindingDescriptions + i, (VkVertexInputBindingDescription*)(to->pVertexBindingDescriptions + i));
1212 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001213 }
1214 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001215 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001216 {
Yilong Libd10ec92021-02-10 13:24:27 -08001217 to->pVertexAttributeDescriptions = nullptr;
1218 if (from->pVertexAttributeDescriptions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001219 {
Yilong Libd10ec92021-02-10 13:24:27 -08001220 to->pVertexAttributeDescriptions = (VkVertexInputAttributeDescription*)pool->alloc(from->vertexAttributeDescriptionCount * sizeof(const VkVertexInputAttributeDescription));
1221 to->vertexAttributeDescriptionCount = from->vertexAttributeDescriptionCount;
1222 for (uint32_t i = 0; i < (uint32_t)from->vertexAttributeDescriptionCount; ++i)
1223 {
1224 deepcopy_VkVertexInputAttributeDescription(pool, from->pVertexAttributeDescriptions + i, (VkVertexInputAttributeDescription*)(to->pVertexAttributeDescriptions + i));
1225 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001226 }
1227 }
1228}
1229
1230void deepcopy_VkPipelineInputAssemblyStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001231 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001232 const VkPipelineInputAssemblyStateCreateInfo* from,
1233 VkPipelineInputAssemblyStateCreateInfo* to)
1234{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001235 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001236 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001237 const void* from_pNext = from;
1238 size_t pNext_size = 0u;
1239 while (!pNext_size && from_pNext)
1240 {
1241 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1242 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1243 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001244 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001245 if (pNext_size)
1246 {
1247 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001248 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001249 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001250}
1251
1252void deepcopy_VkPipelineTessellationStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001253 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001254 const VkPipelineTessellationStateCreateInfo* from,
1255 VkPipelineTessellationStateCreateInfo* to)
1256{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001257 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001258 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001259 const void* from_pNext = from;
1260 size_t pNext_size = 0u;
1261 while (!pNext_size && from_pNext)
1262 {
1263 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1264 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1265 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001266 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001267 if (pNext_size)
1268 {
1269 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001270 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001271 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001272}
1273
1274void deepcopy_VkViewport(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001275 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001276 const VkViewport* from,
1277 VkViewport* to)
1278{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001279 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001280 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001281}
1282
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001283void deepcopy_VkPipelineViewportStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001284 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001285 const VkPipelineViewportStateCreateInfo* from,
1286 VkPipelineViewportStateCreateInfo* to)
1287{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001288 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001289 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001290 const void* from_pNext = from;
1291 size_t pNext_size = 0u;
1292 while (!pNext_size && from_pNext)
1293 {
1294 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1295 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1296 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001297 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001298 if (pNext_size)
1299 {
1300 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001301 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001302 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001303 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001304 {
Yilong Libd10ec92021-02-10 13:24:27 -08001305 to->pViewports = nullptr;
1306 if (from->pViewports)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001307 {
Yilong Libd10ec92021-02-10 13:24:27 -08001308 to->pViewports = (VkViewport*)pool->alloc(from->viewportCount * sizeof(const VkViewport));
1309 to->viewportCount = from->viewportCount;
1310 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
1311 {
1312 deepcopy_VkViewport(pool, from->pViewports + i, (VkViewport*)(to->pViewports + i));
1313 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001314 }
1315 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001316 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001317 {
Yilong Libd10ec92021-02-10 13:24:27 -08001318 to->pScissors = nullptr;
1319 if (from->pScissors)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001320 {
Yilong Libd10ec92021-02-10 13:24:27 -08001321 to->pScissors = (VkRect2D*)pool->alloc(from->scissorCount * sizeof(const VkRect2D));
1322 to->scissorCount = from->scissorCount;
1323 for (uint32_t i = 0; i < (uint32_t)from->scissorCount; ++i)
1324 {
1325 deepcopy_VkRect2D(pool, from->pScissors + i, (VkRect2D*)(to->pScissors + i));
1326 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001327 }
1328 }
1329}
1330
1331void deepcopy_VkPipelineRasterizationStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001332 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001333 const VkPipelineRasterizationStateCreateInfo* from,
1334 VkPipelineRasterizationStateCreateInfo* to)
1335{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001336 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001337 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001338 const void* from_pNext = from;
1339 size_t pNext_size = 0u;
1340 while (!pNext_size && from_pNext)
1341 {
1342 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1343 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1344 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001345 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001346 if (pNext_size)
1347 {
1348 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001349 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001350 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001351}
1352
1353void deepcopy_VkPipelineMultisampleStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001354 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001355 const VkPipelineMultisampleStateCreateInfo* from,
1356 VkPipelineMultisampleStateCreateInfo* to)
1357{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001358 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001359 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001360 const void* from_pNext = from;
1361 size_t pNext_size = 0u;
1362 while (!pNext_size && from_pNext)
1363 {
1364 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1365 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1366 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001367 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001368 if (pNext_size)
1369 {
1370 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001371 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001372 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001373 to->pSampleMask = nullptr;
1374 if (from->pSampleMask)
1375 {
1376 to->pSampleMask = (VkSampleMask*)pool->dupArray(from->pSampleMask, (((from->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
1377 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001378}
1379
1380void deepcopy_VkStencilOpState(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001381 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001382 const VkStencilOpState* from,
1383 VkStencilOpState* to)
1384{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001385 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001386 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001387}
1388
1389void deepcopy_VkPipelineDepthStencilStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001390 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001391 const VkPipelineDepthStencilStateCreateInfo* from,
1392 VkPipelineDepthStencilStateCreateInfo* to)
1393{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001394 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001395 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001396 const void* from_pNext = from;
1397 size_t pNext_size = 0u;
1398 while (!pNext_size && from_pNext)
1399 {
1400 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1401 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1402 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001403 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001404 if (pNext_size)
1405 {
1406 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001407 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001408 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001409 deepcopy_VkStencilOpState(pool, &from->front, (VkStencilOpState*)(&to->front));
1410 deepcopy_VkStencilOpState(pool, &from->back, (VkStencilOpState*)(&to->back));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001411}
1412
1413void deepcopy_VkPipelineColorBlendAttachmentState(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001414 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001415 const VkPipelineColorBlendAttachmentState* from,
1416 VkPipelineColorBlendAttachmentState* to)
1417{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001418 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001419 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001420}
1421
1422void deepcopy_VkPipelineColorBlendStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001423 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001424 const VkPipelineColorBlendStateCreateInfo* from,
1425 VkPipelineColorBlendStateCreateInfo* to)
1426{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001427 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001428 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001429 const void* from_pNext = from;
1430 size_t pNext_size = 0u;
1431 while (!pNext_size && from_pNext)
1432 {
1433 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1434 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1435 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001436 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001437 if (pNext_size)
1438 {
1439 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001440 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001441 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001442 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001443 {
Yilong Libd10ec92021-02-10 13:24:27 -08001444 to->pAttachments = nullptr;
1445 if (from->pAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001446 {
Yilong Libd10ec92021-02-10 13:24:27 -08001447 to->pAttachments = (VkPipelineColorBlendAttachmentState*)pool->alloc(from->attachmentCount * sizeof(const VkPipelineColorBlendAttachmentState));
1448 to->attachmentCount = from->attachmentCount;
1449 for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
1450 {
1451 deepcopy_VkPipelineColorBlendAttachmentState(pool, from->pAttachments + i, (VkPipelineColorBlendAttachmentState*)(to->pAttachments + i));
1452 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001453 }
1454 }
1455 memcpy(to->blendConstants, from->blendConstants, 4 * sizeof(float));
1456}
1457
1458void deepcopy_VkPipelineDynamicStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001459 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001460 const VkPipelineDynamicStateCreateInfo* from,
1461 VkPipelineDynamicStateCreateInfo* to)
1462{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001463 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001464 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001465 const void* from_pNext = from;
1466 size_t pNext_size = 0u;
1467 while (!pNext_size && from_pNext)
1468 {
1469 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1470 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1471 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001472 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001473 if (pNext_size)
1474 {
1475 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001476 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001477 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001478 to->pDynamicStates = nullptr;
1479 if (from->pDynamicStates)
1480 {
1481 to->pDynamicStates = (VkDynamicState*)pool->dupArray(from->pDynamicStates, from->dynamicStateCount * sizeof(const VkDynamicState));
1482 }
1483}
1484
1485void deepcopy_VkGraphicsPipelineCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001486 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001487 const VkGraphicsPipelineCreateInfo* from,
1488 VkGraphicsPipelineCreateInfo* to)
1489{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001490 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001491 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001492 const void* from_pNext = from;
1493 size_t pNext_size = 0u;
1494 while (!pNext_size && from_pNext)
1495 {
1496 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1497 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1498 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001499 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001500 if (pNext_size)
1501 {
1502 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001503 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001504 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001505 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001506 {
Yilong Libd10ec92021-02-10 13:24:27 -08001507 to->pStages = nullptr;
1508 if (from->pStages)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001509 {
Yilong Libd10ec92021-02-10 13:24:27 -08001510 to->pStages = (VkPipelineShaderStageCreateInfo*)pool->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
1511 to->stageCount = from->stageCount;
1512 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
1513 {
1514 deepcopy_VkPipelineShaderStageCreateInfo(pool, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
1515 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001516 }
1517 }
1518 to->pVertexInputState = nullptr;
1519 if (from->pVertexInputState)
1520 {
1521 to->pVertexInputState = (VkPipelineVertexInputStateCreateInfo*)pool->alloc(sizeof(const VkPipelineVertexInputStateCreateInfo));
1522 deepcopy_VkPipelineVertexInputStateCreateInfo(pool, from->pVertexInputState, (VkPipelineVertexInputStateCreateInfo*)(to->pVertexInputState));
1523 }
1524 to->pInputAssemblyState = nullptr;
1525 if (from->pInputAssemblyState)
1526 {
1527 to->pInputAssemblyState = (VkPipelineInputAssemblyStateCreateInfo*)pool->alloc(sizeof(const VkPipelineInputAssemblyStateCreateInfo));
1528 deepcopy_VkPipelineInputAssemblyStateCreateInfo(pool, from->pInputAssemblyState, (VkPipelineInputAssemblyStateCreateInfo*)(to->pInputAssemblyState));
1529 }
1530 to->pTessellationState = nullptr;
1531 if (from->pTessellationState)
1532 {
1533 to->pTessellationState = (VkPipelineTessellationStateCreateInfo*)pool->alloc(sizeof(const VkPipelineTessellationStateCreateInfo));
1534 deepcopy_VkPipelineTessellationStateCreateInfo(pool, from->pTessellationState, (VkPipelineTessellationStateCreateInfo*)(to->pTessellationState));
1535 }
1536 to->pViewportState = nullptr;
1537 if (from->pViewportState)
1538 {
1539 to->pViewportState = (VkPipelineViewportStateCreateInfo*)pool->alloc(sizeof(const VkPipelineViewportStateCreateInfo));
1540 deepcopy_VkPipelineViewportStateCreateInfo(pool, from->pViewportState, (VkPipelineViewportStateCreateInfo*)(to->pViewportState));
1541 }
1542 to->pRasterizationState = nullptr;
1543 if (from->pRasterizationState)
1544 {
1545 to->pRasterizationState = (VkPipelineRasterizationStateCreateInfo*)pool->alloc(sizeof(const VkPipelineRasterizationStateCreateInfo));
1546 deepcopy_VkPipelineRasterizationStateCreateInfo(pool, from->pRasterizationState, (VkPipelineRasterizationStateCreateInfo*)(to->pRasterizationState));
1547 }
1548 to->pMultisampleState = nullptr;
1549 if (from->pMultisampleState)
1550 {
1551 to->pMultisampleState = (VkPipelineMultisampleStateCreateInfo*)pool->alloc(sizeof(const VkPipelineMultisampleStateCreateInfo));
1552 deepcopy_VkPipelineMultisampleStateCreateInfo(pool, from->pMultisampleState, (VkPipelineMultisampleStateCreateInfo*)(to->pMultisampleState));
1553 }
1554 to->pDepthStencilState = nullptr;
1555 if (from->pDepthStencilState)
1556 {
1557 to->pDepthStencilState = (VkPipelineDepthStencilStateCreateInfo*)pool->alloc(sizeof(const VkPipelineDepthStencilStateCreateInfo));
1558 deepcopy_VkPipelineDepthStencilStateCreateInfo(pool, from->pDepthStencilState, (VkPipelineDepthStencilStateCreateInfo*)(to->pDepthStencilState));
1559 }
1560 to->pColorBlendState = nullptr;
1561 if (from->pColorBlendState)
1562 {
1563 to->pColorBlendState = (VkPipelineColorBlendStateCreateInfo*)pool->alloc(sizeof(const VkPipelineColorBlendStateCreateInfo));
1564 deepcopy_VkPipelineColorBlendStateCreateInfo(pool, from->pColorBlendState, (VkPipelineColorBlendStateCreateInfo*)(to->pColorBlendState));
1565 }
1566 to->pDynamicState = nullptr;
1567 if (from->pDynamicState)
1568 {
1569 to->pDynamicState = (VkPipelineDynamicStateCreateInfo*)pool->alloc(sizeof(const VkPipelineDynamicStateCreateInfo));
1570 deepcopy_VkPipelineDynamicStateCreateInfo(pool, from->pDynamicState, (VkPipelineDynamicStateCreateInfo*)(to->pDynamicState));
1571 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001572}
1573
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001574void deepcopy_VkPushConstantRange(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001575 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001576 const VkPushConstantRange* from,
1577 VkPushConstantRange* to)
1578{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001579 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001580 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001581}
1582
1583void deepcopy_VkPipelineLayoutCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001584 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001585 const VkPipelineLayoutCreateInfo* from,
1586 VkPipelineLayoutCreateInfo* to)
1587{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001588 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001589 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001590 const void* from_pNext = from;
1591 size_t pNext_size = 0u;
1592 while (!pNext_size && from_pNext)
1593 {
1594 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1595 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1596 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001597 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001598 if (pNext_size)
1599 {
1600 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001601 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001602 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001603 to->pSetLayouts = nullptr;
1604 if (from->pSetLayouts)
1605 {
1606 to->pSetLayouts = (VkDescriptorSetLayout*)pool->dupArray(from->pSetLayouts, from->setLayoutCount * sizeof(const VkDescriptorSetLayout));
1607 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001608 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001609 {
Yilong Libd10ec92021-02-10 13:24:27 -08001610 to->pPushConstantRanges = nullptr;
1611 if (from->pPushConstantRanges)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001612 {
Yilong Libd10ec92021-02-10 13:24:27 -08001613 to->pPushConstantRanges = (VkPushConstantRange*)pool->alloc(from->pushConstantRangeCount * sizeof(const VkPushConstantRange));
1614 to->pushConstantRangeCount = from->pushConstantRangeCount;
1615 for (uint32_t i = 0; i < (uint32_t)from->pushConstantRangeCount; ++i)
1616 {
1617 deepcopy_VkPushConstantRange(pool, from->pPushConstantRanges + i, (VkPushConstantRange*)(to->pPushConstantRanges + i));
1618 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001619 }
1620 }
1621}
1622
1623void deepcopy_VkSamplerCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001624 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001625 const VkSamplerCreateInfo* from,
1626 VkSamplerCreateInfo* to)
1627{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001628 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001629 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001630 const void* from_pNext = from;
1631 size_t pNext_size = 0u;
1632 while (!pNext_size && from_pNext)
1633 {
1634 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1635 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1636 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001637 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001638 if (pNext_size)
1639 {
1640 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001641 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001642 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001643}
1644
Yilong Lia8d45f12021-02-07 02:30:21 -08001645void deepcopy_VkCopyDescriptorSet(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001646 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08001647 const VkCopyDescriptorSet* from,
1648 VkCopyDescriptorSet* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001649{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001650 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001651 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001652 const void* from_pNext = from;
1653 size_t pNext_size = 0u;
1654 while (!pNext_size && from_pNext)
1655 {
1656 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1657 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1658 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001659 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001660 if (pNext_size)
1661 {
1662 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001663 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001664 }
Yilong Lia8d45f12021-02-07 02:30:21 -08001665}
1666
1667void deepcopy_VkDescriptorBufferInfo(
1668 BumpPool* pool,
1669 const VkDescriptorBufferInfo* from,
1670 VkDescriptorBufferInfo* to)
1671{
1672 (void)pool;
1673 *to = *from;
1674}
1675
1676void deepcopy_VkDescriptorImageInfo(
1677 BumpPool* pool,
1678 const VkDescriptorImageInfo* from,
1679 VkDescriptorImageInfo* to)
1680{
1681 (void)pool;
1682 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683}
1684
1685void deepcopy_VkDescriptorPoolSize(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001686 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001687 const VkDescriptorPoolSize* from,
1688 VkDescriptorPoolSize* to)
1689{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001690 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001691 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001692}
1693
1694void deepcopy_VkDescriptorPoolCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001695 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001696 const VkDescriptorPoolCreateInfo* from,
1697 VkDescriptorPoolCreateInfo* to)
1698{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001699 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001700 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001701 const void* from_pNext = from;
1702 size_t pNext_size = 0u;
1703 while (!pNext_size && from_pNext)
1704 {
1705 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1706 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1707 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001708 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001709 if (pNext_size)
1710 {
1711 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001712 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001713 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001714 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001715 {
Yilong Libd10ec92021-02-10 13:24:27 -08001716 to->pPoolSizes = nullptr;
1717 if (from->pPoolSizes)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001718 {
Yilong Libd10ec92021-02-10 13:24:27 -08001719 to->pPoolSizes = (VkDescriptorPoolSize*)pool->alloc(from->poolSizeCount * sizeof(const VkDescriptorPoolSize));
1720 to->poolSizeCount = from->poolSizeCount;
1721 for (uint32_t i = 0; i < (uint32_t)from->poolSizeCount; ++i)
1722 {
1723 deepcopy_VkDescriptorPoolSize(pool, from->pPoolSizes + i, (VkDescriptorPoolSize*)(to->pPoolSizes + i));
1724 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001725 }
1726 }
1727}
1728
1729void deepcopy_VkDescriptorSetAllocateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001730 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001731 const VkDescriptorSetAllocateInfo* from,
1732 VkDescriptorSetAllocateInfo* to)
1733{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001734 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001735 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001736 const void* from_pNext = from;
1737 size_t pNext_size = 0u;
1738 while (!pNext_size && from_pNext)
1739 {
1740 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1741 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1742 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001743 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001744 if (pNext_size)
1745 {
1746 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001747 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001748 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001749 to->pSetLayouts = nullptr;
1750 if (from->pSetLayouts)
1751 {
1752 to->pSetLayouts = (VkDescriptorSetLayout*)pool->dupArray(from->pSetLayouts, from->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
1753 }
1754}
1755
Yilong Lia8d45f12021-02-07 02:30:21 -08001756void deepcopy_VkDescriptorSetLayoutBinding(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001757 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08001758 const VkDescriptorSetLayoutBinding* from,
1759 VkDescriptorSetLayoutBinding* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001760{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001761 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001762 *to = *from;
Yilong Lia8d45f12021-02-07 02:30:21 -08001763 to->pImmutableSamplers = nullptr;
1764 if (from->pImmutableSamplers)
1765 {
1766 to->pImmutableSamplers = (VkSampler*)pool->dupArray(from->pImmutableSamplers, from->descriptorCount * sizeof(const VkSampler));
1767 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001768}
1769
Yilong Lia8d45f12021-02-07 02:30:21 -08001770void deepcopy_VkDescriptorSetLayoutCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001771 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08001772 const VkDescriptorSetLayoutCreateInfo* from,
1773 VkDescriptorSetLayoutCreateInfo* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001774{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001775 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001776 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001777 const void* from_pNext = from;
1778 size_t pNext_size = 0u;
1779 while (!pNext_size && from_pNext)
1780 {
1781 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1782 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1783 }
Yilong Lia8d45f12021-02-07 02:30:21 -08001784 to->pNext = nullptr;
1785 if (pNext_size)
1786 {
1787 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001788 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08001789 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001790 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08001791 {
Yilong Libd10ec92021-02-10 13:24:27 -08001792 to->pBindings = nullptr;
1793 if (from->pBindings)
Yilong Lia8d45f12021-02-07 02:30:21 -08001794 {
Yilong Libd10ec92021-02-10 13:24:27 -08001795 to->pBindings = (VkDescriptorSetLayoutBinding*)pool->alloc(from->bindingCount * sizeof(const VkDescriptorSetLayoutBinding));
1796 to->bindingCount = from->bindingCount;
1797 for (uint32_t i = 0; i < (uint32_t)from->bindingCount; ++i)
1798 {
1799 deepcopy_VkDescriptorSetLayoutBinding(pool, from->pBindings + i, (VkDescriptorSetLayoutBinding*)(to->pBindings + i));
1800 }
Yilong Lia8d45f12021-02-07 02:30:21 -08001801 }
1802 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001803}
1804
1805void deepcopy_VkWriteDescriptorSet(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001806 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001807 const VkWriteDescriptorSet* from,
1808 VkWriteDescriptorSet* to)
1809{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001810 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001811 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001812 const void* from_pNext = from;
1813 size_t pNext_size = 0u;
1814 while (!pNext_size && from_pNext)
1815 {
1816 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1817 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1818 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001819 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001820 if (pNext_size)
1821 {
1822 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001823 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001824 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001825 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001826 {
Yilong Libd10ec92021-02-10 13:24:27 -08001827 to->pImageInfo = nullptr;
1828 if (from->pImageInfo)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001829 {
Yilong Libd10ec92021-02-10 13:24:27 -08001830 to->pImageInfo = (VkDescriptorImageInfo*)pool->alloc(from->descriptorCount * sizeof(const VkDescriptorImageInfo));
1831 to->descriptorCount = from->descriptorCount;
1832 for (uint32_t i = 0; i < (uint32_t)from->descriptorCount; ++i)
1833 {
1834 deepcopy_VkDescriptorImageInfo(pool, from->pImageInfo + i, (VkDescriptorImageInfo*)(to->pImageInfo + i));
1835 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001836 }
1837 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001838 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001839 {
Yilong Libd10ec92021-02-10 13:24:27 -08001840 to->pBufferInfo = nullptr;
1841 if (from->pBufferInfo)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001842 {
Yilong Libd10ec92021-02-10 13:24:27 -08001843 to->pBufferInfo = (VkDescriptorBufferInfo*)pool->alloc(from->descriptorCount * sizeof(const VkDescriptorBufferInfo));
1844 to->descriptorCount = from->descriptorCount;
1845 for (uint32_t i = 0; i < (uint32_t)from->descriptorCount; ++i)
1846 {
1847 deepcopy_VkDescriptorBufferInfo(pool, from->pBufferInfo + i, (VkDescriptorBufferInfo*)(to->pBufferInfo + i));
1848 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001849 }
1850 }
1851 to->pTexelBufferView = nullptr;
1852 if (from->pTexelBufferView)
1853 {
1854 to->pTexelBufferView = (VkBufferView*)pool->dupArray(from->pTexelBufferView, from->descriptorCount * sizeof(const VkBufferView));
1855 }
1856}
1857
Yilong Lia8d45f12021-02-07 02:30:21 -08001858void deepcopy_VkAttachmentDescription(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001859 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08001860 const VkAttachmentDescription* from,
1861 VkAttachmentDescription* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001862{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001863 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001864 *to = *from;
Yilong Lia8d45f12021-02-07 02:30:21 -08001865}
1866
1867void deepcopy_VkAttachmentReference(
1868 BumpPool* pool,
1869 const VkAttachmentReference* from,
1870 VkAttachmentReference* to)
1871{
1872 (void)pool;
1873 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001874}
1875
1876void deepcopy_VkFramebufferCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001877 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001878 const VkFramebufferCreateInfo* from,
1879 VkFramebufferCreateInfo* to)
1880{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001881 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001882 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001883 const void* from_pNext = from;
1884 size_t pNext_size = 0u;
1885 while (!pNext_size && from_pNext)
1886 {
1887 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1888 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1889 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001890 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001891 if (pNext_size)
1892 {
1893 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001894 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001895 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001896 to->pAttachments = nullptr;
1897 if (from->pAttachments)
1898 {
1899 to->pAttachments = (VkImageView*)pool->dupArray(from->pAttachments, from->attachmentCount * sizeof(const VkImageView));
1900 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001901}
1902
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001903void deepcopy_VkSubpassDescription(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001904 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001905 const VkSubpassDescription* from,
1906 VkSubpassDescription* to)
1907{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001908 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001909 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08001910 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001911 {
Yilong Libd10ec92021-02-10 13:24:27 -08001912 to->pInputAttachments = nullptr;
1913 if (from->pInputAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001914 {
Yilong Libd10ec92021-02-10 13:24:27 -08001915 to->pInputAttachments = (VkAttachmentReference*)pool->alloc(from->inputAttachmentCount * sizeof(const VkAttachmentReference));
1916 to->inputAttachmentCount = from->inputAttachmentCount;
1917 for (uint32_t i = 0; i < (uint32_t)from->inputAttachmentCount; ++i)
1918 {
1919 deepcopy_VkAttachmentReference(pool, from->pInputAttachments + i, (VkAttachmentReference*)(to->pInputAttachments + i));
1920 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001921 }
1922 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001923 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001924 {
Yilong Libd10ec92021-02-10 13:24:27 -08001925 to->pColorAttachments = nullptr;
1926 if (from->pColorAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001927 {
Yilong Libd10ec92021-02-10 13:24:27 -08001928 to->pColorAttachments = (VkAttachmentReference*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference));
1929 to->colorAttachmentCount = from->colorAttachmentCount;
1930 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
1931 {
1932 deepcopy_VkAttachmentReference(pool, from->pColorAttachments + i, (VkAttachmentReference*)(to->pColorAttachments + i));
1933 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001934 }
1935 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001936 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001937 {
Yilong Libd10ec92021-02-10 13:24:27 -08001938 to->pResolveAttachments = nullptr;
1939 if (from->pResolveAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001940 {
Yilong Libd10ec92021-02-10 13:24:27 -08001941 to->pResolveAttachments = (VkAttachmentReference*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference));
1942 to->colorAttachmentCount = from->colorAttachmentCount;
1943 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
1944 {
1945 deepcopy_VkAttachmentReference(pool, from->pResolveAttachments + i, (VkAttachmentReference*)(to->pResolveAttachments + i));
1946 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001947 }
1948 }
1949 to->pDepthStencilAttachment = nullptr;
1950 if (from->pDepthStencilAttachment)
1951 {
1952 to->pDepthStencilAttachment = (VkAttachmentReference*)pool->alloc(sizeof(const VkAttachmentReference));
1953 deepcopy_VkAttachmentReference(pool, from->pDepthStencilAttachment, (VkAttachmentReference*)(to->pDepthStencilAttachment));
1954 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001955 to->pPreserveAttachments = nullptr;
1956 if (from->pPreserveAttachments)
1957 {
1958 to->pPreserveAttachments = (uint32_t*)pool->dupArray(from->pPreserveAttachments, from->preserveAttachmentCount * sizeof(const uint32_t));
1959 }
1960}
1961
1962void deepcopy_VkSubpassDependency(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001963 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001964 const VkSubpassDependency* from,
1965 VkSubpassDependency* to)
1966{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001967 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001968 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001969}
1970
1971void deepcopy_VkRenderPassCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07001972 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001973 const VkRenderPassCreateInfo* from,
1974 VkRenderPassCreateInfo* to)
1975{
Lingfeng Yang36891c52018-11-09 14:18:35 -08001976 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001977 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08001978 const void* from_pNext = from;
1979 size_t pNext_size = 0u;
1980 while (!pNext_size && from_pNext)
1981 {
1982 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
1983 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
1984 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001985 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001986 if (pNext_size)
1987 {
1988 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08001989 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001990 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001991 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001992 {
Yilong Libd10ec92021-02-10 13:24:27 -08001993 to->pAttachments = nullptr;
1994 if (from->pAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001995 {
Yilong Libd10ec92021-02-10 13:24:27 -08001996 to->pAttachments = (VkAttachmentDescription*)pool->alloc(from->attachmentCount * sizeof(const VkAttachmentDescription));
1997 to->attachmentCount = from->attachmentCount;
1998 for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
1999 {
2000 deepcopy_VkAttachmentDescription(pool, from->pAttachments + i, (VkAttachmentDescription*)(to->pAttachments + i));
2001 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002002 }
2003 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002004 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002005 {
Yilong Libd10ec92021-02-10 13:24:27 -08002006 to->pSubpasses = nullptr;
2007 if (from->pSubpasses)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002008 {
Yilong Libd10ec92021-02-10 13:24:27 -08002009 to->pSubpasses = (VkSubpassDescription*)pool->alloc(from->subpassCount * sizeof(const VkSubpassDescription));
2010 to->subpassCount = from->subpassCount;
2011 for (uint32_t i = 0; i < (uint32_t)from->subpassCount; ++i)
2012 {
2013 deepcopy_VkSubpassDescription(pool, from->pSubpasses + i, (VkSubpassDescription*)(to->pSubpasses + i));
2014 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002015 }
2016 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002017 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002018 {
Yilong Libd10ec92021-02-10 13:24:27 -08002019 to->pDependencies = nullptr;
2020 if (from->pDependencies)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002021 {
Yilong Libd10ec92021-02-10 13:24:27 -08002022 to->pDependencies = (VkSubpassDependency*)pool->alloc(from->dependencyCount * sizeof(const VkSubpassDependency));
2023 to->dependencyCount = from->dependencyCount;
2024 for (uint32_t i = 0; i < (uint32_t)from->dependencyCount; ++i)
2025 {
2026 deepcopy_VkSubpassDependency(pool, from->pDependencies + i, (VkSubpassDependency*)(to->pDependencies + i));
2027 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002028 }
2029 }
2030}
2031
2032void deepcopy_VkCommandPoolCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002033 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002034 const VkCommandPoolCreateInfo* from,
2035 VkCommandPoolCreateInfo* to)
2036{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002037 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002038 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002039 const void* from_pNext = from;
2040 size_t pNext_size = 0u;
2041 while (!pNext_size && from_pNext)
2042 {
2043 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2044 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2045 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002046 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002047 if (pNext_size)
2048 {
2049 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002050 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002051 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002052}
2053
2054void deepcopy_VkCommandBufferAllocateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002055 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002056 const VkCommandBufferAllocateInfo* from,
2057 VkCommandBufferAllocateInfo* to)
2058{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002059 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002060 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002061 const void* from_pNext = from;
2062 size_t pNext_size = 0u;
2063 while (!pNext_size && from_pNext)
2064 {
2065 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2066 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2067 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002068 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002069 if (pNext_size)
2070 {
2071 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002072 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002073 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002074}
2075
2076void deepcopy_VkCommandBufferInheritanceInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002077 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002078 const VkCommandBufferInheritanceInfo* from,
2079 VkCommandBufferInheritanceInfo* to)
2080{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002081 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002082 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002083 const void* from_pNext = from;
2084 size_t pNext_size = 0u;
2085 while (!pNext_size && from_pNext)
2086 {
2087 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2088 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2089 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002090 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002091 if (pNext_size)
2092 {
2093 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002094 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002095 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002096}
2097
2098void deepcopy_VkCommandBufferBeginInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002099 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002100 const VkCommandBufferBeginInfo* from,
2101 VkCommandBufferBeginInfo* to)
2102{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002103 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002104 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002105 const void* from_pNext = from;
2106 size_t pNext_size = 0u;
2107 while (!pNext_size && from_pNext)
2108 {
2109 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2110 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2111 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002112 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002113 if (pNext_size)
2114 {
2115 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002116 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002117 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002118 to->pInheritanceInfo = nullptr;
2119 if (from->pInheritanceInfo)
2120 {
2121 to->pInheritanceInfo = (VkCommandBufferInheritanceInfo*)pool->alloc(sizeof(const VkCommandBufferInheritanceInfo));
2122 deepcopy_VkCommandBufferInheritanceInfo(pool, from->pInheritanceInfo, (VkCommandBufferInheritanceInfo*)(to->pInheritanceInfo));
2123 }
2124}
2125
2126void deepcopy_VkBufferCopy(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002127 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002128 const VkBufferCopy* from,
2129 VkBufferCopy* to)
2130{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002131 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002132 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002133}
2134
2135void deepcopy_VkImageSubresourceLayers(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002136 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002137 const VkImageSubresourceLayers* from,
2138 VkImageSubresourceLayers* to)
2139{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002140 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002141 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002142}
2143
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002144void deepcopy_VkBufferImageCopy(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002145 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002146 const VkBufferImageCopy* from,
2147 VkBufferImageCopy* to)
2148{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002149 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002150 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002151 deepcopy_VkImageSubresourceLayers(pool, &from->imageSubresource, (VkImageSubresourceLayers*)(&to->imageSubresource));
2152 deepcopy_VkOffset3D(pool, &from->imageOffset, (VkOffset3D*)(&to->imageOffset));
2153 deepcopy_VkExtent3D(pool, &from->imageExtent, (VkExtent3D*)(&to->imageExtent));
2154}
2155
2156void deepcopy_VkClearColorValue(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002157 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002158 const VkClearColorValue* from,
2159 VkClearColorValue* to)
2160{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002161 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002162 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002163 memcpy(to->float32, from->float32, 4 * sizeof(float));
2164 memcpy(to->int32, from->int32, 4 * sizeof(int32_t));
2165 memcpy(to->uint32, from->uint32, 4 * sizeof(uint32_t));
2166}
2167
2168void deepcopy_VkClearDepthStencilValue(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002169 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002170 const VkClearDepthStencilValue* from,
2171 VkClearDepthStencilValue* to)
2172{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002173 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002174 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002175}
2176
2177void deepcopy_VkClearValue(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002178 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002179 const VkClearValue* from,
2180 VkClearValue* to)
2181{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002182 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002183 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002184 deepcopy_VkClearColorValue(pool, &from->color, (VkClearColorValue*)(&to->color));
2185 deepcopy_VkClearDepthStencilValue(pool, &from->depthStencil, (VkClearDepthStencilValue*)(&to->depthStencil));
2186}
2187
2188void deepcopy_VkClearAttachment(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002189 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002190 const VkClearAttachment* from,
2191 VkClearAttachment* to)
2192{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002193 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002194 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002195 deepcopy_VkClearValue(pool, &from->clearValue, (VkClearValue*)(&to->clearValue));
2196}
2197
2198void deepcopy_VkClearRect(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002199 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002200 const VkClearRect* from,
2201 VkClearRect* to)
2202{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002203 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002204 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002205 deepcopy_VkRect2D(pool, &from->rect, (VkRect2D*)(&to->rect));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002206}
2207
Yilong Lia8d45f12021-02-07 02:30:21 -08002208void deepcopy_VkImageBlit(
2209 BumpPool* pool,
2210 const VkImageBlit* from,
2211 VkImageBlit* to)
2212{
2213 (void)pool;
2214 *to = *from;
2215 deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
2216 for (uint32_t i = 0; i < (uint32_t)2; ++i)
2217 {
2218 deepcopy_VkOffset3D(pool, from->srcOffsets + i, (VkOffset3D*)(to->srcOffsets + i));
2219 }
2220 deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
2221 for (uint32_t i = 0; i < (uint32_t)2; ++i)
2222 {
2223 deepcopy_VkOffset3D(pool, from->dstOffsets + i, (VkOffset3D*)(to->dstOffsets + i));
2224 }
2225}
2226
2227void deepcopy_VkImageCopy(
2228 BumpPool* pool,
2229 const VkImageCopy* from,
2230 VkImageCopy* to)
2231{
2232 (void)pool;
2233 *to = *from;
2234 deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
2235 deepcopy_VkOffset3D(pool, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
2236 deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
2237 deepcopy_VkOffset3D(pool, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
2238 deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
2239}
2240
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002241void deepcopy_VkImageResolve(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002242 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002243 const VkImageResolve* from,
2244 VkImageResolve* to)
2245{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002246 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002247 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002248 deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
2249 deepcopy_VkOffset3D(pool, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
2250 deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
2251 deepcopy_VkOffset3D(pool, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
2252 deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
2253}
2254
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002255void deepcopy_VkRenderPassBeginInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002256 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002257 const VkRenderPassBeginInfo* from,
2258 VkRenderPassBeginInfo* to)
2259{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002260 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002261 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002262 const void* from_pNext = from;
2263 size_t pNext_size = 0u;
2264 while (!pNext_size && from_pNext)
2265 {
2266 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2267 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2268 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002269 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002270 if (pNext_size)
2271 {
2272 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002273 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002275 deepcopy_VkRect2D(pool, &from->renderArea, (VkRect2D*)(&to->renderArea));
Lingfeng Yang55676e02021-02-08 08:39:45 -08002276 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002277 {
Yilong Libd10ec92021-02-10 13:24:27 -08002278 to->pClearValues = nullptr;
2279 if (from->pClearValues)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002280 {
Yilong Libd10ec92021-02-10 13:24:27 -08002281 to->pClearValues = (VkClearValue*)pool->alloc(from->clearValueCount * sizeof(const VkClearValue));
2282 to->clearValueCount = from->clearValueCount;
2283 for (uint32_t i = 0; i < (uint32_t)from->clearValueCount; ++i)
2284 {
2285 deepcopy_VkClearValue(pool, from->pClearValues + i, (VkClearValue*)(to->pClearValues + i));
2286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002287 }
2288 }
2289}
2290
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002291#endif
2292#ifdef VK_VERSION_1_1
2293void deepcopy_VkPhysicalDeviceSubgroupProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002294 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002295 const VkPhysicalDeviceSubgroupProperties* from,
2296 VkPhysicalDeviceSubgroupProperties* to)
2297{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002298 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002299 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002300 const void* from_pNext = from;
2301 size_t pNext_size = 0u;
2302 while (!pNext_size && from_pNext)
2303 {
2304 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2305 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2306 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002307 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002308 if (pNext_size)
2309 {
2310 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002311 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002312 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002313}
2314
2315void deepcopy_VkBindBufferMemoryInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002316 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002317 const VkBindBufferMemoryInfo* from,
2318 VkBindBufferMemoryInfo* to)
2319{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002320 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002321 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002322 const void* from_pNext = from;
2323 size_t pNext_size = 0u;
2324 while (!pNext_size && from_pNext)
2325 {
2326 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2327 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2328 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002329 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002330 if (pNext_size)
2331 {
2332 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002333 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002334 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002335}
2336
2337void deepcopy_VkBindImageMemoryInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002338 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002339 const VkBindImageMemoryInfo* from,
2340 VkBindImageMemoryInfo* to)
2341{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002342 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002343 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002344 const void* from_pNext = from;
2345 size_t pNext_size = 0u;
2346 while (!pNext_size && from_pNext)
2347 {
2348 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2349 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2350 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002351 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002352 if (pNext_size)
2353 {
2354 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002355 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002356 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002357}
2358
2359void deepcopy_VkPhysicalDevice16BitStorageFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002360 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002361 const VkPhysicalDevice16BitStorageFeatures* from,
2362 VkPhysicalDevice16BitStorageFeatures* to)
2363{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002364 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002365 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002366 const void* from_pNext = from;
2367 size_t pNext_size = 0u;
2368 while (!pNext_size && from_pNext)
2369 {
2370 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2371 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2372 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002373 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002374 if (pNext_size)
2375 {
2376 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002377 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002378 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002379}
2380
2381void deepcopy_VkMemoryDedicatedRequirements(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002382 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002383 const VkMemoryDedicatedRequirements* from,
2384 VkMemoryDedicatedRequirements* to)
2385{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002386 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002387 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002388 const void* from_pNext = from;
2389 size_t pNext_size = 0u;
2390 while (!pNext_size && from_pNext)
2391 {
2392 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2393 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2394 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002395 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002396 if (pNext_size)
2397 {
2398 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002399 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002401}
2402
2403void deepcopy_VkMemoryDedicatedAllocateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002404 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002405 const VkMemoryDedicatedAllocateInfo* from,
2406 VkMemoryDedicatedAllocateInfo* to)
2407{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002408 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002409 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002410 const void* from_pNext = from;
2411 size_t pNext_size = 0u;
2412 while (!pNext_size && from_pNext)
2413 {
2414 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2415 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2416 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002417 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002418 if (pNext_size)
2419 {
2420 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002421 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002422 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002423}
2424
2425void deepcopy_VkMemoryAllocateFlagsInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002426 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002427 const VkMemoryAllocateFlagsInfo* from,
2428 VkMemoryAllocateFlagsInfo* to)
2429{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002430 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002431 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002432 const void* from_pNext = from;
2433 size_t pNext_size = 0u;
2434 while (!pNext_size && from_pNext)
2435 {
2436 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2437 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2438 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002439 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002440 if (pNext_size)
2441 {
2442 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002443 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002444 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002445}
2446
2447void deepcopy_VkDeviceGroupRenderPassBeginInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002448 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002449 const VkDeviceGroupRenderPassBeginInfo* from,
2450 VkDeviceGroupRenderPassBeginInfo* to)
2451{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002452 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002453 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002454 const void* from_pNext = from;
2455 size_t pNext_size = 0u;
2456 while (!pNext_size && from_pNext)
2457 {
2458 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2459 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2460 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002461 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002462 if (pNext_size)
2463 {
2464 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002465 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002466 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002467 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002468 {
Yilong Libd10ec92021-02-10 13:24:27 -08002469 to->pDeviceRenderAreas = nullptr;
2470 if (from->pDeviceRenderAreas)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002471 {
Yilong Libd10ec92021-02-10 13:24:27 -08002472 to->pDeviceRenderAreas = (VkRect2D*)pool->alloc(from->deviceRenderAreaCount * sizeof(const VkRect2D));
2473 to->deviceRenderAreaCount = from->deviceRenderAreaCount;
2474 for (uint32_t i = 0; i < (uint32_t)from->deviceRenderAreaCount; ++i)
2475 {
2476 deepcopy_VkRect2D(pool, from->pDeviceRenderAreas + i, (VkRect2D*)(to->pDeviceRenderAreas + i));
2477 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002478 }
2479 }
2480}
2481
2482void deepcopy_VkDeviceGroupCommandBufferBeginInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002483 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002484 const VkDeviceGroupCommandBufferBeginInfo* from,
2485 VkDeviceGroupCommandBufferBeginInfo* to)
2486{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002487 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002488 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002489 const void* from_pNext = from;
2490 size_t pNext_size = 0u;
2491 while (!pNext_size && from_pNext)
2492 {
2493 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2494 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2495 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002496 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002497 if (pNext_size)
2498 {
2499 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002500 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002501 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002502}
2503
2504void deepcopy_VkDeviceGroupSubmitInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002505 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002506 const VkDeviceGroupSubmitInfo* from,
2507 VkDeviceGroupSubmitInfo* to)
2508{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002509 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002510 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002511 const void* from_pNext = from;
2512 size_t pNext_size = 0u;
2513 while (!pNext_size && from_pNext)
2514 {
2515 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2516 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2517 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002518 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002519 if (pNext_size)
2520 {
2521 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002522 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002524 to->pWaitSemaphoreDeviceIndices = nullptr;
2525 if (from->pWaitSemaphoreDeviceIndices)
2526 {
2527 to->pWaitSemaphoreDeviceIndices = (uint32_t*)pool->dupArray(from->pWaitSemaphoreDeviceIndices, from->waitSemaphoreCount * sizeof(const uint32_t));
2528 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002529 to->pCommandBufferDeviceMasks = nullptr;
2530 if (from->pCommandBufferDeviceMasks)
2531 {
2532 to->pCommandBufferDeviceMasks = (uint32_t*)pool->dupArray(from->pCommandBufferDeviceMasks, from->commandBufferCount * sizeof(const uint32_t));
2533 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002534 to->pSignalSemaphoreDeviceIndices = nullptr;
2535 if (from->pSignalSemaphoreDeviceIndices)
2536 {
2537 to->pSignalSemaphoreDeviceIndices = (uint32_t*)pool->dupArray(from->pSignalSemaphoreDeviceIndices, from->signalSemaphoreCount * sizeof(const uint32_t));
2538 }
2539}
2540
2541void deepcopy_VkDeviceGroupBindSparseInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002542 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002543 const VkDeviceGroupBindSparseInfo* from,
2544 VkDeviceGroupBindSparseInfo* to)
2545{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002546 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002547 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002548 const void* from_pNext = from;
2549 size_t pNext_size = 0u;
2550 while (!pNext_size && from_pNext)
2551 {
2552 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2553 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002555 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002556 if (pNext_size)
2557 {
2558 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002559 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002560 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002561}
2562
2563void deepcopy_VkBindBufferMemoryDeviceGroupInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002564 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002565 const VkBindBufferMemoryDeviceGroupInfo* from,
2566 VkBindBufferMemoryDeviceGroupInfo* to)
2567{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002568 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002569 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002570 const void* from_pNext = from;
2571 size_t pNext_size = 0u;
2572 while (!pNext_size && from_pNext)
2573 {
2574 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2575 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2576 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002577 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002578 if (pNext_size)
2579 {
2580 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002581 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002582 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002583 to->pDeviceIndices = nullptr;
2584 if (from->pDeviceIndices)
2585 {
2586 to->pDeviceIndices = (uint32_t*)pool->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
2587 }
2588}
2589
2590void deepcopy_VkBindImageMemoryDeviceGroupInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002591 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002592 const VkBindImageMemoryDeviceGroupInfo* from,
2593 VkBindImageMemoryDeviceGroupInfo* to)
2594{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002595 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002596 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002597 const void* from_pNext = from;
2598 size_t pNext_size = 0u;
2599 while (!pNext_size && from_pNext)
2600 {
2601 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2602 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2603 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002604 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002605 if (pNext_size)
2606 {
2607 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002608 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002609 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002610 to->pDeviceIndices = nullptr;
2611 if (from->pDeviceIndices)
2612 {
2613 to->pDeviceIndices = (uint32_t*)pool->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
2614 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002615 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002616 {
Yilong Libd10ec92021-02-10 13:24:27 -08002617 to->pSplitInstanceBindRegions = nullptr;
2618 if (from->pSplitInstanceBindRegions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002619 {
Yilong Libd10ec92021-02-10 13:24:27 -08002620 to->pSplitInstanceBindRegions = (VkRect2D*)pool->alloc(from->splitInstanceBindRegionCount * sizeof(const VkRect2D));
2621 to->splitInstanceBindRegionCount = from->splitInstanceBindRegionCount;
2622 for (uint32_t i = 0; i < (uint32_t)from->splitInstanceBindRegionCount; ++i)
2623 {
2624 deepcopy_VkRect2D(pool, from->pSplitInstanceBindRegions + i, (VkRect2D*)(to->pSplitInstanceBindRegions + i));
2625 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002626 }
2627 }
2628}
2629
2630void deepcopy_VkPhysicalDeviceGroupProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002631 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002632 const VkPhysicalDeviceGroupProperties* from,
2633 VkPhysicalDeviceGroupProperties* to)
2634{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002635 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002636 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002637 const void* from_pNext = from;
2638 size_t pNext_size = 0u;
2639 while (!pNext_size && from_pNext)
2640 {
2641 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2642 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2643 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002644 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002645 if (pNext_size)
2646 {
2647 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002648 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002649 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002650 memcpy(to->physicalDevices, from->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002651}
2652
2653void deepcopy_VkDeviceGroupDeviceCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002654 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002655 const VkDeviceGroupDeviceCreateInfo* from,
2656 VkDeviceGroupDeviceCreateInfo* to)
2657{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002658 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002659 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002660 const void* from_pNext = from;
2661 size_t pNext_size = 0u;
2662 while (!pNext_size && from_pNext)
2663 {
2664 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2665 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2666 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002667 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002668 if (pNext_size)
2669 {
2670 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002671 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002672 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002673 to->pPhysicalDevices = nullptr;
2674 if (from->pPhysicalDevices)
2675 {
2676 to->pPhysicalDevices = (VkPhysicalDevice*)pool->dupArray(from->pPhysicalDevices, from->physicalDeviceCount * sizeof(const VkPhysicalDevice));
2677 }
2678}
2679
2680void deepcopy_VkBufferMemoryRequirementsInfo2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002681 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002682 const VkBufferMemoryRequirementsInfo2* from,
2683 VkBufferMemoryRequirementsInfo2* to)
2684{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002685 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002686 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002687 const void* from_pNext = from;
2688 size_t pNext_size = 0u;
2689 while (!pNext_size && from_pNext)
2690 {
2691 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2692 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2693 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002694 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002695 if (pNext_size)
2696 {
2697 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002698 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002699 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002700}
2701
2702void deepcopy_VkImageMemoryRequirementsInfo2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002703 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002704 const VkImageMemoryRequirementsInfo2* from,
2705 VkImageMemoryRequirementsInfo2* to)
2706{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002707 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002708 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002709 const void* from_pNext = from;
2710 size_t pNext_size = 0u;
2711 while (!pNext_size && from_pNext)
2712 {
2713 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2714 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2715 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002716 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002717 if (pNext_size)
2718 {
2719 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002720 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002721 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002722}
2723
2724void deepcopy_VkImageSparseMemoryRequirementsInfo2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002725 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002726 const VkImageSparseMemoryRequirementsInfo2* from,
2727 VkImageSparseMemoryRequirementsInfo2* to)
2728{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002729 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002730 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002731 const void* from_pNext = from;
2732 size_t pNext_size = 0u;
2733 while (!pNext_size && from_pNext)
2734 {
2735 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2736 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2737 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002738 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002739 if (pNext_size)
2740 {
2741 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002742 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002743 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002744}
2745
2746void deepcopy_VkMemoryRequirements2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002747 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002748 const VkMemoryRequirements2* from,
2749 VkMemoryRequirements2* to)
2750{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002751 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002752 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002753 const void* from_pNext = from;
2754 size_t pNext_size = 0u;
2755 while (!pNext_size && from_pNext)
2756 {
2757 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2758 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2759 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002760 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002761 if (pNext_size)
2762 {
2763 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002764 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002765 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002766 deepcopy_VkMemoryRequirements(pool, &from->memoryRequirements, (VkMemoryRequirements*)(&to->memoryRequirements));
2767}
2768
2769void deepcopy_VkSparseImageMemoryRequirements2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002770 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002771 const VkSparseImageMemoryRequirements2* from,
2772 VkSparseImageMemoryRequirements2* to)
2773{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002774 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002775 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002776 const void* from_pNext = from;
2777 size_t pNext_size = 0u;
2778 while (!pNext_size && from_pNext)
2779 {
2780 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2781 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2782 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002783 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002784 if (pNext_size)
2785 {
2786 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002787 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002789 deepcopy_VkSparseImageMemoryRequirements(pool, &from->memoryRequirements, (VkSparseImageMemoryRequirements*)(&to->memoryRequirements));
2790}
2791
2792void deepcopy_VkPhysicalDeviceFeatures2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002793 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002794 const VkPhysicalDeviceFeatures2* from,
2795 VkPhysicalDeviceFeatures2* to)
2796{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002797 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002798 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002799 const void* from_pNext = from;
2800 size_t pNext_size = 0u;
2801 while (!pNext_size && from_pNext)
2802 {
2803 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2804 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2805 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002806 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002807 if (pNext_size)
2808 {
2809 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002810 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002811 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002812 deepcopy_VkPhysicalDeviceFeatures(pool, &from->features, (VkPhysicalDeviceFeatures*)(&to->features));
2813}
2814
2815void deepcopy_VkPhysicalDeviceProperties2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002816 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002817 const VkPhysicalDeviceProperties2* from,
2818 VkPhysicalDeviceProperties2* to)
2819{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002820 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002821 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002822 const void* from_pNext = from;
2823 size_t pNext_size = 0u;
2824 while (!pNext_size && from_pNext)
2825 {
2826 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2827 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2828 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002829 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002830 if (pNext_size)
2831 {
2832 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002833 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002834 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002835 deepcopy_VkPhysicalDeviceProperties(pool, &from->properties, (VkPhysicalDeviceProperties*)(&to->properties));
2836}
2837
2838void deepcopy_VkFormatProperties2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002839 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002840 const VkFormatProperties2* from,
2841 VkFormatProperties2* to)
2842{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002843 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002844 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002845 const void* from_pNext = from;
2846 size_t pNext_size = 0u;
2847 while (!pNext_size && from_pNext)
2848 {
2849 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2850 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2851 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002852 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002853 if (pNext_size)
2854 {
2855 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002856 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002857 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002858 deepcopy_VkFormatProperties(pool, &from->formatProperties, (VkFormatProperties*)(&to->formatProperties));
2859}
2860
2861void deepcopy_VkImageFormatProperties2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002862 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002863 const VkImageFormatProperties2* from,
2864 VkImageFormatProperties2* to)
2865{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002866 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002867 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002868 const void* from_pNext = from;
2869 size_t pNext_size = 0u;
2870 while (!pNext_size && from_pNext)
2871 {
2872 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2873 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2874 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002875 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002876 if (pNext_size)
2877 {
2878 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002879 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002880 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002881 deepcopy_VkImageFormatProperties(pool, &from->imageFormatProperties, (VkImageFormatProperties*)(&to->imageFormatProperties));
2882}
2883
2884void deepcopy_VkPhysicalDeviceImageFormatInfo2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002885 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002886 const VkPhysicalDeviceImageFormatInfo2* from,
2887 VkPhysicalDeviceImageFormatInfo2* to)
2888{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002889 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002890 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002891 const void* from_pNext = from;
2892 size_t pNext_size = 0u;
2893 while (!pNext_size && from_pNext)
2894 {
2895 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2896 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2897 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002898 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002899 if (pNext_size)
2900 {
2901 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002902 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002903 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002904}
2905
2906void deepcopy_VkQueueFamilyProperties2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002907 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002908 const VkQueueFamilyProperties2* from,
2909 VkQueueFamilyProperties2* to)
2910{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002911 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002912 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002913 const void* from_pNext = from;
2914 size_t pNext_size = 0u;
2915 while (!pNext_size && from_pNext)
2916 {
2917 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2918 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2919 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002920 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002921 if (pNext_size)
2922 {
2923 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002924 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002925 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002926 deepcopy_VkQueueFamilyProperties(pool, &from->queueFamilyProperties, (VkQueueFamilyProperties*)(&to->queueFamilyProperties));
2927}
2928
2929void deepcopy_VkPhysicalDeviceMemoryProperties2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002930 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002931 const VkPhysicalDeviceMemoryProperties2* from,
2932 VkPhysicalDeviceMemoryProperties2* to)
2933{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002934 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002935 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002936 const void* from_pNext = from;
2937 size_t pNext_size = 0u;
2938 while (!pNext_size && from_pNext)
2939 {
2940 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2941 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2942 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002943 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002944 if (pNext_size)
2945 {
2946 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002947 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002948 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002949 deepcopy_VkPhysicalDeviceMemoryProperties(pool, &from->memoryProperties, (VkPhysicalDeviceMemoryProperties*)(&to->memoryProperties));
2950}
2951
2952void deepcopy_VkSparseImageFormatProperties2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002953 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002954 const VkSparseImageFormatProperties2* from,
2955 VkSparseImageFormatProperties2* to)
2956{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002957 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002958 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002959 const void* from_pNext = from;
2960 size_t pNext_size = 0u;
2961 while (!pNext_size && from_pNext)
2962 {
2963 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2964 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2965 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002966 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002967 if (pNext_size)
2968 {
2969 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002970 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002971 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002972 deepcopy_VkSparseImageFormatProperties(pool, &from->properties, (VkSparseImageFormatProperties*)(&to->properties));
2973}
2974
2975void deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002976 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002977 const VkPhysicalDeviceSparseImageFormatInfo2* from,
2978 VkPhysicalDeviceSparseImageFormatInfo2* to)
2979{
Lingfeng Yang36891c52018-11-09 14:18:35 -08002980 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002981 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08002982 const void* from_pNext = from;
2983 size_t pNext_size = 0u;
2984 while (!pNext_size && from_pNext)
2985 {
2986 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
2987 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
2988 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002989 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002990 if (pNext_size)
2991 {
2992 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08002993 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002994 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002995}
2996
2997void deepcopy_VkPhysicalDevicePointClippingProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07002998 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002999 const VkPhysicalDevicePointClippingProperties* from,
3000 VkPhysicalDevicePointClippingProperties* to)
3001{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003002 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003003 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003004 const void* from_pNext = from;
3005 size_t pNext_size = 0u;
3006 while (!pNext_size && from_pNext)
3007 {
3008 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3009 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3010 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003011 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003012 if (pNext_size)
3013 {
3014 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003015 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003016 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003017}
3018
3019void deepcopy_VkInputAttachmentAspectReference(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003020 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003021 const VkInputAttachmentAspectReference* from,
3022 VkInputAttachmentAspectReference* to)
3023{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003024 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003025 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003026}
3027
3028void deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003029 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003030 const VkRenderPassInputAttachmentAspectCreateInfo* from,
3031 VkRenderPassInputAttachmentAspectCreateInfo* to)
3032{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003033 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003034 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003035 const void* from_pNext = from;
3036 size_t pNext_size = 0u;
3037 while (!pNext_size && from_pNext)
3038 {
3039 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3040 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3041 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003042 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003043 if (pNext_size)
3044 {
3045 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003046 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003047 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08003048 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003049 {
Yilong Libd10ec92021-02-10 13:24:27 -08003050 to->pAspectReferences = nullptr;
3051 if (from->pAspectReferences)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003052 {
Yilong Libd10ec92021-02-10 13:24:27 -08003053 to->pAspectReferences = (VkInputAttachmentAspectReference*)pool->alloc(from->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
3054 to->aspectReferenceCount = from->aspectReferenceCount;
3055 for (uint32_t i = 0; i < (uint32_t)from->aspectReferenceCount; ++i)
3056 {
3057 deepcopy_VkInputAttachmentAspectReference(pool, from->pAspectReferences + i, (VkInputAttachmentAspectReference*)(to->pAspectReferences + i));
3058 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003059 }
3060 }
3061}
3062
3063void deepcopy_VkImageViewUsageCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003064 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003065 const VkImageViewUsageCreateInfo* from,
3066 VkImageViewUsageCreateInfo* to)
3067{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003068 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003069 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003070 const void* from_pNext = from;
3071 size_t pNext_size = 0u;
3072 while (!pNext_size && from_pNext)
3073 {
3074 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3075 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3076 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003077 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003078 if (pNext_size)
3079 {
3080 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003081 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003082 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003083}
3084
3085void deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003086 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003087 const VkPipelineTessellationDomainOriginStateCreateInfo* from,
3088 VkPipelineTessellationDomainOriginStateCreateInfo* to)
3089{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003090 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003091 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003092 const void* from_pNext = from;
3093 size_t pNext_size = 0u;
3094 while (!pNext_size && from_pNext)
3095 {
3096 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3097 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3098 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003099 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003100 if (pNext_size)
3101 {
3102 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003103 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003104 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003105}
3106
3107void deepcopy_VkRenderPassMultiviewCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003108 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003109 const VkRenderPassMultiviewCreateInfo* from,
3110 VkRenderPassMultiviewCreateInfo* to)
3111{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003112 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003113 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003114 const void* from_pNext = from;
3115 size_t pNext_size = 0u;
3116 while (!pNext_size && from_pNext)
3117 {
3118 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3119 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3120 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003121 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003122 if (pNext_size)
3123 {
3124 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003125 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003126 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003127 to->pViewMasks = nullptr;
3128 if (from->pViewMasks)
3129 {
3130 to->pViewMasks = (uint32_t*)pool->dupArray(from->pViewMasks, from->subpassCount * sizeof(const uint32_t));
3131 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003132 to->pViewOffsets = nullptr;
3133 if (from->pViewOffsets)
3134 {
3135 to->pViewOffsets = (int32_t*)pool->dupArray(from->pViewOffsets, from->dependencyCount * sizeof(const int32_t));
3136 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003137 to->pCorrelationMasks = nullptr;
3138 if (from->pCorrelationMasks)
3139 {
3140 to->pCorrelationMasks = (uint32_t*)pool->dupArray(from->pCorrelationMasks, from->correlationMaskCount * sizeof(const uint32_t));
3141 }
3142}
3143
3144void deepcopy_VkPhysicalDeviceMultiviewFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003145 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003146 const VkPhysicalDeviceMultiviewFeatures* from,
3147 VkPhysicalDeviceMultiviewFeatures* to)
3148{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003149 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003150 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003151 const void* from_pNext = from;
3152 size_t pNext_size = 0u;
3153 while (!pNext_size && from_pNext)
3154 {
3155 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3156 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3157 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003158 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003159 if (pNext_size)
3160 {
3161 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003162 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003164}
3165
3166void deepcopy_VkPhysicalDeviceMultiviewProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003167 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003168 const VkPhysicalDeviceMultiviewProperties* from,
3169 VkPhysicalDeviceMultiviewProperties* to)
3170{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003171 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003172 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003173 const void* from_pNext = from;
3174 size_t pNext_size = 0u;
3175 while (!pNext_size && from_pNext)
3176 {
3177 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3178 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3179 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003180 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003181 if (pNext_size)
3182 {
3183 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003184 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003185 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003186}
3187
Yilong Lia8d45f12021-02-07 02:30:21 -08003188void deepcopy_VkPhysicalDeviceVariablePointersFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003189 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08003190 const VkPhysicalDeviceVariablePointersFeatures* from,
3191 VkPhysicalDeviceVariablePointersFeatures* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003192{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003193 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003194 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003195 const void* from_pNext = from;
3196 size_t pNext_size = 0u;
3197 while (!pNext_size && from_pNext)
3198 {
3199 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3200 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3201 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003202 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003203 if (pNext_size)
3204 {
3205 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003206 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003207 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003208}
3209
3210void deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003211 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003212 const VkPhysicalDeviceProtectedMemoryFeatures* from,
3213 VkPhysicalDeviceProtectedMemoryFeatures* to)
3214{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003215 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003216 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003217 const void* from_pNext = from;
3218 size_t pNext_size = 0u;
3219 while (!pNext_size && from_pNext)
3220 {
3221 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3222 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3223 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003224 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003225 if (pNext_size)
3226 {
3227 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003228 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003229 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003230}
3231
3232void deepcopy_VkPhysicalDeviceProtectedMemoryProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003233 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003234 const VkPhysicalDeviceProtectedMemoryProperties* from,
3235 VkPhysicalDeviceProtectedMemoryProperties* to)
3236{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003237 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003238 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003239 const void* from_pNext = from;
3240 size_t pNext_size = 0u;
3241 while (!pNext_size && from_pNext)
3242 {
3243 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3244 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3245 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003246 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003247 if (pNext_size)
3248 {
3249 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003250 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003251 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003252}
3253
3254void deepcopy_VkDeviceQueueInfo2(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003255 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003256 const VkDeviceQueueInfo2* from,
3257 VkDeviceQueueInfo2* to)
3258{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003259 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003260 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003261 const void* from_pNext = from;
3262 size_t pNext_size = 0u;
3263 while (!pNext_size && from_pNext)
3264 {
3265 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3266 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3267 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003268 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003269 if (pNext_size)
3270 {
3271 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003272 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003273 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003274}
3275
3276void deepcopy_VkProtectedSubmitInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003277 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003278 const VkProtectedSubmitInfo* from,
3279 VkProtectedSubmitInfo* to)
3280{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003281 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003282 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003283 const void* from_pNext = from;
3284 size_t pNext_size = 0u;
3285 while (!pNext_size && from_pNext)
3286 {
3287 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3288 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3289 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003290 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003291 if (pNext_size)
3292 {
3293 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003294 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003295 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003296}
3297
3298void deepcopy_VkSamplerYcbcrConversionCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003299 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003300 const VkSamplerYcbcrConversionCreateInfo* from,
3301 VkSamplerYcbcrConversionCreateInfo* to)
3302{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003303 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003304 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003305 const void* from_pNext = from;
3306 size_t pNext_size = 0u;
3307 while (!pNext_size && from_pNext)
3308 {
3309 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3310 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3311 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003312 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003313 if (pNext_size)
3314 {
3315 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003316 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003317 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003318 deepcopy_VkComponentMapping(pool, &from->components, (VkComponentMapping*)(&to->components));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003319}
3320
3321void deepcopy_VkSamplerYcbcrConversionInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003322 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003323 const VkSamplerYcbcrConversionInfo* from,
3324 VkSamplerYcbcrConversionInfo* to)
3325{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003326 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003327 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003328 const void* from_pNext = from;
3329 size_t pNext_size = 0u;
3330 while (!pNext_size && from_pNext)
3331 {
3332 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3333 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3334 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003335 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003336 if (pNext_size)
3337 {
3338 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003339 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003340 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003341}
3342
3343void deepcopy_VkBindImagePlaneMemoryInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003344 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003345 const VkBindImagePlaneMemoryInfo* from,
3346 VkBindImagePlaneMemoryInfo* to)
3347{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003348 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003349 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003350 const void* from_pNext = from;
3351 size_t pNext_size = 0u;
3352 while (!pNext_size && from_pNext)
3353 {
3354 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3355 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3356 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003357 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003358 if (pNext_size)
3359 {
3360 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003361 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003362 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003363}
3364
3365void deepcopy_VkImagePlaneMemoryRequirementsInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003366 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003367 const VkImagePlaneMemoryRequirementsInfo* from,
3368 VkImagePlaneMemoryRequirementsInfo* to)
3369{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003370 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003371 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003372 const void* from_pNext = from;
3373 size_t pNext_size = 0u;
3374 while (!pNext_size && from_pNext)
3375 {
3376 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3377 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3378 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003379 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003380 if (pNext_size)
3381 {
3382 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003383 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003384 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003385}
3386
3387void deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003388 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003389 const VkPhysicalDeviceSamplerYcbcrConversionFeatures* from,
3390 VkPhysicalDeviceSamplerYcbcrConversionFeatures* to)
3391{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003392 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003393 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003394 const void* from_pNext = from;
3395 size_t pNext_size = 0u;
3396 while (!pNext_size && from_pNext)
3397 {
3398 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3399 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3400 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003401 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003402 if (pNext_size)
3403 {
3404 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003405 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003406 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003407}
3408
3409void deepcopy_VkSamplerYcbcrConversionImageFormatProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003410 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003411 const VkSamplerYcbcrConversionImageFormatProperties* from,
3412 VkSamplerYcbcrConversionImageFormatProperties* to)
3413{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003414 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003415 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003416 const void* from_pNext = from;
3417 size_t pNext_size = 0u;
3418 while (!pNext_size && from_pNext)
3419 {
3420 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3421 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3422 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003423 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003424 if (pNext_size)
3425 {
3426 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003427 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003428 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003429}
3430
3431void deepcopy_VkDescriptorUpdateTemplateEntry(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003432 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003433 const VkDescriptorUpdateTemplateEntry* from,
3434 VkDescriptorUpdateTemplateEntry* to)
3435{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003436 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003437 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003438}
3439
3440void deepcopy_VkDescriptorUpdateTemplateCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003441 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003442 const VkDescriptorUpdateTemplateCreateInfo* from,
3443 VkDescriptorUpdateTemplateCreateInfo* to)
3444{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003445 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003446 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003447 const void* from_pNext = from;
3448 size_t pNext_size = 0u;
3449 while (!pNext_size && from_pNext)
3450 {
3451 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3452 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3453 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003454 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003455 if (pNext_size)
3456 {
Yilong Lia8d45f12021-02-07 02:30:21 -08003457 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003458 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003459 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08003460 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003461 {
Yilong Libd10ec92021-02-10 13:24:27 -08003462 to->pDescriptorUpdateEntries = nullptr;
3463 if (from->pDescriptorUpdateEntries)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003464 {
Yilong Libd10ec92021-02-10 13:24:27 -08003465 to->pDescriptorUpdateEntries = (VkDescriptorUpdateTemplateEntry*)pool->alloc(from->descriptorUpdateEntryCount * sizeof(const VkDescriptorUpdateTemplateEntry));
3466 to->descriptorUpdateEntryCount = from->descriptorUpdateEntryCount;
3467 for (uint32_t i = 0; i < (uint32_t)from->descriptorUpdateEntryCount; ++i)
3468 {
3469 deepcopy_VkDescriptorUpdateTemplateEntry(pool, from->pDescriptorUpdateEntries + i, (VkDescriptorUpdateTemplateEntry*)(to->pDescriptorUpdateEntries + i));
3470 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003471 }
3472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003473}
3474
3475void deepcopy_VkExternalMemoryProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003476 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003477 const VkExternalMemoryProperties* from,
3478 VkExternalMemoryProperties* to)
3479{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003480 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003481 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003482}
3483
3484void deepcopy_VkPhysicalDeviceExternalImageFormatInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003485 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003486 const VkPhysicalDeviceExternalImageFormatInfo* from,
3487 VkPhysicalDeviceExternalImageFormatInfo* to)
3488{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003489 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003490 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003491 const void* from_pNext = from;
3492 size_t pNext_size = 0u;
3493 while (!pNext_size && from_pNext)
3494 {
3495 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3496 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3497 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003498 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003499 if (pNext_size)
3500 {
3501 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003502 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003503 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003504}
3505
3506void deepcopy_VkExternalImageFormatProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003507 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003508 const VkExternalImageFormatProperties* from,
3509 VkExternalImageFormatProperties* to)
3510{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003511 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003512 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003513 const void* from_pNext = from;
3514 size_t pNext_size = 0u;
3515 while (!pNext_size && from_pNext)
3516 {
3517 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3518 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3519 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003520 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003521 if (pNext_size)
3522 {
3523 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003524 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003526 deepcopy_VkExternalMemoryProperties(pool, &from->externalMemoryProperties, (VkExternalMemoryProperties*)(&to->externalMemoryProperties));
3527}
3528
3529void deepcopy_VkPhysicalDeviceExternalBufferInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003530 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003531 const VkPhysicalDeviceExternalBufferInfo* from,
3532 VkPhysicalDeviceExternalBufferInfo* to)
3533{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003534 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003535 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003536 const void* from_pNext = from;
3537 size_t pNext_size = 0u;
3538 while (!pNext_size && from_pNext)
3539 {
3540 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3541 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3542 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003543 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003544 if (pNext_size)
3545 {
3546 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003547 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003548 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003549}
3550
3551void deepcopy_VkExternalBufferProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003552 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003553 const VkExternalBufferProperties* from,
3554 VkExternalBufferProperties* to)
3555{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003556 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003557 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003558 const void* from_pNext = from;
3559 size_t pNext_size = 0u;
3560 while (!pNext_size && from_pNext)
3561 {
3562 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3563 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3564 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003565 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003566 if (pNext_size)
3567 {
3568 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003569 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003570 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003571 deepcopy_VkExternalMemoryProperties(pool, &from->externalMemoryProperties, (VkExternalMemoryProperties*)(&to->externalMemoryProperties));
3572}
3573
3574void deepcopy_VkPhysicalDeviceIDProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003575 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003576 const VkPhysicalDeviceIDProperties* from,
3577 VkPhysicalDeviceIDProperties* to)
3578{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003579 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003580 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003581 const void* from_pNext = from;
3582 size_t pNext_size = 0u;
3583 while (!pNext_size && from_pNext)
3584 {
3585 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3586 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3587 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003588 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003589 if (pNext_size)
3590 {
3591 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003592 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003593 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003594 memcpy(to->deviceUUID, from->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
3595 memcpy(to->driverUUID, from->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
3596 memcpy(to->deviceLUID, from->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003597}
3598
3599void deepcopy_VkExternalMemoryImageCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003600 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003601 const VkExternalMemoryImageCreateInfo* from,
3602 VkExternalMemoryImageCreateInfo* to)
3603{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003604 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003605 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003606 const void* from_pNext = from;
3607 size_t pNext_size = 0u;
3608 while (!pNext_size && from_pNext)
3609 {
3610 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3611 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3612 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003613 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003614 if (pNext_size)
3615 {
3616 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003617 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003618 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003619}
3620
3621void deepcopy_VkExternalMemoryBufferCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003622 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003623 const VkExternalMemoryBufferCreateInfo* from,
3624 VkExternalMemoryBufferCreateInfo* to)
3625{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003626 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003627 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003628 const void* from_pNext = from;
3629 size_t pNext_size = 0u;
3630 while (!pNext_size && from_pNext)
3631 {
3632 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3633 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3634 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003635 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003636 if (pNext_size)
3637 {
3638 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003639 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003640 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003641}
3642
3643void deepcopy_VkExportMemoryAllocateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003644 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003645 const VkExportMemoryAllocateInfo* from,
3646 VkExportMemoryAllocateInfo* to)
3647{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003648 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003649 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003650 const void* from_pNext = from;
3651 size_t pNext_size = 0u;
3652 while (!pNext_size && from_pNext)
3653 {
3654 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3655 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3656 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003657 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003658 if (pNext_size)
3659 {
3660 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003661 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003662 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003663}
3664
3665void deepcopy_VkPhysicalDeviceExternalFenceInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003666 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003667 const VkPhysicalDeviceExternalFenceInfo* from,
3668 VkPhysicalDeviceExternalFenceInfo* to)
3669{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003670 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003671 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003672 const void* from_pNext = from;
3673 size_t pNext_size = 0u;
3674 while (!pNext_size && from_pNext)
3675 {
3676 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3677 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3678 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003679 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003680 if (pNext_size)
3681 {
3682 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003683 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003684 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003685}
3686
3687void deepcopy_VkExternalFenceProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003688 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003689 const VkExternalFenceProperties* from,
3690 VkExternalFenceProperties* to)
3691{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003692 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003693 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003694 const void* from_pNext = from;
3695 size_t pNext_size = 0u;
3696 while (!pNext_size && from_pNext)
3697 {
3698 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3699 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3700 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003701 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003702 if (pNext_size)
3703 {
3704 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003705 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003706 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003707}
3708
3709void deepcopy_VkExportFenceCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003710 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003711 const VkExportFenceCreateInfo* from,
3712 VkExportFenceCreateInfo* to)
3713{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003714 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003715 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003716 const void* from_pNext = from;
3717 size_t pNext_size = 0u;
3718 while (!pNext_size && from_pNext)
3719 {
3720 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3721 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3722 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003723 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003724 if (pNext_size)
3725 {
3726 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003727 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003728 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003729}
3730
3731void deepcopy_VkExportSemaphoreCreateInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003732 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003733 const VkExportSemaphoreCreateInfo* from,
3734 VkExportSemaphoreCreateInfo* to)
3735{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003736 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003737 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003738 const void* from_pNext = from;
3739 size_t pNext_size = 0u;
3740 while (!pNext_size && from_pNext)
3741 {
3742 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3743 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3744 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003745 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003746 if (pNext_size)
3747 {
3748 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003749 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003750 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003751}
3752
3753void deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003754 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003755 const VkPhysicalDeviceExternalSemaphoreInfo* from,
3756 VkPhysicalDeviceExternalSemaphoreInfo* to)
3757{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003758 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003759 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003760 const void* from_pNext = from;
3761 size_t pNext_size = 0u;
3762 while (!pNext_size && from_pNext)
3763 {
3764 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3765 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3766 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003767 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003768 if (pNext_size)
3769 {
3770 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003771 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003772 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003773}
3774
3775void deepcopy_VkExternalSemaphoreProperties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003776 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003777 const VkExternalSemaphoreProperties* from,
3778 VkExternalSemaphoreProperties* to)
3779{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003780 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003781 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003782 const void* from_pNext = from;
3783 size_t pNext_size = 0u;
3784 while (!pNext_size && from_pNext)
3785 {
3786 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3787 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3788 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003789 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003790 if (pNext_size)
3791 {
3792 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003793 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003794 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003795}
3796
3797void deepcopy_VkPhysicalDeviceMaintenance3Properties(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003798 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003799 const VkPhysicalDeviceMaintenance3Properties* from,
3800 VkPhysicalDeviceMaintenance3Properties* to)
3801{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003802 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003803 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003804 const void* from_pNext = from;
3805 size_t pNext_size = 0u;
3806 while (!pNext_size && from_pNext)
3807 {
3808 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3809 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3810 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003811 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003812 if (pNext_size)
3813 {
3814 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003815 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003816 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003817}
3818
3819void deepcopy_VkDescriptorSetLayoutSupport(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003820 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003821 const VkDescriptorSetLayoutSupport* from,
3822 VkDescriptorSetLayoutSupport* to)
3823{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003824 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003825 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003826 const void* from_pNext = from;
3827 size_t pNext_size = 0u;
3828 while (!pNext_size && from_pNext)
3829 {
3830 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3831 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3832 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003833 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003834 if (pNext_size)
3835 {
3836 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003837 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003838 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003839}
3840
Yilong Lia8d45f12021-02-07 02:30:21 -08003841void deepcopy_VkPhysicalDeviceShaderDrawParametersFeatures(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07003842 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08003843 const VkPhysicalDeviceShaderDrawParametersFeatures* from,
3844 VkPhysicalDeviceShaderDrawParametersFeatures* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003845{
Lingfeng Yang36891c52018-11-09 14:18:35 -08003846 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003847 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003848 const void* from_pNext = from;
3849 size_t pNext_size = 0u;
3850 while (!pNext_size && from_pNext)
3851 {
3852 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3853 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3854 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003855 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003856 if (pNext_size)
3857 {
3858 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003859 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003860 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003861}
3862
3863#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003864#ifdef VK_VERSION_1_2
3865void deepcopy_VkPhysicalDeviceVulkan11Features(
3866 BumpPool* pool,
3867 const VkPhysicalDeviceVulkan11Features* from,
3868 VkPhysicalDeviceVulkan11Features* to)
3869{
3870 (void)pool;
3871 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003872 const void* from_pNext = from;
3873 size_t pNext_size = 0u;
3874 while (!pNext_size && from_pNext)
3875 {
3876 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3877 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3878 }
Yilong Lia8d45f12021-02-07 02:30:21 -08003879 to->pNext = nullptr;
3880 if (pNext_size)
3881 {
3882 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003883 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08003884 }
3885}
3886
3887void deepcopy_VkPhysicalDeviceVulkan11Properties(
3888 BumpPool* pool,
3889 const VkPhysicalDeviceVulkan11Properties* from,
3890 VkPhysicalDeviceVulkan11Properties* to)
3891{
3892 (void)pool;
3893 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003894 const void* from_pNext = from;
3895 size_t pNext_size = 0u;
3896 while (!pNext_size && from_pNext)
3897 {
3898 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3899 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3900 }
Yilong Lia8d45f12021-02-07 02:30:21 -08003901 to->pNext = nullptr;
3902 if (pNext_size)
3903 {
3904 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003905 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08003906 }
3907 memcpy(to->deviceUUID, from->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
3908 memcpy(to->driverUUID, from->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
3909 memcpy(to->deviceLUID, from->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
3910}
3911
3912void deepcopy_VkPhysicalDeviceVulkan12Features(
3913 BumpPool* pool,
3914 const VkPhysicalDeviceVulkan12Features* from,
3915 VkPhysicalDeviceVulkan12Features* to)
3916{
3917 (void)pool;
3918 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003919 const void* from_pNext = from;
3920 size_t pNext_size = 0u;
3921 while (!pNext_size && from_pNext)
3922 {
3923 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3924 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3925 }
Yilong Lia8d45f12021-02-07 02:30:21 -08003926 to->pNext = nullptr;
3927 if (pNext_size)
3928 {
3929 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003930 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08003931 }
3932}
3933
3934void deepcopy_VkConformanceVersion(
3935 BumpPool* pool,
3936 const VkConformanceVersion* from,
3937 VkConformanceVersion* to)
3938{
3939 (void)pool;
3940 *to = *from;
3941}
3942
3943void deepcopy_VkPhysicalDeviceVulkan12Properties(
3944 BumpPool* pool,
3945 const VkPhysicalDeviceVulkan12Properties* from,
3946 VkPhysicalDeviceVulkan12Properties* to)
3947{
3948 (void)pool;
3949 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003950 const void* from_pNext = from;
3951 size_t pNext_size = 0u;
3952 while (!pNext_size && from_pNext)
3953 {
3954 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3955 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3956 }
Yilong Lia8d45f12021-02-07 02:30:21 -08003957 to->pNext = nullptr;
3958 if (pNext_size)
3959 {
3960 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003961 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08003962 }
3963 memcpy(to->driverName, from->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
3964 memcpy(to->driverInfo, from->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
3965 deepcopy_VkConformanceVersion(pool, &from->conformanceVersion, (VkConformanceVersion*)(&to->conformanceVersion));
3966}
3967
3968void deepcopy_VkImageFormatListCreateInfo(
3969 BumpPool* pool,
3970 const VkImageFormatListCreateInfo* from,
3971 VkImageFormatListCreateInfo* to)
3972{
3973 (void)pool;
3974 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08003975 const void* from_pNext = from;
3976 size_t pNext_size = 0u;
3977 while (!pNext_size && from_pNext)
3978 {
3979 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
3980 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
3981 }
Yilong Lia8d45f12021-02-07 02:30:21 -08003982 to->pNext = nullptr;
3983 if (pNext_size)
3984 {
3985 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08003986 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08003987 }
3988 to->pViewFormats = nullptr;
3989 if (from->pViewFormats)
3990 {
3991 to->pViewFormats = (VkFormat*)pool->dupArray(from->pViewFormats, from->viewFormatCount * sizeof(const VkFormat));
3992 }
3993}
3994
3995void deepcopy_VkAttachmentDescription2(
3996 BumpPool* pool,
3997 const VkAttachmentDescription2* from,
3998 VkAttachmentDescription2* to)
3999{
4000 (void)pool;
4001 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004002 const void* from_pNext = from;
4003 size_t pNext_size = 0u;
4004 while (!pNext_size && from_pNext)
4005 {
4006 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4007 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4008 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004009 to->pNext = nullptr;
4010 if (pNext_size)
4011 {
4012 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004013 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004014 }
4015}
4016
4017void deepcopy_VkAttachmentReference2(
4018 BumpPool* pool,
4019 const VkAttachmentReference2* from,
4020 VkAttachmentReference2* to)
4021{
4022 (void)pool;
4023 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004024 const void* from_pNext = from;
4025 size_t pNext_size = 0u;
4026 while (!pNext_size && from_pNext)
4027 {
4028 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4029 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4030 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004031 to->pNext = nullptr;
4032 if (pNext_size)
4033 {
4034 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004035 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004036 }
4037}
4038
4039void deepcopy_VkSubpassDescription2(
4040 BumpPool* pool,
4041 const VkSubpassDescription2* from,
4042 VkSubpassDescription2* to)
4043{
4044 (void)pool;
4045 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004046 const void* from_pNext = from;
4047 size_t pNext_size = 0u;
4048 while (!pNext_size && from_pNext)
4049 {
4050 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4051 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4052 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004053 to->pNext = nullptr;
4054 if (pNext_size)
4055 {
4056 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004057 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004058 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004059 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004060 {
Yilong Libd10ec92021-02-10 13:24:27 -08004061 to->pInputAttachments = nullptr;
4062 if (from->pInputAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004063 {
Yilong Libd10ec92021-02-10 13:24:27 -08004064 to->pInputAttachments = (VkAttachmentReference2*)pool->alloc(from->inputAttachmentCount * sizeof(const VkAttachmentReference2));
4065 to->inputAttachmentCount = from->inputAttachmentCount;
4066 for (uint32_t i = 0; i < (uint32_t)from->inputAttachmentCount; ++i)
4067 {
4068 deepcopy_VkAttachmentReference2(pool, from->pInputAttachments + i, (VkAttachmentReference2*)(to->pInputAttachments + i));
4069 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004070 }
4071 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004072 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004073 {
Yilong Libd10ec92021-02-10 13:24:27 -08004074 to->pColorAttachments = nullptr;
4075 if (from->pColorAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004076 {
Yilong Libd10ec92021-02-10 13:24:27 -08004077 to->pColorAttachments = (VkAttachmentReference2*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference2));
4078 to->colorAttachmentCount = from->colorAttachmentCount;
4079 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
4080 {
4081 deepcopy_VkAttachmentReference2(pool, from->pColorAttachments + i, (VkAttachmentReference2*)(to->pColorAttachments + i));
4082 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004083 }
4084 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004085 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004086 {
Yilong Libd10ec92021-02-10 13:24:27 -08004087 to->pResolveAttachments = nullptr;
4088 if (from->pResolveAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004089 {
Yilong Libd10ec92021-02-10 13:24:27 -08004090 to->pResolveAttachments = (VkAttachmentReference2*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference2));
4091 to->colorAttachmentCount = from->colorAttachmentCount;
4092 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
4093 {
4094 deepcopy_VkAttachmentReference2(pool, from->pResolveAttachments + i, (VkAttachmentReference2*)(to->pResolveAttachments + i));
4095 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004096 }
4097 }
4098 to->pDepthStencilAttachment = nullptr;
4099 if (from->pDepthStencilAttachment)
4100 {
4101 to->pDepthStencilAttachment = (VkAttachmentReference2*)pool->alloc(sizeof(const VkAttachmentReference2));
4102 deepcopy_VkAttachmentReference2(pool, from->pDepthStencilAttachment, (VkAttachmentReference2*)(to->pDepthStencilAttachment));
4103 }
4104 to->pPreserveAttachments = nullptr;
4105 if (from->pPreserveAttachments)
4106 {
4107 to->pPreserveAttachments = (uint32_t*)pool->dupArray(from->pPreserveAttachments, from->preserveAttachmentCount * sizeof(const uint32_t));
4108 }
4109}
4110
4111void deepcopy_VkSubpassDependency2(
4112 BumpPool* pool,
4113 const VkSubpassDependency2* from,
4114 VkSubpassDependency2* to)
4115{
4116 (void)pool;
4117 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004118 const void* from_pNext = from;
4119 size_t pNext_size = 0u;
4120 while (!pNext_size && from_pNext)
4121 {
4122 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4123 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4124 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004125 to->pNext = nullptr;
4126 if (pNext_size)
4127 {
4128 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004129 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004130 }
4131}
4132
4133void deepcopy_VkRenderPassCreateInfo2(
4134 BumpPool* pool,
4135 const VkRenderPassCreateInfo2* from,
4136 VkRenderPassCreateInfo2* to)
4137{
4138 (void)pool;
4139 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004140 const void* from_pNext = from;
4141 size_t pNext_size = 0u;
4142 while (!pNext_size && from_pNext)
4143 {
4144 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4145 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4146 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004147 to->pNext = nullptr;
4148 if (pNext_size)
4149 {
4150 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004151 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004152 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004153 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004154 {
Yilong Libd10ec92021-02-10 13:24:27 -08004155 to->pAttachments = nullptr;
4156 if (from->pAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004157 {
Yilong Libd10ec92021-02-10 13:24:27 -08004158 to->pAttachments = (VkAttachmentDescription2*)pool->alloc(from->attachmentCount * sizeof(const VkAttachmentDescription2));
4159 to->attachmentCount = from->attachmentCount;
4160 for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
4161 {
4162 deepcopy_VkAttachmentDescription2(pool, from->pAttachments + i, (VkAttachmentDescription2*)(to->pAttachments + i));
4163 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004164 }
4165 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004166 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004167 {
Yilong Libd10ec92021-02-10 13:24:27 -08004168 to->pSubpasses = nullptr;
4169 if (from->pSubpasses)
Yilong Lia8d45f12021-02-07 02:30:21 -08004170 {
Yilong Libd10ec92021-02-10 13:24:27 -08004171 to->pSubpasses = (VkSubpassDescription2*)pool->alloc(from->subpassCount * sizeof(const VkSubpassDescription2));
4172 to->subpassCount = from->subpassCount;
4173 for (uint32_t i = 0; i < (uint32_t)from->subpassCount; ++i)
4174 {
4175 deepcopy_VkSubpassDescription2(pool, from->pSubpasses + i, (VkSubpassDescription2*)(to->pSubpasses + i));
4176 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004177 }
4178 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004179 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004180 {
Yilong Libd10ec92021-02-10 13:24:27 -08004181 to->pDependencies = nullptr;
4182 if (from->pDependencies)
Yilong Lia8d45f12021-02-07 02:30:21 -08004183 {
Yilong Libd10ec92021-02-10 13:24:27 -08004184 to->pDependencies = (VkSubpassDependency2*)pool->alloc(from->dependencyCount * sizeof(const VkSubpassDependency2));
4185 to->dependencyCount = from->dependencyCount;
4186 for (uint32_t i = 0; i < (uint32_t)from->dependencyCount; ++i)
4187 {
4188 deepcopy_VkSubpassDependency2(pool, from->pDependencies + i, (VkSubpassDependency2*)(to->pDependencies + i));
4189 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004190 }
4191 }
4192 to->pCorrelatedViewMasks = nullptr;
4193 if (from->pCorrelatedViewMasks)
4194 {
4195 to->pCorrelatedViewMasks = (uint32_t*)pool->dupArray(from->pCorrelatedViewMasks, from->correlatedViewMaskCount * sizeof(const uint32_t));
4196 }
4197}
4198
4199void deepcopy_VkSubpassBeginInfo(
4200 BumpPool* pool,
4201 const VkSubpassBeginInfo* from,
4202 VkSubpassBeginInfo* to)
4203{
4204 (void)pool;
4205 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004206 const void* from_pNext = from;
4207 size_t pNext_size = 0u;
4208 while (!pNext_size && from_pNext)
4209 {
4210 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4211 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4212 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004213 to->pNext = nullptr;
4214 if (pNext_size)
4215 {
4216 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004217 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004218 }
4219}
4220
4221void deepcopy_VkSubpassEndInfo(
4222 BumpPool* pool,
4223 const VkSubpassEndInfo* from,
4224 VkSubpassEndInfo* to)
4225{
4226 (void)pool;
4227 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004228 const void* from_pNext = from;
4229 size_t pNext_size = 0u;
4230 while (!pNext_size && from_pNext)
4231 {
4232 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4233 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4234 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004235 to->pNext = nullptr;
4236 if (pNext_size)
4237 {
4238 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004239 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004240 }
4241}
4242
4243void deepcopy_VkPhysicalDevice8BitStorageFeatures(
4244 BumpPool* pool,
4245 const VkPhysicalDevice8BitStorageFeatures* from,
4246 VkPhysicalDevice8BitStorageFeatures* to)
4247{
4248 (void)pool;
4249 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004250 const void* from_pNext = from;
4251 size_t pNext_size = 0u;
4252 while (!pNext_size && from_pNext)
4253 {
4254 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4255 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4256 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004257 to->pNext = nullptr;
4258 if (pNext_size)
4259 {
4260 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004261 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004262 }
4263}
4264
4265void deepcopy_VkPhysicalDeviceDriverProperties(
4266 BumpPool* pool,
4267 const VkPhysicalDeviceDriverProperties* from,
4268 VkPhysicalDeviceDriverProperties* to)
4269{
4270 (void)pool;
4271 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004272 const void* from_pNext = from;
4273 size_t pNext_size = 0u;
4274 while (!pNext_size && from_pNext)
4275 {
4276 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4277 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4278 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004279 to->pNext = nullptr;
4280 if (pNext_size)
4281 {
4282 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004283 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004284 }
4285 memcpy(to->driverName, from->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
4286 memcpy(to->driverInfo, from->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
4287 deepcopy_VkConformanceVersion(pool, &from->conformanceVersion, (VkConformanceVersion*)(&to->conformanceVersion));
4288}
4289
4290void deepcopy_VkPhysicalDeviceShaderAtomicInt64Features(
4291 BumpPool* pool,
4292 const VkPhysicalDeviceShaderAtomicInt64Features* from,
4293 VkPhysicalDeviceShaderAtomicInt64Features* to)
4294{
4295 (void)pool;
4296 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004297 const void* from_pNext = from;
4298 size_t pNext_size = 0u;
4299 while (!pNext_size && from_pNext)
4300 {
4301 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4302 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4303 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004304 to->pNext = nullptr;
4305 if (pNext_size)
4306 {
4307 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004308 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004309 }
4310}
4311
4312void deepcopy_VkPhysicalDeviceShaderFloat16Int8Features(
4313 BumpPool* pool,
4314 const VkPhysicalDeviceShaderFloat16Int8Features* from,
4315 VkPhysicalDeviceShaderFloat16Int8Features* to)
4316{
4317 (void)pool;
4318 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004319 const void* from_pNext = from;
4320 size_t pNext_size = 0u;
4321 while (!pNext_size && from_pNext)
4322 {
4323 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4324 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4325 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004326 to->pNext = nullptr;
4327 if (pNext_size)
4328 {
4329 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004330 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004331 }
4332}
4333
4334void deepcopy_VkPhysicalDeviceFloatControlsProperties(
4335 BumpPool* pool,
4336 const VkPhysicalDeviceFloatControlsProperties* from,
4337 VkPhysicalDeviceFloatControlsProperties* to)
4338{
4339 (void)pool;
4340 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004341 const void* from_pNext = from;
4342 size_t pNext_size = 0u;
4343 while (!pNext_size && from_pNext)
4344 {
4345 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4346 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4347 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004348 to->pNext = nullptr;
4349 if (pNext_size)
4350 {
4351 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004352 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004353 }
4354}
4355
4356void deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfo(
4357 BumpPool* pool,
4358 const VkDescriptorSetLayoutBindingFlagsCreateInfo* from,
4359 VkDescriptorSetLayoutBindingFlagsCreateInfo* to)
4360{
4361 (void)pool;
4362 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004363 const void* from_pNext = from;
4364 size_t pNext_size = 0u;
4365 while (!pNext_size && from_pNext)
4366 {
4367 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4368 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4369 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004370 to->pNext = nullptr;
4371 if (pNext_size)
4372 {
4373 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004374 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004375 }
4376 to->pBindingFlags = nullptr;
4377 if (from->pBindingFlags)
4378 {
4379 to->pBindingFlags = (VkDescriptorBindingFlags*)pool->dupArray(from->pBindingFlags, from->bindingCount * sizeof(const VkDescriptorBindingFlags));
4380 }
4381}
4382
4383void deepcopy_VkPhysicalDeviceDescriptorIndexingFeatures(
4384 BumpPool* pool,
4385 const VkPhysicalDeviceDescriptorIndexingFeatures* from,
4386 VkPhysicalDeviceDescriptorIndexingFeatures* to)
4387{
4388 (void)pool;
4389 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004390 const void* from_pNext = from;
4391 size_t pNext_size = 0u;
4392 while (!pNext_size && from_pNext)
4393 {
4394 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4395 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4396 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004397 to->pNext = nullptr;
4398 if (pNext_size)
4399 {
4400 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004401 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004402 }
4403}
4404
4405void deepcopy_VkPhysicalDeviceDescriptorIndexingProperties(
4406 BumpPool* pool,
4407 const VkPhysicalDeviceDescriptorIndexingProperties* from,
4408 VkPhysicalDeviceDescriptorIndexingProperties* to)
4409{
4410 (void)pool;
4411 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004412 const void* from_pNext = from;
4413 size_t pNext_size = 0u;
4414 while (!pNext_size && from_pNext)
4415 {
4416 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4417 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4418 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004419 to->pNext = nullptr;
4420 if (pNext_size)
4421 {
4422 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004423 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004424 }
4425}
4426
4427void deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfo(
4428 BumpPool* pool,
4429 const VkDescriptorSetVariableDescriptorCountAllocateInfo* from,
4430 VkDescriptorSetVariableDescriptorCountAllocateInfo* to)
4431{
4432 (void)pool;
4433 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004434 const void* from_pNext = from;
4435 size_t pNext_size = 0u;
4436 while (!pNext_size && from_pNext)
4437 {
4438 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4439 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4440 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004441 to->pNext = nullptr;
4442 if (pNext_size)
4443 {
4444 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004445 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004446 }
4447 to->pDescriptorCounts = nullptr;
4448 if (from->pDescriptorCounts)
4449 {
4450 to->pDescriptorCounts = (uint32_t*)pool->dupArray(from->pDescriptorCounts, from->descriptorSetCount * sizeof(const uint32_t));
4451 }
4452}
4453
4454void deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupport(
4455 BumpPool* pool,
4456 const VkDescriptorSetVariableDescriptorCountLayoutSupport* from,
4457 VkDescriptorSetVariableDescriptorCountLayoutSupport* to)
4458{
4459 (void)pool;
4460 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004461 const void* from_pNext = from;
4462 size_t pNext_size = 0u;
4463 while (!pNext_size && from_pNext)
4464 {
4465 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4466 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4467 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004468 to->pNext = nullptr;
4469 if (pNext_size)
4470 {
4471 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004472 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004473 }
4474}
4475
4476void deepcopy_VkSubpassDescriptionDepthStencilResolve(
4477 BumpPool* pool,
4478 const VkSubpassDescriptionDepthStencilResolve* from,
4479 VkSubpassDescriptionDepthStencilResolve* to)
4480{
4481 (void)pool;
4482 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004483 const void* from_pNext = from;
4484 size_t pNext_size = 0u;
4485 while (!pNext_size && from_pNext)
4486 {
4487 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4488 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4489 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004490 to->pNext = nullptr;
4491 if (pNext_size)
4492 {
4493 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004494 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004495 }
4496 to->pDepthStencilResolveAttachment = nullptr;
4497 if (from->pDepthStencilResolveAttachment)
4498 {
4499 to->pDepthStencilResolveAttachment = (VkAttachmentReference2*)pool->alloc(sizeof(const VkAttachmentReference2));
4500 deepcopy_VkAttachmentReference2(pool, from->pDepthStencilResolveAttachment, (VkAttachmentReference2*)(to->pDepthStencilResolveAttachment));
4501 }
4502}
4503
4504void deepcopy_VkPhysicalDeviceDepthStencilResolveProperties(
4505 BumpPool* pool,
4506 const VkPhysicalDeviceDepthStencilResolveProperties* from,
4507 VkPhysicalDeviceDepthStencilResolveProperties* to)
4508{
4509 (void)pool;
4510 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004511 const void* from_pNext = from;
4512 size_t pNext_size = 0u;
4513 while (!pNext_size && from_pNext)
4514 {
4515 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4516 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4517 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004518 to->pNext = nullptr;
4519 if (pNext_size)
4520 {
4521 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004522 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004523 }
4524}
4525
4526void deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures(
4527 BumpPool* pool,
4528 const VkPhysicalDeviceScalarBlockLayoutFeatures* from,
4529 VkPhysicalDeviceScalarBlockLayoutFeatures* to)
4530{
4531 (void)pool;
4532 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004533 const void* from_pNext = from;
4534 size_t pNext_size = 0u;
4535 while (!pNext_size && from_pNext)
4536 {
4537 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4538 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4539 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004540 to->pNext = nullptr;
4541 if (pNext_size)
4542 {
4543 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004544 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004545 }
4546}
4547
4548void deepcopy_VkImageStencilUsageCreateInfo(
4549 BumpPool* pool,
4550 const VkImageStencilUsageCreateInfo* from,
4551 VkImageStencilUsageCreateInfo* to)
4552{
4553 (void)pool;
4554 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004555 const void* from_pNext = from;
4556 size_t pNext_size = 0u;
4557 while (!pNext_size && from_pNext)
4558 {
4559 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4560 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4561 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004562 to->pNext = nullptr;
4563 if (pNext_size)
4564 {
4565 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004566 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004567 }
4568}
4569
4570void deepcopy_VkSamplerReductionModeCreateInfo(
4571 BumpPool* pool,
4572 const VkSamplerReductionModeCreateInfo* from,
4573 VkSamplerReductionModeCreateInfo* to)
4574{
4575 (void)pool;
4576 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004577 const void* from_pNext = from;
4578 size_t pNext_size = 0u;
4579 while (!pNext_size && from_pNext)
4580 {
4581 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4582 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4583 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004584 to->pNext = nullptr;
4585 if (pNext_size)
4586 {
4587 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004588 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004589 }
4590}
4591
4592void deepcopy_VkPhysicalDeviceSamplerFilterMinmaxProperties(
4593 BumpPool* pool,
4594 const VkPhysicalDeviceSamplerFilterMinmaxProperties* from,
4595 VkPhysicalDeviceSamplerFilterMinmaxProperties* to)
4596{
4597 (void)pool;
4598 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004599 const void* from_pNext = from;
4600 size_t pNext_size = 0u;
4601 while (!pNext_size && from_pNext)
4602 {
4603 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4604 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4605 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004606 to->pNext = nullptr;
4607 if (pNext_size)
4608 {
4609 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004610 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004611 }
4612}
4613
4614void deepcopy_VkPhysicalDeviceVulkanMemoryModelFeatures(
4615 BumpPool* pool,
4616 const VkPhysicalDeviceVulkanMemoryModelFeatures* from,
4617 VkPhysicalDeviceVulkanMemoryModelFeatures* to)
4618{
4619 (void)pool;
4620 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004621 const void* from_pNext = from;
4622 size_t pNext_size = 0u;
4623 while (!pNext_size && from_pNext)
4624 {
4625 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4626 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4627 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004628 to->pNext = nullptr;
4629 if (pNext_size)
4630 {
4631 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004632 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004633 }
4634}
4635
4636void deepcopy_VkPhysicalDeviceImagelessFramebufferFeatures(
4637 BumpPool* pool,
4638 const VkPhysicalDeviceImagelessFramebufferFeatures* from,
4639 VkPhysicalDeviceImagelessFramebufferFeatures* to)
4640{
4641 (void)pool;
4642 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004643 const void* from_pNext = from;
4644 size_t pNext_size = 0u;
4645 while (!pNext_size && from_pNext)
4646 {
4647 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4648 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4649 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004650 to->pNext = nullptr;
4651 if (pNext_size)
4652 {
4653 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004654 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004655 }
4656}
4657
4658void deepcopy_VkFramebufferAttachmentImageInfo(
4659 BumpPool* pool,
4660 const VkFramebufferAttachmentImageInfo* from,
4661 VkFramebufferAttachmentImageInfo* to)
4662{
4663 (void)pool;
4664 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004665 const void* from_pNext = from;
4666 size_t pNext_size = 0u;
4667 while (!pNext_size && from_pNext)
4668 {
4669 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4670 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4671 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004672 to->pNext = nullptr;
4673 if (pNext_size)
4674 {
4675 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004676 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004677 }
4678 to->pViewFormats = nullptr;
4679 if (from->pViewFormats)
4680 {
4681 to->pViewFormats = (VkFormat*)pool->dupArray(from->pViewFormats, from->viewFormatCount * sizeof(const VkFormat));
4682 }
4683}
4684
4685void deepcopy_VkFramebufferAttachmentsCreateInfo(
4686 BumpPool* pool,
4687 const VkFramebufferAttachmentsCreateInfo* from,
4688 VkFramebufferAttachmentsCreateInfo* to)
4689{
4690 (void)pool;
4691 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004692 const void* from_pNext = from;
4693 size_t pNext_size = 0u;
4694 while (!pNext_size && from_pNext)
4695 {
4696 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4697 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4698 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004699 to->pNext = nullptr;
4700 if (pNext_size)
4701 {
4702 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004703 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004704 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004705 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004706 {
Yilong Libd10ec92021-02-10 13:24:27 -08004707 to->pAttachmentImageInfos = nullptr;
4708 if (from->pAttachmentImageInfos)
Yilong Lia8d45f12021-02-07 02:30:21 -08004709 {
Yilong Libd10ec92021-02-10 13:24:27 -08004710 to->pAttachmentImageInfos = (VkFramebufferAttachmentImageInfo*)pool->alloc(from->attachmentImageInfoCount * sizeof(const VkFramebufferAttachmentImageInfo));
4711 to->attachmentImageInfoCount = from->attachmentImageInfoCount;
4712 for (uint32_t i = 0; i < (uint32_t)from->attachmentImageInfoCount; ++i)
4713 {
4714 deepcopy_VkFramebufferAttachmentImageInfo(pool, from->pAttachmentImageInfos + i, (VkFramebufferAttachmentImageInfo*)(to->pAttachmentImageInfos + i));
4715 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004716 }
4717 }
4718}
4719
4720void deepcopy_VkRenderPassAttachmentBeginInfo(
4721 BumpPool* pool,
4722 const VkRenderPassAttachmentBeginInfo* from,
4723 VkRenderPassAttachmentBeginInfo* to)
4724{
4725 (void)pool;
4726 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004727 const void* from_pNext = from;
4728 size_t pNext_size = 0u;
4729 while (!pNext_size && from_pNext)
4730 {
4731 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4732 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4733 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004734 to->pNext = nullptr;
4735 if (pNext_size)
4736 {
4737 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004738 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004739 }
4740 to->pAttachments = nullptr;
4741 if (from->pAttachments)
4742 {
4743 to->pAttachments = (VkImageView*)pool->dupArray(from->pAttachments, from->attachmentCount * sizeof(const VkImageView));
4744 }
4745}
4746
4747void deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
4748 BumpPool* pool,
4749 const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* from,
4750 VkPhysicalDeviceUniformBufferStandardLayoutFeatures* to)
4751{
4752 (void)pool;
4753 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004754 const void* from_pNext = from;
4755 size_t pNext_size = 0u;
4756 while (!pNext_size && from_pNext)
4757 {
4758 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4759 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4760 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004761 to->pNext = nullptr;
4762 if (pNext_size)
4763 {
4764 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004765 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004766 }
4767}
4768
4769void deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
4770 BumpPool* pool,
4771 const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* from,
4772 VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* to)
4773{
4774 (void)pool;
4775 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004776 const void* from_pNext = from;
4777 size_t pNext_size = 0u;
4778 while (!pNext_size && from_pNext)
4779 {
4780 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4781 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4782 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004783 to->pNext = nullptr;
4784 if (pNext_size)
4785 {
4786 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004787 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004788 }
4789}
4790
4791void deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
4792 BumpPool* pool,
4793 const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* from,
4794 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* to)
4795{
4796 (void)pool;
4797 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004798 const void* from_pNext = from;
4799 size_t pNext_size = 0u;
4800 while (!pNext_size && from_pNext)
4801 {
4802 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4803 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4804 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004805 to->pNext = nullptr;
4806 if (pNext_size)
4807 {
4808 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004809 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004810 }
4811}
4812
4813void deepcopy_VkAttachmentReferenceStencilLayout(
4814 BumpPool* pool,
4815 const VkAttachmentReferenceStencilLayout* from,
4816 VkAttachmentReferenceStencilLayout* to)
4817{
4818 (void)pool;
4819 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004820 const void* from_pNext = from;
4821 size_t pNext_size = 0u;
4822 while (!pNext_size && from_pNext)
4823 {
4824 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4825 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4826 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004827 to->pNext = nullptr;
4828 if (pNext_size)
4829 {
4830 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004831 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004832 }
4833}
4834
4835void deepcopy_VkAttachmentDescriptionStencilLayout(
4836 BumpPool* pool,
4837 const VkAttachmentDescriptionStencilLayout* from,
4838 VkAttachmentDescriptionStencilLayout* to)
4839{
4840 (void)pool;
4841 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004842 const void* from_pNext = from;
4843 size_t pNext_size = 0u;
4844 while (!pNext_size && from_pNext)
4845 {
4846 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4847 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4848 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004849 to->pNext = nullptr;
4850 if (pNext_size)
4851 {
4852 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004853 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004854 }
4855}
4856
4857void deepcopy_VkPhysicalDeviceHostQueryResetFeatures(
4858 BumpPool* pool,
4859 const VkPhysicalDeviceHostQueryResetFeatures* from,
4860 VkPhysicalDeviceHostQueryResetFeatures* to)
4861{
4862 (void)pool;
4863 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004864 const void* from_pNext = from;
4865 size_t pNext_size = 0u;
4866 while (!pNext_size && from_pNext)
4867 {
4868 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4869 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4870 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004871 to->pNext = nullptr;
4872 if (pNext_size)
4873 {
4874 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004875 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004876 }
4877}
4878
4879void deepcopy_VkPhysicalDeviceTimelineSemaphoreFeatures(
4880 BumpPool* pool,
4881 const VkPhysicalDeviceTimelineSemaphoreFeatures* from,
4882 VkPhysicalDeviceTimelineSemaphoreFeatures* to)
4883{
4884 (void)pool;
4885 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004886 const void* from_pNext = from;
4887 size_t pNext_size = 0u;
4888 while (!pNext_size && from_pNext)
4889 {
4890 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4891 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4892 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004893 to->pNext = nullptr;
4894 if (pNext_size)
4895 {
4896 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004897 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004898 }
4899}
4900
4901void deepcopy_VkPhysicalDeviceTimelineSemaphoreProperties(
4902 BumpPool* pool,
4903 const VkPhysicalDeviceTimelineSemaphoreProperties* from,
4904 VkPhysicalDeviceTimelineSemaphoreProperties* to)
4905{
4906 (void)pool;
4907 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004908 const void* from_pNext = from;
4909 size_t pNext_size = 0u;
4910 while (!pNext_size && from_pNext)
4911 {
4912 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4913 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4914 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004915 to->pNext = nullptr;
4916 if (pNext_size)
4917 {
4918 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004919 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004920 }
4921}
4922
4923void deepcopy_VkSemaphoreTypeCreateInfo(
4924 BumpPool* pool,
4925 const VkSemaphoreTypeCreateInfo* from,
4926 VkSemaphoreTypeCreateInfo* to)
4927{
4928 (void)pool;
4929 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004930 const void* from_pNext = from;
4931 size_t pNext_size = 0u;
4932 while (!pNext_size && from_pNext)
4933 {
4934 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4935 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4936 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004937 to->pNext = nullptr;
4938 if (pNext_size)
4939 {
4940 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004941 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004942 }
4943}
4944
4945void deepcopy_VkTimelineSemaphoreSubmitInfo(
4946 BumpPool* pool,
4947 const VkTimelineSemaphoreSubmitInfo* from,
4948 VkTimelineSemaphoreSubmitInfo* to)
4949{
4950 (void)pool;
4951 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004952 const void* from_pNext = from;
4953 size_t pNext_size = 0u;
4954 while (!pNext_size && from_pNext)
4955 {
4956 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4957 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4958 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004959 to->pNext = nullptr;
4960 if (pNext_size)
4961 {
4962 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004963 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004964 }
4965 to->pWaitSemaphoreValues = nullptr;
4966 if (from->pWaitSemaphoreValues)
4967 {
4968 to->pWaitSemaphoreValues = (uint64_t*)pool->dupArray(from->pWaitSemaphoreValues, from->waitSemaphoreValueCount * sizeof(const uint64_t));
4969 }
4970 to->pSignalSemaphoreValues = nullptr;
4971 if (from->pSignalSemaphoreValues)
4972 {
4973 to->pSignalSemaphoreValues = (uint64_t*)pool->dupArray(from->pSignalSemaphoreValues, from->signalSemaphoreValueCount * sizeof(const uint64_t));
4974 }
4975}
4976
4977void deepcopy_VkSemaphoreWaitInfo(
4978 BumpPool* pool,
4979 const VkSemaphoreWaitInfo* from,
4980 VkSemaphoreWaitInfo* to)
4981{
4982 (void)pool;
4983 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08004984 const void* from_pNext = from;
4985 size_t pNext_size = 0u;
4986 while (!pNext_size && from_pNext)
4987 {
4988 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
4989 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
4990 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004991 to->pNext = nullptr;
4992 if (pNext_size)
4993 {
4994 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08004995 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004996 }
4997 to->pSemaphores = nullptr;
4998 if (from->pSemaphores)
4999 {
5000 to->pSemaphores = (VkSemaphore*)pool->dupArray(from->pSemaphores, from->semaphoreCount * sizeof(const VkSemaphore));
5001 }
5002 to->pValues = nullptr;
5003 if (from->pValues)
5004 {
5005 to->pValues = (uint64_t*)pool->dupArray(from->pValues, from->semaphoreCount * sizeof(const uint64_t));
5006 }
5007}
5008
5009void deepcopy_VkSemaphoreSignalInfo(
5010 BumpPool* pool,
5011 const VkSemaphoreSignalInfo* from,
5012 VkSemaphoreSignalInfo* to)
5013{
5014 (void)pool;
5015 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005016 const void* from_pNext = from;
5017 size_t pNext_size = 0u;
5018 while (!pNext_size && from_pNext)
5019 {
5020 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5021 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5022 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005023 to->pNext = nullptr;
5024 if (pNext_size)
5025 {
5026 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005027 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005028 }
5029}
5030
5031void deepcopy_VkPhysicalDeviceBufferDeviceAddressFeatures(
5032 BumpPool* pool,
5033 const VkPhysicalDeviceBufferDeviceAddressFeatures* from,
5034 VkPhysicalDeviceBufferDeviceAddressFeatures* to)
5035{
5036 (void)pool;
5037 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005038 const void* from_pNext = from;
5039 size_t pNext_size = 0u;
5040 while (!pNext_size && from_pNext)
5041 {
5042 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5043 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5044 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005045 to->pNext = nullptr;
5046 if (pNext_size)
5047 {
5048 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005049 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005050 }
5051}
5052
5053void deepcopy_VkBufferDeviceAddressInfo(
5054 BumpPool* pool,
5055 const VkBufferDeviceAddressInfo* from,
5056 VkBufferDeviceAddressInfo* to)
5057{
5058 (void)pool;
5059 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005060 const void* from_pNext = from;
5061 size_t pNext_size = 0u;
5062 while (!pNext_size && from_pNext)
5063 {
5064 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5065 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5066 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005067 to->pNext = nullptr;
5068 if (pNext_size)
5069 {
5070 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005071 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005072 }
5073}
5074
5075void deepcopy_VkBufferOpaqueCaptureAddressCreateInfo(
5076 BumpPool* pool,
5077 const VkBufferOpaqueCaptureAddressCreateInfo* from,
5078 VkBufferOpaqueCaptureAddressCreateInfo* to)
5079{
5080 (void)pool;
5081 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005082 const void* from_pNext = from;
5083 size_t pNext_size = 0u;
5084 while (!pNext_size && from_pNext)
5085 {
5086 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5087 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5088 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005089 to->pNext = nullptr;
5090 if (pNext_size)
5091 {
5092 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005093 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005094 }
5095}
5096
5097void deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfo(
5098 BumpPool* pool,
5099 const VkMemoryOpaqueCaptureAddressAllocateInfo* from,
5100 VkMemoryOpaqueCaptureAddressAllocateInfo* to)
5101{
5102 (void)pool;
5103 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005104 const void* from_pNext = from;
5105 size_t pNext_size = 0u;
5106 while (!pNext_size && from_pNext)
5107 {
5108 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5109 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5110 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005111 to->pNext = nullptr;
5112 if (pNext_size)
5113 {
5114 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005115 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005116 }
5117}
5118
5119void deepcopy_VkDeviceMemoryOpaqueCaptureAddressInfo(
5120 BumpPool* pool,
5121 const VkDeviceMemoryOpaqueCaptureAddressInfo* from,
5122 VkDeviceMemoryOpaqueCaptureAddressInfo* to)
5123{
5124 (void)pool;
5125 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005126 const void* from_pNext = from;
5127 size_t pNext_size = 0u;
5128 while (!pNext_size && from_pNext)
5129 {
5130 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5131 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5132 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005133 to->pNext = nullptr;
5134 if (pNext_size)
5135 {
5136 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005137 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005138 }
5139}
5140
5141#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005142#ifdef VK_KHR_surface
5143void deepcopy_VkSurfaceCapabilitiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005144 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005145 const VkSurfaceCapabilitiesKHR* from,
5146 VkSurfaceCapabilitiesKHR* to)
5147{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005148 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005149 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005150 deepcopy_VkExtent2D(pool, &from->currentExtent, (VkExtent2D*)(&to->currentExtent));
5151 deepcopy_VkExtent2D(pool, &from->minImageExtent, (VkExtent2D*)(&to->minImageExtent));
5152 deepcopy_VkExtent2D(pool, &from->maxImageExtent, (VkExtent2D*)(&to->maxImageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005153}
5154
5155void deepcopy_VkSurfaceFormatKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005156 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005157 const VkSurfaceFormatKHR* from,
5158 VkSurfaceFormatKHR* to)
5159{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005160 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005161 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005162}
5163
5164#endif
5165#ifdef VK_KHR_swapchain
5166void deepcopy_VkSwapchainCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005167 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005168 const VkSwapchainCreateInfoKHR* from,
5169 VkSwapchainCreateInfoKHR* to)
5170{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005171 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005172 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005173 const void* from_pNext = from;
5174 size_t pNext_size = 0u;
5175 while (!pNext_size && from_pNext)
5176 {
5177 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5178 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5179 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005180 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005181 if (pNext_size)
5182 {
5183 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005184 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005185 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005186 deepcopy_VkExtent2D(pool, &from->imageExtent, (VkExtent2D*)(&to->imageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005187 to->pQueueFamilyIndices = nullptr;
5188 if (from->pQueueFamilyIndices)
5189 {
5190 to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
5191 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005192}
5193
5194void deepcopy_VkPresentInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005195 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005196 const VkPresentInfoKHR* from,
5197 VkPresentInfoKHR* to)
5198{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005199 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005200 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005201 const void* from_pNext = from;
5202 size_t pNext_size = 0u;
5203 while (!pNext_size && from_pNext)
5204 {
5205 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5206 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5207 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005208 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005209 if (pNext_size)
5210 {
5211 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005212 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005213 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005214 to->pWaitSemaphores = nullptr;
5215 if (from->pWaitSemaphores)
5216 {
5217 to->pWaitSemaphores = (VkSemaphore*)pool->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
5218 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005219 to->pSwapchains = nullptr;
5220 if (from->pSwapchains)
5221 {
5222 to->pSwapchains = (VkSwapchainKHR*)pool->dupArray(from->pSwapchains, from->swapchainCount * sizeof(const VkSwapchainKHR));
5223 }
5224 to->pImageIndices = nullptr;
5225 if (from->pImageIndices)
5226 {
5227 to->pImageIndices = (uint32_t*)pool->dupArray(from->pImageIndices, from->swapchainCount * sizeof(const uint32_t));
5228 }
5229 to->pResults = nullptr;
5230 if (from->pResults)
5231 {
5232 to->pResults = (VkResult*)pool->dupArray(from->pResults, from->swapchainCount * sizeof(VkResult));
5233 }
5234}
5235
5236void deepcopy_VkImageSwapchainCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005237 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005238 const VkImageSwapchainCreateInfoKHR* from,
5239 VkImageSwapchainCreateInfoKHR* to)
5240{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005241 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005242 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005243 const void* from_pNext = from;
5244 size_t pNext_size = 0u;
5245 while (!pNext_size && from_pNext)
5246 {
5247 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5248 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5249 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005250 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005251 if (pNext_size)
5252 {
5253 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005254 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005255 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005256}
5257
5258void deepcopy_VkBindImageMemorySwapchainInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005259 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005260 const VkBindImageMemorySwapchainInfoKHR* from,
5261 VkBindImageMemorySwapchainInfoKHR* to)
5262{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005263 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005264 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005265 const void* from_pNext = from;
5266 size_t pNext_size = 0u;
5267 while (!pNext_size && from_pNext)
5268 {
5269 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5270 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5271 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005272 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005273 if (pNext_size)
5274 {
5275 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005276 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005277 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005278}
5279
5280void deepcopy_VkAcquireNextImageInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005281 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005282 const VkAcquireNextImageInfoKHR* from,
5283 VkAcquireNextImageInfoKHR* to)
5284{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005285 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005286 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005287 const void* from_pNext = from;
5288 size_t pNext_size = 0u;
5289 while (!pNext_size && from_pNext)
5290 {
5291 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5292 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5293 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005294 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005295 if (pNext_size)
5296 {
5297 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005298 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005299 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005300}
5301
5302void deepcopy_VkDeviceGroupPresentCapabilitiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005303 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005304 const VkDeviceGroupPresentCapabilitiesKHR* from,
5305 VkDeviceGroupPresentCapabilitiesKHR* to)
5306{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005307 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005308 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005309 const void* from_pNext = from;
5310 size_t pNext_size = 0u;
5311 while (!pNext_size && from_pNext)
5312 {
5313 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5314 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5315 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005316 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005317 if (pNext_size)
5318 {
5319 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005320 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005321 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005322 memcpy(to->presentMask, from->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005323}
5324
5325void deepcopy_VkDeviceGroupPresentInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005326 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005327 const VkDeviceGroupPresentInfoKHR* from,
5328 VkDeviceGroupPresentInfoKHR* to)
5329{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005330 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005331 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005332 const void* from_pNext = from;
5333 size_t pNext_size = 0u;
5334 while (!pNext_size && from_pNext)
5335 {
5336 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5337 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5338 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005339 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005340 if (pNext_size)
5341 {
5342 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005343 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005344 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005345 to->pDeviceMasks = nullptr;
5346 if (from->pDeviceMasks)
5347 {
5348 to->pDeviceMasks = (uint32_t*)pool->dupArray(from->pDeviceMasks, from->swapchainCount * sizeof(const uint32_t));
5349 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005350}
5351
5352void deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005353 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005354 const VkDeviceGroupSwapchainCreateInfoKHR* from,
5355 VkDeviceGroupSwapchainCreateInfoKHR* to)
5356{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005357 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005358 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005359 const void* from_pNext = from;
5360 size_t pNext_size = 0u;
5361 while (!pNext_size && from_pNext)
5362 {
5363 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5364 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5365 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005366 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005367 if (pNext_size)
5368 {
5369 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005370 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005371 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005372}
5373
5374#endif
5375#ifdef VK_KHR_display
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005376void deepcopy_VkDisplayModeParametersKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005377 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005378 const VkDisplayModeParametersKHR* from,
5379 VkDisplayModeParametersKHR* to)
5380{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005381 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005382 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005383 deepcopy_VkExtent2D(pool, &from->visibleRegion, (VkExtent2D*)(&to->visibleRegion));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005384}
5385
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005386void deepcopy_VkDisplayModeCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005387 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005388 const VkDisplayModeCreateInfoKHR* from,
5389 VkDisplayModeCreateInfoKHR* to)
5390{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005391 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005392 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005393 const void* from_pNext = from;
5394 size_t pNext_size = 0u;
5395 while (!pNext_size && from_pNext)
5396 {
5397 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5398 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5399 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005400 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005401 if (pNext_size)
5402 {
5403 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005404 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005405 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005406 deepcopy_VkDisplayModeParametersKHR(pool, &from->parameters, (VkDisplayModeParametersKHR*)(&to->parameters));
5407}
5408
Yilong Lia8d45f12021-02-07 02:30:21 -08005409void deepcopy_VkDisplayModePropertiesKHR(
5410 BumpPool* pool,
5411 const VkDisplayModePropertiesKHR* from,
5412 VkDisplayModePropertiesKHR* to)
5413{
5414 (void)pool;
5415 *to = *from;
5416 deepcopy_VkDisplayModeParametersKHR(pool, &from->parameters, (VkDisplayModeParametersKHR*)(&to->parameters));
5417}
5418
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005419void deepcopy_VkDisplayPlaneCapabilitiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005420 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005421 const VkDisplayPlaneCapabilitiesKHR* from,
5422 VkDisplayPlaneCapabilitiesKHR* to)
5423{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005424 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005425 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005426 deepcopy_VkOffset2D(pool, &from->minSrcPosition, (VkOffset2D*)(&to->minSrcPosition));
5427 deepcopy_VkOffset2D(pool, &from->maxSrcPosition, (VkOffset2D*)(&to->maxSrcPosition));
5428 deepcopy_VkExtent2D(pool, &from->minSrcExtent, (VkExtent2D*)(&to->minSrcExtent));
5429 deepcopy_VkExtent2D(pool, &from->maxSrcExtent, (VkExtent2D*)(&to->maxSrcExtent));
5430 deepcopy_VkOffset2D(pool, &from->minDstPosition, (VkOffset2D*)(&to->minDstPosition));
5431 deepcopy_VkOffset2D(pool, &from->maxDstPosition, (VkOffset2D*)(&to->maxDstPosition));
5432 deepcopy_VkExtent2D(pool, &from->minDstExtent, (VkExtent2D*)(&to->minDstExtent));
5433 deepcopy_VkExtent2D(pool, &from->maxDstExtent, (VkExtent2D*)(&to->maxDstExtent));
5434}
5435
5436void deepcopy_VkDisplayPlanePropertiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005437 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005438 const VkDisplayPlanePropertiesKHR* from,
5439 VkDisplayPlanePropertiesKHR* to)
5440{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005441 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005442 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005443}
5444
Yilong Lia8d45f12021-02-07 02:30:21 -08005445void deepcopy_VkDisplayPropertiesKHR(
5446 BumpPool* pool,
5447 const VkDisplayPropertiesKHR* from,
5448 VkDisplayPropertiesKHR* to)
5449{
5450 (void)pool;
5451 *to = *from;
5452 to->displayName = nullptr;
5453 if (from->displayName)
5454 {
5455 to->displayName = pool->strDup(from->displayName);
5456 }
5457 deepcopy_VkExtent2D(pool, &from->physicalDimensions, (VkExtent2D*)(&to->physicalDimensions));
5458 deepcopy_VkExtent2D(pool, &from->physicalResolution, (VkExtent2D*)(&to->physicalResolution));
5459}
5460
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005461void deepcopy_VkDisplaySurfaceCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005462 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005463 const VkDisplaySurfaceCreateInfoKHR* from,
5464 VkDisplaySurfaceCreateInfoKHR* to)
5465{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005466 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005467 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005468 const void* from_pNext = from;
5469 size_t pNext_size = 0u;
5470 while (!pNext_size && from_pNext)
5471 {
5472 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5473 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5474 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005475 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005476 if (pNext_size)
5477 {
5478 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005479 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005480 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005481 deepcopy_VkExtent2D(pool, &from->imageExtent, (VkExtent2D*)(&to->imageExtent));
5482}
5483
5484#endif
5485#ifdef VK_KHR_display_swapchain
5486void deepcopy_VkDisplayPresentInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005487 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005488 const VkDisplayPresentInfoKHR* from,
5489 VkDisplayPresentInfoKHR* to)
5490{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005491 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005492 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005493 const void* from_pNext = from;
5494 size_t pNext_size = 0u;
5495 while (!pNext_size && from_pNext)
5496 {
5497 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5498 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5499 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005500 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005501 if (pNext_size)
5502 {
5503 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005504 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005505 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005506 deepcopy_VkRect2D(pool, &from->srcRect, (VkRect2D*)(&to->srcRect));
5507 deepcopy_VkRect2D(pool, &from->dstRect, (VkRect2D*)(&to->dstRect));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005508}
5509
5510#endif
5511#ifdef VK_KHR_xlib_surface
5512void deepcopy_VkXlibSurfaceCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005513 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005514 const VkXlibSurfaceCreateInfoKHR* from,
5515 VkXlibSurfaceCreateInfoKHR* to)
5516{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005517 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005518 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005519 const void* from_pNext = from;
5520 size_t pNext_size = 0u;
5521 while (!pNext_size && from_pNext)
5522 {
5523 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5524 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5525 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005526 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005527 if (pNext_size)
5528 {
5529 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005530 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005531 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005532 to->dpy = nullptr;
5533 if (from->dpy)
5534 {
5535 to->dpy = (Display*)pool->dupArray(from->dpy, sizeof(Display));
5536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005537}
5538
5539#endif
5540#ifdef VK_KHR_xcb_surface
5541void deepcopy_VkXcbSurfaceCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005542 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005543 const VkXcbSurfaceCreateInfoKHR* from,
5544 VkXcbSurfaceCreateInfoKHR* to)
5545{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005546 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005547 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005548 const void* from_pNext = from;
5549 size_t pNext_size = 0u;
5550 while (!pNext_size && from_pNext)
5551 {
5552 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5553 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005555 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005556 if (pNext_size)
5557 {
5558 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005559 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005560 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005561 to->connection = nullptr;
5562 if (from->connection)
5563 {
5564 to->connection = (xcb_connection_t*)pool->dupArray(from->connection, sizeof(xcb_connection_t));
5565 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005566}
5567
5568#endif
5569#ifdef VK_KHR_wayland_surface
5570void deepcopy_VkWaylandSurfaceCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005571 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005572 const VkWaylandSurfaceCreateInfoKHR* from,
5573 VkWaylandSurfaceCreateInfoKHR* to)
5574{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005575 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005576 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005577 const void* from_pNext = from;
5578 size_t pNext_size = 0u;
5579 while (!pNext_size && from_pNext)
5580 {
5581 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5582 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5583 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005584 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005585 if (pNext_size)
5586 {
5587 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005588 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005589 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005590 to->display = nullptr;
5591 if (from->display)
5592 {
5593 to->display = (wl_display*)pool->dupArray(from->display, sizeof(wl_display));
5594 }
5595 to->surface = nullptr;
5596 if (from->surface)
5597 {
5598 to->surface = (wl_surface*)pool->dupArray(from->surface, sizeof(wl_surface));
5599 }
5600}
5601
5602#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005603#ifdef VK_KHR_android_surface
5604void deepcopy_VkAndroidSurfaceCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005605 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005606 const VkAndroidSurfaceCreateInfoKHR* from,
5607 VkAndroidSurfaceCreateInfoKHR* to)
5608{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005609 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005610 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005611 const void* from_pNext = from;
5612 size_t pNext_size = 0u;
5613 while (!pNext_size && from_pNext)
5614 {
5615 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5616 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5617 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005618 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005619 if (pNext_size)
5620 {
5621 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005622 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005623 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005624 to->window = nullptr;
5625 if (from->window)
5626 {
5627 to->window = (ANativeWindow*)pool->dupArray(from->window, sizeof(ANativeWindow));
5628 }
5629}
5630
5631#endif
5632#ifdef VK_KHR_win32_surface
5633void deepcopy_VkWin32SurfaceCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005634 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005635 const VkWin32SurfaceCreateInfoKHR* from,
5636 VkWin32SurfaceCreateInfoKHR* to)
5637{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005638 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005639 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005640 const void* from_pNext = from;
5641 size_t pNext_size = 0u;
5642 while (!pNext_size && from_pNext)
5643 {
5644 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5645 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5646 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005647 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005648 if (pNext_size)
5649 {
5650 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005651 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005652 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005653}
5654
5655#endif
5656#ifdef VK_KHR_sampler_mirror_clamp_to_edge
5657#endif
5658#ifdef VK_KHR_multiview
5659#endif
5660#ifdef VK_KHR_get_physical_device_properties2
5661#endif
5662#ifdef VK_KHR_device_group
5663#endif
5664#ifdef VK_KHR_shader_draw_parameters
5665#endif
5666#ifdef VK_KHR_maintenance1
5667#endif
5668#ifdef VK_KHR_device_group_creation
5669#endif
5670#ifdef VK_KHR_external_memory_capabilities
5671#endif
5672#ifdef VK_KHR_external_memory
5673#endif
5674#ifdef VK_KHR_external_memory_win32
5675void deepcopy_VkImportMemoryWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005676 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005677 const VkImportMemoryWin32HandleInfoKHR* from,
5678 VkImportMemoryWin32HandleInfoKHR* to)
5679{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005680 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005681 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005682 const void* from_pNext = from;
5683 size_t pNext_size = 0u;
5684 while (!pNext_size && from_pNext)
5685 {
5686 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5687 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5688 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005689 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005690 if (pNext_size)
5691 {
5692 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005693 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005695}
5696
5697void deepcopy_VkExportMemoryWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005698 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005699 const VkExportMemoryWin32HandleInfoKHR* from,
5700 VkExportMemoryWin32HandleInfoKHR* to)
5701{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005702 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005703 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005704 const void* from_pNext = from;
5705 size_t pNext_size = 0u;
5706 while (!pNext_size && from_pNext)
5707 {
5708 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5709 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5710 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005711 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005712 if (pNext_size)
5713 {
5714 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005715 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005716 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005717 to->pAttributes = nullptr;
5718 if (from->pAttributes)
5719 {
5720 to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
5721 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005722}
5723
5724void deepcopy_VkMemoryWin32HandlePropertiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005725 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005726 const VkMemoryWin32HandlePropertiesKHR* from,
5727 VkMemoryWin32HandlePropertiesKHR* to)
5728{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005729 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005730 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005731 const void* from_pNext = from;
5732 size_t pNext_size = 0u;
5733 while (!pNext_size && from_pNext)
5734 {
5735 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5736 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5737 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005738 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005739 if (pNext_size)
5740 {
5741 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005742 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005743 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005744}
5745
5746void deepcopy_VkMemoryGetWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005747 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005748 const VkMemoryGetWin32HandleInfoKHR* from,
5749 VkMemoryGetWin32HandleInfoKHR* to)
5750{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005751 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005752 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005753 const void* from_pNext = from;
5754 size_t pNext_size = 0u;
5755 while (!pNext_size && from_pNext)
5756 {
5757 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5758 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5759 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005760 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005761 if (pNext_size)
5762 {
5763 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005764 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005765 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005766}
5767
5768#endif
5769#ifdef VK_KHR_external_memory_fd
5770void deepcopy_VkImportMemoryFdInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005771 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005772 const VkImportMemoryFdInfoKHR* from,
5773 VkImportMemoryFdInfoKHR* to)
5774{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005775 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005776 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005777 const void* from_pNext = from;
5778 size_t pNext_size = 0u;
5779 while (!pNext_size && from_pNext)
5780 {
5781 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5782 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5783 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005784 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005785 if (pNext_size)
5786 {
5787 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005788 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005789 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005790}
5791
5792void deepcopy_VkMemoryFdPropertiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005793 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005794 const VkMemoryFdPropertiesKHR* from,
5795 VkMemoryFdPropertiesKHR* to)
5796{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005797 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005798 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005799 const void* from_pNext = from;
5800 size_t pNext_size = 0u;
5801 while (!pNext_size && from_pNext)
5802 {
5803 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5804 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5805 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005806 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005807 if (pNext_size)
5808 {
5809 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005810 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005811 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005812}
5813
5814void deepcopy_VkMemoryGetFdInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005815 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005816 const VkMemoryGetFdInfoKHR* from,
5817 VkMemoryGetFdInfoKHR* to)
5818{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005819 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005820 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005821 const void* from_pNext = from;
5822 size_t pNext_size = 0u;
5823 while (!pNext_size && from_pNext)
5824 {
5825 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5826 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5827 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005828 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005829 if (pNext_size)
5830 {
5831 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005832 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005833 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005834}
5835
5836#endif
5837#ifdef VK_KHR_win32_keyed_mutex
5838void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005839 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005840 const VkWin32KeyedMutexAcquireReleaseInfoKHR* from,
5841 VkWin32KeyedMutexAcquireReleaseInfoKHR* to)
5842{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005843 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005844 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005845 const void* from_pNext = from;
5846 size_t pNext_size = 0u;
5847 while (!pNext_size && from_pNext)
5848 {
5849 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5850 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5851 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005852 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005853 if (pNext_size)
5854 {
5855 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005856 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005857 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005858 to->pAcquireSyncs = nullptr;
5859 if (from->pAcquireSyncs)
5860 {
5861 to->pAcquireSyncs = (VkDeviceMemory*)pool->dupArray(from->pAcquireSyncs, from->acquireCount * sizeof(const VkDeviceMemory));
5862 }
5863 to->pAcquireKeys = nullptr;
5864 if (from->pAcquireKeys)
5865 {
5866 to->pAcquireKeys = (uint64_t*)pool->dupArray(from->pAcquireKeys, from->acquireCount * sizeof(const uint64_t));
5867 }
5868 to->pAcquireTimeouts = nullptr;
5869 if (from->pAcquireTimeouts)
5870 {
5871 to->pAcquireTimeouts = (uint32_t*)pool->dupArray(from->pAcquireTimeouts, from->acquireCount * sizeof(const uint32_t));
5872 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005873 to->pReleaseSyncs = nullptr;
5874 if (from->pReleaseSyncs)
5875 {
5876 to->pReleaseSyncs = (VkDeviceMemory*)pool->dupArray(from->pReleaseSyncs, from->releaseCount * sizeof(const VkDeviceMemory));
5877 }
5878 to->pReleaseKeys = nullptr;
5879 if (from->pReleaseKeys)
5880 {
5881 to->pReleaseKeys = (uint64_t*)pool->dupArray(from->pReleaseKeys, from->releaseCount * sizeof(const uint64_t));
5882 }
5883}
5884
5885#endif
5886#ifdef VK_KHR_external_semaphore_capabilities
5887#endif
5888#ifdef VK_KHR_external_semaphore
5889#endif
5890#ifdef VK_KHR_external_semaphore_win32
5891void deepcopy_VkImportSemaphoreWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005892 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005893 const VkImportSemaphoreWin32HandleInfoKHR* from,
5894 VkImportSemaphoreWin32HandleInfoKHR* to)
5895{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005896 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005897 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005898 const void* from_pNext = from;
5899 size_t pNext_size = 0u;
5900 while (!pNext_size && from_pNext)
5901 {
5902 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5903 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5904 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005905 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005906 if (pNext_size)
5907 {
5908 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005909 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005910 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911}
5912
5913void deepcopy_VkExportSemaphoreWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005914 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005915 const VkExportSemaphoreWin32HandleInfoKHR* from,
5916 VkExportSemaphoreWin32HandleInfoKHR* to)
5917{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005918 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005919 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005920 const void* from_pNext = from;
5921 size_t pNext_size = 0u;
5922 while (!pNext_size && from_pNext)
5923 {
5924 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5925 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5926 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005927 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005928 if (pNext_size)
5929 {
5930 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005931 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005932 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005933 to->pAttributes = nullptr;
5934 if (from->pAttributes)
5935 {
5936 to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
5937 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005938}
5939
5940void deepcopy_VkD3D12FenceSubmitInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005941 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005942 const VkD3D12FenceSubmitInfoKHR* from,
5943 VkD3D12FenceSubmitInfoKHR* to)
5944{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005945 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005946 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005947 const void* from_pNext = from;
5948 size_t pNext_size = 0u;
5949 while (!pNext_size && from_pNext)
5950 {
5951 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5952 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5953 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005954 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005955 if (pNext_size)
5956 {
5957 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005958 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005959 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005960 to->pWaitSemaphoreValues = nullptr;
5961 if (from->pWaitSemaphoreValues)
5962 {
5963 to->pWaitSemaphoreValues = (uint64_t*)pool->dupArray(from->pWaitSemaphoreValues, from->waitSemaphoreValuesCount * sizeof(const uint64_t));
5964 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005965 to->pSignalSemaphoreValues = nullptr;
5966 if (from->pSignalSemaphoreValues)
5967 {
5968 to->pSignalSemaphoreValues = (uint64_t*)pool->dupArray(from->pSignalSemaphoreValues, from->signalSemaphoreValuesCount * sizeof(const uint64_t));
5969 }
5970}
5971
5972void deepcopy_VkSemaphoreGetWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005973 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005974 const VkSemaphoreGetWin32HandleInfoKHR* from,
5975 VkSemaphoreGetWin32HandleInfoKHR* to)
5976{
Lingfeng Yang36891c52018-11-09 14:18:35 -08005977 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08005978 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08005979 const void* from_pNext = from;
5980 size_t pNext_size = 0u;
5981 while (!pNext_size && from_pNext)
5982 {
5983 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
5984 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
5985 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005986 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08005987 if (pNext_size)
5988 {
5989 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08005990 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08005991 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005992}
5993
5994#endif
5995#ifdef VK_KHR_external_semaphore_fd
5996void deepcopy_VkImportSemaphoreFdInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07005997 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005998 const VkImportSemaphoreFdInfoKHR* from,
5999 VkImportSemaphoreFdInfoKHR* to)
6000{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006001 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006002 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006003 const void* from_pNext = from;
6004 size_t pNext_size = 0u;
6005 while (!pNext_size && from_pNext)
6006 {
6007 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6008 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6009 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006010 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006011 if (pNext_size)
6012 {
6013 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006014 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006015 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006016}
6017
6018void deepcopy_VkSemaphoreGetFdInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006019 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006020 const VkSemaphoreGetFdInfoKHR* from,
6021 VkSemaphoreGetFdInfoKHR* to)
6022{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006023 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006024 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006025 const void* from_pNext = from;
6026 size_t pNext_size = 0u;
6027 while (!pNext_size && from_pNext)
6028 {
6029 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6030 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6031 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006032 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006033 if (pNext_size)
6034 {
6035 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006036 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006037 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006038}
6039
6040#endif
6041#ifdef VK_KHR_push_descriptor
6042void deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006043 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006044 const VkPhysicalDevicePushDescriptorPropertiesKHR* from,
6045 VkPhysicalDevicePushDescriptorPropertiesKHR* to)
6046{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006047 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006048 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006049 const void* from_pNext = from;
6050 size_t pNext_size = 0u;
6051 while (!pNext_size && from_pNext)
6052 {
6053 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6054 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6055 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006056 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006057 if (pNext_size)
6058 {
6059 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006060 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006061 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006062}
6063
6064#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006065#ifdef VK_KHR_shader_float16_int8
6066#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006067#ifdef VK_KHR_16bit_storage
6068#endif
6069#ifdef VK_KHR_incremental_present
6070void deepcopy_VkRectLayerKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006071 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006072 const VkRectLayerKHR* from,
6073 VkRectLayerKHR* to)
6074{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006075 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006076 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006077 deepcopy_VkOffset2D(pool, &from->offset, (VkOffset2D*)(&to->offset));
6078 deepcopy_VkExtent2D(pool, &from->extent, (VkExtent2D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006079}
6080
6081void deepcopy_VkPresentRegionKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006082 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006083 const VkPresentRegionKHR* from,
6084 VkPresentRegionKHR* to)
6085{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006086 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006087 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08006088 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006089 {
Yilong Libd10ec92021-02-10 13:24:27 -08006090 to->pRectangles = nullptr;
6091 if (from->pRectangles)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006092 {
Yilong Libd10ec92021-02-10 13:24:27 -08006093 to->pRectangles = (VkRectLayerKHR*)pool->alloc(from->rectangleCount * sizeof(const VkRectLayerKHR));
6094 to->rectangleCount = from->rectangleCount;
6095 for (uint32_t i = 0; i < (uint32_t)from->rectangleCount; ++i)
6096 {
6097 deepcopy_VkRectLayerKHR(pool, from->pRectangles + i, (VkRectLayerKHR*)(to->pRectangles + i));
6098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006099 }
6100 }
6101}
6102
6103void deepcopy_VkPresentRegionsKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006104 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006105 const VkPresentRegionsKHR* from,
6106 VkPresentRegionsKHR* to)
6107{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006108 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006109 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006110 const void* from_pNext = from;
6111 size_t pNext_size = 0u;
6112 while (!pNext_size && from_pNext)
6113 {
6114 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6115 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6116 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006117 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006118 if (pNext_size)
6119 {
6120 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006121 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006122 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08006123 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006124 {
Yilong Libd10ec92021-02-10 13:24:27 -08006125 to->pRegions = nullptr;
6126 if (from->pRegions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006127 {
Yilong Libd10ec92021-02-10 13:24:27 -08006128 to->pRegions = (VkPresentRegionKHR*)pool->alloc(from->swapchainCount * sizeof(const VkPresentRegionKHR));
6129 to->swapchainCount = from->swapchainCount;
6130 for (uint32_t i = 0; i < (uint32_t)from->swapchainCount; ++i)
6131 {
6132 deepcopy_VkPresentRegionKHR(pool, from->pRegions + i, (VkPresentRegionKHR*)(to->pRegions + i));
6133 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006134 }
6135 }
6136}
6137
6138#endif
6139#ifdef VK_KHR_descriptor_update_template
6140#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006141#ifdef VK_KHR_imageless_framebuffer
6142#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006143#ifdef VK_KHR_create_renderpass2
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006144#endif
6145#ifdef VK_KHR_shared_presentable_image
6146void deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006147 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006148 const VkSharedPresentSurfaceCapabilitiesKHR* from,
6149 VkSharedPresentSurfaceCapabilitiesKHR* to)
6150{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006151 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006152 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006153 const void* from_pNext = from;
6154 size_t pNext_size = 0u;
6155 while (!pNext_size && from_pNext)
6156 {
6157 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6158 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6159 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006160 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006161 if (pNext_size)
6162 {
6163 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006164 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006165 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006166}
6167
6168#endif
6169#ifdef VK_KHR_external_fence_capabilities
6170#endif
6171#ifdef VK_KHR_external_fence
6172#endif
6173#ifdef VK_KHR_external_fence_win32
6174void deepcopy_VkImportFenceWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006175 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006176 const VkImportFenceWin32HandleInfoKHR* from,
6177 VkImportFenceWin32HandleInfoKHR* to)
6178{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006179 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006180 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006181 const void* from_pNext = from;
6182 size_t pNext_size = 0u;
6183 while (!pNext_size && from_pNext)
6184 {
6185 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6186 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6187 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006188 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006189 if (pNext_size)
6190 {
6191 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006192 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006193 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006194}
6195
6196void deepcopy_VkExportFenceWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006197 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006198 const VkExportFenceWin32HandleInfoKHR* from,
6199 VkExportFenceWin32HandleInfoKHR* to)
6200{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006201 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006202 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006203 const void* from_pNext = from;
6204 size_t pNext_size = 0u;
6205 while (!pNext_size && from_pNext)
6206 {
6207 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6208 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6209 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006210 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006211 if (pNext_size)
6212 {
6213 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006214 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006215 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006216 to->pAttributes = nullptr;
6217 if (from->pAttributes)
6218 {
6219 to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
6220 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006221}
6222
6223void deepcopy_VkFenceGetWin32HandleInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006224 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006225 const VkFenceGetWin32HandleInfoKHR* from,
6226 VkFenceGetWin32HandleInfoKHR* to)
6227{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006228 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006229 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006230 const void* from_pNext = from;
6231 size_t pNext_size = 0u;
6232 while (!pNext_size && from_pNext)
6233 {
6234 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6235 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6236 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006237 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006238 if (pNext_size)
6239 {
6240 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006241 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006242 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006243}
6244
6245#endif
6246#ifdef VK_KHR_external_fence_fd
6247void deepcopy_VkImportFenceFdInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006248 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006249 const VkImportFenceFdInfoKHR* from,
6250 VkImportFenceFdInfoKHR* to)
6251{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006252 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006253 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006254 const void* from_pNext = from;
6255 size_t pNext_size = 0u;
6256 while (!pNext_size && from_pNext)
6257 {
6258 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6259 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6260 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006261 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006262 if (pNext_size)
6263 {
6264 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006265 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006266 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006267}
6268
6269void deepcopy_VkFenceGetFdInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006270 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006271 const VkFenceGetFdInfoKHR* from,
6272 VkFenceGetFdInfoKHR* to)
6273{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006274 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006275 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006276 const void* from_pNext = from;
6277 size_t pNext_size = 0u;
6278 while (!pNext_size && from_pNext)
6279 {
6280 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6281 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6282 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006283 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006284 if (pNext_size)
6285 {
6286 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006287 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006288 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006289}
6290
6291#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006292#ifdef VK_KHR_performance_query
6293void deepcopy_VkPhysicalDevicePerformanceQueryFeaturesKHR(
6294 BumpPool* pool,
6295 const VkPhysicalDevicePerformanceQueryFeaturesKHR* from,
6296 VkPhysicalDevicePerformanceQueryFeaturesKHR* to)
6297{
6298 (void)pool;
6299 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006300 const void* from_pNext = from;
6301 size_t pNext_size = 0u;
6302 while (!pNext_size && from_pNext)
6303 {
6304 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6305 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6306 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006307 to->pNext = nullptr;
6308 if (pNext_size)
6309 {
6310 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006311 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006312 }
6313}
6314
6315void deepcopy_VkPhysicalDevicePerformanceQueryPropertiesKHR(
6316 BumpPool* pool,
6317 const VkPhysicalDevicePerformanceQueryPropertiesKHR* from,
6318 VkPhysicalDevicePerformanceQueryPropertiesKHR* to)
6319{
6320 (void)pool;
6321 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006322 const void* from_pNext = from;
6323 size_t pNext_size = 0u;
6324 while (!pNext_size && from_pNext)
6325 {
6326 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6327 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6328 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006329 to->pNext = nullptr;
6330 if (pNext_size)
6331 {
6332 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006333 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006334 }
6335}
6336
6337void deepcopy_VkPerformanceCounterKHR(
6338 BumpPool* pool,
6339 const VkPerformanceCounterKHR* from,
6340 VkPerformanceCounterKHR* to)
6341{
6342 (void)pool;
6343 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006344 const void* from_pNext = from;
6345 size_t pNext_size = 0u;
6346 while (!pNext_size && from_pNext)
6347 {
6348 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6349 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6350 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006351 to->pNext = nullptr;
6352 if (pNext_size)
6353 {
6354 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006355 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006356 }
6357 memcpy(to->uuid, from->uuid, VK_UUID_SIZE * sizeof(uint8_t));
6358}
6359
6360void deepcopy_VkPerformanceCounterDescriptionKHR(
6361 BumpPool* pool,
6362 const VkPerformanceCounterDescriptionKHR* from,
6363 VkPerformanceCounterDescriptionKHR* to)
6364{
6365 (void)pool;
6366 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006367 const void* from_pNext = from;
6368 size_t pNext_size = 0u;
6369 while (!pNext_size && from_pNext)
6370 {
6371 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6372 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6373 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006374 to->pNext = nullptr;
6375 if (pNext_size)
6376 {
6377 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006378 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006379 }
6380 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
6381 memcpy(to->category, from->category, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
6382 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
6383}
6384
6385void deepcopy_VkQueryPoolPerformanceCreateInfoKHR(
6386 BumpPool* pool,
6387 const VkQueryPoolPerformanceCreateInfoKHR* from,
6388 VkQueryPoolPerformanceCreateInfoKHR* to)
6389{
6390 (void)pool;
6391 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006392 const void* from_pNext = from;
6393 size_t pNext_size = 0u;
6394 while (!pNext_size && from_pNext)
6395 {
6396 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6397 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6398 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006399 to->pNext = nullptr;
6400 if (pNext_size)
6401 {
6402 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006403 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006404 }
6405 to->pCounterIndices = nullptr;
6406 if (from->pCounterIndices)
6407 {
6408 to->pCounterIndices = (uint32_t*)pool->dupArray(from->pCounterIndices, from->counterIndexCount * sizeof(const uint32_t));
6409 }
6410}
6411
6412void deepcopy_VkPerformanceCounterResultKHR(
6413 BumpPool* pool,
6414 const VkPerformanceCounterResultKHR* from,
6415 VkPerformanceCounterResultKHR* to)
6416{
6417 (void)pool;
6418 *to = *from;
6419}
6420
6421void deepcopy_VkAcquireProfilingLockInfoKHR(
6422 BumpPool* pool,
6423 const VkAcquireProfilingLockInfoKHR* from,
6424 VkAcquireProfilingLockInfoKHR* to)
6425{
6426 (void)pool;
6427 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006428 const void* from_pNext = from;
6429 size_t pNext_size = 0u;
6430 while (!pNext_size && from_pNext)
6431 {
6432 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6433 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6434 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006435 to->pNext = nullptr;
6436 if (pNext_size)
6437 {
6438 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006439 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006440 }
6441}
6442
6443void deepcopy_VkPerformanceQuerySubmitInfoKHR(
6444 BumpPool* pool,
6445 const VkPerformanceQuerySubmitInfoKHR* from,
6446 VkPerformanceQuerySubmitInfoKHR* to)
6447{
6448 (void)pool;
6449 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006450 const void* from_pNext = from;
6451 size_t pNext_size = 0u;
6452 while (!pNext_size && from_pNext)
6453 {
6454 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6455 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6456 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006457 to->pNext = nullptr;
6458 if (pNext_size)
6459 {
6460 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006461 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006462 }
6463}
6464
6465#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006466#ifdef VK_KHR_maintenance2
6467#endif
6468#ifdef VK_KHR_get_surface_capabilities2
6469void deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006470 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006471 const VkPhysicalDeviceSurfaceInfo2KHR* from,
6472 VkPhysicalDeviceSurfaceInfo2KHR* to)
6473{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006474 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006475 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006476 const void* from_pNext = from;
6477 size_t pNext_size = 0u;
6478 while (!pNext_size && from_pNext)
6479 {
6480 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6481 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6482 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006483 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006484 if (pNext_size)
6485 {
6486 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006487 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006488 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006489}
6490
6491void deepcopy_VkSurfaceCapabilities2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006492 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006493 const VkSurfaceCapabilities2KHR* from,
6494 VkSurfaceCapabilities2KHR* to)
6495{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006496 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006497 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006498 const void* from_pNext = from;
6499 size_t pNext_size = 0u;
6500 while (!pNext_size && from_pNext)
6501 {
6502 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6503 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6504 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006505 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006506 if (pNext_size)
6507 {
6508 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006509 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006510 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006511 deepcopy_VkSurfaceCapabilitiesKHR(pool, &from->surfaceCapabilities, (VkSurfaceCapabilitiesKHR*)(&to->surfaceCapabilities));
6512}
6513
6514void deepcopy_VkSurfaceFormat2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006515 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006516 const VkSurfaceFormat2KHR* from,
6517 VkSurfaceFormat2KHR* to)
6518{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006519 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006520 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006521 const void* from_pNext = from;
6522 size_t pNext_size = 0u;
6523 while (!pNext_size && from_pNext)
6524 {
6525 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6526 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6527 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006528 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006529 if (pNext_size)
6530 {
6531 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006532 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006533 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006534 deepcopy_VkSurfaceFormatKHR(pool, &from->surfaceFormat, (VkSurfaceFormatKHR*)(&to->surfaceFormat));
6535}
6536
6537#endif
6538#ifdef VK_KHR_variable_pointers
6539#endif
6540#ifdef VK_KHR_get_display_properties2
6541void deepcopy_VkDisplayProperties2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006542 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006543 const VkDisplayProperties2KHR* from,
6544 VkDisplayProperties2KHR* to)
6545{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006546 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006547 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006548 const void* from_pNext = from;
6549 size_t pNext_size = 0u;
6550 while (!pNext_size && from_pNext)
6551 {
6552 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6553 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006555 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006556 if (pNext_size)
6557 {
6558 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006559 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006560 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006561 deepcopy_VkDisplayPropertiesKHR(pool, &from->displayProperties, (VkDisplayPropertiesKHR*)(&to->displayProperties));
6562}
6563
6564void deepcopy_VkDisplayPlaneProperties2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006565 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006566 const VkDisplayPlaneProperties2KHR* from,
6567 VkDisplayPlaneProperties2KHR* to)
6568{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006569 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006570 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006571 const void* from_pNext = from;
6572 size_t pNext_size = 0u;
6573 while (!pNext_size && from_pNext)
6574 {
6575 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6576 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6577 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006578 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006579 if (pNext_size)
6580 {
6581 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006582 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006583 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006584 deepcopy_VkDisplayPlanePropertiesKHR(pool, &from->displayPlaneProperties, (VkDisplayPlanePropertiesKHR*)(&to->displayPlaneProperties));
6585}
6586
6587void deepcopy_VkDisplayModeProperties2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006588 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006589 const VkDisplayModeProperties2KHR* from,
6590 VkDisplayModeProperties2KHR* to)
6591{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006592 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006593 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006594 const void* from_pNext = from;
6595 size_t pNext_size = 0u;
6596 while (!pNext_size && from_pNext)
6597 {
6598 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6599 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6600 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006601 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006602 if (pNext_size)
6603 {
6604 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006605 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006606 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006607 deepcopy_VkDisplayModePropertiesKHR(pool, &from->displayModeProperties, (VkDisplayModePropertiesKHR*)(&to->displayModeProperties));
6608}
6609
6610void deepcopy_VkDisplayPlaneInfo2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006611 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 const VkDisplayPlaneInfo2KHR* from,
6613 VkDisplayPlaneInfo2KHR* to)
6614{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006615 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006616 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006617 const void* from_pNext = from;
6618 size_t pNext_size = 0u;
6619 while (!pNext_size && from_pNext)
6620 {
6621 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6622 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6623 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006624 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006625 if (pNext_size)
6626 {
6627 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006628 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006629 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006630}
6631
6632void deepcopy_VkDisplayPlaneCapabilities2KHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006633 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006634 const VkDisplayPlaneCapabilities2KHR* from,
6635 VkDisplayPlaneCapabilities2KHR* to)
6636{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006637 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006638 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006639 const void* from_pNext = from;
6640 size_t pNext_size = 0u;
6641 while (!pNext_size && from_pNext)
6642 {
6643 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6644 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6645 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006646 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006647 if (pNext_size)
6648 {
6649 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006650 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006651 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006652 deepcopy_VkDisplayPlaneCapabilitiesKHR(pool, &from->capabilities, (VkDisplayPlaneCapabilitiesKHR*)(&to->capabilities));
6653}
6654
6655#endif
6656#ifdef VK_KHR_dedicated_allocation
6657#endif
6658#ifdef VK_KHR_storage_buffer_storage_class
6659#endif
6660#ifdef VK_KHR_relaxed_block_layout
6661#endif
6662#ifdef VK_KHR_get_memory_requirements2
6663#endif
6664#ifdef VK_KHR_image_format_list
Yilong Lia8d45f12021-02-07 02:30:21 -08006665#endif
6666#ifdef VK_KHR_sampler_ycbcr_conversion
6667#endif
6668#ifdef VK_KHR_bind_memory2
6669#endif
6670#ifdef VK_KHR_portability_subset
6671void deepcopy_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006672 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08006673 const VkPhysicalDevicePortabilitySubsetFeaturesKHR* from,
6674 VkPhysicalDevicePortabilitySubsetFeaturesKHR* to)
6675{
6676 (void)pool;
6677 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006678 const void* from_pNext = from;
6679 size_t pNext_size = 0u;
6680 while (!pNext_size && from_pNext)
6681 {
6682 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6683 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6684 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006685 to->pNext = nullptr;
6686 if (pNext_size)
6687 {
6688 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006689 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006690 }
6691}
6692
6693void deepcopy_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
6694 BumpPool* pool,
6695 const VkPhysicalDevicePortabilitySubsetPropertiesKHR* from,
6696 VkPhysicalDevicePortabilitySubsetPropertiesKHR* to)
6697{
6698 (void)pool;
6699 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006700 const void* from_pNext = from;
6701 size_t pNext_size = 0u;
6702 while (!pNext_size && from_pNext)
6703 {
6704 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6705 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6706 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006707 to->pNext = nullptr;
6708 if (pNext_size)
6709 {
6710 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006711 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006712 }
6713}
6714
6715#endif
6716#ifdef VK_KHR_maintenance3
6717#endif
6718#ifdef VK_KHR_draw_indirect_count
6719#endif
6720#ifdef VK_KHR_shader_subgroup_extended_types
6721#endif
6722#ifdef VK_KHR_8bit_storage
6723#endif
6724#ifdef VK_KHR_shader_atomic_int64
6725#endif
6726#ifdef VK_KHR_shader_clock
6727void deepcopy_VkPhysicalDeviceShaderClockFeaturesKHR(
6728 BumpPool* pool,
6729 const VkPhysicalDeviceShaderClockFeaturesKHR* from,
6730 VkPhysicalDeviceShaderClockFeaturesKHR* to)
6731{
6732 (void)pool;
6733 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006734 const void* from_pNext = from;
6735 size_t pNext_size = 0u;
6736 while (!pNext_size && from_pNext)
6737 {
6738 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6739 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6740 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006741 to->pNext = nullptr;
6742 if (pNext_size)
6743 {
6744 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006745 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006746 }
6747}
6748
6749#endif
6750#ifdef VK_KHR_driver_properties
6751#endif
6752#ifdef VK_KHR_shader_float_controls
6753#endif
6754#ifdef VK_KHR_depth_stencil_resolve
6755#endif
6756#ifdef VK_KHR_swapchain_mutable_format
6757#endif
6758#ifdef VK_KHR_timeline_semaphore
6759#endif
6760#ifdef VK_KHR_vulkan_memory_model
6761#endif
6762#ifdef VK_KHR_shader_terminate_invocation
6763void deepcopy_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
6764 BumpPool* pool,
6765 const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* from,
6766 VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* to)
6767{
6768 (void)pool;
6769 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006770 const void* from_pNext = from;
6771 size_t pNext_size = 0u;
6772 while (!pNext_size && from_pNext)
6773 {
6774 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6775 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6776 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006777 to->pNext = nullptr;
6778 if (pNext_size)
6779 {
6780 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006781 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006782 }
6783}
6784
6785#endif
6786#ifdef VK_KHR_fragment_shading_rate
6787void deepcopy_VkFragmentShadingRateAttachmentInfoKHR(
6788 BumpPool* pool,
6789 const VkFragmentShadingRateAttachmentInfoKHR* from,
6790 VkFragmentShadingRateAttachmentInfoKHR* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006791{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006792 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006793 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006794 const void* from_pNext = from;
6795 size_t pNext_size = 0u;
6796 while (!pNext_size && from_pNext)
6797 {
6798 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6799 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6800 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006801 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006802 if (pNext_size)
6803 {
6804 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006805 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006806 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006807 to->pFragmentShadingRateAttachment = nullptr;
6808 if (from->pFragmentShadingRateAttachment)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006809 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006810 to->pFragmentShadingRateAttachment = (VkAttachmentReference2*)pool->alloc(sizeof(const VkAttachmentReference2));
6811 deepcopy_VkAttachmentReference2(pool, from->pFragmentShadingRateAttachment, (VkAttachmentReference2*)(to->pFragmentShadingRateAttachment));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006812 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006813 deepcopy_VkExtent2D(pool, &from->shadingRateAttachmentTexelSize, (VkExtent2D*)(&to->shadingRateAttachmentTexelSize));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006814}
6815
Yilong Lia8d45f12021-02-07 02:30:21 -08006816void deepcopy_VkPipelineFragmentShadingRateStateCreateInfoKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006817 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08006818 const VkPipelineFragmentShadingRateStateCreateInfoKHR* from,
6819 VkPipelineFragmentShadingRateStateCreateInfoKHR* to)
6820{
6821 (void)pool;
6822 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006823 const void* from_pNext = from;
6824 size_t pNext_size = 0u;
6825 while (!pNext_size && from_pNext)
6826 {
6827 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6828 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6829 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006830 to->pNext = nullptr;
6831 if (pNext_size)
6832 {
6833 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006834 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006835 }
6836 deepcopy_VkExtent2D(pool, &from->fragmentSize, (VkExtent2D*)(&to->fragmentSize));
6837 memcpy(to->combinerOps, from->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR));
6838}
6839
6840void deepcopy_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
6841 BumpPool* pool,
6842 const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* from,
6843 VkPhysicalDeviceFragmentShadingRateFeaturesKHR* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006844{
Lingfeng Yang36891c52018-11-09 14:18:35 -08006845 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006846 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006847 const void* from_pNext = from;
6848 size_t pNext_size = 0u;
6849 while (!pNext_size && from_pNext)
6850 {
6851 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6852 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6853 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006854 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006855 if (pNext_size)
6856 {
6857 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006858 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006859 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006860}
6861
Yilong Lia8d45f12021-02-07 02:30:21 -08006862void deepcopy_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07006863 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08006864 const VkPhysicalDeviceFragmentShadingRatePropertiesKHR* from,
6865 VkPhysicalDeviceFragmentShadingRatePropertiesKHR* to)
Lingfeng Yang4c056b22020-07-02 11:43:57 -07006866{
6867 (void)pool;
6868 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006869 const void* from_pNext = from;
6870 size_t pNext_size = 0u;
6871 while (!pNext_size && from_pNext)
6872 {
6873 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6874 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6875 }
Lingfeng Yang4c056b22020-07-02 11:43:57 -07006876 to->pNext = nullptr;
6877 if (pNext_size)
6878 {
6879 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006880 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang4c056b22020-07-02 11:43:57 -07006881 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006882 deepcopy_VkExtent2D(pool, &from->minFragmentShadingRateAttachmentTexelSize, (VkExtent2D*)(&to->minFragmentShadingRateAttachmentTexelSize));
6883 deepcopy_VkExtent2D(pool, &from->maxFragmentShadingRateAttachmentTexelSize, (VkExtent2D*)(&to->maxFragmentShadingRateAttachmentTexelSize));
6884 deepcopy_VkExtent2D(pool, &from->maxFragmentSize, (VkExtent2D*)(&to->maxFragmentSize));
6885}
6886
6887void deepcopy_VkPhysicalDeviceFragmentShadingRateKHR(
6888 BumpPool* pool,
6889 const VkPhysicalDeviceFragmentShadingRateKHR* from,
6890 VkPhysicalDeviceFragmentShadingRateKHR* to)
6891{
6892 (void)pool;
6893 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006894 const void* from_pNext = from;
6895 size_t pNext_size = 0u;
6896 while (!pNext_size && from_pNext)
6897 {
6898 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6899 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6900 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006901 to->pNext = nullptr;
6902 if (pNext_size)
6903 {
6904 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006905 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006906 }
6907 deepcopy_VkExtent2D(pool, &from->fragmentSize, (VkExtent2D*)(&to->fragmentSize));
6908}
6909
6910#endif
6911#ifdef VK_KHR_spirv_1_4
6912#endif
6913#ifdef VK_KHR_surface_protected_capabilities
6914void deepcopy_VkSurfaceProtectedCapabilitiesKHR(
6915 BumpPool* pool,
6916 const VkSurfaceProtectedCapabilitiesKHR* from,
6917 VkSurfaceProtectedCapabilitiesKHR* to)
6918{
6919 (void)pool;
6920 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006921 const void* from_pNext = from;
6922 size_t pNext_size = 0u;
6923 while (!pNext_size && from_pNext)
6924 {
6925 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6926 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6927 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006928 to->pNext = nullptr;
6929 if (pNext_size)
6930 {
6931 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006932 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006933 }
6934}
6935
6936#endif
6937#ifdef VK_KHR_separate_depth_stencil_layouts
6938#endif
6939#ifdef VK_KHR_uniform_buffer_standard_layout
6940#endif
6941#ifdef VK_KHR_buffer_device_address
6942#endif
6943#ifdef VK_KHR_deferred_host_operations
6944#endif
6945#ifdef VK_KHR_pipeline_executable_properties
6946void deepcopy_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
6947 BumpPool* pool,
6948 const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* from,
6949 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* to)
6950{
6951 (void)pool;
6952 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006953 const void* from_pNext = from;
6954 size_t pNext_size = 0u;
6955 while (!pNext_size && from_pNext)
6956 {
6957 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6958 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6959 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006960 to->pNext = nullptr;
6961 if (pNext_size)
6962 {
6963 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006964 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006965 }
6966}
6967
6968void deepcopy_VkPipelineInfoKHR(
6969 BumpPool* pool,
6970 const VkPipelineInfoKHR* from,
6971 VkPipelineInfoKHR* to)
6972{
6973 (void)pool;
6974 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006975 const void* from_pNext = from;
6976 size_t pNext_size = 0u;
6977 while (!pNext_size && from_pNext)
6978 {
6979 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6980 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
6981 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006982 to->pNext = nullptr;
6983 if (pNext_size)
6984 {
6985 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08006986 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006987 }
6988}
6989
6990void deepcopy_VkPipelineExecutablePropertiesKHR(
6991 BumpPool* pool,
6992 const VkPipelineExecutablePropertiesKHR* from,
6993 VkPipelineExecutablePropertiesKHR* to)
6994{
6995 (void)pool;
6996 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08006997 const void* from_pNext = from;
6998 size_t pNext_size = 0u;
6999 while (!pNext_size && from_pNext)
7000 {
7001 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7002 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7003 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007004 to->pNext = nullptr;
7005 if (pNext_size)
7006 {
7007 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007008 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007009 }
7010 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
7011 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
7012}
7013
7014void deepcopy_VkPipelineExecutableInfoKHR(
7015 BumpPool* pool,
7016 const VkPipelineExecutableInfoKHR* from,
7017 VkPipelineExecutableInfoKHR* to)
7018{
7019 (void)pool;
7020 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007021 const void* from_pNext = from;
7022 size_t pNext_size = 0u;
7023 while (!pNext_size && from_pNext)
7024 {
7025 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7026 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7027 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007028 to->pNext = nullptr;
7029 if (pNext_size)
7030 {
7031 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007032 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007033 }
7034}
7035
7036void deepcopy_VkPipelineExecutableStatisticValueKHR(
7037 BumpPool* pool,
7038 const VkPipelineExecutableStatisticValueKHR* from,
7039 VkPipelineExecutableStatisticValueKHR* to)
7040{
7041 (void)pool;
7042 *to = *from;
7043}
7044
7045void deepcopy_VkPipelineExecutableStatisticKHR(
7046 BumpPool* pool,
7047 const VkPipelineExecutableStatisticKHR* from,
7048 VkPipelineExecutableStatisticKHR* to)
7049{
7050 (void)pool;
7051 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007052 const void* from_pNext = from;
7053 size_t pNext_size = 0u;
7054 while (!pNext_size && from_pNext)
7055 {
7056 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7057 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7058 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007059 to->pNext = nullptr;
7060 if (pNext_size)
7061 {
7062 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007063 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007064 }
7065 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
7066 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
7067 deepcopy_VkPipelineExecutableStatisticValueKHR(pool, &from->value, (VkPipelineExecutableStatisticValueKHR*)(&to->value));
7068}
7069
7070void deepcopy_VkPipelineExecutableInternalRepresentationKHR(
7071 BumpPool* pool,
7072 const VkPipelineExecutableInternalRepresentationKHR* from,
7073 VkPipelineExecutableInternalRepresentationKHR* to)
7074{
7075 (void)pool;
7076 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007077 const void* from_pNext = from;
7078 size_t pNext_size = 0u;
7079 while (!pNext_size && from_pNext)
7080 {
7081 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7082 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7083 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007084 to->pNext = nullptr;
7085 if (pNext_size)
7086 {
7087 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007088 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007089 }
7090 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
7091 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
7092 to->pData = nullptr;
7093 if (from->pData)
7094 {
7095 to->pData = (void*)pool->dupArray(from->pData, from->dataSize * sizeof(uint8_t));
7096 }
7097}
7098
7099#endif
7100#ifdef VK_KHR_pipeline_library
7101void deepcopy_VkPipelineLibraryCreateInfoKHR(
7102 BumpPool* pool,
7103 const VkPipelineLibraryCreateInfoKHR* from,
7104 VkPipelineLibraryCreateInfoKHR* to)
7105{
7106 (void)pool;
7107 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007108 const void* from_pNext = from;
7109 size_t pNext_size = 0u;
7110 while (!pNext_size && from_pNext)
7111 {
7112 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7113 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7114 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007115 to->pNext = nullptr;
7116 if (pNext_size)
7117 {
7118 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007119 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007120 }
7121 to->pLibraries = nullptr;
7122 if (from->pLibraries)
7123 {
7124 to->pLibraries = (VkPipeline*)pool->dupArray(from->pLibraries, from->libraryCount * sizeof(const VkPipeline));
7125 }
7126}
7127
7128#endif
7129#ifdef VK_KHR_shader_non_semantic_info
7130#endif
7131#ifdef VK_KHR_copy_commands2
7132void deepcopy_VkBufferCopy2KHR(
7133 BumpPool* pool,
7134 const VkBufferCopy2KHR* from,
7135 VkBufferCopy2KHR* to)
7136{
7137 (void)pool;
7138 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007139 const void* from_pNext = from;
7140 size_t pNext_size = 0u;
7141 while (!pNext_size && from_pNext)
7142 {
7143 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7144 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7145 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007146 to->pNext = nullptr;
7147 if (pNext_size)
7148 {
7149 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007150 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007151 }
7152}
7153
7154void deepcopy_VkCopyBufferInfo2KHR(
7155 BumpPool* pool,
7156 const VkCopyBufferInfo2KHR* from,
7157 VkCopyBufferInfo2KHR* to)
7158{
7159 (void)pool;
7160 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007161 const void* from_pNext = from;
7162 size_t pNext_size = 0u;
7163 while (!pNext_size && from_pNext)
7164 {
7165 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7166 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7167 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007168 to->pNext = nullptr;
7169 if (pNext_size)
7170 {
7171 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007172 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007173 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08007174 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08007175 {
Yilong Libd10ec92021-02-10 13:24:27 -08007176 to->pRegions = nullptr;
7177 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -08007178 {
Yilong Libd10ec92021-02-10 13:24:27 -08007179 to->pRegions = (VkBufferCopy2KHR*)pool->alloc(from->regionCount * sizeof(const VkBufferCopy2KHR));
7180 to->regionCount = from->regionCount;
7181 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
7182 {
7183 deepcopy_VkBufferCopy2KHR(pool, from->pRegions + i, (VkBufferCopy2KHR*)(to->pRegions + i));
7184 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007185 }
7186 }
7187}
7188
7189void deepcopy_VkImageCopy2KHR(
7190 BumpPool* pool,
7191 const VkImageCopy2KHR* from,
7192 VkImageCopy2KHR* to)
7193{
7194 (void)pool;
7195 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007196 const void* from_pNext = from;
7197 size_t pNext_size = 0u;
7198 while (!pNext_size && from_pNext)
7199 {
7200 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7201 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7202 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007203 to->pNext = nullptr;
7204 if (pNext_size)
7205 {
7206 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007207 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007208 }
7209 deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
7210 deepcopy_VkOffset3D(pool, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
7211 deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
7212 deepcopy_VkOffset3D(pool, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
7213 deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
7214}
7215
7216void deepcopy_VkCopyImageInfo2KHR(
7217 BumpPool* pool,
7218 const VkCopyImageInfo2KHR* from,
7219 VkCopyImageInfo2KHR* to)
7220{
7221 (void)pool;
7222 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007223 const void* from_pNext = from;
7224 size_t pNext_size = 0u;
7225 while (!pNext_size && from_pNext)
7226 {
7227 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7228 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7229 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007230 to->pNext = nullptr;
7231 if (pNext_size)
7232 {
7233 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007234 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007235 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08007236 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08007237 {
Yilong Libd10ec92021-02-10 13:24:27 -08007238 to->pRegions = nullptr;
7239 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -08007240 {
Yilong Libd10ec92021-02-10 13:24:27 -08007241 to->pRegions = (VkImageCopy2KHR*)pool->alloc(from->regionCount * sizeof(const VkImageCopy2KHR));
7242 to->regionCount = from->regionCount;
7243 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
7244 {
7245 deepcopy_VkImageCopy2KHR(pool, from->pRegions + i, (VkImageCopy2KHR*)(to->pRegions + i));
7246 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007247 }
7248 }
7249}
7250
7251void deepcopy_VkBufferImageCopy2KHR(
7252 BumpPool* pool,
7253 const VkBufferImageCopy2KHR* from,
7254 VkBufferImageCopy2KHR* to)
7255{
7256 (void)pool;
7257 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007258 const void* from_pNext = from;
7259 size_t pNext_size = 0u;
7260 while (!pNext_size && from_pNext)
7261 {
7262 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7263 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7264 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007265 to->pNext = nullptr;
7266 if (pNext_size)
7267 {
7268 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007269 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007270 }
7271 deepcopy_VkImageSubresourceLayers(pool, &from->imageSubresource, (VkImageSubresourceLayers*)(&to->imageSubresource));
7272 deepcopy_VkOffset3D(pool, &from->imageOffset, (VkOffset3D*)(&to->imageOffset));
7273 deepcopy_VkExtent3D(pool, &from->imageExtent, (VkExtent3D*)(&to->imageExtent));
7274}
7275
7276void deepcopy_VkCopyBufferToImageInfo2KHR(
7277 BumpPool* pool,
7278 const VkCopyBufferToImageInfo2KHR* from,
7279 VkCopyBufferToImageInfo2KHR* to)
7280{
7281 (void)pool;
7282 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007283 const void* from_pNext = from;
7284 size_t pNext_size = 0u;
7285 while (!pNext_size && from_pNext)
7286 {
7287 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7288 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7289 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007290 to->pNext = nullptr;
7291 if (pNext_size)
7292 {
7293 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007294 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007295 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08007296 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08007297 {
Yilong Libd10ec92021-02-10 13:24:27 -08007298 to->pRegions = nullptr;
7299 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -08007300 {
Yilong Libd10ec92021-02-10 13:24:27 -08007301 to->pRegions = (VkBufferImageCopy2KHR*)pool->alloc(from->regionCount * sizeof(const VkBufferImageCopy2KHR));
7302 to->regionCount = from->regionCount;
7303 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
7304 {
7305 deepcopy_VkBufferImageCopy2KHR(pool, from->pRegions + i, (VkBufferImageCopy2KHR*)(to->pRegions + i));
7306 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007307 }
7308 }
7309}
7310
7311void deepcopy_VkCopyImageToBufferInfo2KHR(
7312 BumpPool* pool,
7313 const VkCopyImageToBufferInfo2KHR* from,
7314 VkCopyImageToBufferInfo2KHR* to)
7315{
7316 (void)pool;
7317 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007318 const void* from_pNext = from;
7319 size_t pNext_size = 0u;
7320 while (!pNext_size && from_pNext)
7321 {
7322 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7323 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7324 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007325 to->pNext = nullptr;
7326 if (pNext_size)
7327 {
7328 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007329 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007330 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08007331 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08007332 {
Yilong Libd10ec92021-02-10 13:24:27 -08007333 to->pRegions = nullptr;
7334 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -08007335 {
Yilong Libd10ec92021-02-10 13:24:27 -08007336 to->pRegions = (VkBufferImageCopy2KHR*)pool->alloc(from->regionCount * sizeof(const VkBufferImageCopy2KHR));
7337 to->regionCount = from->regionCount;
7338 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
7339 {
7340 deepcopy_VkBufferImageCopy2KHR(pool, from->pRegions + i, (VkBufferImageCopy2KHR*)(to->pRegions + i));
7341 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007342 }
7343 }
7344}
7345
7346void deepcopy_VkImageBlit2KHR(
7347 BumpPool* pool,
7348 const VkImageBlit2KHR* from,
7349 VkImageBlit2KHR* to)
7350{
7351 (void)pool;
7352 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007353 const void* from_pNext = from;
7354 size_t pNext_size = 0u;
7355 while (!pNext_size && from_pNext)
7356 {
7357 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7358 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7359 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007360 to->pNext = nullptr;
7361 if (pNext_size)
7362 {
7363 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007364 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007365 }
7366 deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
7367 for (uint32_t i = 0; i < (uint32_t)2; ++i)
7368 {
7369 deepcopy_VkOffset3D(pool, from->srcOffsets + i, (VkOffset3D*)(to->srcOffsets + i));
7370 }
7371 deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
7372 for (uint32_t i = 0; i < (uint32_t)2; ++i)
7373 {
7374 deepcopy_VkOffset3D(pool, from->dstOffsets + i, (VkOffset3D*)(to->dstOffsets + i));
7375 }
7376}
7377
7378void deepcopy_VkBlitImageInfo2KHR(
7379 BumpPool* pool,
7380 const VkBlitImageInfo2KHR* from,
7381 VkBlitImageInfo2KHR* to)
7382{
7383 (void)pool;
7384 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007385 const void* from_pNext = from;
7386 size_t pNext_size = 0u;
7387 while (!pNext_size && from_pNext)
7388 {
7389 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7390 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7391 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007392 to->pNext = nullptr;
7393 if (pNext_size)
7394 {
7395 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007396 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007397 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08007398 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08007399 {
Yilong Libd10ec92021-02-10 13:24:27 -08007400 to->pRegions = nullptr;
7401 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -08007402 {
Yilong Libd10ec92021-02-10 13:24:27 -08007403 to->pRegions = (VkImageBlit2KHR*)pool->alloc(from->regionCount * sizeof(const VkImageBlit2KHR));
7404 to->regionCount = from->regionCount;
7405 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
7406 {
7407 deepcopy_VkImageBlit2KHR(pool, from->pRegions + i, (VkImageBlit2KHR*)(to->pRegions + i));
7408 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007409 }
7410 }
7411}
7412
7413void deepcopy_VkImageResolve2KHR(
7414 BumpPool* pool,
7415 const VkImageResolve2KHR* from,
7416 VkImageResolve2KHR* to)
7417{
7418 (void)pool;
7419 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007420 const void* from_pNext = from;
7421 size_t pNext_size = 0u;
7422 while (!pNext_size && from_pNext)
7423 {
7424 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7425 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7426 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007427 to->pNext = nullptr;
7428 if (pNext_size)
7429 {
7430 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007431 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007432 }
7433 deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
7434 deepcopy_VkOffset3D(pool, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
7435 deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
7436 deepcopy_VkOffset3D(pool, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
7437 deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
7438}
7439
7440void deepcopy_VkResolveImageInfo2KHR(
7441 BumpPool* pool,
7442 const VkResolveImageInfo2KHR* from,
7443 VkResolveImageInfo2KHR* to)
7444{
7445 (void)pool;
7446 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007447 const void* from_pNext = from;
7448 size_t pNext_size = 0u;
7449 while (!pNext_size && from_pNext)
7450 {
7451 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7452 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7453 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007454 to->pNext = nullptr;
7455 if (pNext_size)
7456 {
7457 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007458 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007459 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08007460 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08007461 {
Yilong Libd10ec92021-02-10 13:24:27 -08007462 to->pRegions = nullptr;
7463 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -08007464 {
Yilong Libd10ec92021-02-10 13:24:27 -08007465 to->pRegions = (VkImageResolve2KHR*)pool->alloc(from->regionCount * sizeof(const VkImageResolve2KHR));
7466 to->regionCount = from->regionCount;
7467 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
7468 {
7469 deepcopy_VkImageResolve2KHR(pool, from->pRegions + i, (VkImageResolve2KHR*)(to->pRegions + i));
7470 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007471 }
7472 }
Lingfeng Yang4c056b22020-07-02 11:43:57 -07007473}
7474
7475#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08007476#ifdef VK_ANDROID_native_buffer
7477void deepcopy_VkNativeBufferANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007478 BumpPool* pool,
Lingfeng Yang808a6312018-11-13 21:06:15 -08007479 const VkNativeBufferANDROID* from,
7480 VkNativeBufferANDROID* to)
7481{
7482 (void)pool;
7483 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007484 const void* from_pNext = from;
7485 size_t pNext_size = 0u;
7486 while (!pNext_size && from_pNext)
7487 {
7488 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7489 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7490 }
Lingfeng Yang808a6312018-11-13 21:06:15 -08007491 to->pNext = nullptr;
7492 if (pNext_size)
7493 {
7494 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007495 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang808a6312018-11-13 21:06:15 -08007496 }
7497 to->handle = nullptr;
7498 if (from->handle)
7499 {
7500 to->handle = (uint32_t*)pool->dupArray(from->handle, sizeof(const uint32_t));
7501 }
7502}
7503
7504#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007505#ifdef VK_EXT_debug_report
7506void deepcopy_VkDebugReportCallbackCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007507 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007508 const VkDebugReportCallbackCreateInfoEXT* from,
7509 VkDebugReportCallbackCreateInfoEXT* to)
7510{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007511 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007512 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007513 const void* from_pNext = from;
7514 size_t pNext_size = 0u;
7515 while (!pNext_size && from_pNext)
7516 {
7517 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7518 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7519 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007520 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007521 if (pNext_size)
7522 {
7523 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007524 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007526 to->pUserData = nullptr;
7527 if (from->pUserData)
7528 {
7529 to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
7530 }
7531}
7532
7533#endif
7534#ifdef VK_NV_glsl_shader
7535#endif
7536#ifdef VK_EXT_depth_range_unrestricted
7537#endif
7538#ifdef VK_IMG_filter_cubic
7539#endif
7540#ifdef VK_AMD_rasterization_order
7541void deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007542 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007543 const VkPipelineRasterizationStateRasterizationOrderAMD* from,
7544 VkPipelineRasterizationStateRasterizationOrderAMD* to)
7545{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007546 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007547 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007548 const void* from_pNext = from;
7549 size_t pNext_size = 0u;
7550 while (!pNext_size && from_pNext)
7551 {
7552 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7553 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007555 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007556 if (pNext_size)
7557 {
7558 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007559 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007560 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007561}
7562
7563#endif
7564#ifdef VK_AMD_shader_trinary_minmax
7565#endif
7566#ifdef VK_AMD_shader_explicit_vertex_parameter
7567#endif
7568#ifdef VK_EXT_debug_marker
7569void deepcopy_VkDebugMarkerObjectNameInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007570 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007571 const VkDebugMarkerObjectNameInfoEXT* from,
7572 VkDebugMarkerObjectNameInfoEXT* to)
7573{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007574 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007575 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007576 const void* from_pNext = from;
7577 size_t pNext_size = 0u;
7578 while (!pNext_size && from_pNext)
7579 {
7580 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7581 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7582 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007583 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007584 if (pNext_size)
7585 {
7586 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007587 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007588 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007589 to->pObjectName = nullptr;
7590 if (from->pObjectName)
7591 {
7592 to->pObjectName = pool->strDup(from->pObjectName);
7593 }
7594}
7595
7596void deepcopy_VkDebugMarkerObjectTagInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007597 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007598 const VkDebugMarkerObjectTagInfoEXT* from,
7599 VkDebugMarkerObjectTagInfoEXT* to)
7600{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007601 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007602 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007603 const void* from_pNext = from;
7604 size_t pNext_size = 0u;
7605 while (!pNext_size && from_pNext)
7606 {
7607 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7608 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7609 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007610 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007611 if (pNext_size)
7612 {
7613 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007614 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007615 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007616 to->pTag = nullptr;
7617 if (from->pTag)
7618 {
7619 to->pTag = (void*)pool->dupArray(from->pTag, from->tagSize * sizeof(const uint8_t));
7620 }
7621}
7622
7623void deepcopy_VkDebugMarkerMarkerInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007624 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007625 const VkDebugMarkerMarkerInfoEXT* from,
7626 VkDebugMarkerMarkerInfoEXT* to)
7627{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007628 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007629 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007630 const void* from_pNext = from;
7631 size_t pNext_size = 0u;
7632 while (!pNext_size && from_pNext)
7633 {
7634 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7635 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7636 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007637 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007638 if (pNext_size)
7639 {
7640 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007641 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007642 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007643 to->pMarkerName = nullptr;
7644 if (from->pMarkerName)
7645 {
7646 to->pMarkerName = pool->strDup(from->pMarkerName);
7647 }
7648 memcpy(to->color, from->color, 4 * sizeof(float));
7649}
7650
7651#endif
7652#ifdef VK_AMD_gcn_shader
7653#endif
7654#ifdef VK_NV_dedicated_allocation
7655void deepcopy_VkDedicatedAllocationImageCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007656 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007657 const VkDedicatedAllocationImageCreateInfoNV* from,
7658 VkDedicatedAllocationImageCreateInfoNV* to)
7659{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007660 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007661 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007662 const void* from_pNext = from;
7663 size_t pNext_size = 0u;
7664 while (!pNext_size && from_pNext)
7665 {
7666 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7667 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7668 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007669 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007670 if (pNext_size)
7671 {
7672 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007673 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007674 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007675}
7676
7677void deepcopy_VkDedicatedAllocationBufferCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007678 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007679 const VkDedicatedAllocationBufferCreateInfoNV* from,
7680 VkDedicatedAllocationBufferCreateInfoNV* to)
7681{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007682 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007683 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007684 const void* from_pNext = from;
7685 size_t pNext_size = 0u;
7686 while (!pNext_size && from_pNext)
7687 {
7688 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7689 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7690 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007691 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007692 if (pNext_size)
7693 {
7694 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007695 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007696 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007697}
7698
7699void deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007700 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007701 const VkDedicatedAllocationMemoryAllocateInfoNV* from,
7702 VkDedicatedAllocationMemoryAllocateInfoNV* to)
7703{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007704 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007705 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007706 const void* from_pNext = from;
7707 size_t pNext_size = 0u;
7708 while (!pNext_size && from_pNext)
7709 {
7710 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7711 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7712 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007713 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007714 if (pNext_size)
7715 {
7716 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007717 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007718 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007719}
7720
7721#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007722#ifdef VK_EXT_transform_feedback
7723void deepcopy_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
7724 BumpPool* pool,
7725 const VkPhysicalDeviceTransformFeedbackFeaturesEXT* from,
7726 VkPhysicalDeviceTransformFeedbackFeaturesEXT* to)
7727{
7728 (void)pool;
7729 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007730 const void* from_pNext = from;
7731 size_t pNext_size = 0u;
7732 while (!pNext_size && from_pNext)
7733 {
7734 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7735 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7736 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007737 to->pNext = nullptr;
7738 if (pNext_size)
7739 {
7740 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007741 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007742 }
7743}
7744
7745void deepcopy_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
7746 BumpPool* pool,
7747 const VkPhysicalDeviceTransformFeedbackPropertiesEXT* from,
7748 VkPhysicalDeviceTransformFeedbackPropertiesEXT* to)
7749{
7750 (void)pool;
7751 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007752 const void* from_pNext = from;
7753 size_t pNext_size = 0u;
7754 while (!pNext_size && from_pNext)
7755 {
7756 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7757 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7758 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007759 to->pNext = nullptr;
7760 if (pNext_size)
7761 {
7762 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007763 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007764 }
7765}
7766
7767void deepcopy_VkPipelineRasterizationStateStreamCreateInfoEXT(
7768 BumpPool* pool,
7769 const VkPipelineRasterizationStateStreamCreateInfoEXT* from,
7770 VkPipelineRasterizationStateStreamCreateInfoEXT* to)
7771{
7772 (void)pool;
7773 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007774 const void* from_pNext = from;
7775 size_t pNext_size = 0u;
7776 while (!pNext_size && from_pNext)
7777 {
7778 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7779 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7780 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007781 to->pNext = nullptr;
7782 if (pNext_size)
7783 {
7784 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007785 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007786 }
7787}
7788
7789#endif
7790#ifdef VK_NVX_image_view_handle
7791void deepcopy_VkImageViewHandleInfoNVX(
7792 BumpPool* pool,
7793 const VkImageViewHandleInfoNVX* from,
7794 VkImageViewHandleInfoNVX* to)
7795{
7796 (void)pool;
7797 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007798 const void* from_pNext = from;
7799 size_t pNext_size = 0u;
7800 while (!pNext_size && from_pNext)
7801 {
7802 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7803 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7804 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007805 to->pNext = nullptr;
7806 if (pNext_size)
7807 {
7808 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007809 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007810 }
7811}
7812
7813void deepcopy_VkImageViewAddressPropertiesNVX(
7814 BumpPool* pool,
7815 const VkImageViewAddressPropertiesNVX* from,
7816 VkImageViewAddressPropertiesNVX* to)
7817{
7818 (void)pool;
7819 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007820 const void* from_pNext = from;
7821 size_t pNext_size = 0u;
7822 while (!pNext_size && from_pNext)
7823 {
7824 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7825 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7826 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007827 to->pNext = nullptr;
7828 if (pNext_size)
7829 {
7830 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007831 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007832 }
7833}
7834
7835#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007836#ifdef VK_AMD_draw_indirect_count
7837#endif
7838#ifdef VK_AMD_negative_viewport_height
7839#endif
7840#ifdef VK_AMD_gpu_shader_half_float
7841#endif
7842#ifdef VK_AMD_shader_ballot
7843#endif
7844#ifdef VK_AMD_texture_gather_bias_lod
7845void deepcopy_VkTextureLODGatherFormatPropertiesAMD(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007846 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007847 const VkTextureLODGatherFormatPropertiesAMD* from,
7848 VkTextureLODGatherFormatPropertiesAMD* to)
7849{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007850 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007851 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007852 const void* from_pNext = from;
7853 size_t pNext_size = 0u;
7854 while (!pNext_size && from_pNext)
7855 {
7856 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7857 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7858 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007859 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007860 if (pNext_size)
7861 {
7862 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007863 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007864 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007865}
7866
7867#endif
7868#ifdef VK_AMD_shader_info
7869void deepcopy_VkShaderResourceUsageAMD(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007870 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007871 const VkShaderResourceUsageAMD* from,
7872 VkShaderResourceUsageAMD* to)
7873{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007874 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007875 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007876}
7877
7878void deepcopy_VkShaderStatisticsInfoAMD(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007879 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 const VkShaderStatisticsInfoAMD* from,
7881 VkShaderStatisticsInfoAMD* to)
7882{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007883 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007884 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007885 deepcopy_VkShaderResourceUsageAMD(pool, &from->resourceUsage, (VkShaderResourceUsageAMD*)(&to->resourceUsage));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007886 memcpy(to->computeWorkGroupSize, from->computeWorkGroupSize, 3 * sizeof(uint32_t));
7887}
7888
7889#endif
7890#ifdef VK_AMD_shader_image_load_store_lod
7891#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007892#ifdef VK_GGP_stream_descriptor_surface
7893void deepcopy_VkStreamDescriptorSurfaceCreateInfoGGP(
7894 BumpPool* pool,
7895 const VkStreamDescriptorSurfaceCreateInfoGGP* from,
7896 VkStreamDescriptorSurfaceCreateInfoGGP* to)
7897{
7898 (void)pool;
7899 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007900 const void* from_pNext = from;
7901 size_t pNext_size = 0u;
7902 while (!pNext_size && from_pNext)
7903 {
7904 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7905 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7906 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007907 to->pNext = nullptr;
7908 if (pNext_size)
7909 {
7910 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007911 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007912 }
7913}
7914
7915#endif
7916#ifdef VK_NV_corner_sampled_image
7917void deepcopy_VkPhysicalDeviceCornerSampledImageFeaturesNV(
7918 BumpPool* pool,
7919 const VkPhysicalDeviceCornerSampledImageFeaturesNV* from,
7920 VkPhysicalDeviceCornerSampledImageFeaturesNV* to)
7921{
7922 (void)pool;
7923 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007924 const void* from_pNext = from;
7925 size_t pNext_size = 0u;
7926 while (!pNext_size && from_pNext)
7927 {
7928 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7929 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7930 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007931 to->pNext = nullptr;
7932 if (pNext_size)
7933 {
7934 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007935 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08007936 }
7937}
7938
7939#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007940#ifdef VK_IMG_format_pvrtc
7941#endif
7942#ifdef VK_NV_external_memory_capabilities
7943void deepcopy_VkExternalImageFormatPropertiesNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007944 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007945 const VkExternalImageFormatPropertiesNV* from,
7946 VkExternalImageFormatPropertiesNV* to)
7947{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007948 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007949 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007950 deepcopy_VkImageFormatProperties(pool, &from->imageFormatProperties, (VkImageFormatProperties*)(&to->imageFormatProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007951}
7952
7953#endif
7954#ifdef VK_NV_external_memory
7955void deepcopy_VkExternalMemoryImageCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007956 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007957 const VkExternalMemoryImageCreateInfoNV* from,
7958 VkExternalMemoryImageCreateInfoNV* to)
7959{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007960 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007961 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007962 const void* from_pNext = from;
7963 size_t pNext_size = 0u;
7964 while (!pNext_size && from_pNext)
7965 {
7966 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7967 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7968 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007969 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007970 if (pNext_size)
7971 {
7972 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007973 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007974 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007975}
7976
7977void deepcopy_VkExportMemoryAllocateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07007978 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 const VkExportMemoryAllocateInfoNV* from,
7980 VkExportMemoryAllocateInfoNV* to)
7981{
Lingfeng Yang36891c52018-11-09 14:18:35 -08007982 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007983 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08007984 const void* from_pNext = from;
7985 size_t pNext_size = 0u;
7986 while (!pNext_size && from_pNext)
7987 {
7988 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7989 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
7990 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007991 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007992 if (pNext_size)
7993 {
7994 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08007995 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007996 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007997}
7998
7999#endif
8000#ifdef VK_NV_external_memory_win32
8001void deepcopy_VkImportMemoryWin32HandleInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008002 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008003 const VkImportMemoryWin32HandleInfoNV* from,
8004 VkImportMemoryWin32HandleInfoNV* to)
8005{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008006 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008007 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008008 const void* from_pNext = from;
8009 size_t pNext_size = 0u;
8010 while (!pNext_size && from_pNext)
8011 {
8012 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8013 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8014 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008015 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008016 if (pNext_size)
8017 {
8018 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008019 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008020 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008021}
8022
8023void deepcopy_VkExportMemoryWin32HandleInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008024 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008025 const VkExportMemoryWin32HandleInfoNV* from,
8026 VkExportMemoryWin32HandleInfoNV* to)
8027{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008028 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008029 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008030 const void* from_pNext = from;
8031 size_t pNext_size = 0u;
8032 while (!pNext_size && from_pNext)
8033 {
8034 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8035 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8036 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008037 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008038 if (pNext_size)
8039 {
8040 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008041 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008042 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008043 to->pAttributes = nullptr;
8044 if (from->pAttributes)
8045 {
8046 to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
8047 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008048}
8049
8050#endif
8051#ifdef VK_NV_win32_keyed_mutex
8052void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008053 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008054 const VkWin32KeyedMutexAcquireReleaseInfoNV* from,
8055 VkWin32KeyedMutexAcquireReleaseInfoNV* to)
8056{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008057 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008058 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008059 const void* from_pNext = from;
8060 size_t pNext_size = 0u;
8061 while (!pNext_size && from_pNext)
8062 {
8063 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8064 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8065 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008066 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008067 if (pNext_size)
8068 {
8069 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008070 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008071 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008072 to->pAcquireSyncs = nullptr;
8073 if (from->pAcquireSyncs)
8074 {
8075 to->pAcquireSyncs = (VkDeviceMemory*)pool->dupArray(from->pAcquireSyncs, from->acquireCount * sizeof(const VkDeviceMemory));
8076 }
8077 to->pAcquireKeys = nullptr;
8078 if (from->pAcquireKeys)
8079 {
8080 to->pAcquireKeys = (uint64_t*)pool->dupArray(from->pAcquireKeys, from->acquireCount * sizeof(const uint64_t));
8081 }
8082 to->pAcquireTimeoutMilliseconds = nullptr;
8083 if (from->pAcquireTimeoutMilliseconds)
8084 {
8085 to->pAcquireTimeoutMilliseconds = (uint32_t*)pool->dupArray(from->pAcquireTimeoutMilliseconds, from->acquireCount * sizeof(const uint32_t));
8086 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008087 to->pReleaseSyncs = nullptr;
8088 if (from->pReleaseSyncs)
8089 {
8090 to->pReleaseSyncs = (VkDeviceMemory*)pool->dupArray(from->pReleaseSyncs, from->releaseCount * sizeof(const VkDeviceMemory));
8091 }
8092 to->pReleaseKeys = nullptr;
8093 if (from->pReleaseKeys)
8094 {
8095 to->pReleaseKeys = (uint64_t*)pool->dupArray(from->pReleaseKeys, from->releaseCount * sizeof(const uint64_t));
8096 }
8097}
8098
8099#endif
8100#ifdef VK_EXT_validation_flags
8101void deepcopy_VkValidationFlagsEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008102 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008103 const VkValidationFlagsEXT* from,
8104 VkValidationFlagsEXT* to)
8105{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008106 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008107 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008108 const void* from_pNext = from;
8109 size_t pNext_size = 0u;
8110 while (!pNext_size && from_pNext)
8111 {
8112 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8113 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8114 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008115 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008116 if (pNext_size)
8117 {
8118 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008119 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008120 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008121 to->pDisabledValidationChecks = nullptr;
8122 if (from->pDisabledValidationChecks)
8123 {
8124 to->pDisabledValidationChecks = (VkValidationCheckEXT*)pool->dupArray(from->pDisabledValidationChecks, from->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT));
8125 }
8126}
8127
8128#endif
8129#ifdef VK_NN_vi_surface
8130void deepcopy_VkViSurfaceCreateInfoNN(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008131 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008132 const VkViSurfaceCreateInfoNN* from,
8133 VkViSurfaceCreateInfoNN* to)
8134{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008135 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008136 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008137 const void* from_pNext = from;
8138 size_t pNext_size = 0u;
8139 while (!pNext_size && from_pNext)
8140 {
8141 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8142 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8143 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008144 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008145 if (pNext_size)
8146 {
8147 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008148 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008149 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008150 to->window = nullptr;
8151 if (from->window)
8152 {
8153 to->window = (void*)pool->dupArray(from->window, sizeof(uint8_t));
8154 }
8155}
8156
8157#endif
8158#ifdef VK_EXT_shader_subgroup_ballot
8159#endif
8160#ifdef VK_EXT_shader_subgroup_vote
8161#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008162#ifdef VK_EXT_texture_compression_astc_hdr
8163void deepcopy_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
8164 BumpPool* pool,
8165 const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* from,
8166 VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* to)
8167{
8168 (void)pool;
8169 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008170 const void* from_pNext = from;
8171 size_t pNext_size = 0u;
8172 while (!pNext_size && from_pNext)
8173 {
8174 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8175 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8176 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008177 to->pNext = nullptr;
8178 if (pNext_size)
8179 {
8180 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008181 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008182 }
8183}
8184
8185#endif
8186#ifdef VK_EXT_astc_decode_mode
8187void deepcopy_VkImageViewASTCDecodeModeEXT(
8188 BumpPool* pool,
8189 const VkImageViewASTCDecodeModeEXT* from,
8190 VkImageViewASTCDecodeModeEXT* to)
8191{
8192 (void)pool;
8193 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008194 const void* from_pNext = from;
8195 size_t pNext_size = 0u;
8196 while (!pNext_size && from_pNext)
8197 {
8198 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8199 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8200 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008201 to->pNext = nullptr;
8202 if (pNext_size)
8203 {
8204 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008205 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008206 }
8207}
8208
8209void deepcopy_VkPhysicalDeviceASTCDecodeFeaturesEXT(
8210 BumpPool* pool,
8211 const VkPhysicalDeviceASTCDecodeFeaturesEXT* from,
8212 VkPhysicalDeviceASTCDecodeFeaturesEXT* to)
8213{
8214 (void)pool;
8215 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008216 const void* from_pNext = from;
8217 size_t pNext_size = 0u;
8218 while (!pNext_size && from_pNext)
8219 {
8220 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8221 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8222 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008223 to->pNext = nullptr;
8224 if (pNext_size)
8225 {
8226 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008227 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008228 }
8229}
8230
8231#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008232#ifdef VK_EXT_conditional_rendering
8233void deepcopy_VkConditionalRenderingBeginInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008234 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008235 const VkConditionalRenderingBeginInfoEXT* from,
8236 VkConditionalRenderingBeginInfoEXT* to)
8237{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008238 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008239 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008240 const void* from_pNext = from;
8241 size_t pNext_size = 0u;
8242 while (!pNext_size && from_pNext)
8243 {
8244 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8245 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8246 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008247 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008248 if (pNext_size)
8249 {
8250 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008251 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008252 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008253}
8254
8255void deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008256 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008257 const VkPhysicalDeviceConditionalRenderingFeaturesEXT* from,
8258 VkPhysicalDeviceConditionalRenderingFeaturesEXT* to)
8259{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008260 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008261 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008262 const void* from_pNext = from;
8263 size_t pNext_size = 0u;
8264 while (!pNext_size && from_pNext)
8265 {
8266 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8267 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8268 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008269 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008270 if (pNext_size)
8271 {
8272 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008273 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008275}
8276
8277void deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008278 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008279 const VkCommandBufferInheritanceConditionalRenderingInfoEXT* from,
8280 VkCommandBufferInheritanceConditionalRenderingInfoEXT* to)
8281{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008282 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008283 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008284 const void* from_pNext = from;
8285 size_t pNext_size = 0u;
8286 while (!pNext_size && from_pNext)
8287 {
8288 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8289 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8290 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008291 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008292 if (pNext_size)
8293 {
8294 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008295 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008296 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008297}
8298
8299#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008300#ifdef VK_NV_clip_space_w_scaling
8301void deepcopy_VkViewportWScalingNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008302 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008303 const VkViewportWScalingNV* from,
8304 VkViewportWScalingNV* to)
8305{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008306 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008307 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008308}
8309
8310void deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008311 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008312 const VkPipelineViewportWScalingStateCreateInfoNV* from,
8313 VkPipelineViewportWScalingStateCreateInfoNV* to)
8314{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008315 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008316 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008317 const void* from_pNext = from;
8318 size_t pNext_size = 0u;
8319 while (!pNext_size && from_pNext)
8320 {
8321 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8322 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8323 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008324 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008325 if (pNext_size)
8326 {
8327 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008328 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008329 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008330 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008331 {
Yilong Libd10ec92021-02-10 13:24:27 -08008332 to->pViewportWScalings = nullptr;
8333 if (from->pViewportWScalings)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008334 {
Yilong Libd10ec92021-02-10 13:24:27 -08008335 to->pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(from->viewportCount * sizeof(const VkViewportWScalingNV));
8336 to->viewportCount = from->viewportCount;
8337 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
8338 {
8339 deepcopy_VkViewportWScalingNV(pool, from->pViewportWScalings + i, (VkViewportWScalingNV*)(to->pViewportWScalings + i));
8340 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008341 }
8342 }
8343}
8344
8345#endif
8346#ifdef VK_EXT_direct_mode_display
8347#endif
8348#ifdef VK_EXT_acquire_xlib_display
8349#endif
8350#ifdef VK_EXT_display_surface_counter
8351void deepcopy_VkSurfaceCapabilities2EXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008352 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008353 const VkSurfaceCapabilities2EXT* from,
8354 VkSurfaceCapabilities2EXT* to)
8355{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008356 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008357 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008358 const void* from_pNext = from;
8359 size_t pNext_size = 0u;
8360 while (!pNext_size && from_pNext)
8361 {
8362 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8363 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8364 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008365 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008366 if (pNext_size)
8367 {
8368 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008369 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008370 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008371 deepcopy_VkExtent2D(pool, &from->currentExtent, (VkExtent2D*)(&to->currentExtent));
8372 deepcopy_VkExtent2D(pool, &from->minImageExtent, (VkExtent2D*)(&to->minImageExtent));
8373 deepcopy_VkExtent2D(pool, &from->maxImageExtent, (VkExtent2D*)(&to->maxImageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008374}
8375
8376#endif
8377#ifdef VK_EXT_display_control
8378void deepcopy_VkDisplayPowerInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008379 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008380 const VkDisplayPowerInfoEXT* from,
8381 VkDisplayPowerInfoEXT* to)
8382{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008383 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008384 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008385 const void* from_pNext = from;
8386 size_t pNext_size = 0u;
8387 while (!pNext_size && from_pNext)
8388 {
8389 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8390 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8391 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008392 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008393 if (pNext_size)
8394 {
8395 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008396 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008397 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398}
8399
8400void deepcopy_VkDeviceEventInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008401 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008402 const VkDeviceEventInfoEXT* from,
8403 VkDeviceEventInfoEXT* to)
8404{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008405 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008406 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008407 const void* from_pNext = from;
8408 size_t pNext_size = 0u;
8409 while (!pNext_size && from_pNext)
8410 {
8411 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8412 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8413 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008414 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008415 if (pNext_size)
8416 {
8417 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008418 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008420}
8421
8422void deepcopy_VkDisplayEventInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008423 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008424 const VkDisplayEventInfoEXT* from,
8425 VkDisplayEventInfoEXT* to)
8426{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008427 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008428 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008429 const void* from_pNext = from;
8430 size_t pNext_size = 0u;
8431 while (!pNext_size && from_pNext)
8432 {
8433 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8434 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8435 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008436 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008437 if (pNext_size)
8438 {
8439 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008440 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008441 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008442}
8443
8444void deepcopy_VkSwapchainCounterCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008445 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008446 const VkSwapchainCounterCreateInfoEXT* from,
8447 VkSwapchainCounterCreateInfoEXT* to)
8448{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008449 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008450 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008451 const void* from_pNext = from;
8452 size_t pNext_size = 0u;
8453 while (!pNext_size && from_pNext)
8454 {
8455 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8456 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8457 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008458 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008459 if (pNext_size)
8460 {
8461 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008462 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008463 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008464}
8465
8466#endif
8467#ifdef VK_GOOGLE_display_timing
8468void deepcopy_VkRefreshCycleDurationGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008469 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008470 const VkRefreshCycleDurationGOOGLE* from,
8471 VkRefreshCycleDurationGOOGLE* to)
8472{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008473 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008474 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008475}
8476
8477void deepcopy_VkPastPresentationTimingGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008478 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008479 const VkPastPresentationTimingGOOGLE* from,
8480 VkPastPresentationTimingGOOGLE* to)
8481{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008482 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008483 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008484}
8485
8486void deepcopy_VkPresentTimeGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008487 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008488 const VkPresentTimeGOOGLE* from,
8489 VkPresentTimeGOOGLE* to)
8490{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008491 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008492 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008493}
8494
8495void deepcopy_VkPresentTimesInfoGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008496 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008497 const VkPresentTimesInfoGOOGLE* from,
8498 VkPresentTimesInfoGOOGLE* to)
8499{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008500 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008501 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008502 const void* from_pNext = from;
8503 size_t pNext_size = 0u;
8504 while (!pNext_size && from_pNext)
8505 {
8506 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8507 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8508 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008509 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008510 if (pNext_size)
8511 {
8512 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008513 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008514 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008515 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008516 {
Yilong Libd10ec92021-02-10 13:24:27 -08008517 to->pTimes = nullptr;
8518 if (from->pTimes)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008519 {
Yilong Libd10ec92021-02-10 13:24:27 -08008520 to->pTimes = (VkPresentTimeGOOGLE*)pool->alloc(from->swapchainCount * sizeof(const VkPresentTimeGOOGLE));
8521 to->swapchainCount = from->swapchainCount;
8522 for (uint32_t i = 0; i < (uint32_t)from->swapchainCount; ++i)
8523 {
8524 deepcopy_VkPresentTimeGOOGLE(pool, from->pTimes + i, (VkPresentTimeGOOGLE*)(to->pTimes + i));
8525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008526 }
8527 }
8528}
8529
8530#endif
8531#ifdef VK_NV_sample_mask_override_coverage
8532#endif
8533#ifdef VK_NV_geometry_shader_passthrough
8534#endif
8535#ifdef VK_NV_viewport_array2
8536#endif
8537#ifdef VK_NVX_multiview_per_view_attributes
8538void deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008539 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008540 const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* from,
8541 VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* to)
8542{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008543 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008544 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008545 const void* from_pNext = from;
8546 size_t pNext_size = 0u;
8547 while (!pNext_size && from_pNext)
8548 {
8549 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8550 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8551 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008552 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008553 if (pNext_size)
8554 {
8555 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008556 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008557 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008558}
8559
8560#endif
8561#ifdef VK_NV_viewport_swizzle
8562void deepcopy_VkViewportSwizzleNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008563 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008564 const VkViewportSwizzleNV* from,
8565 VkViewportSwizzleNV* to)
8566{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008567 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008568 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008569}
8570
8571void deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008572 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008573 const VkPipelineViewportSwizzleStateCreateInfoNV* from,
8574 VkPipelineViewportSwizzleStateCreateInfoNV* to)
8575{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008576 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008577 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008578 const void* from_pNext = from;
8579 size_t pNext_size = 0u;
8580 while (!pNext_size && from_pNext)
8581 {
8582 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8583 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8584 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008585 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008586 if (pNext_size)
8587 {
8588 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008589 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008590 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008591 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008592 {
Yilong Libd10ec92021-02-10 13:24:27 -08008593 to->pViewportSwizzles = nullptr;
8594 if (from->pViewportSwizzles)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008595 {
Yilong Libd10ec92021-02-10 13:24:27 -08008596 to->pViewportSwizzles = (VkViewportSwizzleNV*)pool->alloc(from->viewportCount * sizeof(const VkViewportSwizzleNV));
8597 to->viewportCount = from->viewportCount;
8598 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
8599 {
8600 deepcopy_VkViewportSwizzleNV(pool, from->pViewportSwizzles + i, (VkViewportSwizzleNV*)(to->pViewportSwizzles + i));
8601 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008602 }
8603 }
8604}
8605
8606#endif
8607#ifdef VK_EXT_discard_rectangles
8608void deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008609 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008610 const VkPhysicalDeviceDiscardRectanglePropertiesEXT* from,
8611 VkPhysicalDeviceDiscardRectanglePropertiesEXT* to)
8612{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008613 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008614 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008615 const void* from_pNext = from;
8616 size_t pNext_size = 0u;
8617 while (!pNext_size && from_pNext)
8618 {
8619 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8620 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8621 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008622 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008623 if (pNext_size)
8624 {
8625 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008626 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008627 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008628}
8629
8630void deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008631 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008632 const VkPipelineDiscardRectangleStateCreateInfoEXT* from,
8633 VkPipelineDiscardRectangleStateCreateInfoEXT* to)
8634{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008635 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008636 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008637 const void* from_pNext = from;
8638 size_t pNext_size = 0u;
8639 while (!pNext_size && from_pNext)
8640 {
8641 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8642 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8643 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008644 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008645 if (pNext_size)
8646 {
8647 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008648 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008649 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008650 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008651 {
Yilong Libd10ec92021-02-10 13:24:27 -08008652 to->pDiscardRectangles = nullptr;
8653 if (from->pDiscardRectangles)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008654 {
Yilong Libd10ec92021-02-10 13:24:27 -08008655 to->pDiscardRectangles = (VkRect2D*)pool->alloc(from->discardRectangleCount * sizeof(const VkRect2D));
8656 to->discardRectangleCount = from->discardRectangleCount;
8657 for (uint32_t i = 0; i < (uint32_t)from->discardRectangleCount; ++i)
8658 {
8659 deepcopy_VkRect2D(pool, from->pDiscardRectangles + i, (VkRect2D*)(to->pDiscardRectangles + i));
8660 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008661 }
8662 }
8663}
8664
8665#endif
8666#ifdef VK_EXT_conservative_rasterization
8667void deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008668 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008669 const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* from,
8670 VkPhysicalDeviceConservativeRasterizationPropertiesEXT* to)
8671{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008672 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008673 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008674 const void* from_pNext = from;
8675 size_t pNext_size = 0u;
8676 while (!pNext_size && from_pNext)
8677 {
8678 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8679 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8680 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008681 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008682 if (pNext_size)
8683 {
8684 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008685 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008686 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008687}
8688
8689void deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008690 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008691 const VkPipelineRasterizationConservativeStateCreateInfoEXT* from,
8692 VkPipelineRasterizationConservativeStateCreateInfoEXT* to)
8693{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008694 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008695 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008696 const void* from_pNext = from;
8697 size_t pNext_size = 0u;
8698 while (!pNext_size && from_pNext)
8699 {
8700 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8701 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8702 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008703 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008704 if (pNext_size)
8705 {
8706 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008707 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008708 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008709}
8710
8711#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008712#ifdef VK_EXT_depth_clip_enable
8713void deepcopy_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
8714 BumpPool* pool,
8715 const VkPhysicalDeviceDepthClipEnableFeaturesEXT* from,
8716 VkPhysicalDeviceDepthClipEnableFeaturesEXT* to)
8717{
8718 (void)pool;
8719 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008720 const void* from_pNext = from;
8721 size_t pNext_size = 0u;
8722 while (!pNext_size && from_pNext)
8723 {
8724 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8725 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8726 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008727 to->pNext = nullptr;
8728 if (pNext_size)
8729 {
8730 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008731 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008732 }
8733}
8734
8735void deepcopy_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
8736 BumpPool* pool,
8737 const VkPipelineRasterizationDepthClipStateCreateInfoEXT* from,
8738 VkPipelineRasterizationDepthClipStateCreateInfoEXT* to)
8739{
8740 (void)pool;
8741 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008742 const void* from_pNext = from;
8743 size_t pNext_size = 0u;
8744 while (!pNext_size && from_pNext)
8745 {
8746 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8747 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8748 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008749 to->pNext = nullptr;
8750 if (pNext_size)
8751 {
8752 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008753 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008754 }
8755}
8756
8757#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008758#ifdef VK_EXT_swapchain_colorspace
8759#endif
8760#ifdef VK_EXT_hdr_metadata
8761void deepcopy_VkXYColorEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008762 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008763 const VkXYColorEXT* from,
8764 VkXYColorEXT* to)
8765{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008766 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008767 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008768}
8769
8770void deepcopy_VkHdrMetadataEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008771 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008772 const VkHdrMetadataEXT* from,
8773 VkHdrMetadataEXT* to)
8774{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008775 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008776 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008777 const void* from_pNext = from;
8778 size_t pNext_size = 0u;
8779 while (!pNext_size && from_pNext)
8780 {
8781 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8782 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8783 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008784 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008785 if (pNext_size)
8786 {
8787 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008788 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008789 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008790 deepcopy_VkXYColorEXT(pool, &from->displayPrimaryRed, (VkXYColorEXT*)(&to->displayPrimaryRed));
8791 deepcopy_VkXYColorEXT(pool, &from->displayPrimaryGreen, (VkXYColorEXT*)(&to->displayPrimaryGreen));
8792 deepcopy_VkXYColorEXT(pool, &from->displayPrimaryBlue, (VkXYColorEXT*)(&to->displayPrimaryBlue));
8793 deepcopy_VkXYColorEXT(pool, &from->whitePoint, (VkXYColorEXT*)(&to->whitePoint));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008794}
8795
8796#endif
8797#ifdef VK_MVK_ios_surface
8798void deepcopy_VkIOSSurfaceCreateInfoMVK(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008799 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008800 const VkIOSSurfaceCreateInfoMVK* from,
8801 VkIOSSurfaceCreateInfoMVK* to)
8802{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008803 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008804 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008805 const void* from_pNext = from;
8806 size_t pNext_size = 0u;
8807 while (!pNext_size && from_pNext)
8808 {
8809 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8810 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8811 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008812 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008813 if (pNext_size)
8814 {
8815 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008816 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008817 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008818 to->pView = nullptr;
8819 if (from->pView)
8820 {
8821 to->pView = (void*)pool->dupArray(from->pView, sizeof(const uint8_t));
8822 }
8823}
8824
8825#endif
8826#ifdef VK_MVK_macos_surface
8827void deepcopy_VkMacOSSurfaceCreateInfoMVK(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008828 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008829 const VkMacOSSurfaceCreateInfoMVK* from,
8830 VkMacOSSurfaceCreateInfoMVK* to)
8831{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008832 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008833 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008834 const void* from_pNext = from;
8835 size_t pNext_size = 0u;
8836 while (!pNext_size && from_pNext)
8837 {
8838 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8839 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8840 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008841 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008842 if (pNext_size)
8843 {
8844 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008845 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008846 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008847 to->pView = nullptr;
8848 if (from->pView)
8849 {
8850 to->pView = (void*)pool->dupArray(from->pView, sizeof(const uint8_t));
8851 }
8852}
8853
8854#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008855#ifdef VK_MVK_moltenvk
8856#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008857#ifdef VK_EXT_external_memory_dma_buf
8858#endif
8859#ifdef VK_EXT_queue_family_foreign
8860#endif
8861#ifdef VK_EXT_debug_utils
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008862void deepcopy_VkDebugUtilsLabelEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008863 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008864 const VkDebugUtilsLabelEXT* from,
8865 VkDebugUtilsLabelEXT* to)
8866{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008867 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008868 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008869 const void* from_pNext = from;
8870 size_t pNext_size = 0u;
8871 while (!pNext_size && from_pNext)
8872 {
8873 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8874 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8875 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008876 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008877 if (pNext_size)
8878 {
8879 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008880 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008881 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008882 to->pLabelName = nullptr;
8883 if (from->pLabelName)
8884 {
8885 to->pLabelName = pool->strDup(from->pLabelName);
8886 }
8887 memcpy(to->color, from->color, 4 * sizeof(float));
8888}
8889
Yilong Lia8d45f12021-02-07 02:30:21 -08008890void deepcopy_VkDebugUtilsObjectNameInfoEXT(
8891 BumpPool* pool,
8892 const VkDebugUtilsObjectNameInfoEXT* from,
8893 VkDebugUtilsObjectNameInfoEXT* to)
8894{
8895 (void)pool;
8896 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008897 const void* from_pNext = from;
8898 size_t pNext_size = 0u;
8899 while (!pNext_size && from_pNext)
8900 {
8901 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8902 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8903 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008904 to->pNext = nullptr;
8905 if (pNext_size)
8906 {
8907 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008908 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008909 }
8910 to->pObjectName = nullptr;
8911 if (from->pObjectName)
8912 {
8913 to->pObjectName = pool->strDup(from->pObjectName);
8914 }
8915}
8916
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008917void deepcopy_VkDebugUtilsMessengerCallbackDataEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008918 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008919 const VkDebugUtilsMessengerCallbackDataEXT* from,
8920 VkDebugUtilsMessengerCallbackDataEXT* to)
8921{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008922 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008923 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008924 const void* from_pNext = from;
8925 size_t pNext_size = 0u;
8926 while (!pNext_size && from_pNext)
8927 {
8928 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
8929 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
8930 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008931 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008932 if (pNext_size)
8933 {
8934 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08008935 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008936 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008937 to->pMessageIdName = nullptr;
8938 if (from->pMessageIdName)
8939 {
8940 to->pMessageIdName = pool->strDup(from->pMessageIdName);
8941 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008942 to->pMessage = nullptr;
8943 if (from->pMessage)
8944 {
8945 to->pMessage = pool->strDup(from->pMessage);
8946 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008947 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008948 {
Yilong Libd10ec92021-02-10 13:24:27 -08008949 to->pQueueLabels = nullptr;
8950 if (from->pQueueLabels)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008951 {
Yilong Libd10ec92021-02-10 13:24:27 -08008952 to->pQueueLabels = (VkDebugUtilsLabelEXT*)pool->alloc(from->queueLabelCount * sizeof(VkDebugUtilsLabelEXT));
8953 to->queueLabelCount = from->queueLabelCount;
8954 for (uint32_t i = 0; i < (uint32_t)from->queueLabelCount; ++i)
8955 {
8956 deepcopy_VkDebugUtilsLabelEXT(pool, from->pQueueLabels + i, (VkDebugUtilsLabelEXT*)(to->pQueueLabels + i));
8957 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008958 }
8959 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008960 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008961 {
Yilong Libd10ec92021-02-10 13:24:27 -08008962 to->pCmdBufLabels = nullptr;
8963 if (from->pCmdBufLabels)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008964 {
Yilong Libd10ec92021-02-10 13:24:27 -08008965 to->pCmdBufLabels = (VkDebugUtilsLabelEXT*)pool->alloc(from->cmdBufLabelCount * sizeof(VkDebugUtilsLabelEXT));
8966 to->cmdBufLabelCount = from->cmdBufLabelCount;
8967 for (uint32_t i = 0; i < (uint32_t)from->cmdBufLabelCount; ++i)
8968 {
8969 deepcopy_VkDebugUtilsLabelEXT(pool, from->pCmdBufLabels + i, (VkDebugUtilsLabelEXT*)(to->pCmdBufLabels + i));
8970 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008971 }
8972 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008973 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008974 {
Yilong Libd10ec92021-02-10 13:24:27 -08008975 to->pObjects = nullptr;
8976 if (from->pObjects)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008977 {
Yilong Libd10ec92021-02-10 13:24:27 -08008978 to->pObjects = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(from->objectCount * sizeof(VkDebugUtilsObjectNameInfoEXT));
8979 to->objectCount = from->objectCount;
8980 for (uint32_t i = 0; i < (uint32_t)from->objectCount; ++i)
8981 {
8982 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, from->pObjects + i, (VkDebugUtilsObjectNameInfoEXT*)(to->pObjects + i));
8983 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008984 }
8985 }
8986}
8987
8988void deepcopy_VkDebugUtilsMessengerCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07008989 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008990 const VkDebugUtilsMessengerCreateInfoEXT* from,
8991 VkDebugUtilsMessengerCreateInfoEXT* to)
8992{
Lingfeng Yang36891c52018-11-09 14:18:35 -08008993 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008994 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08008995 const void* from_pNext = from;
8996 size_t pNext_size = 0u;
8997 while (!pNext_size && from_pNext)
8998 {
8999 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9000 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9001 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009002 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009003 if (pNext_size)
9004 {
9005 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009006 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009007 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009008 to->pUserData = nullptr;
9009 if (from->pUserData)
9010 {
9011 to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
9012 }
9013}
9014
Yilong Lia8d45f12021-02-07 02:30:21 -08009015void deepcopy_VkDebugUtilsObjectTagInfoEXT(
9016 BumpPool* pool,
9017 const VkDebugUtilsObjectTagInfoEXT* from,
9018 VkDebugUtilsObjectTagInfoEXT* to)
9019{
9020 (void)pool;
9021 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009022 const void* from_pNext = from;
9023 size_t pNext_size = 0u;
9024 while (!pNext_size && from_pNext)
9025 {
9026 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9027 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9028 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009029 to->pNext = nullptr;
9030 if (pNext_size)
9031 {
9032 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009033 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009034 }
9035 to->pTag = nullptr;
9036 if (from->pTag)
9037 {
9038 to->pTag = (void*)pool->dupArray(from->pTag, from->tagSize * sizeof(const uint8_t));
9039 }
9040}
9041
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009042#endif
9043#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9044void deepcopy_VkAndroidHardwareBufferUsageANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009045 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009046 const VkAndroidHardwareBufferUsageANDROID* from,
9047 VkAndroidHardwareBufferUsageANDROID* to)
9048{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009049 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009050 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009051 const void* from_pNext = from;
9052 size_t pNext_size = 0u;
9053 while (!pNext_size && from_pNext)
9054 {
9055 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9056 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9057 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009058 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009059 if (pNext_size)
9060 {
9061 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009062 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009063 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009064}
9065
9066void deepcopy_VkAndroidHardwareBufferPropertiesANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009067 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009068 const VkAndroidHardwareBufferPropertiesANDROID* from,
9069 VkAndroidHardwareBufferPropertiesANDROID* to)
9070{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009071 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009072 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009073 const void* from_pNext = from;
9074 size_t pNext_size = 0u;
9075 while (!pNext_size && from_pNext)
9076 {
9077 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9078 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9079 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009080 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009081 if (pNext_size)
9082 {
9083 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009084 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009085 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009086}
9087
9088void deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009089 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009090 const VkAndroidHardwareBufferFormatPropertiesANDROID* from,
9091 VkAndroidHardwareBufferFormatPropertiesANDROID* to)
9092{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009093 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009094 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009095 const void* from_pNext = from;
9096 size_t pNext_size = 0u;
9097 while (!pNext_size && from_pNext)
9098 {
9099 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9100 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9101 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009102 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009103 if (pNext_size)
9104 {
9105 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009106 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009107 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009108 deepcopy_VkComponentMapping(pool, &from->samplerYcbcrConversionComponents, (VkComponentMapping*)(&to->samplerYcbcrConversionComponents));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009109}
9110
9111void deepcopy_VkImportAndroidHardwareBufferInfoANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009112 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009113 const VkImportAndroidHardwareBufferInfoANDROID* from,
9114 VkImportAndroidHardwareBufferInfoANDROID* to)
9115{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009116 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009117 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009118 const void* from_pNext = from;
9119 size_t pNext_size = 0u;
9120 while (!pNext_size && from_pNext)
9121 {
9122 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9123 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9124 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009125 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009126 if (pNext_size)
9127 {
9128 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009129 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009130 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009131 to->buffer = nullptr;
9132 if (from->buffer)
9133 {
9134 to->buffer = (AHardwareBuffer*)pool->dupArray(from->buffer, sizeof(AHardwareBuffer));
9135 }
9136}
9137
9138void deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009139 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009140 const VkMemoryGetAndroidHardwareBufferInfoANDROID* from,
9141 VkMemoryGetAndroidHardwareBufferInfoANDROID* to)
9142{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009143 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009144 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009145 const void* from_pNext = from;
9146 size_t pNext_size = 0u;
9147 while (!pNext_size && from_pNext)
9148 {
9149 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9150 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9151 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009152 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009153 if (pNext_size)
9154 {
9155 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009156 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009157 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009158}
9159
9160void deepcopy_VkExternalFormatANDROID(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009161 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009162 const VkExternalFormatANDROID* from,
9163 VkExternalFormatANDROID* to)
9164{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009165 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009166 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009167 const void* from_pNext = from;
9168 size_t pNext_size = 0u;
9169 while (!pNext_size && from_pNext)
9170 {
9171 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9172 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9173 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009174 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009175 if (pNext_size)
9176 {
9177 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009178 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009179 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009180}
9181
9182#endif
9183#ifdef VK_EXT_sampler_filter_minmax
Yilong Lia8d45f12021-02-07 02:30:21 -08009184#endif
9185#ifdef VK_AMD_gpu_shader_int16
9186#endif
9187#ifdef VK_AMD_mixed_attachment_samples
9188#endif
9189#ifdef VK_AMD_shader_fragment_mask
9190#endif
9191#ifdef VK_EXT_inline_uniform_block
9192void deepcopy_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009193 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08009194 const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* from,
9195 VkPhysicalDeviceInlineUniformBlockFeaturesEXT* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009196{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009197 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009198 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009199 const void* from_pNext = from;
9200 size_t pNext_size = 0u;
9201 while (!pNext_size && from_pNext)
9202 {
9203 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9204 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9205 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009206 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009207 if (pNext_size)
9208 {
9209 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009210 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009211 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009212}
9213
Yilong Lia8d45f12021-02-07 02:30:21 -08009214void deepcopy_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
9215 BumpPool* pool,
9216 const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* from,
9217 VkPhysicalDeviceInlineUniformBlockPropertiesEXT* to)
9218{
9219 (void)pool;
9220 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009221 const void* from_pNext = from;
9222 size_t pNext_size = 0u;
9223 while (!pNext_size && from_pNext)
9224 {
9225 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9226 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9227 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009228 to->pNext = nullptr;
9229 if (pNext_size)
9230 {
9231 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009232 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009233 }
9234}
9235
9236void deepcopy_VkWriteDescriptorSetInlineUniformBlockEXT(
9237 BumpPool* pool,
9238 const VkWriteDescriptorSetInlineUniformBlockEXT* from,
9239 VkWriteDescriptorSetInlineUniformBlockEXT* to)
9240{
9241 (void)pool;
9242 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009243 const void* from_pNext = from;
9244 size_t pNext_size = 0u;
9245 while (!pNext_size && from_pNext)
9246 {
9247 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9248 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9249 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009250 to->pNext = nullptr;
9251 if (pNext_size)
9252 {
9253 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009254 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009255 }
9256 to->pData = nullptr;
9257 if (from->pData)
9258 {
9259 to->pData = (void*)pool->dupArray(from->pData, from->dataSize * sizeof(const uint8_t));
9260 }
9261}
9262
9263void deepcopy_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
9264 BumpPool* pool,
9265 const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* from,
9266 VkDescriptorPoolInlineUniformBlockCreateInfoEXT* to)
9267{
9268 (void)pool;
9269 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009270 const void* from_pNext = from;
9271 size_t pNext_size = 0u;
9272 while (!pNext_size && from_pNext)
9273 {
9274 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9275 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9276 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009277 to->pNext = nullptr;
9278 if (pNext_size)
9279 {
9280 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009281 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009282 }
9283}
9284
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009285#endif
9286#ifdef VK_EXT_shader_stencil_export
9287#endif
9288#ifdef VK_EXT_sample_locations
9289void deepcopy_VkSampleLocationEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009290 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009291 const VkSampleLocationEXT* from,
9292 VkSampleLocationEXT* to)
9293{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009294 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009295 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009296}
9297
9298void deepcopy_VkSampleLocationsInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009299 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009300 const VkSampleLocationsInfoEXT* from,
9301 VkSampleLocationsInfoEXT* to)
9302{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009303 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009304 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009305 const void* from_pNext = from;
9306 size_t pNext_size = 0u;
9307 while (!pNext_size && from_pNext)
9308 {
9309 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9310 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9311 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009312 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009313 if (pNext_size)
9314 {
9315 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009316 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009317 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009318 deepcopy_VkExtent2D(pool, &from->sampleLocationGridSize, (VkExtent2D*)(&to->sampleLocationGridSize));
Lingfeng Yang55676e02021-02-08 08:39:45 -08009319 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009320 {
Yilong Libd10ec92021-02-10 13:24:27 -08009321 to->pSampleLocations = nullptr;
9322 if (from->pSampleLocations)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009323 {
Yilong Libd10ec92021-02-10 13:24:27 -08009324 to->pSampleLocations = (VkSampleLocationEXT*)pool->alloc(from->sampleLocationsCount * sizeof(const VkSampleLocationEXT));
9325 to->sampleLocationsCount = from->sampleLocationsCount;
9326 for (uint32_t i = 0; i < (uint32_t)from->sampleLocationsCount; ++i)
9327 {
9328 deepcopy_VkSampleLocationEXT(pool, from->pSampleLocations + i, (VkSampleLocationEXT*)(to->pSampleLocations + i));
9329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009330 }
9331 }
9332}
9333
9334void deepcopy_VkAttachmentSampleLocationsEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009335 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009336 const VkAttachmentSampleLocationsEXT* from,
9337 VkAttachmentSampleLocationsEXT* to)
9338{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009339 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009340 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009341 deepcopy_VkSampleLocationsInfoEXT(pool, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
9342}
9343
9344void deepcopy_VkSubpassSampleLocationsEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009345 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009346 const VkSubpassSampleLocationsEXT* from,
9347 VkSubpassSampleLocationsEXT* to)
9348{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009349 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009350 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009351 deepcopy_VkSampleLocationsInfoEXT(pool, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
9352}
9353
9354void deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009355 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009356 const VkRenderPassSampleLocationsBeginInfoEXT* from,
9357 VkRenderPassSampleLocationsBeginInfoEXT* to)
9358{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009359 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009360 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009361 const void* from_pNext = from;
9362 size_t pNext_size = 0u;
9363 while (!pNext_size && from_pNext)
9364 {
9365 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9366 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9367 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009368 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009369 if (pNext_size)
9370 {
9371 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009372 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009373 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009374 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009375 {
Yilong Libd10ec92021-02-10 13:24:27 -08009376 to->pAttachmentInitialSampleLocations = nullptr;
9377 if (from->pAttachmentInitialSampleLocations)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009378 {
Yilong Libd10ec92021-02-10 13:24:27 -08009379 to->pAttachmentInitialSampleLocations = (VkAttachmentSampleLocationsEXT*)pool->alloc(from->attachmentInitialSampleLocationsCount * sizeof(const VkAttachmentSampleLocationsEXT));
9380 to->attachmentInitialSampleLocationsCount = from->attachmentInitialSampleLocationsCount;
9381 for (uint32_t i = 0; i < (uint32_t)from->attachmentInitialSampleLocationsCount; ++i)
9382 {
9383 deepcopy_VkAttachmentSampleLocationsEXT(pool, from->pAttachmentInitialSampleLocations + i, (VkAttachmentSampleLocationsEXT*)(to->pAttachmentInitialSampleLocations + i));
9384 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009385 }
9386 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009387 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009388 {
Yilong Libd10ec92021-02-10 13:24:27 -08009389 to->pPostSubpassSampleLocations = nullptr;
9390 if (from->pPostSubpassSampleLocations)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009391 {
Yilong Libd10ec92021-02-10 13:24:27 -08009392 to->pPostSubpassSampleLocations = (VkSubpassSampleLocationsEXT*)pool->alloc(from->postSubpassSampleLocationsCount * sizeof(const VkSubpassSampleLocationsEXT));
9393 to->postSubpassSampleLocationsCount = from->postSubpassSampleLocationsCount;
9394 for (uint32_t i = 0; i < (uint32_t)from->postSubpassSampleLocationsCount; ++i)
9395 {
9396 deepcopy_VkSubpassSampleLocationsEXT(pool, from->pPostSubpassSampleLocations + i, (VkSubpassSampleLocationsEXT*)(to->pPostSubpassSampleLocations + i));
9397 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009398 }
9399 }
9400}
9401
9402void deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009403 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009404 const VkPipelineSampleLocationsStateCreateInfoEXT* from,
9405 VkPipelineSampleLocationsStateCreateInfoEXT* to)
9406{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009407 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009408 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009409 const void* from_pNext = from;
9410 size_t pNext_size = 0u;
9411 while (!pNext_size && from_pNext)
9412 {
9413 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9414 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9415 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009416 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009417 if (pNext_size)
9418 {
9419 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009420 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009421 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009422 deepcopy_VkSampleLocationsInfoEXT(pool, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
9423}
9424
9425void deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009426 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009427 const VkPhysicalDeviceSampleLocationsPropertiesEXT* from,
9428 VkPhysicalDeviceSampleLocationsPropertiesEXT* to)
9429{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009430 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009431 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009432 const void* from_pNext = from;
9433 size_t pNext_size = 0u;
9434 while (!pNext_size && from_pNext)
9435 {
9436 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9437 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9438 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009439 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009440 if (pNext_size)
9441 {
9442 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009443 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009444 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009445 deepcopy_VkExtent2D(pool, &from->maxSampleLocationGridSize, (VkExtent2D*)(&to->maxSampleLocationGridSize));
9446 memcpy(to->sampleLocationCoordinateRange, from->sampleLocationCoordinateRange, 2 * sizeof(float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009447}
9448
9449void deepcopy_VkMultisamplePropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009450 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009451 const VkMultisamplePropertiesEXT* from,
9452 VkMultisamplePropertiesEXT* to)
9453{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009454 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009455 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009456 const void* from_pNext = from;
9457 size_t pNext_size = 0u;
9458 while (!pNext_size && from_pNext)
9459 {
9460 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9461 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9462 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009463 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009464 if (pNext_size)
9465 {
9466 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009467 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009468 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009469 deepcopy_VkExtent2D(pool, &from->maxSampleLocationGridSize, (VkExtent2D*)(&to->maxSampleLocationGridSize));
9470}
9471
9472#endif
9473#ifdef VK_EXT_blend_operation_advanced
9474void deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009475 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009476 const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* from,
9477 VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* to)
9478{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009479 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009480 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009481 const void* from_pNext = from;
9482 size_t pNext_size = 0u;
9483 while (!pNext_size && from_pNext)
9484 {
9485 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9486 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9487 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009488 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009489 if (pNext_size)
9490 {
9491 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009492 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009493 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009494}
9495
9496void deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009497 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009498 const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* from,
9499 VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* to)
9500{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009501 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009502 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009503 const void* from_pNext = from;
9504 size_t pNext_size = 0u;
9505 while (!pNext_size && from_pNext)
9506 {
9507 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9508 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9509 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009510 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009511 if (pNext_size)
9512 {
9513 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009514 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009515 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009516}
9517
9518void deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009519 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009520 const VkPipelineColorBlendAdvancedStateCreateInfoEXT* from,
9521 VkPipelineColorBlendAdvancedStateCreateInfoEXT* to)
9522{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009523 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009524 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009525 const void* from_pNext = from;
9526 size_t pNext_size = 0u;
9527 while (!pNext_size && from_pNext)
9528 {
9529 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9530 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9531 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009532 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009533 if (pNext_size)
9534 {
9535 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009536 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009537 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009538}
9539
9540#endif
9541#ifdef VK_NV_fragment_coverage_to_color
9542void deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009543 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009544 const VkPipelineCoverageToColorStateCreateInfoNV* from,
9545 VkPipelineCoverageToColorStateCreateInfoNV* to)
9546{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009547 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009548 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009549 const void* from_pNext = from;
9550 size_t pNext_size = 0u;
9551 while (!pNext_size && from_pNext)
9552 {
9553 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9554 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9555 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009556 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009557 if (pNext_size)
9558 {
9559 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009560 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009561 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009562}
9563
9564#endif
9565#ifdef VK_NV_framebuffer_mixed_samples
9566void deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009567 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009568 const VkPipelineCoverageModulationStateCreateInfoNV* from,
9569 VkPipelineCoverageModulationStateCreateInfoNV* to)
9570{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009571 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009572 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009573 const void* from_pNext = from;
9574 size_t pNext_size = 0u;
9575 while (!pNext_size && from_pNext)
9576 {
9577 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9578 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9579 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009580 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009581 if (pNext_size)
9582 {
9583 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009584 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009585 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009586 to->pCoverageModulationTable = nullptr;
9587 if (from->pCoverageModulationTable)
9588 {
9589 to->pCoverageModulationTable = (float*)pool->dupArray(from->pCoverageModulationTable, from->coverageModulationTableCount * sizeof(const float));
9590 }
9591}
9592
9593#endif
9594#ifdef VK_NV_fill_rectangle
9595#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009596#ifdef VK_NV_shader_sm_builtins
9597void deepcopy_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
9598 BumpPool* pool,
9599 const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* from,
9600 VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* to)
9601{
9602 (void)pool;
9603 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009604 const void* from_pNext = from;
9605 size_t pNext_size = 0u;
9606 while (!pNext_size && from_pNext)
9607 {
9608 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9609 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9610 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009611 to->pNext = nullptr;
9612 if (pNext_size)
9613 {
9614 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009615 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009616 }
9617}
9618
9619void deepcopy_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
9620 BumpPool* pool,
9621 const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* from,
9622 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* to)
9623{
9624 (void)pool;
9625 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009626 const void* from_pNext = from;
9627 size_t pNext_size = 0u;
9628 while (!pNext_size && from_pNext)
9629 {
9630 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9631 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9632 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009633 to->pNext = nullptr;
9634 if (pNext_size)
9635 {
9636 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009637 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009638 }
9639}
9640
9641#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009642#ifdef VK_EXT_post_depth_coverage
9643#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009644#ifdef VK_EXT_image_drm_format_modifier
9645void deepcopy_VkDrmFormatModifierPropertiesEXT(
9646 BumpPool* pool,
9647 const VkDrmFormatModifierPropertiesEXT* from,
9648 VkDrmFormatModifierPropertiesEXT* to)
9649{
9650 (void)pool;
9651 *to = *from;
9652}
9653
9654void deepcopy_VkDrmFormatModifierPropertiesListEXT(
9655 BumpPool* pool,
9656 const VkDrmFormatModifierPropertiesListEXT* from,
9657 VkDrmFormatModifierPropertiesListEXT* to)
9658{
9659 (void)pool;
9660 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009661 const void* from_pNext = from;
9662 size_t pNext_size = 0u;
9663 while (!pNext_size && from_pNext)
9664 {
9665 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9666 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9667 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009668 to->pNext = nullptr;
9669 if (pNext_size)
9670 {
9671 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009672 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009673 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009674 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08009675 {
Yilong Libd10ec92021-02-10 13:24:27 -08009676 to->pDrmFormatModifierProperties = nullptr;
9677 if (from->pDrmFormatModifierProperties)
Yilong Lia8d45f12021-02-07 02:30:21 -08009678 {
Yilong Libd10ec92021-02-10 13:24:27 -08009679 to->pDrmFormatModifierProperties = (VkDrmFormatModifierPropertiesEXT*)pool->alloc(from->drmFormatModifierCount * sizeof(VkDrmFormatModifierPropertiesEXT));
9680 to->drmFormatModifierCount = from->drmFormatModifierCount;
9681 for (uint32_t i = 0; i < (uint32_t)from->drmFormatModifierCount; ++i)
9682 {
9683 deepcopy_VkDrmFormatModifierPropertiesEXT(pool, from->pDrmFormatModifierProperties + i, (VkDrmFormatModifierPropertiesEXT*)(to->pDrmFormatModifierProperties + i));
9684 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009685 }
9686 }
9687}
9688
9689void deepcopy_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
9690 BumpPool* pool,
9691 const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* from,
9692 VkPhysicalDeviceImageDrmFormatModifierInfoEXT* to)
9693{
9694 (void)pool;
9695 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009696 const void* from_pNext = from;
9697 size_t pNext_size = 0u;
9698 while (!pNext_size && from_pNext)
9699 {
9700 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9701 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9702 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009703 to->pNext = nullptr;
9704 if (pNext_size)
9705 {
9706 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009707 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009708 }
9709 to->pQueueFamilyIndices = nullptr;
9710 if (from->pQueueFamilyIndices)
9711 {
9712 to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
9713 }
9714}
9715
9716void deepcopy_VkImageDrmFormatModifierListCreateInfoEXT(
9717 BumpPool* pool,
9718 const VkImageDrmFormatModifierListCreateInfoEXT* from,
9719 VkImageDrmFormatModifierListCreateInfoEXT* to)
9720{
9721 (void)pool;
9722 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009723 const void* from_pNext = from;
9724 size_t pNext_size = 0u;
9725 while (!pNext_size && from_pNext)
9726 {
9727 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9728 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9729 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009730 to->pNext = nullptr;
9731 if (pNext_size)
9732 {
9733 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009734 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009735 }
9736 to->pDrmFormatModifiers = nullptr;
9737 if (from->pDrmFormatModifiers)
9738 {
9739 to->pDrmFormatModifiers = (uint64_t*)pool->dupArray(from->pDrmFormatModifiers, from->drmFormatModifierCount * sizeof(const uint64_t));
9740 }
9741}
9742
9743void deepcopy_VkImageDrmFormatModifierExplicitCreateInfoEXT(
9744 BumpPool* pool,
9745 const VkImageDrmFormatModifierExplicitCreateInfoEXT* from,
9746 VkImageDrmFormatModifierExplicitCreateInfoEXT* to)
9747{
9748 (void)pool;
9749 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009750 const void* from_pNext = from;
9751 size_t pNext_size = 0u;
9752 while (!pNext_size && from_pNext)
9753 {
9754 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9755 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9756 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009757 to->pNext = nullptr;
9758 if (pNext_size)
9759 {
9760 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009761 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009762 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009763 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08009764 {
Yilong Libd10ec92021-02-10 13:24:27 -08009765 to->pPlaneLayouts = nullptr;
9766 if (from->pPlaneLayouts)
Yilong Lia8d45f12021-02-07 02:30:21 -08009767 {
Yilong Libd10ec92021-02-10 13:24:27 -08009768 to->pPlaneLayouts = (VkSubresourceLayout*)pool->alloc(from->drmFormatModifierPlaneCount * sizeof(const VkSubresourceLayout));
9769 to->drmFormatModifierPlaneCount = from->drmFormatModifierPlaneCount;
9770 for (uint32_t i = 0; i < (uint32_t)from->drmFormatModifierPlaneCount; ++i)
9771 {
9772 deepcopy_VkSubresourceLayout(pool, from->pPlaneLayouts + i, (VkSubresourceLayout*)(to->pPlaneLayouts + i));
9773 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009774 }
9775 }
9776}
9777
9778void deepcopy_VkImageDrmFormatModifierPropertiesEXT(
9779 BumpPool* pool,
9780 const VkImageDrmFormatModifierPropertiesEXT* from,
9781 VkImageDrmFormatModifierPropertiesEXT* to)
9782{
9783 (void)pool;
9784 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009785 const void* from_pNext = from;
9786 size_t pNext_size = 0u;
9787 while (!pNext_size && from_pNext)
9788 {
9789 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9790 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9791 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009792 to->pNext = nullptr;
9793 if (pNext_size)
9794 {
9795 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009796 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009797 }
9798}
9799
9800#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009801#ifdef VK_EXT_validation_cache
9802void deepcopy_VkValidationCacheCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009803 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009804 const VkValidationCacheCreateInfoEXT* from,
9805 VkValidationCacheCreateInfoEXT* to)
9806{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009807 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009808 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009809 const void* from_pNext = from;
9810 size_t pNext_size = 0u;
9811 while (!pNext_size && from_pNext)
9812 {
9813 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9814 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9815 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009816 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009817 if (pNext_size)
9818 {
9819 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009820 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009821 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009822 to->pInitialData = nullptr;
9823 if (from->pInitialData)
9824 {
9825 to->pInitialData = (void*)pool->dupArray(from->pInitialData, from->initialDataSize * sizeof(const uint8_t));
9826 }
9827}
9828
9829void deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009830 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009831 const VkShaderModuleValidationCacheCreateInfoEXT* from,
9832 VkShaderModuleValidationCacheCreateInfoEXT* to)
9833{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009834 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009835 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009836 const void* from_pNext = from;
9837 size_t pNext_size = 0u;
9838 while (!pNext_size && from_pNext)
9839 {
9840 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9841 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9842 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009843 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009844 if (pNext_size)
9845 {
9846 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009847 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009848 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009849}
9850
9851#endif
9852#ifdef VK_EXT_descriptor_indexing
Yilong Lia8d45f12021-02-07 02:30:21 -08009853#endif
9854#ifdef VK_EXT_shader_viewport_index_layer
9855#endif
9856#ifdef VK_NV_shading_rate_image
9857void deepcopy_VkShadingRatePaletteNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009858 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08009859 const VkShadingRatePaletteNV* from,
9860 VkShadingRatePaletteNV* to)
9861{
9862 (void)pool;
9863 *to = *from;
9864 to->pShadingRatePaletteEntries = nullptr;
9865 if (from->pShadingRatePaletteEntries)
9866 {
9867 to->pShadingRatePaletteEntries = (VkShadingRatePaletteEntryNV*)pool->dupArray(from->pShadingRatePaletteEntries, from->shadingRatePaletteEntryCount * sizeof(const VkShadingRatePaletteEntryNV));
9868 }
9869}
9870
9871void deepcopy_VkPipelineViewportShadingRateImageStateCreateInfoNV(
9872 BumpPool* pool,
9873 const VkPipelineViewportShadingRateImageStateCreateInfoNV* from,
9874 VkPipelineViewportShadingRateImageStateCreateInfoNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009875{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009876 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009877 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009878 const void* from_pNext = from;
9879 size_t pNext_size = 0u;
9880 while (!pNext_size && from_pNext)
9881 {
9882 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9883 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9884 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009885 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009886 if (pNext_size)
9887 {
9888 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009889 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009890 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009891 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009892 {
Yilong Libd10ec92021-02-10 13:24:27 -08009893 to->pShadingRatePalettes = nullptr;
9894 if (from->pShadingRatePalettes)
Yilong Lia8d45f12021-02-07 02:30:21 -08009895 {
Yilong Libd10ec92021-02-10 13:24:27 -08009896 to->pShadingRatePalettes = (VkShadingRatePaletteNV*)pool->alloc(from->viewportCount * sizeof(const VkShadingRatePaletteNV));
9897 to->viewportCount = from->viewportCount;
9898 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
9899 {
9900 deepcopy_VkShadingRatePaletteNV(pool, from->pShadingRatePalettes + i, (VkShadingRatePaletteNV*)(to->pShadingRatePalettes + i));
9901 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009902 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009903 }
9904}
9905
Yilong Lia8d45f12021-02-07 02:30:21 -08009906void deepcopy_VkPhysicalDeviceShadingRateImageFeaturesNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009907 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08009908 const VkPhysicalDeviceShadingRateImageFeaturesNV* from,
9909 VkPhysicalDeviceShadingRateImageFeaturesNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009910{
Lingfeng Yang36891c52018-11-09 14:18:35 -08009911 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009912 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009913 const void* from_pNext = from;
9914 size_t pNext_size = 0u;
9915 while (!pNext_size && from_pNext)
9916 {
9917 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9918 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9919 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009920 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009921 if (pNext_size)
9922 {
9923 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009924 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009925 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009926}
9927
Yilong Lia8d45f12021-02-07 02:30:21 -08009928void deepcopy_VkPhysicalDeviceShadingRateImagePropertiesNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -07009929 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -08009930 const VkPhysicalDeviceShadingRateImagePropertiesNV* from,
9931 VkPhysicalDeviceShadingRateImagePropertiesNV* to)
9932{
9933 (void)pool;
9934 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009935 const void* from_pNext = from;
9936 size_t pNext_size = 0u;
9937 while (!pNext_size && from_pNext)
9938 {
9939 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9940 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9941 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009942 to->pNext = nullptr;
9943 if (pNext_size)
9944 {
9945 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -08009946 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009947 }
9948 deepcopy_VkExtent2D(pool, &from->shadingRateTexelSize, (VkExtent2D*)(&to->shadingRateTexelSize));
9949}
9950
9951void deepcopy_VkCoarseSampleLocationNV(
9952 BumpPool* pool,
9953 const VkCoarseSampleLocationNV* from,
9954 VkCoarseSampleLocationNV* to)
9955{
9956 (void)pool;
9957 *to = *from;
9958}
9959
9960void deepcopy_VkCoarseSampleOrderCustomNV(
9961 BumpPool* pool,
9962 const VkCoarseSampleOrderCustomNV* from,
9963 VkCoarseSampleOrderCustomNV* to)
9964{
9965 (void)pool;
9966 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08009967 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08009968 {
Yilong Libd10ec92021-02-10 13:24:27 -08009969 to->pSampleLocations = nullptr;
9970 if (from->pSampleLocations)
Yilong Lia8d45f12021-02-07 02:30:21 -08009971 {
Yilong Libd10ec92021-02-10 13:24:27 -08009972 to->pSampleLocations = (VkCoarseSampleLocationNV*)pool->alloc(from->sampleLocationCount * sizeof(const VkCoarseSampleLocationNV));
9973 to->sampleLocationCount = from->sampleLocationCount;
9974 for (uint32_t i = 0; i < (uint32_t)from->sampleLocationCount; ++i)
9975 {
9976 deepcopy_VkCoarseSampleLocationNV(pool, from->pSampleLocations + i, (VkCoarseSampleLocationNV*)(to->pSampleLocations + i));
9977 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009978 }
9979 }
9980}
9981
9982void deepcopy_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
9983 BumpPool* pool,
9984 const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* from,
9985 VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* to)
9986{
9987 (void)pool;
9988 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -08009989 const void* from_pNext = from;
9990 size_t pNext_size = 0u;
9991 while (!pNext_size && from_pNext)
9992 {
9993 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9994 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
9995 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009996 to->pNext = nullptr;
9997 if (pNext_size)
9998 {
9999 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010000 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010001 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010002 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010003 {
Yilong Libd10ec92021-02-10 13:24:27 -080010004 to->pCustomSampleOrders = nullptr;
10005 if (from->pCustomSampleOrders)
Yilong Lia8d45f12021-02-07 02:30:21 -080010006 {
Yilong Libd10ec92021-02-10 13:24:27 -080010007 to->pCustomSampleOrders = (VkCoarseSampleOrderCustomNV*)pool->alloc(from->customSampleOrderCount * sizeof(const VkCoarseSampleOrderCustomNV));
10008 to->customSampleOrderCount = from->customSampleOrderCount;
10009 for (uint32_t i = 0; i < (uint32_t)from->customSampleOrderCount; ++i)
10010 {
10011 deepcopy_VkCoarseSampleOrderCustomNV(pool, from->pCustomSampleOrders + i, (VkCoarseSampleOrderCustomNV*)(to->pCustomSampleOrders + i));
10012 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010013 }
10014 }
10015}
10016
10017#endif
10018#ifdef VK_NV_ray_tracing
10019void deepcopy_VkRayTracingShaderGroupCreateInfoNV(
10020 BumpPool* pool,
10021 const VkRayTracingShaderGroupCreateInfoNV* from,
10022 VkRayTracingShaderGroupCreateInfoNV* to)
10023{
10024 (void)pool;
10025 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010026 const void* from_pNext = from;
10027 size_t pNext_size = 0u;
10028 while (!pNext_size && from_pNext)
10029 {
10030 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10031 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10032 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010033 to->pNext = nullptr;
10034 if (pNext_size)
10035 {
10036 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010037 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010038 }
10039}
10040
10041void deepcopy_VkRayTracingPipelineCreateInfoNV(
10042 BumpPool* pool,
10043 const VkRayTracingPipelineCreateInfoNV* from,
10044 VkRayTracingPipelineCreateInfoNV* to)
10045{
10046 (void)pool;
10047 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010048 const void* from_pNext = from;
10049 size_t pNext_size = 0u;
10050 while (!pNext_size && from_pNext)
10051 {
10052 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10053 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10054 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010055 to->pNext = nullptr;
10056 if (pNext_size)
10057 {
10058 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010059 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010060 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010061 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010062 {
Yilong Libd10ec92021-02-10 13:24:27 -080010063 to->pStages = nullptr;
10064 if (from->pStages)
Yilong Lia8d45f12021-02-07 02:30:21 -080010065 {
Yilong Libd10ec92021-02-10 13:24:27 -080010066 to->pStages = (VkPipelineShaderStageCreateInfo*)pool->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
10067 to->stageCount = from->stageCount;
10068 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
10069 {
10070 deepcopy_VkPipelineShaderStageCreateInfo(pool, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
10071 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010072 }
10073 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010074 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010075 {
Yilong Libd10ec92021-02-10 13:24:27 -080010076 to->pGroups = nullptr;
10077 if (from->pGroups)
Yilong Lia8d45f12021-02-07 02:30:21 -080010078 {
Yilong Libd10ec92021-02-10 13:24:27 -080010079 to->pGroups = (VkRayTracingShaderGroupCreateInfoNV*)pool->alloc(from->groupCount * sizeof(const VkRayTracingShaderGroupCreateInfoNV));
10080 to->groupCount = from->groupCount;
10081 for (uint32_t i = 0; i < (uint32_t)from->groupCount; ++i)
10082 {
10083 deepcopy_VkRayTracingShaderGroupCreateInfoNV(pool, from->pGroups + i, (VkRayTracingShaderGroupCreateInfoNV*)(to->pGroups + i));
10084 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010085 }
10086 }
10087}
10088
10089void deepcopy_VkGeometryTrianglesNV(
10090 BumpPool* pool,
10091 const VkGeometryTrianglesNV* from,
10092 VkGeometryTrianglesNV* to)
10093{
10094 (void)pool;
10095 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010096 const void* from_pNext = from;
10097 size_t pNext_size = 0u;
10098 while (!pNext_size && from_pNext)
10099 {
10100 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10101 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10102 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010103 to->pNext = nullptr;
10104 if (pNext_size)
10105 {
10106 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010107 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010108 }
10109}
10110
10111void deepcopy_VkGeometryAABBNV(
10112 BumpPool* pool,
10113 const VkGeometryAABBNV* from,
10114 VkGeometryAABBNV* to)
10115{
10116 (void)pool;
10117 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010118 const void* from_pNext = from;
10119 size_t pNext_size = 0u;
10120 while (!pNext_size && from_pNext)
10121 {
10122 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10123 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10124 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010125 to->pNext = nullptr;
10126 if (pNext_size)
10127 {
10128 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010129 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010130 }
10131}
10132
10133void deepcopy_VkGeometryDataNV(
10134 BumpPool* pool,
10135 const VkGeometryDataNV* from,
10136 VkGeometryDataNV* to)
10137{
10138 (void)pool;
10139 *to = *from;
10140 deepcopy_VkGeometryTrianglesNV(pool, &from->triangles, (VkGeometryTrianglesNV*)(&to->triangles));
10141 deepcopy_VkGeometryAABBNV(pool, &from->aabbs, (VkGeometryAABBNV*)(&to->aabbs));
10142}
10143
10144void deepcopy_VkGeometryNV(
10145 BumpPool* pool,
10146 const VkGeometryNV* from,
10147 VkGeometryNV* to)
10148{
10149 (void)pool;
10150 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010151 const void* from_pNext = from;
10152 size_t pNext_size = 0u;
10153 while (!pNext_size && from_pNext)
10154 {
10155 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10156 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10157 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010158 to->pNext = nullptr;
10159 if (pNext_size)
10160 {
10161 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010162 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010163 }
10164 deepcopy_VkGeometryDataNV(pool, &from->geometry, (VkGeometryDataNV*)(&to->geometry));
10165}
10166
10167void deepcopy_VkAccelerationStructureInfoNV(
10168 BumpPool* pool,
10169 const VkAccelerationStructureInfoNV* from,
10170 VkAccelerationStructureInfoNV* to)
10171{
10172 (void)pool;
10173 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010174 const void* from_pNext = from;
10175 size_t pNext_size = 0u;
10176 while (!pNext_size && from_pNext)
10177 {
10178 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10179 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10180 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010181 to->pNext = nullptr;
10182 if (pNext_size)
10183 {
10184 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010185 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010186 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010187 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010188 {
Yilong Libd10ec92021-02-10 13:24:27 -080010189 to->pGeometries = nullptr;
10190 if (from->pGeometries)
Yilong Lia8d45f12021-02-07 02:30:21 -080010191 {
Yilong Libd10ec92021-02-10 13:24:27 -080010192 to->pGeometries = (VkGeometryNV*)pool->alloc(from->geometryCount * sizeof(const VkGeometryNV));
10193 to->geometryCount = from->geometryCount;
10194 for (uint32_t i = 0; i < (uint32_t)from->geometryCount; ++i)
10195 {
10196 deepcopy_VkGeometryNV(pool, from->pGeometries + i, (VkGeometryNV*)(to->pGeometries + i));
10197 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010198 }
10199 }
10200}
10201
10202void deepcopy_VkAccelerationStructureCreateInfoNV(
10203 BumpPool* pool,
10204 const VkAccelerationStructureCreateInfoNV* from,
10205 VkAccelerationStructureCreateInfoNV* to)
10206{
10207 (void)pool;
10208 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010209 const void* from_pNext = from;
10210 size_t pNext_size = 0u;
10211 while (!pNext_size && from_pNext)
10212 {
10213 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10214 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10215 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010216 to->pNext = nullptr;
10217 if (pNext_size)
10218 {
10219 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010220 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010221 }
10222 deepcopy_VkAccelerationStructureInfoNV(pool, &from->info, (VkAccelerationStructureInfoNV*)(&to->info));
10223}
10224
10225void deepcopy_VkBindAccelerationStructureMemoryInfoNV(
10226 BumpPool* pool,
10227 const VkBindAccelerationStructureMemoryInfoNV* from,
10228 VkBindAccelerationStructureMemoryInfoNV* to)
10229{
10230 (void)pool;
10231 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010232 const void* from_pNext = from;
10233 size_t pNext_size = 0u;
10234 while (!pNext_size && from_pNext)
10235 {
10236 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10237 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10238 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010239 to->pNext = nullptr;
10240 if (pNext_size)
10241 {
10242 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010243 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010244 }
10245 to->pDeviceIndices = nullptr;
10246 if (from->pDeviceIndices)
10247 {
10248 to->pDeviceIndices = (uint32_t*)pool->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
10249 }
10250}
10251
10252void deepcopy_VkWriteDescriptorSetAccelerationStructureNV(
10253 BumpPool* pool,
10254 const VkWriteDescriptorSetAccelerationStructureNV* from,
10255 VkWriteDescriptorSetAccelerationStructureNV* to)
10256{
10257 (void)pool;
10258 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010259 const void* from_pNext = from;
10260 size_t pNext_size = 0u;
10261 while (!pNext_size && from_pNext)
10262 {
10263 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10264 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10265 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010266 to->pNext = nullptr;
10267 if (pNext_size)
10268 {
10269 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010270 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010271 }
10272 to->pAccelerationStructures = nullptr;
10273 if (from->pAccelerationStructures)
10274 {
10275 to->pAccelerationStructures = (VkAccelerationStructureNV*)pool->dupArray(from->pAccelerationStructures, from->accelerationStructureCount * sizeof(const VkAccelerationStructureNV));
10276 }
10277}
10278
10279void deepcopy_VkAccelerationStructureMemoryRequirementsInfoNV(
10280 BumpPool* pool,
10281 const VkAccelerationStructureMemoryRequirementsInfoNV* from,
10282 VkAccelerationStructureMemoryRequirementsInfoNV* to)
10283{
10284 (void)pool;
10285 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010286 const void* from_pNext = from;
10287 size_t pNext_size = 0u;
10288 while (!pNext_size && from_pNext)
10289 {
10290 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10291 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10292 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010293 to->pNext = nullptr;
10294 if (pNext_size)
10295 {
10296 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010297 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010298 }
10299}
10300
10301void deepcopy_VkPhysicalDeviceRayTracingPropertiesNV(
10302 BumpPool* pool,
10303 const VkPhysicalDeviceRayTracingPropertiesNV* from,
10304 VkPhysicalDeviceRayTracingPropertiesNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010305{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010306 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010307 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010308 const void* from_pNext = from;
10309 size_t pNext_size = 0u;
10310 while (!pNext_size && from_pNext)
10311 {
10312 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10313 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10314 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010315 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010316 if (pNext_size)
10317 {
10318 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010319 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010320 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010321}
10322
Yilong Lia8d45f12021-02-07 02:30:21 -080010323void deepcopy_VkTransformMatrixKHR(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010324 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -080010325 const VkTransformMatrixKHR* from,
10326 VkTransformMatrixKHR* to)
10327{
10328 (void)pool;
10329 *to = *from;
10330 memcpy(to->matrix, from->matrix, ((3)*(4)) * sizeof(float));
10331}
10332
10333void deepcopy_VkAabbPositionsKHR(
10334 BumpPool* pool,
10335 const VkAabbPositionsKHR* from,
10336 VkAabbPositionsKHR* to)
10337{
10338 (void)pool;
10339 *to = *from;
10340}
10341
10342void deepcopy_VkAccelerationStructureInstanceKHR(
10343 BumpPool* pool,
10344 const VkAccelerationStructureInstanceKHR* from,
10345 VkAccelerationStructureInstanceKHR* to)
10346{
10347 (void)pool;
10348 *to = *from;
10349 deepcopy_VkTransformMatrixKHR(pool, &from->transform, (VkTransformMatrixKHR*)(&to->transform));
10350}
10351
10352#endif
10353#ifdef VK_NV_representative_fragment_test
10354void deepcopy_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
10355 BumpPool* pool,
10356 const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* from,
10357 VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* to)
10358{
10359 (void)pool;
10360 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010361 const void* from_pNext = from;
10362 size_t pNext_size = 0u;
10363 while (!pNext_size && from_pNext)
10364 {
10365 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10366 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10367 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010368 to->pNext = nullptr;
10369 if (pNext_size)
10370 {
10371 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010372 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010373 }
10374}
10375
10376void deepcopy_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
10377 BumpPool* pool,
10378 const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* from,
10379 VkPipelineRepresentativeFragmentTestStateCreateInfoNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010380{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010381 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010382 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010383 const void* from_pNext = from;
10384 size_t pNext_size = 0u;
10385 while (!pNext_size && from_pNext)
10386 {
10387 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10388 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10389 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010390 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010391 if (pNext_size)
10392 {
10393 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010394 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010395 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010396}
10397
10398#endif
10399#ifdef VK_EXT_filter_cubic
10400void deepcopy_VkPhysicalDeviceImageViewImageFormatInfoEXT(
10401 BumpPool* pool,
10402 const VkPhysicalDeviceImageViewImageFormatInfoEXT* from,
10403 VkPhysicalDeviceImageViewImageFormatInfoEXT* to)
10404{
10405 (void)pool;
10406 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010407 const void* from_pNext = from;
10408 size_t pNext_size = 0u;
10409 while (!pNext_size && from_pNext)
10410 {
10411 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10412 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10413 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010414 to->pNext = nullptr;
10415 if (pNext_size)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010416 {
Yilong Lia8d45f12021-02-07 02:30:21 -080010417 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010418 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010419 }
10420}
10421
Yilong Lia8d45f12021-02-07 02:30:21 -080010422void deepcopy_VkFilterCubicImageViewImageFormatPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010423 BumpPool* pool,
Yilong Lia8d45f12021-02-07 02:30:21 -080010424 const VkFilterCubicImageViewImageFormatPropertiesEXT* from,
10425 VkFilterCubicImageViewImageFormatPropertiesEXT* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010426{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010427 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010428 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010429 const void* from_pNext = from;
10430 size_t pNext_size = 0u;
10431 while (!pNext_size && from_pNext)
10432 {
10433 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10434 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10435 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010436 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010437 if (pNext_size)
10438 {
10439 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010440 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010441 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010442}
10443
10444#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010445#ifdef VK_QCOM_render_pass_shader_resolve
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010446#endif
10447#ifdef VK_EXT_global_priority
10448void deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010449 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010450 const VkDeviceQueueGlobalPriorityCreateInfoEXT* from,
10451 VkDeviceQueueGlobalPriorityCreateInfoEXT* to)
10452{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010453 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010454 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010455 const void* from_pNext = from;
10456 size_t pNext_size = 0u;
10457 while (!pNext_size && from_pNext)
10458 {
10459 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10460 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10461 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010462 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010463 if (pNext_size)
10464 {
10465 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010466 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010467 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010468}
10469
10470#endif
10471#ifdef VK_EXT_external_memory_host
10472void deepcopy_VkImportMemoryHostPointerInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010473 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010474 const VkImportMemoryHostPointerInfoEXT* from,
10475 VkImportMemoryHostPointerInfoEXT* to)
10476{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010477 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010478 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010479 const void* from_pNext = from;
10480 size_t pNext_size = 0u;
10481 while (!pNext_size && from_pNext)
10482 {
10483 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10484 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10485 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010486 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010487 if (pNext_size)
10488 {
10489 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010490 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010491 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010492 to->pHostPointer = nullptr;
10493 if (from->pHostPointer)
10494 {
10495 to->pHostPointer = (void*)pool->dupArray(from->pHostPointer, sizeof(uint8_t));
10496 }
10497}
10498
10499void deepcopy_VkMemoryHostPointerPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010500 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010501 const VkMemoryHostPointerPropertiesEXT* from,
10502 VkMemoryHostPointerPropertiesEXT* to)
10503{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010504 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010505 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010506 const void* from_pNext = from;
10507 size_t pNext_size = 0u;
10508 while (!pNext_size && from_pNext)
10509 {
10510 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10511 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10512 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010513 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010514 if (pNext_size)
10515 {
10516 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010517 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010518 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010519}
10520
10521void deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010522 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010523 const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* from,
10524 VkPhysicalDeviceExternalMemoryHostPropertiesEXT* to)
10525{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010526 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010527 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010528 const void* from_pNext = from;
10529 size_t pNext_size = 0u;
10530 while (!pNext_size && from_pNext)
10531 {
10532 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10533 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10534 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010535 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010536 if (pNext_size)
10537 {
10538 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010539 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010540 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010541}
10542
10543#endif
10544#ifdef VK_AMD_buffer_marker
10545#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010546#ifdef VK_AMD_pipeline_compiler_control
10547void deepcopy_VkPipelineCompilerControlCreateInfoAMD(
10548 BumpPool* pool,
10549 const VkPipelineCompilerControlCreateInfoAMD* from,
10550 VkPipelineCompilerControlCreateInfoAMD* to)
10551{
10552 (void)pool;
10553 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010554 const void* from_pNext = from;
10555 size_t pNext_size = 0u;
10556 while (!pNext_size && from_pNext)
10557 {
10558 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10559 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10560 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010561 to->pNext = nullptr;
10562 if (pNext_size)
10563 {
10564 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010565 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010566 }
10567}
10568
10569#endif
10570#ifdef VK_EXT_calibrated_timestamps
10571void deepcopy_VkCalibratedTimestampInfoEXT(
10572 BumpPool* pool,
10573 const VkCalibratedTimestampInfoEXT* from,
10574 VkCalibratedTimestampInfoEXT* to)
10575{
10576 (void)pool;
10577 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010578 const void* from_pNext = from;
10579 size_t pNext_size = 0u;
10580 while (!pNext_size && from_pNext)
10581 {
10582 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10583 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10584 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010585 to->pNext = nullptr;
10586 if (pNext_size)
10587 {
10588 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010589 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010590 }
10591}
10592
10593#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010594#ifdef VK_AMD_shader_core_properties
10595void deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010596 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010597 const VkPhysicalDeviceShaderCorePropertiesAMD* from,
10598 VkPhysicalDeviceShaderCorePropertiesAMD* to)
10599{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010600 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010601 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010602 const void* from_pNext = from;
10603 size_t pNext_size = 0u;
10604 while (!pNext_size && from_pNext)
10605 {
10606 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10607 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10608 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010609 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010610 if (pNext_size)
10611 {
10612 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010613 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010614 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010615}
10616
10617#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010618#ifdef VK_AMD_memory_overallocation_behavior
10619void deepcopy_VkDeviceMemoryOverallocationCreateInfoAMD(
10620 BumpPool* pool,
10621 const VkDeviceMemoryOverallocationCreateInfoAMD* from,
10622 VkDeviceMemoryOverallocationCreateInfoAMD* to)
10623{
10624 (void)pool;
10625 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010626 const void* from_pNext = from;
10627 size_t pNext_size = 0u;
10628 while (!pNext_size && from_pNext)
10629 {
10630 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10631 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10632 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010633 to->pNext = nullptr;
10634 if (pNext_size)
10635 {
10636 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010637 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010638 }
10639}
10640
10641#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010642#ifdef VK_EXT_vertex_attribute_divisor
10643void deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010644 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010645 const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* from,
10646 VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* to)
10647{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010648 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010649 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010650 const void* from_pNext = from;
10651 size_t pNext_size = 0u;
10652 while (!pNext_size && from_pNext)
10653 {
10654 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10655 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10656 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010657 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010658 if (pNext_size)
10659 {
10660 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010661 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010662 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010663}
10664
10665void deepcopy_VkVertexInputBindingDivisorDescriptionEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010666 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010667 const VkVertexInputBindingDivisorDescriptionEXT* from,
10668 VkVertexInputBindingDivisorDescriptionEXT* to)
10669{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010670 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010671 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010672}
10673
10674void deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070010675 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010676 const VkPipelineVertexInputDivisorStateCreateInfoEXT* from,
10677 VkPipelineVertexInputDivisorStateCreateInfoEXT* to)
10678{
Lingfeng Yang36891c52018-11-09 14:18:35 -080010679 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010680 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010681 const void* from_pNext = from;
10682 size_t pNext_size = 0u;
10683 while (!pNext_size && from_pNext)
10684 {
10685 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10686 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10687 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010688 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010689 if (pNext_size)
10690 {
10691 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010692 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010693 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010694 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010695 {
Yilong Libd10ec92021-02-10 13:24:27 -080010696 to->pVertexBindingDivisors = nullptr;
10697 if (from->pVertexBindingDivisors)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010698 {
Yilong Libd10ec92021-02-10 13:24:27 -080010699 to->pVertexBindingDivisors = (VkVertexInputBindingDivisorDescriptionEXT*)pool->alloc(from->vertexBindingDivisorCount * sizeof(const VkVertexInputBindingDivisorDescriptionEXT));
10700 to->vertexBindingDivisorCount = from->vertexBindingDivisorCount;
10701 for (uint32_t i = 0; i < (uint32_t)from->vertexBindingDivisorCount; ++i)
10702 {
10703 deepcopy_VkVertexInputBindingDivisorDescriptionEXT(pool, from->pVertexBindingDivisors + i, (VkVertexInputBindingDivisorDescriptionEXT*)(to->pVertexBindingDivisors + i));
10704 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010705 }
10706 }
10707}
10708
Yilong Lia8d45f12021-02-07 02:30:21 -080010709void deepcopy_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
10710 BumpPool* pool,
10711 const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* from,
10712 VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* to)
10713{
10714 (void)pool;
10715 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010716 const void* from_pNext = from;
10717 size_t pNext_size = 0u;
10718 while (!pNext_size && from_pNext)
10719 {
10720 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10721 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10722 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010723 to->pNext = nullptr;
10724 if (pNext_size)
10725 {
10726 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010727 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010728 }
10729}
10730
10731#endif
10732#ifdef VK_GGP_frame_token
10733void deepcopy_VkPresentFrameTokenGGP(
10734 BumpPool* pool,
10735 const VkPresentFrameTokenGGP* from,
10736 VkPresentFrameTokenGGP* to)
10737{
10738 (void)pool;
10739 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010740 const void* from_pNext = from;
10741 size_t pNext_size = 0u;
10742 while (!pNext_size && from_pNext)
10743 {
10744 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10745 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10746 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010747 to->pNext = nullptr;
10748 if (pNext_size)
10749 {
10750 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010751 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010752 }
10753}
10754
10755#endif
10756#ifdef VK_EXT_pipeline_creation_feedback
10757void deepcopy_VkPipelineCreationFeedbackEXT(
10758 BumpPool* pool,
10759 const VkPipelineCreationFeedbackEXT* from,
10760 VkPipelineCreationFeedbackEXT* to)
10761{
10762 (void)pool;
10763 *to = *from;
10764}
10765
10766void deepcopy_VkPipelineCreationFeedbackCreateInfoEXT(
10767 BumpPool* pool,
10768 const VkPipelineCreationFeedbackCreateInfoEXT* from,
10769 VkPipelineCreationFeedbackCreateInfoEXT* to)
10770{
10771 (void)pool;
10772 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010773 const void* from_pNext = from;
10774 size_t pNext_size = 0u;
10775 while (!pNext_size && from_pNext)
10776 {
10777 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10778 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10779 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010780 to->pNext = nullptr;
10781 if (pNext_size)
10782 {
10783 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010784 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010785 }
10786 to->pPipelineCreationFeedback = nullptr;
10787 if (from->pPipelineCreationFeedback)
10788 {
10789 to->pPipelineCreationFeedback = (VkPipelineCreationFeedbackEXT*)pool->alloc(sizeof(VkPipelineCreationFeedbackEXT));
10790 deepcopy_VkPipelineCreationFeedbackEXT(pool, from->pPipelineCreationFeedback, (VkPipelineCreationFeedbackEXT*)(to->pPipelineCreationFeedback));
10791 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010792 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010793 {
Yilong Libd10ec92021-02-10 13:24:27 -080010794 to->pPipelineStageCreationFeedbacks = nullptr;
10795 if (from->pPipelineStageCreationFeedbacks)
Yilong Lia8d45f12021-02-07 02:30:21 -080010796 {
Yilong Libd10ec92021-02-10 13:24:27 -080010797 to->pPipelineStageCreationFeedbacks = (VkPipelineCreationFeedbackEXT*)pool->alloc(from->pipelineStageCreationFeedbackCount * sizeof(VkPipelineCreationFeedbackEXT));
10798 to->pipelineStageCreationFeedbackCount = from->pipelineStageCreationFeedbackCount;
10799 for (uint32_t i = 0; i < (uint32_t)from->pipelineStageCreationFeedbackCount; ++i)
10800 {
10801 deepcopy_VkPipelineCreationFeedbackEXT(pool, from->pPipelineStageCreationFeedbacks + i, (VkPipelineCreationFeedbackEXT*)(to->pPipelineStageCreationFeedbacks + i));
10802 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010803 }
10804 }
10805}
10806
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010807#endif
10808#ifdef VK_NV_shader_subgroup_partitioned
10809#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010810#ifdef VK_NV_compute_shader_derivatives
10811void deepcopy_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
10812 BumpPool* pool,
10813 const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* from,
10814 VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* to)
10815{
10816 (void)pool;
10817 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010818 const void* from_pNext = from;
10819 size_t pNext_size = 0u;
10820 while (!pNext_size && from_pNext)
10821 {
10822 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10823 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10824 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010825 to->pNext = nullptr;
10826 if (pNext_size)
10827 {
10828 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010829 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010830 }
10831}
10832
10833#endif
10834#ifdef VK_NV_mesh_shader
10835void deepcopy_VkPhysicalDeviceMeshShaderFeaturesNV(
10836 BumpPool* pool,
10837 const VkPhysicalDeviceMeshShaderFeaturesNV* from,
10838 VkPhysicalDeviceMeshShaderFeaturesNV* to)
10839{
10840 (void)pool;
10841 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010842 const void* from_pNext = from;
10843 size_t pNext_size = 0u;
10844 while (!pNext_size && from_pNext)
10845 {
10846 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10847 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10848 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010849 to->pNext = nullptr;
10850 if (pNext_size)
10851 {
10852 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010853 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010854 }
10855}
10856
10857void deepcopy_VkPhysicalDeviceMeshShaderPropertiesNV(
10858 BumpPool* pool,
10859 const VkPhysicalDeviceMeshShaderPropertiesNV* from,
10860 VkPhysicalDeviceMeshShaderPropertiesNV* to)
10861{
10862 (void)pool;
10863 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010864 const void* from_pNext = from;
10865 size_t pNext_size = 0u;
10866 while (!pNext_size && from_pNext)
10867 {
10868 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10869 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10870 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010871 to->pNext = nullptr;
10872 if (pNext_size)
10873 {
10874 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010875 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010876 }
10877 memcpy(to->maxTaskWorkGroupSize, from->maxTaskWorkGroupSize, 3 * sizeof(uint32_t));
10878 memcpy(to->maxMeshWorkGroupSize, from->maxMeshWorkGroupSize, 3 * sizeof(uint32_t));
10879}
10880
10881void deepcopy_VkDrawMeshTasksIndirectCommandNV(
10882 BumpPool* pool,
10883 const VkDrawMeshTasksIndirectCommandNV* from,
10884 VkDrawMeshTasksIndirectCommandNV* to)
10885{
10886 (void)pool;
10887 *to = *from;
10888}
10889
10890#endif
10891#ifdef VK_NV_fragment_shader_barycentric
10892void deepcopy_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
10893 BumpPool* pool,
10894 const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* from,
10895 VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* to)
10896{
10897 (void)pool;
10898 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010899 const void* from_pNext = from;
10900 size_t pNext_size = 0u;
10901 while (!pNext_size && from_pNext)
10902 {
10903 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10904 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10905 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010906 to->pNext = nullptr;
10907 if (pNext_size)
10908 {
10909 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010910 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010911 }
10912}
10913
10914#endif
10915#ifdef VK_NV_shader_image_footprint
10916void deepcopy_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
10917 BumpPool* pool,
10918 const VkPhysicalDeviceShaderImageFootprintFeaturesNV* from,
10919 VkPhysicalDeviceShaderImageFootprintFeaturesNV* to)
10920{
10921 (void)pool;
10922 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010923 const void* from_pNext = from;
10924 size_t pNext_size = 0u;
10925 while (!pNext_size && from_pNext)
10926 {
10927 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10928 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10929 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010930 to->pNext = nullptr;
10931 if (pNext_size)
10932 {
10933 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010934 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010935 }
10936}
10937
10938#endif
10939#ifdef VK_NV_scissor_exclusive
10940void deepcopy_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
10941 BumpPool* pool,
10942 const VkPipelineViewportExclusiveScissorStateCreateInfoNV* from,
10943 VkPipelineViewportExclusiveScissorStateCreateInfoNV* to)
10944{
10945 (void)pool;
10946 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010947 const void* from_pNext = from;
10948 size_t pNext_size = 0u;
10949 while (!pNext_size && from_pNext)
10950 {
10951 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10952 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10953 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010954 to->pNext = nullptr;
10955 if (pNext_size)
10956 {
10957 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010958 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010959 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010960 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010961 {
Yilong Libd10ec92021-02-10 13:24:27 -080010962 to->pExclusiveScissors = nullptr;
10963 if (from->pExclusiveScissors)
Yilong Lia8d45f12021-02-07 02:30:21 -080010964 {
Yilong Libd10ec92021-02-10 13:24:27 -080010965 to->pExclusiveScissors = (VkRect2D*)pool->alloc(from->exclusiveScissorCount * sizeof(const VkRect2D));
10966 to->exclusiveScissorCount = from->exclusiveScissorCount;
10967 for (uint32_t i = 0; i < (uint32_t)from->exclusiveScissorCount; ++i)
10968 {
10969 deepcopy_VkRect2D(pool, from->pExclusiveScissors + i, (VkRect2D*)(to->pExclusiveScissors + i));
10970 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010971 }
10972 }
10973}
10974
10975void deepcopy_VkPhysicalDeviceExclusiveScissorFeaturesNV(
10976 BumpPool* pool,
10977 const VkPhysicalDeviceExclusiveScissorFeaturesNV* from,
10978 VkPhysicalDeviceExclusiveScissorFeaturesNV* to)
10979{
10980 (void)pool;
10981 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080010982 const void* from_pNext = from;
10983 size_t pNext_size = 0u;
10984 while (!pNext_size && from_pNext)
10985 {
10986 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10987 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
10988 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010989 to->pNext = nullptr;
10990 if (pNext_size)
10991 {
10992 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080010993 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010994 }
10995}
10996
10997#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010998#ifdef VK_NV_device_diagnostic_checkpoints
10999void deepcopy_VkQueueFamilyCheckpointPropertiesNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070011000 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011001 const VkQueueFamilyCheckpointPropertiesNV* from,
11002 VkQueueFamilyCheckpointPropertiesNV* to)
11003{
Lingfeng Yang36891c52018-11-09 14:18:35 -080011004 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080011005 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011006 const void* from_pNext = from;
11007 size_t pNext_size = 0u;
11008 while (!pNext_size && from_pNext)
11009 {
11010 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11011 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11012 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011013 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080011014 if (pNext_size)
11015 {
11016 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011017 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080011018 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011019}
11020
11021void deepcopy_VkCheckpointDataNV(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070011022 BumpPool* pool,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011023 const VkCheckpointDataNV* from,
11024 VkCheckpointDataNV* to)
11025{
Lingfeng Yang36891c52018-11-09 14:18:35 -080011026 (void)pool;
Lingfeng Yang25baf112018-11-08 17:19:52 -080011027 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011028 const void* from_pNext = from;
11029 size_t pNext_size = 0u;
11030 while (!pNext_size && from_pNext)
11031 {
11032 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11033 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11034 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011035 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080011036 if (pNext_size)
11037 {
11038 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011039 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080011040 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011041 to->pCheckpointMarker = nullptr;
11042 if (from->pCheckpointMarker)
11043 {
11044 to->pCheckpointMarker = (void*)pool->dupArray(from->pCheckpointMarker, sizeof(uint8_t));
11045 }
11046}
11047
11048#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011049#ifdef VK_INTEL_shader_integer_functions2
11050void deepcopy_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
11051 BumpPool* pool,
11052 const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* from,
11053 VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* to)
11054{
11055 (void)pool;
11056 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011057 const void* from_pNext = from;
11058 size_t pNext_size = 0u;
11059 while (!pNext_size && from_pNext)
11060 {
11061 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11062 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11063 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011064 to->pNext = nullptr;
11065 if (pNext_size)
11066 {
11067 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011068 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011069 }
11070}
11071
11072#endif
11073#ifdef VK_INTEL_performance_query
11074void deepcopy_VkPerformanceValueDataINTEL(
11075 BumpPool* pool,
11076 const VkPerformanceValueDataINTEL* from,
11077 VkPerformanceValueDataINTEL* to)
11078{
11079 (void)pool;
11080 *to = *from;
11081 to->valueString = nullptr;
11082 if (from->valueString)
11083 {
11084 to->valueString = pool->strDup(from->valueString);
11085 }
11086}
11087
11088void deepcopy_VkPerformanceValueINTEL(
11089 BumpPool* pool,
11090 const VkPerformanceValueINTEL* from,
11091 VkPerformanceValueINTEL* to)
11092{
11093 (void)pool;
11094 *to = *from;
11095 deepcopy_VkPerformanceValueDataINTEL(pool, &from->data, (VkPerformanceValueDataINTEL*)(&to->data));
11096}
11097
11098void deepcopy_VkInitializePerformanceApiInfoINTEL(
11099 BumpPool* pool,
11100 const VkInitializePerformanceApiInfoINTEL* from,
11101 VkInitializePerformanceApiInfoINTEL* to)
11102{
11103 (void)pool;
11104 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011105 const void* from_pNext = from;
11106 size_t pNext_size = 0u;
11107 while (!pNext_size && from_pNext)
11108 {
11109 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11110 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11111 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011112 to->pNext = nullptr;
11113 if (pNext_size)
11114 {
11115 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011116 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011117 }
11118 to->pUserData = nullptr;
11119 if (from->pUserData)
11120 {
11121 to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
11122 }
11123}
11124
11125void deepcopy_VkQueryPoolPerformanceQueryCreateInfoINTEL(
11126 BumpPool* pool,
11127 const VkQueryPoolPerformanceQueryCreateInfoINTEL* from,
11128 VkQueryPoolPerformanceQueryCreateInfoINTEL* to)
11129{
11130 (void)pool;
11131 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011132 const void* from_pNext = from;
11133 size_t pNext_size = 0u;
11134 while (!pNext_size && from_pNext)
11135 {
11136 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11137 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11138 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011139 to->pNext = nullptr;
11140 if (pNext_size)
11141 {
11142 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011143 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011144 }
11145}
11146
11147void deepcopy_VkPerformanceMarkerInfoINTEL(
11148 BumpPool* pool,
11149 const VkPerformanceMarkerInfoINTEL* from,
11150 VkPerformanceMarkerInfoINTEL* to)
11151{
11152 (void)pool;
11153 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011154 const void* from_pNext = from;
11155 size_t pNext_size = 0u;
11156 while (!pNext_size && from_pNext)
11157 {
11158 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11159 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11160 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011161 to->pNext = nullptr;
11162 if (pNext_size)
11163 {
11164 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011165 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011166 }
11167}
11168
11169void deepcopy_VkPerformanceStreamMarkerInfoINTEL(
11170 BumpPool* pool,
11171 const VkPerformanceStreamMarkerInfoINTEL* from,
11172 VkPerformanceStreamMarkerInfoINTEL* to)
11173{
11174 (void)pool;
11175 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011176 const void* from_pNext = from;
11177 size_t pNext_size = 0u;
11178 while (!pNext_size && from_pNext)
11179 {
11180 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11181 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11182 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011183 to->pNext = nullptr;
11184 if (pNext_size)
11185 {
11186 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011187 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011188 }
11189}
11190
11191void deepcopy_VkPerformanceOverrideInfoINTEL(
11192 BumpPool* pool,
11193 const VkPerformanceOverrideInfoINTEL* from,
11194 VkPerformanceOverrideInfoINTEL* to)
11195{
11196 (void)pool;
11197 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011198 const void* from_pNext = from;
11199 size_t pNext_size = 0u;
11200 while (!pNext_size && from_pNext)
11201 {
11202 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11203 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11204 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011205 to->pNext = nullptr;
11206 if (pNext_size)
11207 {
11208 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011209 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011210 }
11211}
11212
11213void deepcopy_VkPerformanceConfigurationAcquireInfoINTEL(
11214 BumpPool* pool,
11215 const VkPerformanceConfigurationAcquireInfoINTEL* from,
11216 VkPerformanceConfigurationAcquireInfoINTEL* to)
11217{
11218 (void)pool;
11219 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011220 const void* from_pNext = from;
11221 size_t pNext_size = 0u;
11222 while (!pNext_size && from_pNext)
11223 {
11224 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11225 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11226 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011227 to->pNext = nullptr;
11228 if (pNext_size)
11229 {
11230 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011231 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011232 }
11233}
11234
11235#endif
11236#ifdef VK_EXT_pci_bus_info
11237void deepcopy_VkPhysicalDevicePCIBusInfoPropertiesEXT(
11238 BumpPool* pool,
11239 const VkPhysicalDevicePCIBusInfoPropertiesEXT* from,
11240 VkPhysicalDevicePCIBusInfoPropertiesEXT* to)
11241{
11242 (void)pool;
11243 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011244 const void* from_pNext = from;
11245 size_t pNext_size = 0u;
11246 while (!pNext_size && from_pNext)
11247 {
11248 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11249 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11250 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011251 to->pNext = nullptr;
11252 if (pNext_size)
11253 {
11254 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011255 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011256 }
11257}
11258
11259#endif
11260#ifdef VK_AMD_display_native_hdr
11261void deepcopy_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
11262 BumpPool* pool,
11263 const VkDisplayNativeHdrSurfaceCapabilitiesAMD* from,
11264 VkDisplayNativeHdrSurfaceCapabilitiesAMD* to)
11265{
11266 (void)pool;
11267 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011268 const void* from_pNext = from;
11269 size_t pNext_size = 0u;
11270 while (!pNext_size && from_pNext)
11271 {
11272 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11273 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11274 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011275 to->pNext = nullptr;
11276 if (pNext_size)
11277 {
11278 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011279 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011280 }
11281}
11282
11283void deepcopy_VkSwapchainDisplayNativeHdrCreateInfoAMD(
11284 BumpPool* pool,
11285 const VkSwapchainDisplayNativeHdrCreateInfoAMD* from,
11286 VkSwapchainDisplayNativeHdrCreateInfoAMD* to)
11287{
11288 (void)pool;
11289 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011290 const void* from_pNext = from;
11291 size_t pNext_size = 0u;
11292 while (!pNext_size && from_pNext)
11293 {
11294 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11295 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11296 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011297 to->pNext = nullptr;
11298 if (pNext_size)
11299 {
11300 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011301 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011302 }
11303}
11304
11305#endif
11306#ifdef VK_FUCHSIA_imagepipe_surface
11307void deepcopy_VkImagePipeSurfaceCreateInfoFUCHSIA(
11308 BumpPool* pool,
11309 const VkImagePipeSurfaceCreateInfoFUCHSIA* from,
11310 VkImagePipeSurfaceCreateInfoFUCHSIA* to)
11311{
11312 (void)pool;
11313 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011314 const void* from_pNext = from;
11315 size_t pNext_size = 0u;
11316 while (!pNext_size && from_pNext)
11317 {
11318 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11319 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11320 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011321 to->pNext = nullptr;
11322 if (pNext_size)
11323 {
11324 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011325 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011326 }
11327}
11328
11329#endif
11330#ifdef VK_EXT_metal_surface
11331void deepcopy_VkMetalSurfaceCreateInfoEXT(
11332 BumpPool* pool,
11333 const VkMetalSurfaceCreateInfoEXT* from,
11334 VkMetalSurfaceCreateInfoEXT* to)
11335{
11336 (void)pool;
11337 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011338 const void* from_pNext = from;
11339 size_t pNext_size = 0u;
11340 while (!pNext_size && from_pNext)
11341 {
11342 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11343 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11344 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011345 to->pNext = nullptr;
11346 if (pNext_size)
11347 {
11348 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011349 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011350 }
11351 to->pLayer = nullptr;
11352 if (from->pLayer)
11353 {
11354 to->pLayer = (CAMetalLayer*)pool->dupArray(from->pLayer, sizeof(const CAMetalLayer));
11355 }
11356}
11357
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080011358#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011359#ifdef VK_GOOGLE_color_buffer
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011360void deepcopy_VkImportColorBufferGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070011361 BumpPool* pool,
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011362 const VkImportColorBufferGOOGLE* from,
11363 VkImportColorBufferGOOGLE* to)
11364{
11365 (void)pool;
11366 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011367 const void* from_pNext = from;
11368 size_t pNext_size = 0u;
11369 while (!pNext_size && from_pNext)
11370 {
11371 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11372 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11373 }
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011374 to->pNext = nullptr;
11375 if (pNext_size)
11376 {
11377 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011378 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011379 }
11380}
11381
Yilong Lif21226b2020-07-01 14:47:57 -070011382void deepcopy_VkImportBufferGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070011383 BumpPool* pool,
Yilong Lif21226b2020-07-01 14:47:57 -070011384 const VkImportBufferGOOGLE* from,
11385 VkImportBufferGOOGLE* to)
11386{
11387 (void)pool;
11388 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011389 const void* from_pNext = from;
11390 size_t pNext_size = 0u;
11391 while (!pNext_size && from_pNext)
11392 {
11393 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11394 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11395 }
Yilong Lif21226b2020-07-01 14:47:57 -070011396 to->pNext = nullptr;
11397 if (pNext_size)
11398 {
11399 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011400 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lif21226b2020-07-01 14:47:57 -070011401 }
11402}
11403
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011404void deepcopy_VkImportPhysicalAddressGOOGLE(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070011405 BumpPool* pool,
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011406 const VkImportPhysicalAddressGOOGLE* from,
11407 VkImportPhysicalAddressGOOGLE* to)
11408{
11409 (void)pool;
11410 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011411 const void* from_pNext = from;
11412 size_t pNext_size = 0u;
11413 while (!pNext_size && from_pNext)
11414 {
11415 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11416 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11417 }
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011418 to->pNext = nullptr;
11419 if (pNext_size)
11420 {
11421 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011422 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080011423 }
11424}
11425
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011426#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011427#ifdef VK_EXT_scalar_block_layout
11428#endif
11429#ifdef VK_GOOGLE_hlsl_functionality1
11430#endif
11431#ifdef VK_GOOGLE_decorate_string
11432#endif
11433#ifdef VK_EXT_subgroup_size_control
11434void deepcopy_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
11435 BumpPool* pool,
11436 const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* from,
11437 VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* to)
11438{
11439 (void)pool;
11440 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011441 const void* from_pNext = from;
11442 size_t pNext_size = 0u;
11443 while (!pNext_size && from_pNext)
11444 {
11445 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11446 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11447 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011448 to->pNext = nullptr;
11449 if (pNext_size)
11450 {
11451 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011452 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011453 }
11454}
11455
11456void deepcopy_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
11457 BumpPool* pool,
11458 const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* from,
11459 VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* to)
11460{
11461 (void)pool;
11462 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011463 const void* from_pNext = from;
11464 size_t pNext_size = 0u;
11465 while (!pNext_size && from_pNext)
11466 {
11467 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11468 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11469 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011470 to->pNext = nullptr;
11471 if (pNext_size)
11472 {
11473 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011474 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011475 }
11476}
11477
11478void deepcopy_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
11479 BumpPool* pool,
11480 const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* from,
11481 VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* to)
11482{
11483 (void)pool;
11484 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011485 const void* from_pNext = from;
11486 size_t pNext_size = 0u;
11487 while (!pNext_size && from_pNext)
11488 {
11489 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11490 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11491 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011492 to->pNext = nullptr;
11493 if (pNext_size)
11494 {
11495 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011496 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011497 }
11498}
11499
11500#endif
11501#ifdef VK_AMD_shader_core_properties2
11502void deepcopy_VkPhysicalDeviceShaderCoreProperties2AMD(
11503 BumpPool* pool,
11504 const VkPhysicalDeviceShaderCoreProperties2AMD* from,
11505 VkPhysicalDeviceShaderCoreProperties2AMD* to)
11506{
11507 (void)pool;
11508 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011509 const void* from_pNext = from;
11510 size_t pNext_size = 0u;
11511 while (!pNext_size && from_pNext)
11512 {
11513 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11514 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11515 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011516 to->pNext = nullptr;
11517 if (pNext_size)
11518 {
11519 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011520 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011521 }
11522}
11523
11524#endif
11525#ifdef VK_AMD_device_coherent_memory
11526void deepcopy_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
11527 BumpPool* pool,
11528 const VkPhysicalDeviceCoherentMemoryFeaturesAMD* from,
11529 VkPhysicalDeviceCoherentMemoryFeaturesAMD* to)
11530{
11531 (void)pool;
11532 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011533 const void* from_pNext = from;
11534 size_t pNext_size = 0u;
11535 while (!pNext_size && from_pNext)
11536 {
11537 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11538 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11539 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011540 to->pNext = nullptr;
11541 if (pNext_size)
11542 {
11543 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011544 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011545 }
11546}
11547
11548#endif
11549#ifdef VK_EXT_shader_image_atomic_int64
11550void deepcopy_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
11551 BumpPool* pool,
11552 const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* from,
11553 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* to)
11554{
11555 (void)pool;
11556 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011557 const void* from_pNext = from;
11558 size_t pNext_size = 0u;
11559 while (!pNext_size && from_pNext)
11560 {
11561 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11562 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11563 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011564 to->pNext = nullptr;
11565 if (pNext_size)
11566 {
11567 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011568 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011569 }
11570}
11571
11572#endif
11573#ifdef VK_EXT_memory_budget
11574void deepcopy_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
11575 BumpPool* pool,
11576 const VkPhysicalDeviceMemoryBudgetPropertiesEXT* from,
11577 VkPhysicalDeviceMemoryBudgetPropertiesEXT* to)
11578{
11579 (void)pool;
11580 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011581 const void* from_pNext = from;
11582 size_t pNext_size = 0u;
11583 while (!pNext_size && from_pNext)
11584 {
11585 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11586 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11587 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011588 to->pNext = nullptr;
11589 if (pNext_size)
11590 {
11591 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011592 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011593 }
11594 memcpy(to->heapBudget, from->heapBudget, VK_MAX_MEMORY_HEAPS * sizeof(VkDeviceSize));
11595 memcpy(to->heapUsage, from->heapUsage, VK_MAX_MEMORY_HEAPS * sizeof(VkDeviceSize));
11596}
11597
11598#endif
11599#ifdef VK_EXT_memory_priority
11600void deepcopy_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
11601 BumpPool* pool,
11602 const VkPhysicalDeviceMemoryPriorityFeaturesEXT* from,
11603 VkPhysicalDeviceMemoryPriorityFeaturesEXT* to)
11604{
11605 (void)pool;
11606 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011607 const void* from_pNext = from;
11608 size_t pNext_size = 0u;
11609 while (!pNext_size && from_pNext)
11610 {
11611 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11612 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11613 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011614 to->pNext = nullptr;
11615 if (pNext_size)
11616 {
11617 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011618 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011619 }
11620}
11621
11622void deepcopy_VkMemoryPriorityAllocateInfoEXT(
11623 BumpPool* pool,
11624 const VkMemoryPriorityAllocateInfoEXT* from,
11625 VkMemoryPriorityAllocateInfoEXT* to)
11626{
11627 (void)pool;
11628 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011629 const void* from_pNext = from;
11630 size_t pNext_size = 0u;
11631 while (!pNext_size && from_pNext)
11632 {
11633 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11634 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11635 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011636 to->pNext = nullptr;
11637 if (pNext_size)
11638 {
11639 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011640 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011641 }
11642}
11643
11644#endif
11645#ifdef VK_NV_dedicated_allocation_image_aliasing
11646void deepcopy_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
11647 BumpPool* pool,
11648 const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* from,
11649 VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* to)
11650{
11651 (void)pool;
11652 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011653 const void* from_pNext = from;
11654 size_t pNext_size = 0u;
11655 while (!pNext_size && from_pNext)
11656 {
11657 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11658 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11659 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011660 to->pNext = nullptr;
11661 if (pNext_size)
11662 {
11663 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011664 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011665 }
11666}
11667
11668#endif
11669#ifdef VK_EXT_buffer_device_address
11670void deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
11671 BumpPool* pool,
11672 const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* from,
11673 VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* to)
11674{
11675 (void)pool;
11676 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011677 const void* from_pNext = from;
11678 size_t pNext_size = 0u;
11679 while (!pNext_size && from_pNext)
11680 {
11681 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11682 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11683 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011684 to->pNext = nullptr;
11685 if (pNext_size)
11686 {
11687 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011688 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011689 }
11690}
11691
11692void deepcopy_VkBufferDeviceAddressCreateInfoEXT(
11693 BumpPool* pool,
11694 const VkBufferDeviceAddressCreateInfoEXT* from,
11695 VkBufferDeviceAddressCreateInfoEXT* to)
11696{
11697 (void)pool;
11698 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011699 const void* from_pNext = from;
11700 size_t pNext_size = 0u;
11701 while (!pNext_size && from_pNext)
11702 {
11703 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11704 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11705 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011706 to->pNext = nullptr;
11707 if (pNext_size)
11708 {
11709 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011710 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011711 }
11712}
11713
11714#endif
11715#ifdef VK_EXT_tooling_info
11716void deepcopy_VkPhysicalDeviceToolPropertiesEXT(
11717 BumpPool* pool,
11718 const VkPhysicalDeviceToolPropertiesEXT* from,
11719 VkPhysicalDeviceToolPropertiesEXT* to)
11720{
11721 (void)pool;
11722 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011723 const void* from_pNext = from;
11724 size_t pNext_size = 0u;
11725 while (!pNext_size && from_pNext)
11726 {
11727 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11728 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11729 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011730 to->pNext = nullptr;
11731 if (pNext_size)
11732 {
11733 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011734 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011735 }
11736 memcpy(to->name, from->name, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
11737 memcpy(to->version, from->version, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
11738 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
11739 memcpy(to->layer, from->layer, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
11740}
11741
11742#endif
11743#ifdef VK_EXT_separate_stencil_usage
11744#endif
11745#ifdef VK_EXT_validation_features
11746void deepcopy_VkValidationFeaturesEXT(
11747 BumpPool* pool,
11748 const VkValidationFeaturesEXT* from,
11749 VkValidationFeaturesEXT* to)
11750{
11751 (void)pool;
11752 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011753 const void* from_pNext = from;
11754 size_t pNext_size = 0u;
11755 while (!pNext_size && from_pNext)
11756 {
11757 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11758 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11759 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011760 to->pNext = nullptr;
11761 if (pNext_size)
11762 {
11763 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011764 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011765 }
11766 to->pEnabledValidationFeatures = nullptr;
11767 if (from->pEnabledValidationFeatures)
11768 {
11769 to->pEnabledValidationFeatures = (VkValidationFeatureEnableEXT*)pool->dupArray(from->pEnabledValidationFeatures, from->enabledValidationFeatureCount * sizeof(const VkValidationFeatureEnableEXT));
11770 }
11771 to->pDisabledValidationFeatures = nullptr;
11772 if (from->pDisabledValidationFeatures)
11773 {
11774 to->pDisabledValidationFeatures = (VkValidationFeatureDisableEXT*)pool->dupArray(from->pDisabledValidationFeatures, from->disabledValidationFeatureCount * sizeof(const VkValidationFeatureDisableEXT));
11775 }
11776}
11777
11778#endif
11779#ifdef VK_NV_cooperative_matrix
11780void deepcopy_VkCooperativeMatrixPropertiesNV(
11781 BumpPool* pool,
11782 const VkCooperativeMatrixPropertiesNV* from,
11783 VkCooperativeMatrixPropertiesNV* to)
11784{
11785 (void)pool;
11786 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011787 const void* from_pNext = from;
11788 size_t pNext_size = 0u;
11789 while (!pNext_size && from_pNext)
11790 {
11791 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11792 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11793 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011794 to->pNext = nullptr;
11795 if (pNext_size)
11796 {
11797 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011798 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011799 }
11800}
11801
11802void deepcopy_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
11803 BumpPool* pool,
11804 const VkPhysicalDeviceCooperativeMatrixFeaturesNV* from,
11805 VkPhysicalDeviceCooperativeMatrixFeaturesNV* to)
11806{
11807 (void)pool;
11808 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011809 const void* from_pNext = from;
11810 size_t pNext_size = 0u;
11811 while (!pNext_size && from_pNext)
11812 {
11813 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11814 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11815 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011816 to->pNext = nullptr;
11817 if (pNext_size)
11818 {
11819 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011820 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011821 }
11822}
11823
11824void deepcopy_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
11825 BumpPool* pool,
11826 const VkPhysicalDeviceCooperativeMatrixPropertiesNV* from,
11827 VkPhysicalDeviceCooperativeMatrixPropertiesNV* to)
11828{
11829 (void)pool;
11830 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011831 const void* from_pNext = from;
11832 size_t pNext_size = 0u;
11833 while (!pNext_size && from_pNext)
11834 {
11835 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11836 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11837 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011838 to->pNext = nullptr;
11839 if (pNext_size)
11840 {
11841 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011842 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011843 }
11844}
11845
11846#endif
11847#ifdef VK_NV_coverage_reduction_mode
11848void deepcopy_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
11849 BumpPool* pool,
11850 const VkPhysicalDeviceCoverageReductionModeFeaturesNV* from,
11851 VkPhysicalDeviceCoverageReductionModeFeaturesNV* to)
11852{
11853 (void)pool;
11854 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011855 const void* from_pNext = from;
11856 size_t pNext_size = 0u;
11857 while (!pNext_size && from_pNext)
11858 {
11859 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11860 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11861 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011862 to->pNext = nullptr;
11863 if (pNext_size)
11864 {
11865 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011866 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011867 }
11868}
11869
11870void deepcopy_VkPipelineCoverageReductionStateCreateInfoNV(
11871 BumpPool* pool,
11872 const VkPipelineCoverageReductionStateCreateInfoNV* from,
11873 VkPipelineCoverageReductionStateCreateInfoNV* to)
11874{
11875 (void)pool;
11876 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011877 const void* from_pNext = from;
11878 size_t pNext_size = 0u;
11879 while (!pNext_size && from_pNext)
11880 {
11881 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11882 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11883 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011884 to->pNext = nullptr;
11885 if (pNext_size)
11886 {
11887 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011888 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011889 }
11890}
11891
11892void deepcopy_VkFramebufferMixedSamplesCombinationNV(
11893 BumpPool* pool,
11894 const VkFramebufferMixedSamplesCombinationNV* from,
11895 VkFramebufferMixedSamplesCombinationNV* to)
11896{
11897 (void)pool;
11898 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011899 const void* from_pNext = from;
11900 size_t pNext_size = 0u;
11901 while (!pNext_size && from_pNext)
11902 {
11903 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11904 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11905 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011906 to->pNext = nullptr;
11907 if (pNext_size)
11908 {
11909 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011910 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011911 }
11912}
11913
11914#endif
11915#ifdef VK_EXT_fragment_shader_interlock
11916void deepcopy_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
11917 BumpPool* pool,
11918 const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* from,
11919 VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* to)
11920{
11921 (void)pool;
11922 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011923 const void* from_pNext = from;
11924 size_t pNext_size = 0u;
11925 while (!pNext_size && from_pNext)
11926 {
11927 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11928 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11929 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011930 to->pNext = nullptr;
11931 if (pNext_size)
11932 {
11933 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011934 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011935 }
11936}
11937
11938#endif
11939#ifdef VK_EXT_ycbcr_image_arrays
11940void deepcopy_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
11941 BumpPool* pool,
11942 const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* from,
11943 VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* to)
11944{
11945 (void)pool;
11946 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011947 const void* from_pNext = from;
11948 size_t pNext_size = 0u;
11949 while (!pNext_size && from_pNext)
11950 {
11951 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11952 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11953 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011954 to->pNext = nullptr;
11955 if (pNext_size)
11956 {
11957 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011958 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011959 }
11960}
11961
11962#endif
11963#ifdef VK_EXT_full_screen_exclusive
11964void deepcopy_VkSurfaceFullScreenExclusiveInfoEXT(
11965 BumpPool* pool,
11966 const VkSurfaceFullScreenExclusiveInfoEXT* from,
11967 VkSurfaceFullScreenExclusiveInfoEXT* to)
11968{
11969 (void)pool;
11970 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011971 const void* from_pNext = from;
11972 size_t pNext_size = 0u;
11973 while (!pNext_size && from_pNext)
11974 {
11975 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11976 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11977 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011978 to->pNext = nullptr;
11979 if (pNext_size)
11980 {
11981 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080011982 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011983 }
11984}
11985
11986void deepcopy_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
11987 BumpPool* pool,
11988 const VkSurfaceCapabilitiesFullScreenExclusiveEXT* from,
11989 VkSurfaceCapabilitiesFullScreenExclusiveEXT* to)
11990{
11991 (void)pool;
11992 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080011993 const void* from_pNext = from;
11994 size_t pNext_size = 0u;
11995 while (!pNext_size && from_pNext)
11996 {
11997 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11998 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
11999 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012000 to->pNext = nullptr;
12001 if (pNext_size)
12002 {
12003 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012004 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012005 }
12006}
12007
12008void deepcopy_VkSurfaceFullScreenExclusiveWin32InfoEXT(
12009 BumpPool* pool,
12010 const VkSurfaceFullScreenExclusiveWin32InfoEXT* from,
12011 VkSurfaceFullScreenExclusiveWin32InfoEXT* to)
12012{
12013 (void)pool;
12014 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012015 const void* from_pNext = from;
12016 size_t pNext_size = 0u;
12017 while (!pNext_size && from_pNext)
12018 {
12019 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12020 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12021 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012022 to->pNext = nullptr;
12023 if (pNext_size)
12024 {
12025 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012026 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012027 }
12028}
12029
12030#endif
12031#ifdef VK_EXT_headless_surface
12032void deepcopy_VkHeadlessSurfaceCreateInfoEXT(
12033 BumpPool* pool,
12034 const VkHeadlessSurfaceCreateInfoEXT* from,
12035 VkHeadlessSurfaceCreateInfoEXT* to)
12036{
12037 (void)pool;
12038 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012039 const void* from_pNext = from;
12040 size_t pNext_size = 0u;
12041 while (!pNext_size && from_pNext)
12042 {
12043 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12044 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12045 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012046 to->pNext = nullptr;
12047 if (pNext_size)
12048 {
12049 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012050 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012051 }
12052}
12053
12054#endif
12055#ifdef VK_EXT_line_rasterization
12056void deepcopy_VkPhysicalDeviceLineRasterizationFeaturesEXT(
12057 BumpPool* pool,
12058 const VkPhysicalDeviceLineRasterizationFeaturesEXT* from,
12059 VkPhysicalDeviceLineRasterizationFeaturesEXT* to)
12060{
12061 (void)pool;
12062 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012063 const void* from_pNext = from;
12064 size_t pNext_size = 0u;
12065 while (!pNext_size && from_pNext)
12066 {
12067 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12068 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12069 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012070 to->pNext = nullptr;
12071 if (pNext_size)
12072 {
12073 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012074 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012075 }
12076}
12077
12078void deepcopy_VkPhysicalDeviceLineRasterizationPropertiesEXT(
12079 BumpPool* pool,
12080 const VkPhysicalDeviceLineRasterizationPropertiesEXT* from,
12081 VkPhysicalDeviceLineRasterizationPropertiesEXT* to)
12082{
12083 (void)pool;
12084 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012085 const void* from_pNext = from;
12086 size_t pNext_size = 0u;
12087 while (!pNext_size && from_pNext)
12088 {
12089 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12090 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12091 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012092 to->pNext = nullptr;
12093 if (pNext_size)
12094 {
12095 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012096 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012097 }
12098}
12099
12100void deepcopy_VkPipelineRasterizationLineStateCreateInfoEXT(
12101 BumpPool* pool,
12102 const VkPipelineRasterizationLineStateCreateInfoEXT* from,
12103 VkPipelineRasterizationLineStateCreateInfoEXT* to)
12104{
12105 (void)pool;
12106 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012107 const void* from_pNext = from;
12108 size_t pNext_size = 0u;
12109 while (!pNext_size && from_pNext)
12110 {
12111 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12112 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12113 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012114 to->pNext = nullptr;
12115 if (pNext_size)
12116 {
12117 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012118 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012119 }
12120}
12121
12122#endif
12123#ifdef VK_EXT_shader_atomic_float
12124void deepcopy_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
12125 BumpPool* pool,
12126 const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* from,
12127 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* to)
12128{
12129 (void)pool;
12130 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012131 const void* from_pNext = from;
12132 size_t pNext_size = 0u;
12133 while (!pNext_size && from_pNext)
12134 {
12135 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12136 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12137 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012138 to->pNext = nullptr;
12139 if (pNext_size)
12140 {
12141 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012142 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012143 }
12144}
12145
12146#endif
12147#ifdef VK_EXT_host_query_reset
12148#endif
12149#ifdef VK_EXT_index_type_uint8
12150void deepcopy_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
12151 BumpPool* pool,
12152 const VkPhysicalDeviceIndexTypeUint8FeaturesEXT* from,
12153 VkPhysicalDeviceIndexTypeUint8FeaturesEXT* to)
12154{
12155 (void)pool;
12156 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012157 const void* from_pNext = from;
12158 size_t pNext_size = 0u;
12159 while (!pNext_size && from_pNext)
12160 {
12161 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12162 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12163 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012164 to->pNext = nullptr;
12165 if (pNext_size)
12166 {
12167 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012168 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012169 }
12170}
12171
12172#endif
12173#ifdef VK_EXT_extended_dynamic_state
12174void deepcopy_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
12175 BumpPool* pool,
12176 const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* from,
12177 VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* to)
12178{
12179 (void)pool;
12180 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012181 const void* from_pNext = from;
12182 size_t pNext_size = 0u;
12183 while (!pNext_size && from_pNext)
12184 {
12185 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12186 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12187 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012188 to->pNext = nullptr;
12189 if (pNext_size)
12190 {
12191 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012192 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012193 }
12194}
12195
12196#endif
12197#ifdef VK_EXT_shader_demote_to_helper_invocation
12198void deepcopy_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
12199 BumpPool* pool,
12200 const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* from,
12201 VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* to)
12202{
12203 (void)pool;
12204 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012205 const void* from_pNext = from;
12206 size_t pNext_size = 0u;
12207 while (!pNext_size && from_pNext)
12208 {
12209 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12210 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12211 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012212 to->pNext = nullptr;
12213 if (pNext_size)
12214 {
12215 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012216 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012217 }
12218}
12219
12220#endif
12221#ifdef VK_NV_device_generated_commands
12222void deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
12223 BumpPool* pool,
12224 const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* from,
12225 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* to)
12226{
12227 (void)pool;
12228 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012229 const void* from_pNext = from;
12230 size_t pNext_size = 0u;
12231 while (!pNext_size && from_pNext)
12232 {
12233 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12234 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12235 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012236 to->pNext = nullptr;
12237 if (pNext_size)
12238 {
12239 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012240 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012241 }
12242}
12243
12244void deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
12245 BumpPool* pool,
12246 const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* from,
12247 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* to)
12248{
12249 (void)pool;
12250 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012251 const void* from_pNext = from;
12252 size_t pNext_size = 0u;
12253 while (!pNext_size && from_pNext)
12254 {
12255 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12256 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12257 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012258 to->pNext = nullptr;
12259 if (pNext_size)
12260 {
12261 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012262 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012263 }
12264}
12265
12266void deepcopy_VkGraphicsShaderGroupCreateInfoNV(
12267 BumpPool* pool,
12268 const VkGraphicsShaderGroupCreateInfoNV* from,
12269 VkGraphicsShaderGroupCreateInfoNV* to)
12270{
12271 (void)pool;
12272 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012273 const void* from_pNext = from;
12274 size_t pNext_size = 0u;
12275 while (!pNext_size && from_pNext)
12276 {
12277 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12278 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12279 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012280 to->pNext = nullptr;
12281 if (pNext_size)
12282 {
12283 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012284 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012285 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012286 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080012287 {
Yilong Libd10ec92021-02-10 13:24:27 -080012288 to->pStages = nullptr;
12289 if (from->pStages)
Yilong Lia8d45f12021-02-07 02:30:21 -080012290 {
Yilong Libd10ec92021-02-10 13:24:27 -080012291 to->pStages = (VkPipelineShaderStageCreateInfo*)pool->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
12292 to->stageCount = from->stageCount;
12293 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
12294 {
12295 deepcopy_VkPipelineShaderStageCreateInfo(pool, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
12296 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012297 }
12298 }
12299 to->pVertexInputState = nullptr;
12300 if (from->pVertexInputState)
12301 {
12302 to->pVertexInputState = (VkPipelineVertexInputStateCreateInfo*)pool->alloc(sizeof(const VkPipelineVertexInputStateCreateInfo));
12303 deepcopy_VkPipelineVertexInputStateCreateInfo(pool, from->pVertexInputState, (VkPipelineVertexInputStateCreateInfo*)(to->pVertexInputState));
12304 }
12305 to->pTessellationState = nullptr;
12306 if (from->pTessellationState)
12307 {
12308 to->pTessellationState = (VkPipelineTessellationStateCreateInfo*)pool->alloc(sizeof(const VkPipelineTessellationStateCreateInfo));
12309 deepcopy_VkPipelineTessellationStateCreateInfo(pool, from->pTessellationState, (VkPipelineTessellationStateCreateInfo*)(to->pTessellationState));
12310 }
12311}
12312
12313void deepcopy_VkGraphicsPipelineShaderGroupsCreateInfoNV(
12314 BumpPool* pool,
12315 const VkGraphicsPipelineShaderGroupsCreateInfoNV* from,
12316 VkGraphicsPipelineShaderGroupsCreateInfoNV* to)
12317{
12318 (void)pool;
12319 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012320 const void* from_pNext = from;
12321 size_t pNext_size = 0u;
12322 while (!pNext_size && from_pNext)
12323 {
12324 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12325 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12326 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012327 to->pNext = nullptr;
12328 if (pNext_size)
12329 {
12330 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012331 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012332 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012333 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080012334 {
Yilong Libd10ec92021-02-10 13:24:27 -080012335 to->pGroups = nullptr;
12336 if (from->pGroups)
Yilong Lia8d45f12021-02-07 02:30:21 -080012337 {
Yilong Libd10ec92021-02-10 13:24:27 -080012338 to->pGroups = (VkGraphicsShaderGroupCreateInfoNV*)pool->alloc(from->groupCount * sizeof(const VkGraphicsShaderGroupCreateInfoNV));
12339 to->groupCount = from->groupCount;
12340 for (uint32_t i = 0; i < (uint32_t)from->groupCount; ++i)
12341 {
12342 deepcopy_VkGraphicsShaderGroupCreateInfoNV(pool, from->pGroups + i, (VkGraphicsShaderGroupCreateInfoNV*)(to->pGroups + i));
12343 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012344 }
12345 }
12346 to->pPipelines = nullptr;
12347 if (from->pPipelines)
12348 {
12349 to->pPipelines = (VkPipeline*)pool->dupArray(from->pPipelines, from->pipelineCount * sizeof(const VkPipeline));
12350 }
12351}
12352
12353void deepcopy_VkBindShaderGroupIndirectCommandNV(
12354 BumpPool* pool,
12355 const VkBindShaderGroupIndirectCommandNV* from,
12356 VkBindShaderGroupIndirectCommandNV* to)
12357{
12358 (void)pool;
12359 *to = *from;
12360}
12361
12362void deepcopy_VkBindIndexBufferIndirectCommandNV(
12363 BumpPool* pool,
12364 const VkBindIndexBufferIndirectCommandNV* from,
12365 VkBindIndexBufferIndirectCommandNV* to)
12366{
12367 (void)pool;
12368 *to = *from;
12369}
12370
12371void deepcopy_VkBindVertexBufferIndirectCommandNV(
12372 BumpPool* pool,
12373 const VkBindVertexBufferIndirectCommandNV* from,
12374 VkBindVertexBufferIndirectCommandNV* to)
12375{
12376 (void)pool;
12377 *to = *from;
12378}
12379
12380void deepcopy_VkSetStateFlagsIndirectCommandNV(
12381 BumpPool* pool,
12382 const VkSetStateFlagsIndirectCommandNV* from,
12383 VkSetStateFlagsIndirectCommandNV* to)
12384{
12385 (void)pool;
12386 *to = *from;
12387}
12388
12389void deepcopy_VkIndirectCommandsStreamNV(
12390 BumpPool* pool,
12391 const VkIndirectCommandsStreamNV* from,
12392 VkIndirectCommandsStreamNV* to)
12393{
12394 (void)pool;
12395 *to = *from;
12396}
12397
12398void deepcopy_VkIndirectCommandsLayoutTokenNV(
12399 BumpPool* pool,
12400 const VkIndirectCommandsLayoutTokenNV* from,
12401 VkIndirectCommandsLayoutTokenNV* to)
12402{
12403 (void)pool;
12404 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012405 const void* from_pNext = from;
12406 size_t pNext_size = 0u;
12407 while (!pNext_size && from_pNext)
12408 {
12409 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12410 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12411 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012412 to->pNext = nullptr;
12413 if (pNext_size)
12414 {
12415 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012416 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012417 }
12418 to->pIndexTypes = nullptr;
12419 if (from->pIndexTypes)
12420 {
12421 to->pIndexTypes = (VkIndexType*)pool->dupArray(from->pIndexTypes, from->indexTypeCount * sizeof(const VkIndexType));
12422 }
12423 to->pIndexTypeValues = nullptr;
12424 if (from->pIndexTypeValues)
12425 {
12426 to->pIndexTypeValues = (uint32_t*)pool->dupArray(from->pIndexTypeValues, from->indexTypeCount * sizeof(const uint32_t));
12427 }
12428}
12429
12430void deepcopy_VkIndirectCommandsLayoutCreateInfoNV(
12431 BumpPool* pool,
12432 const VkIndirectCommandsLayoutCreateInfoNV* from,
12433 VkIndirectCommandsLayoutCreateInfoNV* to)
12434{
12435 (void)pool;
12436 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012437 const void* from_pNext = from;
12438 size_t pNext_size = 0u;
12439 while (!pNext_size && from_pNext)
12440 {
12441 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12442 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12443 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012444 to->pNext = nullptr;
12445 if (pNext_size)
12446 {
12447 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012448 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012449 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012450 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080012451 {
Yilong Libd10ec92021-02-10 13:24:27 -080012452 to->pTokens = nullptr;
12453 if (from->pTokens)
Yilong Lia8d45f12021-02-07 02:30:21 -080012454 {
Yilong Libd10ec92021-02-10 13:24:27 -080012455 to->pTokens = (VkIndirectCommandsLayoutTokenNV*)pool->alloc(from->tokenCount * sizeof(const VkIndirectCommandsLayoutTokenNV));
12456 to->tokenCount = from->tokenCount;
12457 for (uint32_t i = 0; i < (uint32_t)from->tokenCount; ++i)
12458 {
12459 deepcopy_VkIndirectCommandsLayoutTokenNV(pool, from->pTokens + i, (VkIndirectCommandsLayoutTokenNV*)(to->pTokens + i));
12460 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012461 }
12462 }
12463 to->pStreamStrides = nullptr;
12464 if (from->pStreamStrides)
12465 {
12466 to->pStreamStrides = (uint32_t*)pool->dupArray(from->pStreamStrides, from->streamCount * sizeof(const uint32_t));
12467 }
12468}
12469
12470void deepcopy_VkGeneratedCommandsInfoNV(
12471 BumpPool* pool,
12472 const VkGeneratedCommandsInfoNV* from,
12473 VkGeneratedCommandsInfoNV* to)
12474{
12475 (void)pool;
12476 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012477 const void* from_pNext = from;
12478 size_t pNext_size = 0u;
12479 while (!pNext_size && from_pNext)
12480 {
12481 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12482 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12483 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012484 to->pNext = nullptr;
12485 if (pNext_size)
12486 {
12487 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012488 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012489 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012490 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080012491 {
Yilong Libd10ec92021-02-10 13:24:27 -080012492 to->pStreams = nullptr;
12493 if (from->pStreams)
Yilong Lia8d45f12021-02-07 02:30:21 -080012494 {
Yilong Libd10ec92021-02-10 13:24:27 -080012495 to->pStreams = (VkIndirectCommandsStreamNV*)pool->alloc(from->streamCount * sizeof(const VkIndirectCommandsStreamNV));
12496 to->streamCount = from->streamCount;
12497 for (uint32_t i = 0; i < (uint32_t)from->streamCount; ++i)
12498 {
12499 deepcopy_VkIndirectCommandsStreamNV(pool, from->pStreams + i, (VkIndirectCommandsStreamNV*)(to->pStreams + i));
12500 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012501 }
12502 }
12503}
12504
12505void deepcopy_VkGeneratedCommandsMemoryRequirementsInfoNV(
12506 BumpPool* pool,
12507 const VkGeneratedCommandsMemoryRequirementsInfoNV* from,
12508 VkGeneratedCommandsMemoryRequirementsInfoNV* to)
12509{
12510 (void)pool;
12511 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012512 const void* from_pNext = from;
12513 size_t pNext_size = 0u;
12514 while (!pNext_size && from_pNext)
12515 {
12516 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12517 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12518 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012519 to->pNext = nullptr;
12520 if (pNext_size)
12521 {
12522 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012523 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012524 }
12525}
12526
12527#endif
12528#ifdef VK_EXT_texel_buffer_alignment
12529void deepcopy_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
12530 BumpPool* pool,
12531 const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* from,
12532 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* to)
12533{
12534 (void)pool;
12535 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012536 const void* from_pNext = from;
12537 size_t pNext_size = 0u;
12538 while (!pNext_size && from_pNext)
12539 {
12540 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12541 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12542 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012543 to->pNext = nullptr;
12544 if (pNext_size)
12545 {
12546 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012547 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012548 }
12549}
12550
12551void deepcopy_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
12552 BumpPool* pool,
12553 const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* from,
12554 VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* to)
12555{
12556 (void)pool;
12557 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012558 const void* from_pNext = from;
12559 size_t pNext_size = 0u;
12560 while (!pNext_size && from_pNext)
12561 {
12562 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12563 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12564 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012565 to->pNext = nullptr;
12566 if (pNext_size)
12567 {
12568 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012569 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012570 }
12571}
12572
12573#endif
12574#ifdef VK_QCOM_render_pass_transform
12575void deepcopy_VkRenderPassTransformBeginInfoQCOM(
12576 BumpPool* pool,
12577 const VkRenderPassTransformBeginInfoQCOM* from,
12578 VkRenderPassTransformBeginInfoQCOM* to)
12579{
12580 (void)pool;
12581 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012582 const void* from_pNext = from;
12583 size_t pNext_size = 0u;
12584 while (!pNext_size && from_pNext)
12585 {
12586 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12587 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12588 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012589 to->pNext = nullptr;
12590 if (pNext_size)
12591 {
12592 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012593 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012594 }
12595}
12596
12597void deepcopy_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
12598 BumpPool* pool,
12599 const VkCommandBufferInheritanceRenderPassTransformInfoQCOM* from,
12600 VkCommandBufferInheritanceRenderPassTransformInfoQCOM* to)
12601{
12602 (void)pool;
12603 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012604 const void* from_pNext = from;
12605 size_t pNext_size = 0u;
12606 while (!pNext_size && from_pNext)
12607 {
12608 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12609 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12610 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012611 to->pNext = nullptr;
12612 if (pNext_size)
12613 {
12614 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012615 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012616 }
12617 deepcopy_VkRect2D(pool, &from->renderArea, (VkRect2D*)(&to->renderArea));
12618}
12619
12620#endif
12621#ifdef VK_EXT_device_memory_report
12622void deepcopy_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
12623 BumpPool* pool,
12624 const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* from,
12625 VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* to)
12626{
12627 (void)pool;
12628 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012629 const void* from_pNext = from;
12630 size_t pNext_size = 0u;
12631 while (!pNext_size && from_pNext)
12632 {
12633 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12634 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12635 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012636 to->pNext = nullptr;
12637 if (pNext_size)
12638 {
12639 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012640 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012641 }
12642}
12643
12644void deepcopy_VkDeviceMemoryReportCallbackDataEXT(
12645 BumpPool* pool,
12646 const VkDeviceMemoryReportCallbackDataEXT* from,
12647 VkDeviceMemoryReportCallbackDataEXT* to)
12648{
12649 (void)pool;
12650 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012651 const void* from_pNext = from;
12652 size_t pNext_size = 0u;
12653 while (!pNext_size && from_pNext)
12654 {
12655 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12656 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12657 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012658 to->pNext = nullptr;
12659 if (pNext_size)
12660 {
12661 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012662 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012663 }
12664}
12665
12666void deepcopy_VkDeviceDeviceMemoryReportCreateInfoEXT(
12667 BumpPool* pool,
12668 const VkDeviceDeviceMemoryReportCreateInfoEXT* from,
12669 VkDeviceDeviceMemoryReportCreateInfoEXT* to)
12670{
12671 (void)pool;
12672 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012673 const void* from_pNext = from;
12674 size_t pNext_size = 0u;
12675 while (!pNext_size && from_pNext)
12676 {
12677 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12678 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12679 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012680 to->pNext = nullptr;
12681 if (pNext_size)
12682 {
12683 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012684 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012685 }
12686 to->pUserData = nullptr;
12687 if (from->pUserData)
12688 {
12689 to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
12690 }
12691}
12692
12693#endif
12694#ifdef VK_EXT_robustness2
12695void deepcopy_VkPhysicalDeviceRobustness2FeaturesEXT(
12696 BumpPool* pool,
12697 const VkPhysicalDeviceRobustness2FeaturesEXT* from,
12698 VkPhysicalDeviceRobustness2FeaturesEXT* to)
12699{
12700 (void)pool;
12701 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012702 const void* from_pNext = from;
12703 size_t pNext_size = 0u;
12704 while (!pNext_size && from_pNext)
12705 {
12706 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12707 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12708 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012709 to->pNext = nullptr;
12710 if (pNext_size)
12711 {
12712 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012713 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012714 }
12715}
12716
12717void deepcopy_VkPhysicalDeviceRobustness2PropertiesEXT(
12718 BumpPool* pool,
12719 const VkPhysicalDeviceRobustness2PropertiesEXT* from,
12720 VkPhysicalDeviceRobustness2PropertiesEXT* to)
12721{
12722 (void)pool;
12723 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012724 const void* from_pNext = from;
12725 size_t pNext_size = 0u;
12726 while (!pNext_size && from_pNext)
12727 {
12728 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12729 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12730 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012731 to->pNext = nullptr;
12732 if (pNext_size)
12733 {
12734 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012735 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012736 }
12737}
12738
12739#endif
12740#ifdef VK_EXT_custom_border_color
12741void deepcopy_VkSamplerCustomBorderColorCreateInfoEXT(
12742 BumpPool* pool,
12743 const VkSamplerCustomBorderColorCreateInfoEXT* from,
12744 VkSamplerCustomBorderColorCreateInfoEXT* to)
12745{
12746 (void)pool;
12747 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012748 const void* from_pNext = from;
12749 size_t pNext_size = 0u;
12750 while (!pNext_size && from_pNext)
12751 {
12752 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12753 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12754 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012755 to->pNext = nullptr;
12756 if (pNext_size)
12757 {
12758 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012759 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012760 }
12761 deepcopy_VkClearColorValue(pool, &from->customBorderColor, (VkClearColorValue*)(&to->customBorderColor));
12762}
12763
12764void deepcopy_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
12765 BumpPool* pool,
12766 const VkPhysicalDeviceCustomBorderColorPropertiesEXT* from,
12767 VkPhysicalDeviceCustomBorderColorPropertiesEXT* to)
12768{
12769 (void)pool;
12770 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012771 const void* from_pNext = from;
12772 size_t pNext_size = 0u;
12773 while (!pNext_size && from_pNext)
12774 {
12775 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12776 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12777 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012778 to->pNext = nullptr;
12779 if (pNext_size)
12780 {
12781 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012782 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012783 }
12784}
12785
12786void deepcopy_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
12787 BumpPool* pool,
12788 const VkPhysicalDeviceCustomBorderColorFeaturesEXT* from,
12789 VkPhysicalDeviceCustomBorderColorFeaturesEXT* to)
12790{
12791 (void)pool;
12792 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012793 const void* from_pNext = from;
12794 size_t pNext_size = 0u;
12795 while (!pNext_size && from_pNext)
12796 {
12797 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12798 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12799 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012800 to->pNext = nullptr;
12801 if (pNext_size)
12802 {
12803 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012804 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012805 }
12806}
12807
12808#endif
12809#ifdef VK_GOOGLE_user_type
12810#endif
12811#ifdef VK_EXT_private_data
12812void deepcopy_VkPhysicalDevicePrivateDataFeaturesEXT(
12813 BumpPool* pool,
12814 const VkPhysicalDevicePrivateDataFeaturesEXT* from,
12815 VkPhysicalDevicePrivateDataFeaturesEXT* to)
12816{
12817 (void)pool;
12818 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012819 const void* from_pNext = from;
12820 size_t pNext_size = 0u;
12821 while (!pNext_size && from_pNext)
12822 {
12823 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12824 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12825 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012826 to->pNext = nullptr;
12827 if (pNext_size)
12828 {
12829 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012830 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012831 }
12832}
12833
12834void deepcopy_VkDevicePrivateDataCreateInfoEXT(
12835 BumpPool* pool,
12836 const VkDevicePrivateDataCreateInfoEXT* from,
12837 VkDevicePrivateDataCreateInfoEXT* to)
12838{
12839 (void)pool;
12840 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012841 const void* from_pNext = from;
12842 size_t pNext_size = 0u;
12843 while (!pNext_size && from_pNext)
12844 {
12845 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12846 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12847 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012848 to->pNext = nullptr;
12849 if (pNext_size)
12850 {
12851 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012852 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012853 }
12854}
12855
12856void deepcopy_VkPrivateDataSlotCreateInfoEXT(
12857 BumpPool* pool,
12858 const VkPrivateDataSlotCreateInfoEXT* from,
12859 VkPrivateDataSlotCreateInfoEXT* to)
12860{
12861 (void)pool;
12862 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012863 const void* from_pNext = from;
12864 size_t pNext_size = 0u;
12865 while (!pNext_size && from_pNext)
12866 {
12867 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12868 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12869 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012870 to->pNext = nullptr;
12871 if (pNext_size)
12872 {
12873 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012874 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012875 }
12876}
12877
12878#endif
12879#ifdef VK_EXT_pipeline_creation_cache_control
12880void deepcopy_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
12881 BumpPool* pool,
12882 const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* from,
12883 VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* to)
12884{
12885 (void)pool;
12886 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012887 const void* from_pNext = from;
12888 size_t pNext_size = 0u;
12889 while (!pNext_size && from_pNext)
12890 {
12891 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12892 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12893 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012894 to->pNext = nullptr;
12895 if (pNext_size)
12896 {
12897 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012898 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012899 }
12900}
12901
12902#endif
12903#ifdef VK_NV_device_diagnostics_config
12904void deepcopy_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
12905 BumpPool* pool,
12906 const VkPhysicalDeviceDiagnosticsConfigFeaturesNV* from,
12907 VkPhysicalDeviceDiagnosticsConfigFeaturesNV* to)
12908{
12909 (void)pool;
12910 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012911 const void* from_pNext = from;
12912 size_t pNext_size = 0u;
12913 while (!pNext_size && from_pNext)
12914 {
12915 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12916 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12917 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012918 to->pNext = nullptr;
12919 if (pNext_size)
12920 {
12921 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012922 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012923 }
12924}
12925
12926void deepcopy_VkDeviceDiagnosticsConfigCreateInfoNV(
12927 BumpPool* pool,
12928 const VkDeviceDiagnosticsConfigCreateInfoNV* from,
12929 VkDeviceDiagnosticsConfigCreateInfoNV* to)
12930{
12931 (void)pool;
12932 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012933 const void* from_pNext = from;
12934 size_t pNext_size = 0u;
12935 while (!pNext_size && from_pNext)
12936 {
12937 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12938 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12939 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012940 to->pNext = nullptr;
12941 if (pNext_size)
12942 {
12943 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012944 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012945 }
12946}
12947
12948#endif
12949#ifdef VK_QCOM_render_pass_store_ops
12950#endif
12951#ifdef VK_NV_fragment_shading_rate_enums
12952void deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
12953 BumpPool* pool,
12954 const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* from,
12955 VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* to)
12956{
12957 (void)pool;
12958 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012959 const void* from_pNext = from;
12960 size_t pNext_size = 0u;
12961 while (!pNext_size && from_pNext)
12962 {
12963 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12964 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12965 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012966 to->pNext = nullptr;
12967 if (pNext_size)
12968 {
12969 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012970 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012971 }
12972}
12973
12974void deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
12975 BumpPool* pool,
12976 const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* from,
12977 VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* to)
12978{
12979 (void)pool;
12980 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080012981 const void* from_pNext = from;
12982 size_t pNext_size = 0u;
12983 while (!pNext_size && from_pNext)
12984 {
12985 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12986 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
12987 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012988 to->pNext = nullptr;
12989 if (pNext_size)
12990 {
12991 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080012992 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012993 }
12994}
12995
12996void deepcopy_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
12997 BumpPool* pool,
12998 const VkPipelineFragmentShadingRateEnumStateCreateInfoNV* from,
12999 VkPipelineFragmentShadingRateEnumStateCreateInfoNV* to)
13000{
13001 (void)pool;
13002 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013003 const void* from_pNext = from;
13004 size_t pNext_size = 0u;
13005 while (!pNext_size && from_pNext)
13006 {
13007 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13008 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13009 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013010 to->pNext = nullptr;
13011 if (pNext_size)
13012 {
13013 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013014 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013015 }
13016 memcpy(to->combinerOps, from->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR));
13017}
13018
13019#endif
13020#ifdef VK_EXT_fragment_density_map2
13021void deepcopy_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
13022 BumpPool* pool,
13023 const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* from,
13024 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* to)
13025{
13026 (void)pool;
13027 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013028 const void* from_pNext = from;
13029 size_t pNext_size = 0u;
13030 while (!pNext_size && from_pNext)
13031 {
13032 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13033 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13034 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013035 to->pNext = nullptr;
13036 if (pNext_size)
13037 {
13038 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013039 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013040 }
13041}
13042
13043void deepcopy_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
13044 BumpPool* pool,
13045 const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* from,
13046 VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* to)
13047{
13048 (void)pool;
13049 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013050 const void* from_pNext = from;
13051 size_t pNext_size = 0u;
13052 while (!pNext_size && from_pNext)
13053 {
13054 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13055 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13056 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013057 to->pNext = nullptr;
13058 if (pNext_size)
13059 {
13060 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013061 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013062 }
13063}
13064
13065#endif
13066#ifdef VK_QCOM_rotated_copy_commands
13067void deepcopy_VkCopyCommandTransformInfoQCOM(
13068 BumpPool* pool,
13069 const VkCopyCommandTransformInfoQCOM* from,
13070 VkCopyCommandTransformInfoQCOM* to)
13071{
13072 (void)pool;
13073 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013074 const void* from_pNext = from;
13075 size_t pNext_size = 0u;
13076 while (!pNext_size && from_pNext)
13077 {
13078 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13079 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13080 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013081 to->pNext = nullptr;
13082 if (pNext_size)
13083 {
13084 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013085 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013086 }
13087}
13088
13089#endif
13090#ifdef VK_EXT_image_robustness
13091void deepcopy_VkPhysicalDeviceImageRobustnessFeaturesEXT(
13092 BumpPool* pool,
13093 const VkPhysicalDeviceImageRobustnessFeaturesEXT* from,
13094 VkPhysicalDeviceImageRobustnessFeaturesEXT* to)
13095{
13096 (void)pool;
13097 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013098 const void* from_pNext = from;
13099 size_t pNext_size = 0u;
13100 while (!pNext_size && from_pNext)
13101 {
13102 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13103 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13104 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013105 to->pNext = nullptr;
13106 if (pNext_size)
13107 {
13108 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013109 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013110 }
13111}
13112
13113#endif
13114#ifdef VK_EXT_4444_formats
13115void deepcopy_VkPhysicalDevice4444FormatsFeaturesEXT(
13116 BumpPool* pool,
13117 const VkPhysicalDevice4444FormatsFeaturesEXT* from,
13118 VkPhysicalDevice4444FormatsFeaturesEXT* to)
13119{
13120 (void)pool;
13121 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013122 const void* from_pNext = from;
13123 size_t pNext_size = 0u;
13124 while (!pNext_size && from_pNext)
13125 {
13126 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13127 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13128 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013129 to->pNext = nullptr;
13130 if (pNext_size)
13131 {
13132 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013133 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013134 }
13135}
13136
13137#endif
13138#ifdef VK_EXT_directfb_surface
13139void deepcopy_VkDirectFBSurfaceCreateInfoEXT(
13140 BumpPool* pool,
13141 const VkDirectFBSurfaceCreateInfoEXT* from,
13142 VkDirectFBSurfaceCreateInfoEXT* to)
13143{
13144 (void)pool;
13145 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013146 const void* from_pNext = from;
13147 size_t pNext_size = 0u;
13148 while (!pNext_size && from_pNext)
13149 {
13150 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13151 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13152 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013153 to->pNext = nullptr;
13154 if (pNext_size)
13155 {
13156 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013157 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013158 }
13159 to->dfb = nullptr;
13160 if (from->dfb)
13161 {
13162 to->dfb = (IDirectFB*)pool->dupArray(from->dfb, sizeof(IDirectFB));
13163 }
13164 to->surface = nullptr;
13165 if (from->surface)
13166 {
13167 to->surface = (IDirectFBSurface*)pool->dupArray(from->surface, sizeof(IDirectFBSurface));
13168 }
13169}
13170
13171#endif
Yilong Li71c43c52021-02-10 02:50:43 -080013172#ifdef VK_GOOGLE_gfxstream
Lingfeng Yangded34672021-01-22 23:17:47 -080013173#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013174#ifdef VK_KHR_acceleration_structure
13175void deepcopy_VkDeviceOrHostAddressKHR(
13176 BumpPool* pool,
13177 const VkDeviceOrHostAddressKHR* from,
13178 VkDeviceOrHostAddressKHR* to)
13179{
13180 (void)pool;
13181 *to = *from;
13182 to->hostAddress = nullptr;
13183 if (from->hostAddress)
13184 {
13185 to->hostAddress = (void*)pool->dupArray(from->hostAddress, sizeof(uint8_t));
13186 }
13187}
13188
13189void deepcopy_VkDeviceOrHostAddressConstKHR(
13190 BumpPool* pool,
13191 const VkDeviceOrHostAddressConstKHR* from,
13192 VkDeviceOrHostAddressConstKHR* to)
13193{
13194 (void)pool;
13195 *to = *from;
13196 to->hostAddress = nullptr;
13197 if (from->hostAddress)
13198 {
13199 to->hostAddress = (void*)pool->dupArray(from->hostAddress, sizeof(const uint8_t));
13200 }
13201}
13202
13203void deepcopy_VkAccelerationStructureBuildRangeInfoKHR(
13204 BumpPool* pool,
13205 const VkAccelerationStructureBuildRangeInfoKHR* from,
13206 VkAccelerationStructureBuildRangeInfoKHR* to)
13207{
13208 (void)pool;
13209 *to = *from;
13210}
13211
13212void deepcopy_VkAccelerationStructureGeometryTrianglesDataKHR(
13213 BumpPool* pool,
13214 const VkAccelerationStructureGeometryTrianglesDataKHR* from,
13215 VkAccelerationStructureGeometryTrianglesDataKHR* to)
13216{
13217 (void)pool;
13218 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013219 const void* from_pNext = from;
13220 size_t pNext_size = 0u;
13221 while (!pNext_size && from_pNext)
13222 {
13223 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13224 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13225 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013226 to->pNext = nullptr;
13227 if (pNext_size)
13228 {
13229 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013230 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013231 }
13232 deepcopy_VkDeviceOrHostAddressConstKHR(pool, &from->vertexData, (VkDeviceOrHostAddressConstKHR*)(&to->vertexData));
13233 deepcopy_VkDeviceOrHostAddressConstKHR(pool, &from->indexData, (VkDeviceOrHostAddressConstKHR*)(&to->indexData));
13234 deepcopy_VkDeviceOrHostAddressConstKHR(pool, &from->transformData, (VkDeviceOrHostAddressConstKHR*)(&to->transformData));
13235}
13236
13237void deepcopy_VkAccelerationStructureGeometryAabbsDataKHR(
13238 BumpPool* pool,
13239 const VkAccelerationStructureGeometryAabbsDataKHR* from,
13240 VkAccelerationStructureGeometryAabbsDataKHR* to)
13241{
13242 (void)pool;
13243 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013244 const void* from_pNext = from;
13245 size_t pNext_size = 0u;
13246 while (!pNext_size && from_pNext)
13247 {
13248 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13249 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13250 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013251 to->pNext = nullptr;
13252 if (pNext_size)
13253 {
13254 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013255 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013256 }
13257 deepcopy_VkDeviceOrHostAddressConstKHR(pool, &from->data, (VkDeviceOrHostAddressConstKHR*)(&to->data));
13258}
13259
13260void deepcopy_VkAccelerationStructureGeometryInstancesDataKHR(
13261 BumpPool* pool,
13262 const VkAccelerationStructureGeometryInstancesDataKHR* from,
13263 VkAccelerationStructureGeometryInstancesDataKHR* to)
13264{
13265 (void)pool;
13266 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013267 const void* from_pNext = from;
13268 size_t pNext_size = 0u;
13269 while (!pNext_size && from_pNext)
13270 {
13271 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13272 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13273 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013274 to->pNext = nullptr;
13275 if (pNext_size)
13276 {
13277 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013278 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013279 }
13280 deepcopy_VkDeviceOrHostAddressConstKHR(pool, &from->data, (VkDeviceOrHostAddressConstKHR*)(&to->data));
13281}
13282
13283void deepcopy_VkAccelerationStructureGeometryDataKHR(
13284 BumpPool* pool,
13285 const VkAccelerationStructureGeometryDataKHR* from,
13286 VkAccelerationStructureGeometryDataKHR* to)
13287{
13288 (void)pool;
13289 *to = *from;
13290 deepcopy_VkAccelerationStructureGeometryTrianglesDataKHR(pool, &from->triangles, (VkAccelerationStructureGeometryTrianglesDataKHR*)(&to->triangles));
13291 deepcopy_VkAccelerationStructureGeometryAabbsDataKHR(pool, &from->aabbs, (VkAccelerationStructureGeometryAabbsDataKHR*)(&to->aabbs));
13292 deepcopy_VkAccelerationStructureGeometryInstancesDataKHR(pool, &from->instances, (VkAccelerationStructureGeometryInstancesDataKHR*)(&to->instances));
13293}
13294
13295void deepcopy_VkAccelerationStructureGeometryKHR(
13296 BumpPool* pool,
13297 const VkAccelerationStructureGeometryKHR* from,
13298 VkAccelerationStructureGeometryKHR* to)
13299{
13300 (void)pool;
13301 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013302 const void* from_pNext = from;
13303 size_t pNext_size = 0u;
13304 while (!pNext_size && from_pNext)
13305 {
13306 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13307 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13308 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013309 to->pNext = nullptr;
13310 if (pNext_size)
13311 {
13312 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013313 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013314 }
13315 deepcopy_VkAccelerationStructureGeometryDataKHR(pool, &from->geometry, (VkAccelerationStructureGeometryDataKHR*)(&to->geometry));
13316}
13317
13318void deepcopy_VkAccelerationStructureBuildGeometryInfoKHR(
13319 BumpPool* pool,
13320 const VkAccelerationStructureBuildGeometryInfoKHR* from,
13321 VkAccelerationStructureBuildGeometryInfoKHR* to)
13322{
13323 (void)pool;
13324 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013325 const void* from_pNext = from;
13326 size_t pNext_size = 0u;
13327 while (!pNext_size && from_pNext)
13328 {
13329 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13330 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13331 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013332 to->pNext = nullptr;
13333 if (pNext_size)
13334 {
13335 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013336 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013337 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013338 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080013339 {
Yilong Libd10ec92021-02-10 13:24:27 -080013340 to->pGeometries = nullptr;
13341 if (from->pGeometries)
Yilong Lia8d45f12021-02-07 02:30:21 -080013342 {
Yilong Libd10ec92021-02-10 13:24:27 -080013343 to->pGeometries = (VkAccelerationStructureGeometryKHR*)pool->alloc(from->geometryCount * sizeof(const VkAccelerationStructureGeometryKHR));
13344 to->geometryCount = from->geometryCount;
13345 for (uint32_t i = 0; i < (uint32_t)from->geometryCount; ++i)
13346 {
13347 deepcopy_VkAccelerationStructureGeometryKHR(pool, from->pGeometries + i, (VkAccelerationStructureGeometryKHR*)(to->pGeometries + i));
13348 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013349 }
13350 }
13351 deepcopy_VkDeviceOrHostAddressKHR(pool, &from->scratchData, (VkDeviceOrHostAddressKHR*)(&to->scratchData));
13352}
13353
13354void deepcopy_VkAccelerationStructureCreateInfoKHR(
13355 BumpPool* pool,
13356 const VkAccelerationStructureCreateInfoKHR* from,
13357 VkAccelerationStructureCreateInfoKHR* to)
13358{
13359 (void)pool;
13360 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013361 const void* from_pNext = from;
13362 size_t pNext_size = 0u;
13363 while (!pNext_size && from_pNext)
13364 {
13365 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13366 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13367 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013368 to->pNext = nullptr;
13369 if (pNext_size)
13370 {
13371 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013372 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013373 }
13374}
13375
13376void deepcopy_VkWriteDescriptorSetAccelerationStructureKHR(
13377 BumpPool* pool,
13378 const VkWriteDescriptorSetAccelerationStructureKHR* from,
13379 VkWriteDescriptorSetAccelerationStructureKHR* to)
13380{
13381 (void)pool;
13382 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013383 const void* from_pNext = from;
13384 size_t pNext_size = 0u;
13385 while (!pNext_size && from_pNext)
13386 {
13387 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13388 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13389 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013390 to->pNext = nullptr;
13391 if (pNext_size)
13392 {
13393 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013394 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013395 }
13396 to->pAccelerationStructures = nullptr;
13397 if (from->pAccelerationStructures)
13398 {
13399 to->pAccelerationStructures = (VkAccelerationStructureKHR*)pool->dupArray(from->pAccelerationStructures, from->accelerationStructureCount * sizeof(const VkAccelerationStructureKHR));
13400 }
13401}
13402
13403void deepcopy_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
13404 BumpPool* pool,
13405 const VkPhysicalDeviceAccelerationStructureFeaturesKHR* from,
13406 VkPhysicalDeviceAccelerationStructureFeaturesKHR* to)
13407{
13408 (void)pool;
13409 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013410 const void* from_pNext = from;
13411 size_t pNext_size = 0u;
13412 while (!pNext_size && from_pNext)
13413 {
13414 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13415 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13416 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013417 to->pNext = nullptr;
13418 if (pNext_size)
13419 {
13420 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013421 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013422 }
13423}
13424
13425void deepcopy_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
13426 BumpPool* pool,
13427 const VkPhysicalDeviceAccelerationStructurePropertiesKHR* from,
13428 VkPhysicalDeviceAccelerationStructurePropertiesKHR* to)
13429{
13430 (void)pool;
13431 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013432 const void* from_pNext = from;
13433 size_t pNext_size = 0u;
13434 while (!pNext_size && from_pNext)
13435 {
13436 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13437 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13438 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013439 to->pNext = nullptr;
13440 if (pNext_size)
13441 {
13442 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013443 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013444 }
13445}
13446
13447void deepcopy_VkAccelerationStructureDeviceAddressInfoKHR(
13448 BumpPool* pool,
13449 const VkAccelerationStructureDeviceAddressInfoKHR* from,
13450 VkAccelerationStructureDeviceAddressInfoKHR* to)
13451{
13452 (void)pool;
13453 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013454 const void* from_pNext = from;
13455 size_t pNext_size = 0u;
13456 while (!pNext_size && from_pNext)
13457 {
13458 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13459 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13460 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013461 to->pNext = nullptr;
13462 if (pNext_size)
13463 {
13464 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013465 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013466 }
13467}
13468
13469void deepcopy_VkAccelerationStructureVersionInfoKHR(
13470 BumpPool* pool,
13471 const VkAccelerationStructureVersionInfoKHR* from,
13472 VkAccelerationStructureVersionInfoKHR* to)
13473{
13474 (void)pool;
13475 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013476 const void* from_pNext = from;
13477 size_t pNext_size = 0u;
13478 while (!pNext_size && from_pNext)
13479 {
13480 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13481 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13482 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013483 to->pNext = nullptr;
13484 if (pNext_size)
13485 {
13486 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013487 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013488 }
13489 to->pVersionData = nullptr;
13490 if (from->pVersionData)
13491 {
13492 to->pVersionData = (uint8_t*)pool->dupArray(from->pVersionData, 2*VK_UUID_SIZE * sizeof(const uint8_t));
13493 }
13494}
13495
13496void deepcopy_VkCopyAccelerationStructureToMemoryInfoKHR(
13497 BumpPool* pool,
13498 const VkCopyAccelerationStructureToMemoryInfoKHR* from,
13499 VkCopyAccelerationStructureToMemoryInfoKHR* to)
13500{
13501 (void)pool;
13502 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013503 const void* from_pNext = from;
13504 size_t pNext_size = 0u;
13505 while (!pNext_size && from_pNext)
13506 {
13507 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13508 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13509 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013510 to->pNext = nullptr;
13511 if (pNext_size)
13512 {
13513 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013514 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013515 }
13516 deepcopy_VkDeviceOrHostAddressKHR(pool, &from->dst, (VkDeviceOrHostAddressKHR*)(&to->dst));
13517}
13518
13519void deepcopy_VkCopyMemoryToAccelerationStructureInfoKHR(
13520 BumpPool* pool,
13521 const VkCopyMemoryToAccelerationStructureInfoKHR* from,
13522 VkCopyMemoryToAccelerationStructureInfoKHR* to)
13523{
13524 (void)pool;
13525 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013526 const void* from_pNext = from;
13527 size_t pNext_size = 0u;
13528 while (!pNext_size && from_pNext)
13529 {
13530 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13531 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13532 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013533 to->pNext = nullptr;
13534 if (pNext_size)
13535 {
13536 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013537 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013538 }
13539 deepcopy_VkDeviceOrHostAddressConstKHR(pool, &from->src, (VkDeviceOrHostAddressConstKHR*)(&to->src));
13540}
13541
13542void deepcopy_VkCopyAccelerationStructureInfoKHR(
13543 BumpPool* pool,
13544 const VkCopyAccelerationStructureInfoKHR* from,
13545 VkCopyAccelerationStructureInfoKHR* to)
13546{
13547 (void)pool;
13548 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013549 const void* from_pNext = from;
13550 size_t pNext_size = 0u;
13551 while (!pNext_size && from_pNext)
13552 {
13553 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13554 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13555 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013556 to->pNext = nullptr;
13557 if (pNext_size)
13558 {
13559 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013560 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013561 }
13562}
13563
13564void deepcopy_VkAccelerationStructureBuildSizesInfoKHR(
13565 BumpPool* pool,
13566 const VkAccelerationStructureBuildSizesInfoKHR* from,
13567 VkAccelerationStructureBuildSizesInfoKHR* to)
13568{
13569 (void)pool;
13570 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013571 const void* from_pNext = from;
13572 size_t pNext_size = 0u;
13573 while (!pNext_size && from_pNext)
13574 {
13575 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13576 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13577 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013578 to->pNext = nullptr;
13579 if (pNext_size)
13580 {
13581 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013582 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013583 }
13584}
13585
13586#endif
13587#ifdef VK_KHR_ray_tracing_pipeline
13588void deepcopy_VkRayTracingShaderGroupCreateInfoKHR(
13589 BumpPool* pool,
13590 const VkRayTracingShaderGroupCreateInfoKHR* from,
13591 VkRayTracingShaderGroupCreateInfoKHR* to)
13592{
13593 (void)pool;
13594 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013595 const void* from_pNext = from;
13596 size_t pNext_size = 0u;
13597 while (!pNext_size && from_pNext)
13598 {
13599 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13600 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13601 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013602 to->pNext = nullptr;
13603 if (pNext_size)
13604 {
13605 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013606 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013607 }
13608 to->pShaderGroupCaptureReplayHandle = nullptr;
13609 if (from->pShaderGroupCaptureReplayHandle)
13610 {
13611 to->pShaderGroupCaptureReplayHandle = (void*)pool->dupArray(from->pShaderGroupCaptureReplayHandle, sizeof(const uint8_t));
13612 }
13613}
13614
13615void deepcopy_VkRayTracingPipelineInterfaceCreateInfoKHR(
13616 BumpPool* pool,
13617 const VkRayTracingPipelineInterfaceCreateInfoKHR* from,
13618 VkRayTracingPipelineInterfaceCreateInfoKHR* to)
13619{
13620 (void)pool;
13621 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013622 const void* from_pNext = from;
13623 size_t pNext_size = 0u;
13624 while (!pNext_size && from_pNext)
13625 {
13626 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13627 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13628 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013629 to->pNext = nullptr;
13630 if (pNext_size)
13631 {
13632 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013633 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013634 }
13635}
13636
13637void deepcopy_VkRayTracingPipelineCreateInfoKHR(
13638 BumpPool* pool,
13639 const VkRayTracingPipelineCreateInfoKHR* from,
13640 VkRayTracingPipelineCreateInfoKHR* to)
13641{
13642 (void)pool;
13643 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013644 const void* from_pNext = from;
13645 size_t pNext_size = 0u;
13646 while (!pNext_size && from_pNext)
13647 {
13648 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13649 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13650 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013651 to->pNext = nullptr;
13652 if (pNext_size)
13653 {
13654 to->pNext = (const void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013655 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013656 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013657 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080013658 {
Yilong Libd10ec92021-02-10 13:24:27 -080013659 to->pStages = nullptr;
13660 if (from->pStages)
Yilong Lia8d45f12021-02-07 02:30:21 -080013661 {
Yilong Libd10ec92021-02-10 13:24:27 -080013662 to->pStages = (VkPipelineShaderStageCreateInfo*)pool->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
13663 to->stageCount = from->stageCount;
13664 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
13665 {
13666 deepcopy_VkPipelineShaderStageCreateInfo(pool, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
13667 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013668 }
13669 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013670 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080013671 {
Yilong Libd10ec92021-02-10 13:24:27 -080013672 to->pGroups = nullptr;
13673 if (from->pGroups)
Yilong Lia8d45f12021-02-07 02:30:21 -080013674 {
Yilong Libd10ec92021-02-10 13:24:27 -080013675 to->pGroups = (VkRayTracingShaderGroupCreateInfoKHR*)pool->alloc(from->groupCount * sizeof(const VkRayTracingShaderGroupCreateInfoKHR));
13676 to->groupCount = from->groupCount;
13677 for (uint32_t i = 0; i < (uint32_t)from->groupCount; ++i)
13678 {
13679 deepcopy_VkRayTracingShaderGroupCreateInfoKHR(pool, from->pGroups + i, (VkRayTracingShaderGroupCreateInfoKHR*)(to->pGroups + i));
13680 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013681 }
13682 }
13683 to->pLibraryInfo = nullptr;
13684 if (from->pLibraryInfo)
13685 {
13686 to->pLibraryInfo = (VkPipelineLibraryCreateInfoKHR*)pool->alloc(sizeof(const VkPipelineLibraryCreateInfoKHR));
13687 deepcopy_VkPipelineLibraryCreateInfoKHR(pool, from->pLibraryInfo, (VkPipelineLibraryCreateInfoKHR*)(to->pLibraryInfo));
13688 }
13689 to->pLibraryInterface = nullptr;
13690 if (from->pLibraryInterface)
13691 {
13692 to->pLibraryInterface = (VkRayTracingPipelineInterfaceCreateInfoKHR*)pool->alloc(sizeof(const VkRayTracingPipelineInterfaceCreateInfoKHR));
13693 deepcopy_VkRayTracingPipelineInterfaceCreateInfoKHR(pool, from->pLibraryInterface, (VkRayTracingPipelineInterfaceCreateInfoKHR*)(to->pLibraryInterface));
13694 }
13695 to->pDynamicState = nullptr;
13696 if (from->pDynamicState)
13697 {
13698 to->pDynamicState = (VkPipelineDynamicStateCreateInfo*)pool->alloc(sizeof(const VkPipelineDynamicStateCreateInfo));
13699 deepcopy_VkPipelineDynamicStateCreateInfo(pool, from->pDynamicState, (VkPipelineDynamicStateCreateInfo*)(to->pDynamicState));
13700 }
13701}
13702
13703void deepcopy_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
13704 BumpPool* pool,
13705 const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* from,
13706 VkPhysicalDeviceRayTracingPipelineFeaturesKHR* to)
13707{
13708 (void)pool;
13709 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013710 const void* from_pNext = from;
13711 size_t pNext_size = 0u;
13712 while (!pNext_size && from_pNext)
13713 {
13714 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13715 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13716 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013717 to->pNext = nullptr;
13718 if (pNext_size)
13719 {
13720 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013721 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013722 }
13723}
13724
13725void deepcopy_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
13726 BumpPool* pool,
13727 const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* from,
13728 VkPhysicalDeviceRayTracingPipelinePropertiesKHR* to)
13729{
13730 (void)pool;
13731 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013732 const void* from_pNext = from;
13733 size_t pNext_size = 0u;
13734 while (!pNext_size && from_pNext)
13735 {
13736 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13737 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13738 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013739 to->pNext = nullptr;
13740 if (pNext_size)
13741 {
13742 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013743 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013744 }
13745}
13746
13747void deepcopy_VkStridedDeviceAddressRegionKHR(
13748 BumpPool* pool,
13749 const VkStridedDeviceAddressRegionKHR* from,
13750 VkStridedDeviceAddressRegionKHR* to)
13751{
13752 (void)pool;
13753 *to = *from;
13754}
13755
13756void deepcopy_VkTraceRaysIndirectCommandKHR(
13757 BumpPool* pool,
13758 const VkTraceRaysIndirectCommandKHR* from,
13759 VkTraceRaysIndirectCommandKHR* to)
13760{
13761 (void)pool;
13762 *to = *from;
13763}
13764
13765#endif
13766#ifdef VK_KHR_ray_query
13767void deepcopy_VkPhysicalDeviceRayQueryFeaturesKHR(
13768 BumpPool* pool,
13769 const VkPhysicalDeviceRayQueryFeaturesKHR* from,
13770 VkPhysicalDeviceRayQueryFeaturesKHR* to)
13771{
13772 (void)pool;
13773 *to = *from;
Yilong Li04218f72021-02-19 01:31:17 -080013774 const void* from_pNext = from;
13775 size_t pNext_size = 0u;
13776 while (!pNext_size && from_pNext)
13777 {
13778 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
13779 pNext_size = goldfish_vk_extension_struct_size(from_pNext);
13780 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013781 to->pNext = nullptr;
13782 if (pNext_size)
13783 {
13784 to->pNext = (void*)pool->alloc(pNext_size);
Yilong Li04218f72021-02-19 01:31:17 -080013785 deepcopy_extension_struct(pool, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013786 }
13787}
13788
13789#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080013790void deepcopy_extension_struct(
Lingfeng Yang0f6a6c82020-09-22 16:13:16 -070013791 BumpPool* pool,
Lingfeng Yang750c5642018-11-13 17:03:11 -080013792 const void* structExtension,
13793 void* structExtension_out)
13794{
13795 if (!structExtension)
13796 {
13797 return;
13798 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080013799 uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension);
Lingfeng Yang750c5642018-11-13 17:03:11 -080013800 switch(structType)
13801 {
13802#ifdef VK_VERSION_1_1
13803 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:
13804 {
13805 deepcopy_VkPhysicalDeviceSubgroupProperties(pool, reinterpret_cast<const VkPhysicalDeviceSubgroupProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubgroupProperties*>(structExtension_out));
13806 break;
13807 }
13808 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:
13809 {
13810 deepcopy_VkPhysicalDevice16BitStorageFeatures(pool, reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(structExtension), reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(structExtension_out));
13811 break;
13812 }
13813 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
13814 {
13815 deepcopy_VkMemoryDedicatedRequirements(pool, reinterpret_cast<const VkMemoryDedicatedRequirements*>(structExtension), reinterpret_cast<VkMemoryDedicatedRequirements*>(structExtension_out));
13816 break;
13817 }
13818 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:
13819 {
13820 deepcopy_VkMemoryDedicatedAllocateInfo(pool, reinterpret_cast<const VkMemoryDedicatedAllocateInfo*>(structExtension), reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(structExtension_out));
13821 break;
13822 }
13823 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:
13824 {
13825 deepcopy_VkMemoryAllocateFlagsInfo(pool, reinterpret_cast<const VkMemoryAllocateFlagsInfo*>(structExtension), reinterpret_cast<VkMemoryAllocateFlagsInfo*>(structExtension_out));
13826 break;
13827 }
13828 case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:
13829 {
13830 deepcopy_VkDeviceGroupRenderPassBeginInfo(pool, reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo*>(structExtension), reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(structExtension_out));
13831 break;
13832 }
13833 case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:
13834 {
13835 deepcopy_VkDeviceGroupCommandBufferBeginInfo(pool, reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo*>(structExtension), reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(structExtension_out));
13836 break;
13837 }
13838 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:
13839 {
13840 deepcopy_VkDeviceGroupSubmitInfo(pool, reinterpret_cast<const VkDeviceGroupSubmitInfo*>(structExtension), reinterpret_cast<VkDeviceGroupSubmitInfo*>(structExtension_out));
13841 break;
13842 }
13843 case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:
13844 {
13845 deepcopy_VkDeviceGroupBindSparseInfo(pool, reinterpret_cast<const VkDeviceGroupBindSparseInfo*>(structExtension), reinterpret_cast<VkDeviceGroupBindSparseInfo*>(structExtension_out));
13846 break;
13847 }
13848 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
13849 {
13850 deepcopy_VkBindBufferMemoryDeviceGroupInfo(pool, reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo*>(structExtension), reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(structExtension_out));
13851 break;
13852 }
13853 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:
13854 {
13855 deepcopy_VkBindImageMemoryDeviceGroupInfo(pool, reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo*>(structExtension), reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(structExtension_out));
13856 break;
13857 }
13858 case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:
13859 {
13860 deepcopy_VkDeviceGroupDeviceCreateInfo(pool, reinterpret_cast<const VkDeviceGroupDeviceCreateInfo*>(structExtension), reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(structExtension_out));
13861 break;
13862 }
13863 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
13864 {
13865 deepcopy_VkPhysicalDeviceFeatures2(pool, reinterpret_cast<const VkPhysicalDeviceFeatures2*>(structExtension), reinterpret_cast<VkPhysicalDeviceFeatures2*>(structExtension_out));
13866 break;
13867 }
13868 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:
13869 {
13870 deepcopy_VkPhysicalDevicePointClippingProperties(pool, reinterpret_cast<const VkPhysicalDevicePointClippingProperties*>(structExtension), reinterpret_cast<VkPhysicalDevicePointClippingProperties*>(structExtension_out));
13871 break;
13872 }
13873 case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
13874 {
13875 deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(pool, reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>(structExtension), reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(structExtension_out));
13876 break;
13877 }
13878 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
13879 {
13880 deepcopy_VkImageViewUsageCreateInfo(pool, reinterpret_cast<const VkImageViewUsageCreateInfo*>(structExtension), reinterpret_cast<VkImageViewUsageCreateInfo*>(structExtension_out));
13881 break;
13882 }
13883 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
13884 {
13885 deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(pool, reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo*>(structExtension), reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(structExtension_out));
13886 break;
13887 }
13888 case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:
13889 {
13890 deepcopy_VkRenderPassMultiviewCreateInfo(pool, reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>(structExtension), reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(structExtension_out));
13891 break;
13892 }
13893 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:
13894 {
13895 deepcopy_VkPhysicalDeviceMultiviewFeatures(pool, reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(structExtension_out));
13896 break;
13897 }
13898 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:
13899 {
13900 deepcopy_VkPhysicalDeviceMultiviewProperties(pool, reinterpret_cast<const VkPhysicalDeviceMultiviewProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiviewProperties*>(structExtension_out));
13901 break;
13902 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013903 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
Lingfeng Yang750c5642018-11-13 17:03:11 -080013904 {
Yilong Lia8d45f12021-02-07 02:30:21 -080013905 deepcopy_VkPhysicalDeviceVariablePointersFeatures(pool, reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013906 break;
13907 }
13908 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:
13909 {
13910 deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(pool, reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension_out));
13911 break;
13912 }
13913 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:
13914 {
13915 deepcopy_VkPhysicalDeviceProtectedMemoryProperties(pool, reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties*>(structExtension_out));
13916 break;
13917 }
13918 case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:
13919 {
13920 deepcopy_VkProtectedSubmitInfo(pool, reinterpret_cast<const VkProtectedSubmitInfo*>(structExtension), reinterpret_cast<VkProtectedSubmitInfo*>(structExtension_out));
13921 break;
13922 }
13923 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
13924 {
13925 deepcopy_VkSamplerYcbcrConversionInfo(pool, reinterpret_cast<const VkSamplerYcbcrConversionInfo*>(structExtension), reinterpret_cast<VkSamplerYcbcrConversionInfo*>(structExtension_out));
13926 break;
13927 }
13928 case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:
13929 {
13930 deepcopy_VkBindImagePlaneMemoryInfo(pool, reinterpret_cast<const VkBindImagePlaneMemoryInfo*>(structExtension), reinterpret_cast<VkBindImagePlaneMemoryInfo*>(structExtension_out));
13931 break;
13932 }
13933 case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:
13934 {
13935 deepcopy_VkImagePlaneMemoryRequirementsInfo(pool, reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo*>(structExtension), reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(structExtension_out));
13936 break;
13937 }
13938 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
13939 {
13940 deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(pool, reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(structExtension_out));
13941 break;
13942 }
13943 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
13944 {
13945 deepcopy_VkSamplerYcbcrConversionImageFormatProperties(pool, reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties*>(structExtension), reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>(structExtension_out));
13946 break;
13947 }
13948 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
13949 {
13950 deepcopy_VkPhysicalDeviceExternalImageFormatInfo(pool, reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>(structExtension), reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out));
13951 break;
13952 }
13953 case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
13954 {
13955 deepcopy_VkExternalImageFormatProperties(pool, reinterpret_cast<const VkExternalImageFormatProperties*>(structExtension), reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out));
13956 break;
13957 }
13958 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:
13959 {
13960 deepcopy_VkPhysicalDeviceIDProperties(pool, reinterpret_cast<const VkPhysicalDeviceIDProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceIDProperties*>(structExtension_out));
13961 break;
13962 }
13963 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
13964 {
13965 deepcopy_VkExternalMemoryImageCreateInfo(pool, reinterpret_cast<const VkExternalMemoryImageCreateInfo*>(structExtension), reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out));
13966 break;
13967 }
13968 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
13969 {
13970 deepcopy_VkExternalMemoryBufferCreateInfo(pool, reinterpret_cast<const VkExternalMemoryBufferCreateInfo*>(structExtension), reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out));
13971 break;
13972 }
13973 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
13974 {
13975 deepcopy_VkExportMemoryAllocateInfo(pool, reinterpret_cast<const VkExportMemoryAllocateInfo*>(structExtension), reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out));
13976 break;
13977 }
13978 case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:
13979 {
13980 deepcopy_VkExportFenceCreateInfo(pool, reinterpret_cast<const VkExportFenceCreateInfo*>(structExtension), reinterpret_cast<VkExportFenceCreateInfo*>(structExtension_out));
13981 break;
13982 }
13983 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
13984 {
13985 deepcopy_VkExportSemaphoreCreateInfo(pool, reinterpret_cast<const VkExportSemaphoreCreateInfo*>(structExtension), reinterpret_cast<VkExportSemaphoreCreateInfo*>(structExtension_out));
13986 break;
13987 }
13988 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:
13989 {
13990 deepcopy_VkPhysicalDeviceMaintenance3Properties(pool, reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties*>(structExtension), reinterpret_cast<VkPhysicalDeviceMaintenance3Properties*>(structExtension_out));
13991 break;
13992 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013993 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
Lingfeng Yang750c5642018-11-13 17:03:11 -080013994 {
Yilong Lia8d45f12021-02-07 02:30:21 -080013995 deepcopy_VkPhysicalDeviceShaderDrawParametersFeatures(pool, reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>(structExtension_out));
13996 break;
13997 }
13998#endif
13999#ifdef VK_VERSION_1_2
14000 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:
14001 {
14002 deepcopy_VkPhysicalDeviceVulkan11Features(pool, reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan11Features*>(structExtension_out));
14003 break;
14004 }
14005 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:
14006 {
14007 deepcopy_VkPhysicalDeviceVulkan11Properties(pool, reinterpret_cast<const VkPhysicalDeviceVulkan11Properties*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan11Properties*>(structExtension_out));
14008 break;
14009 }
14010 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:
14011 {
14012 deepcopy_VkPhysicalDeviceVulkan12Features(pool, reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan12Features*>(structExtension_out));
14013 break;
14014 }
14015 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:
14016 {
14017 deepcopy_VkPhysicalDeviceVulkan12Properties(pool, reinterpret_cast<const VkPhysicalDeviceVulkan12Properties*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan12Properties*>(structExtension_out));
14018 break;
14019 }
14020 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:
14021 {
14022 deepcopy_VkImageFormatListCreateInfo(pool, reinterpret_cast<const VkImageFormatListCreateInfo*>(structExtension), reinterpret_cast<VkImageFormatListCreateInfo*>(structExtension_out));
14023 break;
14024 }
14025 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:
14026 {
14027 deepcopy_VkPhysicalDevice8BitStorageFeatures(pool, reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>(structExtension), reinterpret_cast<VkPhysicalDevice8BitStorageFeatures*>(structExtension_out));
14028 break;
14029 }
14030 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:
14031 {
14032 deepcopy_VkPhysicalDeviceDriverProperties(pool, reinterpret_cast<const VkPhysicalDeviceDriverProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceDriverProperties*>(structExtension_out));
14033 break;
14034 }
14035 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:
14036 {
14037 deepcopy_VkPhysicalDeviceShaderAtomicInt64Features(pool, reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features*>(structExtension_out));
14038 break;
14039 }
14040 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:
14041 {
14042 deepcopy_VkPhysicalDeviceShaderFloat16Int8Features(pool, reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features*>(structExtension_out));
14043 break;
14044 }
14045 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:
14046 {
14047 deepcopy_VkPhysicalDeviceFloatControlsProperties(pool, reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceFloatControlsProperties*>(structExtension_out));
14048 break;
14049 }
14050 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:
14051 {
14052 deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfo(pool, reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo*>(structExtension), reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo*>(structExtension_out));
14053 break;
14054 }
14055 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:
14056 {
14057 deepcopy_VkPhysicalDeviceDescriptorIndexingFeatures(pool, reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures*>(structExtension_out));
14058 break;
14059 }
14060 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:
14061 {
14062 deepcopy_VkPhysicalDeviceDescriptorIndexingProperties(pool, reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties*>(structExtension_out));
14063 break;
14064 }
14065 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:
14066 {
14067 deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfo(pool, reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo*>(structExtension), reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo*>(structExtension_out));
14068 break;
14069 }
14070 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
14071 {
14072 deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupport(pool, reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport*>(structExtension), reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport*>(structExtension_out));
14073 break;
14074 }
14075 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:
14076 {
14077 deepcopy_VkSubpassDescriptionDepthStencilResolve(pool, reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve*>(structExtension), reinterpret_cast<VkSubpassDescriptionDepthStencilResolve*>(structExtension_out));
14078 break;
14079 }
14080 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:
14081 {
14082 deepcopy_VkPhysicalDeviceDepthStencilResolveProperties(pool, reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties*>(structExtension_out));
14083 break;
14084 }
14085 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:
14086 {
14087 deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures(pool, reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures*>(structExtension_out));
14088 break;
14089 }
14090 case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:
14091 {
14092 deepcopy_VkImageStencilUsageCreateInfo(pool, reinterpret_cast<const VkImageStencilUsageCreateInfo*>(structExtension), reinterpret_cast<VkImageStencilUsageCreateInfo*>(structExtension_out));
14093 break;
14094 }
14095 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
14096 {
14097 deepcopy_VkSamplerReductionModeCreateInfo(pool, reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(structExtension), reinterpret_cast<VkSamplerReductionModeCreateInfo*>(structExtension_out));
14098 break;
14099 }
14100 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:
14101 {
14102 deepcopy_VkPhysicalDeviceSamplerFilterMinmaxProperties(pool, reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties*>(structExtension_out));
14103 break;
14104 }
14105 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:
14106 {
14107 deepcopy_VkPhysicalDeviceVulkanMemoryModelFeatures(pool, reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures*>(structExtension_out));
14108 break;
14109 }
14110 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:
14111 {
14112 deepcopy_VkPhysicalDeviceImagelessFramebufferFeatures(pool, reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures*>(structExtension_out));
14113 break;
14114 }
14115 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:
14116 {
14117 deepcopy_VkFramebufferAttachmentsCreateInfo(pool, reinterpret_cast<const VkFramebufferAttachmentsCreateInfo*>(structExtension), reinterpret_cast<VkFramebufferAttachmentsCreateInfo*>(structExtension_out));
14118 break;
14119 }
14120 case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:
14121 {
14122 deepcopy_VkRenderPassAttachmentBeginInfo(pool, reinterpret_cast<const VkRenderPassAttachmentBeginInfo*>(structExtension), reinterpret_cast<VkRenderPassAttachmentBeginInfo*>(structExtension_out));
14123 break;
14124 }
14125 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:
14126 {
14127 deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(pool, reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(structExtension_out));
14128 break;
14129 }
14130 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:
14131 {
14132 deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(pool, reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(structExtension_out));
14133 break;
14134 }
14135 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:
14136 {
14137 deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(pool, reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(structExtension_out));
14138 break;
14139 }
14140 case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:
14141 {
14142 deepcopy_VkAttachmentReferenceStencilLayout(pool, reinterpret_cast<const VkAttachmentReferenceStencilLayout*>(structExtension), reinterpret_cast<VkAttachmentReferenceStencilLayout*>(structExtension_out));
14143 break;
14144 }
14145 case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:
14146 {
14147 deepcopy_VkAttachmentDescriptionStencilLayout(pool, reinterpret_cast<const VkAttachmentDescriptionStencilLayout*>(structExtension), reinterpret_cast<VkAttachmentDescriptionStencilLayout*>(structExtension_out));
14148 break;
14149 }
14150 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:
14151 {
14152 deepcopy_VkPhysicalDeviceHostQueryResetFeatures(pool, reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures*>(structExtension_out));
14153 break;
14154 }
14155 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:
14156 {
14157 deepcopy_VkPhysicalDeviceTimelineSemaphoreFeatures(pool, reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures*>(structExtension_out));
14158 break;
14159 }
14160 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:
14161 {
14162 deepcopy_VkPhysicalDeviceTimelineSemaphoreProperties(pool, reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties*>(structExtension_out));
14163 break;
14164 }
14165 case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
14166 {
14167 deepcopy_VkSemaphoreTypeCreateInfo(pool, reinterpret_cast<const VkSemaphoreTypeCreateInfo*>(structExtension), reinterpret_cast<VkSemaphoreTypeCreateInfo*>(structExtension_out));
14168 break;
14169 }
14170 case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:
14171 {
14172 deepcopy_VkTimelineSemaphoreSubmitInfo(pool, reinterpret_cast<const VkTimelineSemaphoreSubmitInfo*>(structExtension), reinterpret_cast<VkTimelineSemaphoreSubmitInfo*>(structExtension_out));
14173 break;
14174 }
14175 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:
14176 {
14177 deepcopy_VkPhysicalDeviceBufferDeviceAddressFeatures(pool, reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures*>(structExtension_out));
14178 break;
14179 }
14180 case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
14181 {
14182 deepcopy_VkBufferOpaqueCaptureAddressCreateInfo(pool, reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension), reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension_out));
14183 break;
14184 }
14185 case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:
14186 {
14187 deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfo(pool, reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension), reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014188 break;
14189 }
14190#endif
14191#ifdef VK_KHR_swapchain
14192 case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:
14193 {
14194 deepcopy_VkImageSwapchainCreateInfoKHR(pool, reinterpret_cast<const VkImageSwapchainCreateInfoKHR*>(structExtension), reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(structExtension_out));
14195 break;
14196 }
14197 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:
14198 {
14199 deepcopy_VkBindImageMemorySwapchainInfoKHR(pool, reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR*>(structExtension), reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(structExtension_out));
14200 break;
14201 }
14202 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:
14203 {
14204 deepcopy_VkDeviceGroupPresentInfoKHR(pool, reinterpret_cast<const VkDeviceGroupPresentInfoKHR*>(structExtension), reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(structExtension_out));
14205 break;
14206 }
14207 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:
14208 {
14209 deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(pool, reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension), reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension_out));
14210 break;
14211 }
14212#endif
14213#ifdef VK_KHR_display_swapchain
14214 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
14215 {
14216 deepcopy_VkDisplayPresentInfoKHR(pool, reinterpret_cast<const VkDisplayPresentInfoKHR*>(structExtension), reinterpret_cast<VkDisplayPresentInfoKHR*>(structExtension_out));
14217 break;
14218 }
14219#endif
14220#ifdef VK_KHR_external_memory_win32
14221 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
14222 {
14223 deepcopy_VkImportMemoryWin32HandleInfoKHR(pool, reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkImportMemoryWin32HandleInfoKHR*>(structExtension_out));
14224 break;
14225 }
14226 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
14227 {
14228 deepcopy_VkExportMemoryWin32HandleInfoKHR(pool, reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkExportMemoryWin32HandleInfoKHR*>(structExtension_out));
14229 break;
14230 }
14231#endif
14232#ifdef VK_KHR_external_memory_fd
14233 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:
14234 {
14235 deepcopy_VkImportMemoryFdInfoKHR(pool, reinterpret_cast<const VkImportMemoryFdInfoKHR*>(structExtension), reinterpret_cast<VkImportMemoryFdInfoKHR*>(structExtension_out));
14236 break;
14237 }
14238#endif
14239#ifdef VK_KHR_win32_keyed_mutex
14240 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:
14241 {
14242 deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(pool, reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(structExtension), reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR*>(structExtension_out));
14243 break;
14244 }
14245#endif
14246#ifdef VK_KHR_external_semaphore_win32
14247 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:
14248 {
14249 deepcopy_VkExportSemaphoreWin32HandleInfoKHR(pool, reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR*>(structExtension_out));
14250 break;
14251 }
14252 case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:
14253 {
14254 deepcopy_VkD3D12FenceSubmitInfoKHR(pool, reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(structExtension), reinterpret_cast<VkD3D12FenceSubmitInfoKHR*>(structExtension_out));
14255 break;
14256 }
14257#endif
14258#ifdef VK_KHR_push_descriptor
14259 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:
14260 {
14261 deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(pool, reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePushDescriptorPropertiesKHR*>(structExtension_out));
14262 break;
14263 }
14264#endif
14265#ifdef VK_KHR_incremental_present
14266 case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:
14267 {
14268 deepcopy_VkPresentRegionsKHR(pool, reinterpret_cast<const VkPresentRegionsKHR*>(structExtension), reinterpret_cast<VkPresentRegionsKHR*>(structExtension_out));
14269 break;
14270 }
14271#endif
14272#ifdef VK_KHR_shared_presentable_image
14273 case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:
14274 {
14275 deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(pool, reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(structExtension), reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR*>(structExtension_out));
14276 break;
14277 }
14278#endif
14279#ifdef VK_KHR_external_fence_win32
14280 case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:
14281 {
14282 deepcopy_VkExportFenceWin32HandleInfoKHR(pool, reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkExportFenceWin32HandleInfoKHR*>(structExtension_out));
14283 break;
14284 }
14285#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014286#ifdef VK_KHR_performance_query
14287 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014288 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014289 deepcopy_VkPhysicalDevicePerformanceQueryFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR*>(structExtension_out));
14290 break;
14291 }
14292 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:
14293 {
14294 deepcopy_VkPhysicalDevicePerformanceQueryPropertiesKHR(pool, reinterpret_cast<const VkPhysicalDevicePerformanceQueryPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR*>(structExtension_out));
14295 break;
14296 }
14297 case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:
14298 {
14299 deepcopy_VkQueryPoolPerformanceCreateInfoKHR(pool, reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR*>(structExtension), reinterpret_cast<VkQueryPoolPerformanceCreateInfoKHR*>(structExtension_out));
14300 break;
14301 }
14302 case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:
14303 {
14304 deepcopy_VkPerformanceQuerySubmitInfoKHR(pool, reinterpret_cast<const VkPerformanceQuerySubmitInfoKHR*>(structExtension), reinterpret_cast<VkPerformanceQuerySubmitInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014305 break;
14306 }
14307#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014308#ifdef VK_KHR_portability_subset
14309 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014310 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014311 deepcopy_VkPhysicalDevicePortabilitySubsetFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePortabilitySubsetFeaturesKHR*>(structExtension_out));
14312 break;
14313 }
14314 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR:
14315 {
14316 deepcopy_VkPhysicalDevicePortabilitySubsetPropertiesKHR(pool, reinterpret_cast<const VkPhysicalDevicePortabilitySubsetPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePortabilitySubsetPropertiesKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014317 break;
14318 }
14319#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014320#ifdef VK_KHR_shader_clock
14321 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:
Lingfeng Yang4c056b22020-07-02 11:43:57 -070014322 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014323 deepcopy_VkPhysicalDeviceShaderClockFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderClockFeaturesKHR*>(structExtension_out));
14324 break;
14325 }
14326#endif
14327#ifdef VK_KHR_shader_terminate_invocation
14328 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR:
14329 {
14330 deepcopy_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR*>(structExtension_out));
14331 break;
14332 }
14333#endif
14334#ifdef VK_KHR_fragment_shading_rate
14335 case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:
14336 {
14337 deepcopy_VkFragmentShadingRateAttachmentInfoKHR(pool, reinterpret_cast<const VkFragmentShadingRateAttachmentInfoKHR*>(structExtension), reinterpret_cast<VkFragmentShadingRateAttachmentInfoKHR*>(structExtension_out));
14338 break;
14339 }
14340 case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:
14341 {
14342 deepcopy_VkPipelineFragmentShadingRateStateCreateInfoKHR(pool, reinterpret_cast<const VkPipelineFragmentShadingRateStateCreateInfoKHR*>(structExtension), reinterpret_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR*>(structExtension_out));
14343 break;
14344 }
14345 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:
14346 {
14347 deepcopy_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(structExtension_out));
14348 break;
14349 }
14350 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:
14351 {
14352 deepcopy_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(pool, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRatePropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR*>(structExtension_out));
14353 break;
14354 }
14355#endif
14356#ifdef VK_KHR_surface_protected_capabilities
14357 case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:
14358 {
14359 deepcopy_VkSurfaceProtectedCapabilitiesKHR(pool, reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR*>(structExtension), reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR*>(structExtension_out));
14360 break;
14361 }
14362#endif
14363#ifdef VK_KHR_pipeline_executable_properties
14364 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:
14365 {
14366 deepcopy_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(structExtension_out));
Lingfeng Yang4c056b22020-07-02 11:43:57 -070014367 break;
14368 }
14369#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080014370#ifdef VK_ANDROID_native_buffer
14371 case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID:
14372 {
14373 deepcopy_VkNativeBufferANDROID(pool, reinterpret_cast<const VkNativeBufferANDROID*>(structExtension), reinterpret_cast<VkNativeBufferANDROID*>(structExtension_out));
14374 break;
14375 }
14376#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014377#ifdef VK_EXT_debug_report
14378 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:
14379 {
14380 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(structExtension), reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(structExtension_out));
14381 break;
14382 }
14383#endif
14384#ifdef VK_AMD_rasterization_order
14385 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
14386 {
14387 deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(pool, reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(structExtension), reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD*>(structExtension_out));
14388 break;
14389 }
14390#endif
14391#ifdef VK_NV_dedicated_allocation
14392 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
14393 {
14394 deepcopy_VkDedicatedAllocationImageCreateInfoNV(pool, reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(structExtension), reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV*>(structExtension_out));
14395 break;
14396 }
14397 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
14398 {
14399 deepcopy_VkDedicatedAllocationBufferCreateInfoNV(pool, reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(structExtension), reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV*>(structExtension_out));
14400 break;
14401 }
14402 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
14403 {
14404 deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(pool, reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(structExtension), reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV*>(structExtension_out));
14405 break;
14406 }
14407#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014408#ifdef VK_EXT_transform_feedback
14409 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:
14410 {
14411 deepcopy_VkPhysicalDeviceTransformFeedbackFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(structExtension_out));
14412 break;
14413 }
14414 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
14415 {
14416 deepcopy_VkPhysicalDeviceTransformFeedbackPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(structExtension_out));
14417 break;
14418 }
14419 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
14420 {
14421 deepcopy_VkPipelineRasterizationStateStreamCreateInfoEXT(pool, reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(structExtension_out));
14422 break;
14423 }
14424#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014425#ifdef VK_AMD_texture_gather_bias_lod
14426 case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:
14427 {
14428 deepcopy_VkTextureLODGatherFormatPropertiesAMD(pool, reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(structExtension), reinterpret_cast<VkTextureLODGatherFormatPropertiesAMD*>(structExtension_out));
14429 break;
14430 }
14431#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014432#ifdef VK_NV_corner_sampled_image
14433 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:
14434 {
14435 deepcopy_VkPhysicalDeviceCornerSampledImageFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV*>(structExtension_out));
14436 break;
14437 }
14438#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014439#ifdef VK_NV_external_memory
14440 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:
14441 {
14442 deepcopy_VkExternalMemoryImageCreateInfoNV(pool, reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(structExtension), reinterpret_cast<VkExternalMemoryImageCreateInfoNV*>(structExtension_out));
14443 break;
14444 }
14445 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:
14446 {
14447 deepcopy_VkExportMemoryAllocateInfoNV(pool, reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(structExtension), reinterpret_cast<VkExportMemoryAllocateInfoNV*>(structExtension_out));
14448 break;
14449 }
14450#endif
14451#ifdef VK_NV_external_memory_win32
14452 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:
14453 {
14454 deepcopy_VkImportMemoryWin32HandleInfoNV(pool, reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(structExtension), reinterpret_cast<VkImportMemoryWin32HandleInfoNV*>(structExtension_out));
14455 break;
14456 }
14457 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:
14458 {
14459 deepcopy_VkExportMemoryWin32HandleInfoNV(pool, reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(structExtension), reinterpret_cast<VkExportMemoryWin32HandleInfoNV*>(structExtension_out));
14460 break;
14461 }
14462#endif
14463#ifdef VK_NV_win32_keyed_mutex
14464 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:
14465 {
14466 deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(pool, reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(structExtension), reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV*>(structExtension_out));
14467 break;
14468 }
14469#endif
14470#ifdef VK_EXT_validation_flags
14471 case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:
14472 {
14473 deepcopy_VkValidationFlagsEXT(pool, reinterpret_cast<const VkValidationFlagsEXT*>(structExtension), reinterpret_cast<VkValidationFlagsEXT*>(structExtension_out));
14474 break;
14475 }
14476#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014477#ifdef VK_EXT_texture_compression_astc_hdr
14478 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:
14479 {
14480 deepcopy_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT*>(structExtension_out));
14481 break;
14482 }
14483#endif
14484#ifdef VK_EXT_astc_decode_mode
14485 case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:
14486 {
14487 deepcopy_VkImageViewASTCDecodeModeEXT(pool, reinterpret_cast<const VkImageViewASTCDecodeModeEXT*>(structExtension), reinterpret_cast<VkImageViewASTCDecodeModeEXT*>(structExtension_out));
14488 break;
14489 }
14490 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:
14491 {
14492 deepcopy_VkPhysicalDeviceASTCDecodeFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT*>(structExtension_out));
14493 break;
14494 }
14495#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014496#ifdef VK_EXT_conditional_rendering
14497 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:
14498 {
14499 deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(structExtension_out));
14500 break;
14501 }
14502 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:
14503 {
14504 deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(pool, reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(structExtension), reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(structExtension_out));
14505 break;
14506 }
14507#endif
14508#ifdef VK_NV_clip_space_w_scaling
14509 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:
14510 {
14511 deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV*>(structExtension_out));
14512 break;
14513 }
14514#endif
14515#ifdef VK_EXT_display_control
14516 case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:
14517 {
14518 deepcopy_VkSwapchainCounterCreateInfoEXT(pool, reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(structExtension), reinterpret_cast<VkSwapchainCounterCreateInfoEXT*>(structExtension_out));
14519 break;
14520 }
14521#endif
14522#ifdef VK_GOOGLE_display_timing
14523 case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:
14524 {
14525 deepcopy_VkPresentTimesInfoGOOGLE(pool, reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(structExtension), reinterpret_cast<VkPresentTimesInfoGOOGLE*>(structExtension_out));
14526 break;
14527 }
14528#endif
14529#ifdef VK_NVX_multiview_per_view_attributes
14530 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:
14531 {
14532 deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(pool, reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(structExtension_out));
14533 break;
14534 }
14535#endif
14536#ifdef VK_NV_viewport_swizzle
14537 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:
14538 {
14539 deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV*>(structExtension_out));
14540 break;
14541 }
14542#endif
14543#ifdef VK_EXT_discard_rectangles
14544 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
14545 {
14546 deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(structExtension_out));
14547 break;
14548 }
14549 case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
14550 {
14551 deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT*>(structExtension_out));
14552 break;
14553 }
14554#endif
14555#ifdef VK_EXT_conservative_rasterization
14556 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:
14557 {
14558 deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(structExtension_out));
14559 break;
14560 }
14561 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:
14562 {
14563 deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT*>(structExtension_out));
14564 break;
14565 }
14566#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014567#ifdef VK_EXT_depth_clip_enable
14568 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
14569 {
14570 deepcopy_VkPhysicalDeviceDepthClipEnableFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(structExtension_out));
14571 break;
14572 }
14573 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:
14574 {
14575 deepcopy_VkPipelineRasterizationDepthClipStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(structExtension_out));
14576 break;
14577 }
14578#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014579#ifdef VK_EXT_debug_utils
14580 case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
14581 {
14582 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>(structExtension), reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(structExtension_out));
14583 break;
14584 }
14585#endif
14586#ifdef VK_ANDROID_external_memory_android_hardware_buffer
14587 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:
14588 {
14589 deepcopy_VkAndroidHardwareBufferUsageANDROID(pool, reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID*>(structExtension), reinterpret_cast<VkAndroidHardwareBufferUsageANDROID*>(structExtension_out));
14590 break;
14591 }
14592 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:
14593 {
14594 deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(pool, reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID*>(structExtension), reinterpret_cast<VkAndroidHardwareBufferFormatPropertiesANDROID*>(structExtension_out));
14595 break;
14596 }
14597 case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:
14598 {
14599 deepcopy_VkImportAndroidHardwareBufferInfoANDROID(pool, reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID*>(structExtension), reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID*>(structExtension_out));
14600 break;
14601 }
14602 case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:
14603 {
14604 deepcopy_VkExternalFormatANDROID(pool, reinterpret_cast<const VkExternalFormatANDROID*>(structExtension), reinterpret_cast<VkExternalFormatANDROID*>(structExtension_out));
14605 break;
14606 }
14607#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014608#ifdef VK_EXT_inline_uniform_block
14609 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014610 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014611 deepcopy_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014612 break;
14613 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014614 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014615 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014616 deepcopy_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceInlineUniformBlockPropertiesEXT*>(structExtension_out));
14617 break;
14618 }
14619 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:
14620 {
14621 deepcopy_VkWriteDescriptorSetInlineUniformBlockEXT(pool, reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlockEXT*>(structExtension), reinterpret_cast<VkWriteDescriptorSetInlineUniformBlockEXT*>(structExtension_out));
14622 break;
14623 }
14624 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:
14625 {
14626 deepcopy_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(pool, reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(structExtension), reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014627 break;
14628 }
14629#endif
14630#ifdef VK_EXT_sample_locations
14631 case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:
14632 {
14633 deepcopy_VkSampleLocationsInfoEXT(pool, reinterpret_cast<const VkSampleLocationsInfoEXT*>(structExtension), reinterpret_cast<VkSampleLocationsInfoEXT*>(structExtension_out));
14634 break;
14635 }
14636 case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:
14637 {
14638 deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(pool, reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(structExtension), reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT*>(structExtension_out));
14639 break;
14640 }
14641 case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:
14642 {
14643 deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT*>(structExtension_out));
14644 break;
14645 }
14646 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
14647 {
14648 deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT*>(structExtension_out));
14649 break;
14650 }
14651#endif
14652#ifdef VK_EXT_blend_operation_advanced
14653 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:
14654 {
14655 deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(structExtension_out));
14656 break;
14657 }
14658 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:
14659 {
14660 deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(structExtension_out));
14661 break;
14662 }
14663 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:
14664 {
14665 deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(structExtension_out));
14666 break;
14667 }
14668#endif
14669#ifdef VK_NV_fragment_coverage_to_color
14670 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:
14671 {
14672 deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV*>(structExtension_out));
14673 break;
14674 }
14675#endif
14676#ifdef VK_NV_framebuffer_mixed_samples
14677 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:
14678 {
14679 deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV*>(structExtension_out));
14680 break;
14681 }
14682#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014683#ifdef VK_NV_shader_sm_builtins
14684 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:
14685 {
14686 deepcopy_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV*>(structExtension_out));
14687 break;
14688 }
14689 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:
14690 {
14691 deepcopy_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(structExtension_out));
14692 break;
14693 }
14694#endif
14695#ifdef VK_EXT_image_drm_format_modifier
14696 case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:
14697 {
14698 deepcopy_VkDrmFormatModifierPropertiesListEXT(pool, reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT*>(structExtension), reinterpret_cast<VkDrmFormatModifierPropertiesListEXT*>(structExtension_out));
14699 break;
14700 }
14701 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
14702 {
14703 deepcopy_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(pool, reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(structExtension_out));
14704 break;
14705 }
14706 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:
14707 {
14708 deepcopy_VkImageDrmFormatModifierListCreateInfoEXT(pool, reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT*>(structExtension), reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(structExtension_out));
14709 break;
14710 }
14711 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:
14712 {
14713 deepcopy_VkImageDrmFormatModifierExplicitCreateInfoEXT(pool, reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT*>(structExtension), reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(structExtension_out));
14714 break;
14715 }
14716#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014717#ifdef VK_EXT_validation_cache
14718 case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:
14719 {
14720 deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(pool, reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(structExtension), reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT*>(structExtension_out));
14721 break;
14722 }
14723#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014724#ifdef VK_NV_shading_rate_image
14725 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014726 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014727 deepcopy_VkPipelineViewportShadingRateImageStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014728 break;
14729 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014730 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014731 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014732 deepcopy_VkPhysicalDeviceShadingRateImageFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014733 break;
14734 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014735 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014736 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014737 deepcopy_VkPhysicalDeviceShadingRateImagePropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShadingRateImagePropertiesNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014738 break;
14739 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014740 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014741 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014742 deepcopy_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014743 break;
14744 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014745#endif
14746#ifdef VK_NV_ray_tracing
14747 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080014748 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014749 deepcopy_VkWriteDescriptorSetAccelerationStructureNV(pool, reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV*>(structExtension), reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV*>(structExtension_out));
14750 break;
14751 }
14752 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:
14753 {
14754 deepcopy_VkPhysicalDeviceRayTracingPropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingPropertiesNV*>(structExtension_out));
14755 break;
14756 }
14757#endif
14758#ifdef VK_NV_representative_fragment_test
14759 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:
14760 {
14761 deepcopy_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(structExtension_out));
14762 break;
14763 }
14764 case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:
14765 {
14766 deepcopy_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(structExtension_out));
14767 break;
14768 }
14769#endif
14770#ifdef VK_EXT_filter_cubic
14771 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:
14772 {
14773 deepcopy_VkPhysicalDeviceImageViewImageFormatInfoEXT(pool, reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT*>(structExtension_out));
14774 break;
14775 }
14776 case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:
14777 {
14778 deepcopy_VkFilterCubicImageViewImageFormatPropertiesEXT(pool, reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT*>(structExtension), reinterpret_cast<VkFilterCubicImageViewImageFormatPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014779 break;
14780 }
14781#endif
14782#ifdef VK_EXT_global_priority
14783 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:
14784 {
14785 deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(pool, reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(structExtension), reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT*>(structExtension_out));
14786 break;
14787 }
14788#endif
14789#ifdef VK_EXT_external_memory_host
14790 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:
14791 {
14792 deepcopy_VkImportMemoryHostPointerInfoEXT(pool, reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(structExtension), reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(structExtension_out));
14793 break;
14794 }
14795 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:
14796 {
14797 deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(structExtension_out));
14798 break;
14799 }
14800#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014801#ifdef VK_AMD_pipeline_compiler_control
14802 case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:
14803 {
14804 deepcopy_VkPipelineCompilerControlCreateInfoAMD(pool, reinterpret_cast<const VkPipelineCompilerControlCreateInfoAMD*>(structExtension), reinterpret_cast<VkPipelineCompilerControlCreateInfoAMD*>(structExtension_out));
14805 break;
14806 }
14807#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014808#ifdef VK_AMD_shader_core_properties
14809 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:
14810 {
14811 deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(pool, reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesAMD*>(structExtension_out));
14812 break;
14813 }
14814#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014815#ifdef VK_AMD_memory_overallocation_behavior
14816 case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:
14817 {
14818 deepcopy_VkDeviceMemoryOverallocationCreateInfoAMD(pool, reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD*>(structExtension), reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD*>(structExtension_out));
14819 break;
14820 }
14821#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080014822#ifdef VK_EXT_vertex_attribute_divisor
14823 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:
14824 {
14825 deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(structExtension_out));
14826 break;
14827 }
14828 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:
14829 {
14830 deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(structExtension_out));
14831 break;
14832 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014833 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:
14834 {
14835 deepcopy_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(structExtension_out));
14836 break;
14837 }
14838#endif
14839#ifdef VK_GGP_frame_token
14840 case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:
14841 {
14842 deepcopy_VkPresentFrameTokenGGP(pool, reinterpret_cast<const VkPresentFrameTokenGGP*>(structExtension), reinterpret_cast<VkPresentFrameTokenGGP*>(structExtension_out));
14843 break;
14844 }
14845#endif
14846#ifdef VK_EXT_pipeline_creation_feedback
14847 case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:
14848 {
14849 deepcopy_VkPipelineCreationFeedbackCreateInfoEXT(pool, reinterpret_cast<const VkPipelineCreationFeedbackCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineCreationFeedbackCreateInfoEXT*>(structExtension_out));
14850 break;
14851 }
14852#endif
14853#ifdef VK_NV_compute_shader_derivatives
14854 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:
14855 {
14856 deepcopy_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(structExtension_out));
14857 break;
14858 }
14859#endif
14860#ifdef VK_NV_mesh_shader
14861 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:
14862 {
14863 deepcopy_VkPhysicalDeviceMeshShaderFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV*>(structExtension_out));
14864 break;
14865 }
14866 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:
14867 {
14868 deepcopy_VkPhysicalDeviceMeshShaderPropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesNV*>(structExtension_out));
14869 break;
14870 }
14871#endif
14872#ifdef VK_NV_fragment_shader_barycentric
14873 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:
14874 {
14875 deepcopy_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(structExtension_out));
14876 break;
14877 }
14878#endif
14879#ifdef VK_NV_shader_image_footprint
14880 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:
14881 {
14882 deepcopy_VkPhysicalDeviceShaderImageFootprintFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(structExtension_out));
14883 break;
14884 }
14885#endif
14886#ifdef VK_NV_scissor_exclusive
14887 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:
14888 {
14889 deepcopy_VkPipelineViewportExclusiveScissorStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(structExtension_out));
14890 break;
14891 }
14892 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:
14893 {
14894 deepcopy_VkPhysicalDeviceExclusiveScissorFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV*>(structExtension_out));
14895 break;
14896 }
Lingfeng Yang750c5642018-11-13 17:03:11 -080014897#endif
14898#ifdef VK_NV_device_diagnostic_checkpoints
14899 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:
14900 {
14901 deepcopy_VkQueueFamilyCheckpointPropertiesNV(pool, reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV*>(structExtension), reinterpret_cast<VkQueueFamilyCheckpointPropertiesNV*>(structExtension_out));
14902 break;
14903 }
14904#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014905#ifdef VK_INTEL_shader_integer_functions2
14906 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:
14907 {
14908 deepcopy_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(pool, reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*>(structExtension_out));
14909 break;
14910 }
14911#endif
14912#ifdef VK_INTEL_performance_query
14913 case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL:
14914 {
14915 deepcopy_VkQueryPoolPerformanceQueryCreateInfoINTEL(pool, reinterpret_cast<const VkQueryPoolPerformanceQueryCreateInfoINTEL*>(structExtension), reinterpret_cast<VkQueryPoolPerformanceQueryCreateInfoINTEL*>(structExtension_out));
14916 break;
14917 }
14918#endif
14919#ifdef VK_EXT_pci_bus_info
14920 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
14921 {
14922 deepcopy_VkPhysicalDevicePCIBusInfoPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT*>(structExtension_out));
14923 break;
14924 }
14925#endif
14926#ifdef VK_AMD_display_native_hdr
14927 case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:
14928 {
14929 deepcopy_VkDisplayNativeHdrSurfaceCapabilitiesAMD(pool, reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD*>(structExtension), reinterpret_cast<VkDisplayNativeHdrSurfaceCapabilitiesAMD*>(structExtension_out));
14930 break;
14931 }
14932 case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:
14933 {
14934 deepcopy_VkSwapchainDisplayNativeHdrCreateInfoAMD(pool, reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD*>(structExtension), reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD*>(structExtension_out));
14935 break;
14936 }
14937#endif
Lingfeng Yange4e0e472019-02-27 23:32:20 -080014938#ifdef VK_GOOGLE_color_buffer
14939 case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE:
14940 {
14941 deepcopy_VkImportColorBufferGOOGLE(pool, reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension), reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
14942 break;
14943 }
Yilong Lif21226b2020-07-01 14:47:57 -070014944 case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE:
14945 {
14946 deepcopy_VkImportBufferGOOGLE(pool, reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension), reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
14947 break;
14948 }
Lingfeng Yange4e0e472019-02-27 23:32:20 -080014949 case VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE:
14950 {
14951 deepcopy_VkImportPhysicalAddressGOOGLE(pool, reinterpret_cast<const VkImportPhysicalAddressGOOGLE*>(structExtension), reinterpret_cast<VkImportPhysicalAddressGOOGLE*>(structExtension_out));
14952 break;
14953 }
14954#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014955#ifdef VK_EXT_subgroup_size_control
14956 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:
14957 {
14958 deepcopy_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT*>(structExtension_out));
14959 break;
14960 }
14961 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:
14962 {
14963 deepcopy_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT*>(structExtension_out));
14964 break;
14965 }
14966 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT:
14967 {
14968 deepcopy_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(pool, reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT*>(structExtension_out));
14969 break;
14970 }
14971#endif
14972#ifdef VK_AMD_shader_core_properties2
14973 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD:
14974 {
14975 deepcopy_VkPhysicalDeviceShaderCoreProperties2AMD(pool, reinterpret_cast<const VkPhysicalDeviceShaderCoreProperties2AMD*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderCoreProperties2AMD*>(structExtension_out));
14976 break;
14977 }
14978#endif
14979#ifdef VK_AMD_device_coherent_memory
14980 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:
14981 {
14982 deepcopy_VkPhysicalDeviceCoherentMemoryFeaturesAMD(pool, reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(structExtension), reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(structExtension_out));
14983 break;
14984 }
14985#endif
14986#ifdef VK_EXT_shader_image_atomic_int64
14987 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:
14988 {
14989 deepcopy_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(structExtension_out));
14990 break;
14991 }
14992#endif
14993#ifdef VK_EXT_memory_budget
14994 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:
14995 {
14996 deepcopy_VkPhysicalDeviceMemoryBudgetPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT*>(structExtension_out));
14997 break;
14998 }
14999#endif
15000#ifdef VK_EXT_memory_priority
15001 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:
15002 {
15003 deepcopy_VkPhysicalDeviceMemoryPriorityFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(structExtension_out));
15004 break;
15005 }
15006 case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:
15007 {
15008 deepcopy_VkMemoryPriorityAllocateInfoEXT(pool, reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT*>(structExtension), reinterpret_cast<VkMemoryPriorityAllocateInfoEXT*>(structExtension_out));
15009 break;
15010 }
15011#endif
15012#ifdef VK_NV_dedicated_allocation_image_aliasing
15013 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:
15014 {
15015 deepcopy_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(structExtension_out));
15016 break;
15017 }
15018#endif
15019#ifdef VK_EXT_buffer_device_address
15020 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:
15021 {
15022 deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(structExtension_out));
15023 break;
15024 }
15025 case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:
15026 {
15027 deepcopy_VkBufferDeviceAddressCreateInfoEXT(pool, reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT*>(structExtension), reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT*>(structExtension_out));
15028 break;
15029 }
15030#endif
15031#ifdef VK_EXT_validation_features
15032 case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:
15033 {
15034 deepcopy_VkValidationFeaturesEXT(pool, reinterpret_cast<const VkValidationFeaturesEXT*>(structExtension), reinterpret_cast<VkValidationFeaturesEXT*>(structExtension_out));
15035 break;
15036 }
15037#endif
15038#ifdef VK_NV_cooperative_matrix
15039 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:
15040 {
15041 deepcopy_VkPhysicalDeviceCooperativeMatrixFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(structExtension_out));
15042 break;
15043 }
15044 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:
15045 {
15046 deepcopy_VkPhysicalDeviceCooperativeMatrixPropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesNV*>(structExtension_out));
15047 break;
15048 }
15049#endif
15050#ifdef VK_NV_coverage_reduction_mode
15051 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:
15052 {
15053 deepcopy_VkPhysicalDeviceCoverageReductionModeFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(structExtension_out));
15054 break;
15055 }
15056 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:
15057 {
15058 deepcopy_VkPipelineCoverageReductionStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV*>(structExtension_out));
15059 break;
15060 }
15061#endif
15062#ifdef VK_EXT_fragment_shader_interlock
15063 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:
15064 {
15065 deepcopy_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(structExtension_out));
15066 break;
15067 }
15068#endif
15069#ifdef VK_EXT_ycbcr_image_arrays
15070 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:
15071 {
15072 deepcopy_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(structExtension_out));
15073 break;
15074 }
15075#endif
15076#ifdef VK_EXT_full_screen_exclusive
15077 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:
15078 {
15079 deepcopy_VkSurfaceFullScreenExclusiveInfoEXT(pool, reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT*>(structExtension), reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT*>(structExtension_out));
15080 break;
15081 }
15082 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:
15083 {
15084 deepcopy_VkSurfaceCapabilitiesFullScreenExclusiveEXT(pool, reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT*>(structExtension), reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT*>(structExtension_out));
15085 break;
15086 }
15087 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:
15088 {
15089 deepcopy_VkSurfaceFullScreenExclusiveWin32InfoEXT(pool, reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT*>(structExtension), reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT*>(structExtension_out));
15090 break;
15091 }
15092#endif
15093#ifdef VK_EXT_line_rasterization
15094 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:
15095 {
15096 deepcopy_VkPhysicalDeviceLineRasterizationFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesEXT*>(structExtension_out));
15097 break;
15098 }
15099 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:
15100 {
15101 deepcopy_VkPhysicalDeviceLineRasterizationPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceLineRasterizationPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesEXT*>(structExtension_out));
15102 break;
15103 }
15104 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:
15105 {
15106 deepcopy_VkPipelineRasterizationLineStateCreateInfoEXT(pool, reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoEXT*>(structExtension_out));
15107 break;
15108 }
15109#endif
15110#ifdef VK_EXT_shader_atomic_float
15111 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:
15112 {
15113 deepcopy_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(structExtension_out));
15114 break;
15115 }
15116#endif
15117#ifdef VK_EXT_index_type_uint8
15118 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:
15119 {
15120 deepcopy_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(structExtension_out));
15121 break;
15122 }
15123#endif
15124#ifdef VK_EXT_extended_dynamic_state
15125 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
15126 {
15127 deepcopy_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(structExtension_out));
15128 break;
15129 }
15130#endif
15131#ifdef VK_EXT_shader_demote_to_helper_invocation
15132 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT:
15133 {
15134 deepcopy_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(structExtension_out));
15135 break;
15136 }
15137#endif
15138#ifdef VK_NV_device_generated_commands
15139 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV:
15140 {
15141 deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV*>(structExtension_out));
15142 break;
15143 }
15144 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV:
15145 {
15146 deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV*>(structExtension_out));
15147 break;
15148 }
15149 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV:
15150 {
15151 deepcopy_VkGraphicsPipelineShaderGroupsCreateInfoNV(pool, reinterpret_cast<const VkGraphicsPipelineShaderGroupsCreateInfoNV*>(structExtension), reinterpret_cast<VkGraphicsPipelineShaderGroupsCreateInfoNV*>(structExtension_out));
15152 break;
15153 }
15154#endif
15155#ifdef VK_EXT_texel_buffer_alignment
15156 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:
15157 {
15158 deepcopy_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(structExtension_out));
15159 break;
15160 }
15161 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:
15162 {
15163 deepcopy_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT*>(structExtension_out));
15164 break;
15165 }
15166#endif
15167#ifdef VK_QCOM_render_pass_transform
15168 case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM:
15169 {
15170 deepcopy_VkRenderPassTransformBeginInfoQCOM(pool, reinterpret_cast<const VkRenderPassTransformBeginInfoQCOM*>(structExtension), reinterpret_cast<VkRenderPassTransformBeginInfoQCOM*>(structExtension_out));
15171 break;
15172 }
15173 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM:
15174 {
15175 deepcopy_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(pool, reinterpret_cast<const VkCommandBufferInheritanceRenderPassTransformInfoQCOM*>(structExtension), reinterpret_cast<VkCommandBufferInheritanceRenderPassTransformInfoQCOM*>(structExtension_out));
15176 break;
15177 }
15178#endif
15179#ifdef VK_EXT_device_memory_report
15180 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:
15181 {
15182 deepcopy_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(structExtension_out));
15183 break;
15184 }
15185 case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT:
15186 {
15187 deepcopy_VkDeviceDeviceMemoryReportCreateInfoEXT(pool, reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension), reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension_out));
15188 break;
15189 }
15190#endif
15191#ifdef VK_EXT_robustness2
15192 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:
15193 {
15194 deepcopy_VkPhysicalDeviceRobustness2FeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension_out));
15195 break;
15196 }
15197 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:
15198 {
15199 deepcopy_VkPhysicalDeviceRobustness2PropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension_out));
15200 break;
15201 }
15202#endif
15203#ifdef VK_EXT_custom_border_color
15204 case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
15205 {
15206 deepcopy_VkSamplerCustomBorderColorCreateInfoEXT(pool, reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension), reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension_out));
15207 break;
15208 }
15209 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
15210 {
15211 deepcopy_VkPhysicalDeviceCustomBorderColorPropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(structExtension_out));
15212 break;
15213 }
15214 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
15215 {
15216 deepcopy_VkPhysicalDeviceCustomBorderColorFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(structExtension_out));
15217 break;
15218 }
15219#endif
15220#ifdef VK_EXT_private_data
15221 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT:
15222 {
15223 deepcopy_VkPhysicalDevicePrivateDataFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDevicePrivateDataFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePrivateDataFeaturesEXT*>(structExtension_out));
15224 break;
15225 }
15226 case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT:
15227 {
15228 deepcopy_VkDevicePrivateDataCreateInfoEXT(pool, reinterpret_cast<const VkDevicePrivateDataCreateInfoEXT*>(structExtension), reinterpret_cast<VkDevicePrivateDataCreateInfoEXT*>(structExtension_out));
15229 break;
15230 }
15231#endif
15232#ifdef VK_EXT_pipeline_creation_cache_control
15233 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT:
15234 {
15235 deepcopy_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT*>(structExtension_out));
15236 break;
15237 }
15238#endif
15239#ifdef VK_NV_device_diagnostics_config
15240 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV:
15241 {
15242 deepcopy_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDiagnosticsConfigFeaturesNV*>(structExtension_out));
15243 break;
15244 }
15245 case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV:
15246 {
15247 deepcopy_VkDeviceDiagnosticsConfigCreateInfoNV(pool, reinterpret_cast<const VkDeviceDiagnosticsConfigCreateInfoNV*>(structExtension), reinterpret_cast<VkDeviceDiagnosticsConfigCreateInfoNV*>(structExtension_out));
15248 break;
15249 }
15250#endif
15251#ifdef VK_NV_fragment_shading_rate_enums
15252 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV:
15253 {
15254 deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(pool, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV*>(structExtension_out));
15255 break;
15256 }
15257 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV:
15258 {
15259 deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(pool, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV*>(structExtension_out));
15260 break;
15261 }
15262 case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV:
15263 {
15264 deepcopy_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(pool, reinterpret_cast<const VkPipelineFragmentShadingRateEnumStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineFragmentShadingRateEnumStateCreateInfoNV*>(structExtension_out));
15265 break;
15266 }
15267#endif
15268#ifdef VK_EXT_fragment_density_map2
15269 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT:
15270 {
15271 deepcopy_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*>(structExtension_out));
15272 break;
15273 }
15274 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT:
15275 {
15276 deepcopy_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(pool, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*>(structExtension_out));
15277 break;
15278 }
15279#endif
15280#ifdef VK_QCOM_rotated_copy_commands
15281 case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM:
15282 {
15283 deepcopy_VkCopyCommandTransformInfoQCOM(pool, reinterpret_cast<const VkCopyCommandTransformInfoQCOM*>(structExtension), reinterpret_cast<VkCopyCommandTransformInfoQCOM*>(structExtension_out));
15284 break;
15285 }
15286#endif
15287#ifdef VK_EXT_image_robustness
15288 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:
15289 {
15290 deepcopy_VkPhysicalDeviceImageRobustnessFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceImageRobustnessFeaturesEXT*>(structExtension_out));
15291 break;
15292 }
15293#endif
15294#ifdef VK_EXT_4444_formats
15295 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:
15296 {
15297 deepcopy_VkPhysicalDevice4444FormatsFeaturesEXT(pool, reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension_out));
15298 break;
15299 }
15300#endif
15301#ifdef VK_KHR_acceleration_structure
15302 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:
15303 {
15304 deepcopy_VkWriteDescriptorSetAccelerationStructureKHR(pool, reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureKHR*>(structExtension), reinterpret_cast<VkWriteDescriptorSetAccelerationStructureKHR*>(structExtension_out));
15305 break;
15306 }
15307 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR:
15308 {
15309 deepcopy_VkPhysicalDeviceAccelerationStructureFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceAccelerationStructureFeaturesKHR*>(structExtension_out));
15310 break;
15311 }
15312 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR:
15313 {
15314 deepcopy_VkPhysicalDeviceAccelerationStructurePropertiesKHR(pool, reinterpret_cast<const VkPhysicalDeviceAccelerationStructurePropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceAccelerationStructurePropertiesKHR*>(structExtension_out));
15315 break;
15316 }
15317#endif
15318#ifdef VK_KHR_ray_tracing_pipeline
15319 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR:
15320 {
15321 deepcopy_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(structExtension_out));
15322 break;
15323 }
15324 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR:
15325 {
15326 deepcopy_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(pool, reinterpret_cast<const VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(structExtension_out));
15327 break;
15328 }
15329#endif
15330#ifdef VK_KHR_ray_query
15331 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR:
15332 {
15333 deepcopy_VkPhysicalDeviceRayQueryFeaturesKHR(pool, reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayQueryFeaturesKHR*>(structExtension_out));
15334 break;
15335 }
15336#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080015337 default:
15338 {
15339 return;
15340 }
15341 }
15342}
15343
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015344
15345} // namespace goldfish_vk