blob: adc2318b169091986434483b0fdd2923951b3872 [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
Yahan Zhoub851b7e2022-04-13 10:46:34 -070017// (impl) generated by registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml cereal -o ../qemu/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018// Please do not modify directly;
Yahan Zhoub851b7e2022-04-13 10:46:34 -070019// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020// or directly from Python by defining:
Yahan Zhoub851b7e2022-04-13 10:46:34 -070021// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
22// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
Lingfeng Yang71b596b2018-11-07 18:03:25 -080023// CEREAL_OUTPUT_DIR: Where to put the generated sources.
Yahan Zhoub851b7e2022-04-13 10:46:34 -070024// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
Lingfeng Yang71b596b2018-11-07 18:03:25 -080025
26#include "goldfish_vk_deepcopy_guest.h"
27
28
Lingfeng Yang750c5642018-11-13 17:03:11 -080029#include "goldfish_vk_extension_structs_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080030#include "goldfish_vk_private_defs.h"
Lingfeng Yang750c5642018-11-13 17:03:11 -080031
Yilong Lidcaf0672022-02-22 16:39:57 -080032#include <cstring>
33
Yilong Li04218f72021-02-19 01:31:17 -080034#include "vk_util.h"
35
Lingfeng Yang71b596b2018-11-07 18:03:25 -080036
37namespace goldfish_vk {
38
Lingfeng Yang750c5642018-11-13 17:03:11 -080039void deepcopy_extension_struct(
Yilong Li422b0582021-04-30 13:09:43 -070040 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070041 VkStructureType rootType,
Lingfeng Yang750c5642018-11-13 17:03:11 -080042 const void* structExtension,
43 void* structExtension_out);
44
Lingfeng Yang71b596b2018-11-07 18:03:25 -080045#ifdef VK_VERSION_1_0
Yilong Lia8d45f12021-02-07 02:30:21 -080046void deepcopy_VkExtent2D(
Yilong Li422b0582021-04-30 13:09:43 -070047 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070048 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080049 const VkExtent2D* from,
50 VkExtent2D* to)
51{
Yilong Li422b0582021-04-30 13:09:43 -070052 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070053 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080054 *to = *from;
55}
56
57void deepcopy_VkExtent3D(
Yilong Li422b0582021-04-30 13:09:43 -070058 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070059 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080060 const VkExtent3D* from,
61 VkExtent3D* to)
62{
Yilong Li422b0582021-04-30 13:09:43 -070063 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070064 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080065 *to = *from;
66}
67
68void deepcopy_VkOffset2D(
Yilong Li422b0582021-04-30 13:09:43 -070069 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070070 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080071 const VkOffset2D* from,
72 VkOffset2D* to)
73{
Yilong Li422b0582021-04-30 13:09:43 -070074 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070075 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080076 *to = *from;
77}
78
79void deepcopy_VkOffset3D(
Yilong Li422b0582021-04-30 13:09:43 -070080 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070081 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080082 const VkOffset3D* from,
83 VkOffset3D* to)
84{
Yilong Li422b0582021-04-30 13:09:43 -070085 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070086 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080087 *to = *from;
88}
89
90void deepcopy_VkRect2D(
Yilong Li422b0582021-04-30 13:09:43 -070091 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070092 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080093 const VkRect2D* from,
94 VkRect2D* to)
95{
Yilong Li422b0582021-04-30 13:09:43 -070096 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070097 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080098 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070099 deepcopy_VkOffset2D(alloc, rootType, &from->offset, (VkOffset2D*)(&to->offset));
100 deepcopy_VkExtent2D(alloc, rootType, &from->extent, (VkExtent2D*)(&to->extent));
Yilong Lia8d45f12021-02-07 02:30:21 -0800101}
102
103void deepcopy_VkBaseInStructure(
Yilong Li422b0582021-04-30 13:09:43 -0700104 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700105 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800106 const VkBaseInStructure* from,
107 VkBaseInStructure* to)
108{
Yilong Li422b0582021-04-30 13:09:43 -0700109 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700110 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800111 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700112 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
113 {
114 rootType = from->sType;
115 }
Yilong Li04218f72021-02-19 01:31:17 -0800116 const void* from_pNext = from;
117 size_t pNext_size = 0u;
118 while (!pNext_size && from_pNext)
119 {
120 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700121 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800122 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800123 to->pNext = nullptr;
124 if (pNext_size)
125 {
Yilong Li324fa652021-12-29 17:00:42 -0800126 to->pNext = (VkBaseInStructure*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700127 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800128 }
129}
130
131void deepcopy_VkBaseOutStructure(
Yilong Li422b0582021-04-30 13:09:43 -0700132 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700133 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800134 const VkBaseOutStructure* from,
135 VkBaseOutStructure* to)
136{
Yilong Li422b0582021-04-30 13:09:43 -0700137 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700138 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800139 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700140 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
141 {
142 rootType = from->sType;
143 }
Yilong Li04218f72021-02-19 01:31:17 -0800144 const void* from_pNext = from;
145 size_t pNext_size = 0u;
146 while (!pNext_size && from_pNext)
147 {
148 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700149 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800150 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800151 to->pNext = nullptr;
152 if (pNext_size)
153 {
Yilong Li422b0582021-04-30 13:09:43 -0700154 to->pNext = (VkBaseOutStructure*)alloc->alloc(pNext_size);
155 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800156 }
157}
158
159void deepcopy_VkBufferMemoryBarrier(
Yilong Li422b0582021-04-30 13:09:43 -0700160 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700161 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800162 const VkBufferMemoryBarrier* from,
163 VkBufferMemoryBarrier* to)
164{
Yilong Li422b0582021-04-30 13:09:43 -0700165 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700166 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800167 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700168 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
169 {
170 rootType = from->sType;
171 }
Yilong Li04218f72021-02-19 01:31:17 -0800172 const void* from_pNext = from;
173 size_t pNext_size = 0u;
174 while (!pNext_size && from_pNext)
175 {
176 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700177 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800178 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800179 to->pNext = nullptr;
180 if (pNext_size)
181 {
Yilong Li324fa652021-12-29 17:00:42 -0800182 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700183 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800184 }
185}
186
187void deepcopy_VkDispatchIndirectCommand(
Yilong Li422b0582021-04-30 13:09:43 -0700188 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700189 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800190 const VkDispatchIndirectCommand* from,
191 VkDispatchIndirectCommand* to)
192{
Yilong Li422b0582021-04-30 13:09:43 -0700193 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700194 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800195 *to = *from;
196}
197
198void deepcopy_VkDrawIndexedIndirectCommand(
Yilong Li422b0582021-04-30 13:09:43 -0700199 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700200 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800201 const VkDrawIndexedIndirectCommand* from,
202 VkDrawIndexedIndirectCommand* to)
203{
Yilong Li422b0582021-04-30 13:09:43 -0700204 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700205 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800206 *to = *from;
207}
208
209void deepcopy_VkDrawIndirectCommand(
Yilong Li422b0582021-04-30 13:09:43 -0700210 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700211 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800212 const VkDrawIndirectCommand* from,
213 VkDrawIndirectCommand* to)
214{
Yilong Li422b0582021-04-30 13:09:43 -0700215 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700216 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800217 *to = *from;
218}
219
220void deepcopy_VkImageSubresourceRange(
Yilong Li422b0582021-04-30 13:09:43 -0700221 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700222 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800223 const VkImageSubresourceRange* from,
224 VkImageSubresourceRange* to)
225{
Yilong Li422b0582021-04-30 13:09:43 -0700226 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700227 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800228 *to = *from;
229}
230
231void deepcopy_VkImageMemoryBarrier(
Yilong Li422b0582021-04-30 13:09:43 -0700232 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700233 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800234 const VkImageMemoryBarrier* from,
235 VkImageMemoryBarrier* to)
236{
Yilong Li422b0582021-04-30 13:09:43 -0700237 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700238 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800239 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700240 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
241 {
242 rootType = from->sType;
243 }
Yilong Li04218f72021-02-19 01:31:17 -0800244 const void* from_pNext = from;
245 size_t pNext_size = 0u;
246 while (!pNext_size && from_pNext)
247 {
248 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700249 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800250 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800251 to->pNext = nullptr;
252 if (pNext_size)
253 {
Yilong Li324fa652021-12-29 17:00:42 -0800254 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700255 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800256 }
Yilong Li422b0582021-04-30 13:09:43 -0700257 deepcopy_VkImageSubresourceRange(alloc, rootType, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
Yilong Lia8d45f12021-02-07 02:30:21 -0800258}
259
260void deepcopy_VkMemoryBarrier(
Yilong Li422b0582021-04-30 13:09:43 -0700261 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700262 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800263 const VkMemoryBarrier* from,
264 VkMemoryBarrier* to)
265{
Yilong Li422b0582021-04-30 13:09:43 -0700266 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700267 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800268 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700269 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
270 {
271 rootType = from->sType;
272 }
Yilong Li04218f72021-02-19 01:31:17 -0800273 const void* from_pNext = from;
274 size_t pNext_size = 0u;
275 while (!pNext_size && from_pNext)
276 {
277 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700278 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800279 }
Yilong Lia8d45f12021-02-07 02:30:21 -0800280 to->pNext = nullptr;
281 if (pNext_size)
282 {
Yilong Li324fa652021-12-29 17:00:42 -0800283 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700284 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -0800285 }
286}
287
Yilong Li353409a2022-01-04 02:37:56 -0800288void deepcopy_VkPipelineCacheHeaderVersionOne(
289 Allocator* alloc,
290 VkStructureType rootType,
291 const VkPipelineCacheHeaderVersionOne* from,
292 VkPipelineCacheHeaderVersionOne* to)
293{
294 (void)alloc;
295 (void)rootType;
296 *to = *from;
297 memcpy(to->pipelineCacheUUID, from->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
298}
299
Yilong Lia8d45f12021-02-07 02:30:21 -0800300void deepcopy_VkAllocationCallbacks(
Yilong Li422b0582021-04-30 13:09:43 -0700301 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700302 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800303 const VkAllocationCallbacks* from,
304 VkAllocationCallbacks* to)
305{
Yilong Li422b0582021-04-30 13:09:43 -0700306 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700307 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800308 *to = *from;
309 to->pUserData = nullptr;
310 if (from->pUserData)
311 {
Yilong Li422b0582021-04-30 13:09:43 -0700312 to->pUserData = (void*)alloc->dupArray(from->pUserData, sizeof(uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -0800313 }
314}
315
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800316void deepcopy_VkApplicationInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700317 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700318 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800319 const VkApplicationInfo* from,
320 VkApplicationInfo* to)
321{
Yilong Li422b0582021-04-30 13:09:43 -0700322 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700323 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800324 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700325 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
326 {
327 rootType = from->sType;
328 }
Yilong Li04218f72021-02-19 01:31:17 -0800329 const void* from_pNext = from;
330 size_t pNext_size = 0u;
331 while (!pNext_size && from_pNext)
332 {
333 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700334 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800335 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800336 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800337 if (pNext_size)
338 {
Yilong Li324fa652021-12-29 17:00:42 -0800339 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700340 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800341 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800342 to->pApplicationName = nullptr;
343 if (from->pApplicationName)
344 {
Yilong Li422b0582021-04-30 13:09:43 -0700345 to->pApplicationName = alloc->strDup(from->pApplicationName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800346 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800347 to->pEngineName = nullptr;
348 if (from->pEngineName)
349 {
Yilong Li422b0582021-04-30 13:09:43 -0700350 to->pEngineName = alloc->strDup(from->pEngineName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800351 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800352}
353
Yilong Lia8d45f12021-02-07 02:30:21 -0800354void deepcopy_VkFormatProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700355 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700356 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800357 const VkFormatProperties* from,
358 VkFormatProperties* to)
359{
Yilong Li422b0582021-04-30 13:09:43 -0700360 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700361 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800362 *to = *from;
363}
364
365void deepcopy_VkImageFormatProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700366 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700367 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800368 const VkImageFormatProperties* from,
369 VkImageFormatProperties* to)
370{
Yilong Li422b0582021-04-30 13:09:43 -0700371 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700372 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800373 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -0700374 deepcopy_VkExtent3D(alloc, rootType, &from->maxExtent, (VkExtent3D*)(&to->maxExtent));
Yilong Lia8d45f12021-02-07 02:30:21 -0800375}
376
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800377void deepcopy_VkInstanceCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700378 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700379 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800380 const VkInstanceCreateInfo* from,
381 VkInstanceCreateInfo* to)
382{
Yilong Li422b0582021-04-30 13:09:43 -0700383 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700384 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800385 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700386 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
387 {
388 rootType = from->sType;
389 }
Yilong Li04218f72021-02-19 01:31:17 -0800390 const void* from_pNext = from;
391 size_t pNext_size = 0u;
392 while (!pNext_size && from_pNext)
393 {
394 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700395 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800396 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800397 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800398 if (pNext_size)
399 {
Yilong Li324fa652021-12-29 17:00:42 -0800400 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700401 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800402 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800403 to->pApplicationInfo = nullptr;
404 if (from->pApplicationInfo)
405 {
Yilong Li422b0582021-04-30 13:09:43 -0700406 to->pApplicationInfo = (VkApplicationInfo*)alloc->alloc(sizeof(const VkApplicationInfo));
407 deepcopy_VkApplicationInfo(alloc, rootType, from->pApplicationInfo, (VkApplicationInfo*)(to->pApplicationInfo));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800408 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800409 to->ppEnabledLayerNames = nullptr;
410 if (from->ppEnabledLayerNames && from->enabledLayerCount)
411 {
Yilong Li422b0582021-04-30 13:09:43 -0700412 to->ppEnabledLayerNames = alloc->strDupArray(from->ppEnabledLayerNames, from->enabledLayerCount);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800413 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800414 to->ppEnabledExtensionNames = nullptr;
415 if (from->ppEnabledExtensionNames && from->enabledExtensionCount)
416 {
Yilong Li422b0582021-04-30 13:09:43 -0700417 to->ppEnabledExtensionNames = alloc->strDupArray(from->ppEnabledExtensionNames, from->enabledExtensionCount);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800418 }
419}
420
Yilong Lia8d45f12021-02-07 02:30:21 -0800421void deepcopy_VkMemoryHeap(
Yilong Li422b0582021-04-30 13:09:43 -0700422 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700423 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800424 const VkMemoryHeap* from,
425 VkMemoryHeap* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800426{
Yilong Li422b0582021-04-30 13:09:43 -0700427 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700428 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800429 *to = *from;
Yilong Lia8d45f12021-02-07 02:30:21 -0800430}
431
432void deepcopy_VkMemoryType(
Yilong Li422b0582021-04-30 13:09:43 -0700433 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700434 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800435 const VkMemoryType* from,
436 VkMemoryType* to)
437{
Yilong Li422b0582021-04-30 13:09:43 -0700438 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700439 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800440 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800441}
442
443void deepcopy_VkPhysicalDeviceFeatures(
Yilong Li422b0582021-04-30 13:09:43 -0700444 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700445 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800446 const VkPhysicalDeviceFeatures* from,
447 VkPhysicalDeviceFeatures* to)
448{
Yilong Li422b0582021-04-30 13:09:43 -0700449 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700450 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800451 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800452}
453
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800454void deepcopy_VkPhysicalDeviceLimits(
Yilong Li422b0582021-04-30 13:09:43 -0700455 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700456 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800457 const VkPhysicalDeviceLimits* from,
458 VkPhysicalDeviceLimits* to)
459{
Yilong Li422b0582021-04-30 13:09:43 -0700460 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700461 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800462 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800463 memcpy(to->maxComputeWorkGroupCount, from->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800464 memcpy(to->maxComputeWorkGroupSize, from->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800465 memcpy(to->maxViewportDimensions, from->maxViewportDimensions, 2 * sizeof(uint32_t));
466 memcpy(to->viewportBoundsRange, from->viewportBoundsRange, 2 * sizeof(float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800467 memcpy(to->pointSizeRange, from->pointSizeRange, 2 * sizeof(float));
468 memcpy(to->lineWidthRange, from->lineWidthRange, 2 * sizeof(float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800469}
470
Yilong Lia8d45f12021-02-07 02:30:21 -0800471void deepcopy_VkPhysicalDeviceMemoryProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700472 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700473 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800474 const VkPhysicalDeviceMemoryProperties* from,
475 VkPhysicalDeviceMemoryProperties* to)
476{
Yilong Li422b0582021-04-30 13:09:43 -0700477 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700478 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800479 *to = *from;
480 for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
481 {
Yilong Li422b0582021-04-30 13:09:43 -0700482 deepcopy_VkMemoryType(alloc, rootType, from->memoryTypes + i, (VkMemoryType*)(to->memoryTypes + i));
Yilong Lia8d45f12021-02-07 02:30:21 -0800483 }
484 for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
485 {
Yilong Li422b0582021-04-30 13:09:43 -0700486 deepcopy_VkMemoryHeap(alloc, rootType, from->memoryHeaps + i, (VkMemoryHeap*)(to->memoryHeaps + i));
Yilong Lia8d45f12021-02-07 02:30:21 -0800487 }
488}
489
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800490void deepcopy_VkPhysicalDeviceSparseProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700491 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700492 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800493 const VkPhysicalDeviceSparseProperties* from,
494 VkPhysicalDeviceSparseProperties* to)
495{
Yilong Li422b0582021-04-30 13:09:43 -0700496 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700497 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800498 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800499}
500
501void deepcopy_VkPhysicalDeviceProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700502 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700503 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800504 const VkPhysicalDeviceProperties* from,
505 VkPhysicalDeviceProperties* to)
506{
Yilong Li422b0582021-04-30 13:09:43 -0700507 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700508 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800509 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800510 memcpy(to->deviceName, from->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
511 memcpy(to->pipelineCacheUUID, from->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
Yilong Li422b0582021-04-30 13:09:43 -0700512 deepcopy_VkPhysicalDeviceLimits(alloc, rootType, &from->limits, (VkPhysicalDeviceLimits*)(&to->limits));
513 deepcopy_VkPhysicalDeviceSparseProperties(alloc, rootType, &from->sparseProperties, (VkPhysicalDeviceSparseProperties*)(&to->sparseProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800514}
515
516void deepcopy_VkQueueFamilyProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700517 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700518 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800519 const VkQueueFamilyProperties* from,
520 VkQueueFamilyProperties* to)
521{
Yilong Li422b0582021-04-30 13:09:43 -0700522 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700523 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800524 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -0700525 deepcopy_VkExtent3D(alloc, rootType, &from->minImageTransferGranularity, (VkExtent3D*)(&to->minImageTransferGranularity));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800526}
527
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800528void deepcopy_VkDeviceQueueCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700529 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700530 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800531 const VkDeviceQueueCreateInfo* from,
532 VkDeviceQueueCreateInfo* to)
533{
Yilong Li422b0582021-04-30 13:09:43 -0700534 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700535 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800536 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700537 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
538 {
539 rootType = from->sType;
540 }
Yilong Li04218f72021-02-19 01:31:17 -0800541 const void* from_pNext = from;
542 size_t pNext_size = 0u;
543 while (!pNext_size && from_pNext)
544 {
545 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700546 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800547 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800548 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800549 if (pNext_size)
550 {
Yilong Li324fa652021-12-29 17:00:42 -0800551 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700552 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800553 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800554 to->pQueuePriorities = nullptr;
555 if (from->pQueuePriorities)
556 {
Yilong Li422b0582021-04-30 13:09:43 -0700557 to->pQueuePriorities = (float*)alloc->dupArray(from->pQueuePriorities, from->queueCount * sizeof(const float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800558 }
559}
560
561void deepcopy_VkDeviceCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700562 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700563 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800564 const VkDeviceCreateInfo* from,
565 VkDeviceCreateInfo* to)
566{
Yilong Li422b0582021-04-30 13:09:43 -0700567 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700568 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800569 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700570 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
571 {
572 rootType = from->sType;
573 }
Yilong Li04218f72021-02-19 01:31:17 -0800574 const void* from_pNext = from;
575 size_t pNext_size = 0u;
576 while (!pNext_size && from_pNext)
577 {
578 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700579 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800580 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800581 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800582 if (pNext_size)
583 {
Yilong Li324fa652021-12-29 17:00:42 -0800584 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700585 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800586 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800587 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800588 {
Yilong Libd10ec92021-02-10 13:24:27 -0800589 to->pQueueCreateInfos = nullptr;
590 if (from->pQueueCreateInfos)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800591 {
Yilong Li422b0582021-04-30 13:09:43 -0700592 to->pQueueCreateInfos = (VkDeviceQueueCreateInfo*)alloc->alloc(from->queueCreateInfoCount * sizeof(const VkDeviceQueueCreateInfo));
Yilong Libd10ec92021-02-10 13:24:27 -0800593 to->queueCreateInfoCount = from->queueCreateInfoCount;
594 for (uint32_t i = 0; i < (uint32_t)from->queueCreateInfoCount; ++i)
595 {
Yilong Li422b0582021-04-30 13:09:43 -0700596 deepcopy_VkDeviceQueueCreateInfo(alloc, rootType, from->pQueueCreateInfos + i, (VkDeviceQueueCreateInfo*)(to->pQueueCreateInfos + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800598 }
599 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800600 to->ppEnabledLayerNames = nullptr;
601 if (from->ppEnabledLayerNames && from->enabledLayerCount)
602 {
Yilong Li422b0582021-04-30 13:09:43 -0700603 to->ppEnabledLayerNames = alloc->strDupArray(from->ppEnabledLayerNames, from->enabledLayerCount);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800604 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800605 to->ppEnabledExtensionNames = nullptr;
606 if (from->ppEnabledExtensionNames && from->enabledExtensionCount)
607 {
Yilong Li422b0582021-04-30 13:09:43 -0700608 to->ppEnabledExtensionNames = alloc->strDupArray(from->ppEnabledExtensionNames, from->enabledExtensionCount);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800609 }
610 to->pEnabledFeatures = nullptr;
611 if (from->pEnabledFeatures)
612 {
Yilong Li422b0582021-04-30 13:09:43 -0700613 to->pEnabledFeatures = (VkPhysicalDeviceFeatures*)alloc->alloc(sizeof(const VkPhysicalDeviceFeatures));
614 deepcopy_VkPhysicalDeviceFeatures(alloc, rootType, from->pEnabledFeatures, (VkPhysicalDeviceFeatures*)(to->pEnabledFeatures));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800615 }
616}
617
618void deepcopy_VkExtensionProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700619 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700620 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800621 const VkExtensionProperties* from,
622 VkExtensionProperties* to)
623{
Yilong Li422b0582021-04-30 13:09:43 -0700624 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700625 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800626 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800627 memcpy(to->extensionName, from->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800628}
629
630void deepcopy_VkLayerProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700631 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700632 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800633 const VkLayerProperties* from,
634 VkLayerProperties* to)
635{
Yilong Li422b0582021-04-30 13:09:43 -0700636 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700637 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800638 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800639 memcpy(to->layerName, from->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800640 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
641}
642
643void deepcopy_VkSubmitInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700644 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700645 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800646 const VkSubmitInfo* from,
647 VkSubmitInfo* to)
648{
Yilong Li422b0582021-04-30 13:09:43 -0700649 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700650 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800651 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700652 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
653 {
654 rootType = from->sType;
655 }
Yilong Li04218f72021-02-19 01:31:17 -0800656 const void* from_pNext = from;
657 size_t pNext_size = 0u;
658 while (!pNext_size && from_pNext)
659 {
660 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700661 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800662 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800663 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800664 if (pNext_size)
665 {
Yilong Li324fa652021-12-29 17:00:42 -0800666 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700667 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800668 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800669 to->pWaitSemaphores = nullptr;
670 if (from->pWaitSemaphores)
671 {
Yilong Li422b0582021-04-30 13:09:43 -0700672 to->pWaitSemaphores = (VkSemaphore*)alloc->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800673 }
674 to->pWaitDstStageMask = nullptr;
675 if (from->pWaitDstStageMask)
676 {
Yilong Li422b0582021-04-30 13:09:43 -0700677 to->pWaitDstStageMask = (VkPipelineStageFlags*)alloc->dupArray(from->pWaitDstStageMask, from->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800678 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800679 to->pCommandBuffers = nullptr;
680 if (from->pCommandBuffers)
681 {
Yilong Li422b0582021-04-30 13:09:43 -0700682 to->pCommandBuffers = (VkCommandBuffer*)alloc->dupArray(from->pCommandBuffers, from->commandBufferCount * sizeof(const VkCommandBuffer));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800683 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800684 to->pSignalSemaphores = nullptr;
685 if (from->pSignalSemaphores)
686 {
Yilong Li422b0582021-04-30 13:09:43 -0700687 to->pSignalSemaphores = (VkSemaphore*)alloc->dupArray(from->pSignalSemaphores, from->signalSemaphoreCount * sizeof(const VkSemaphore));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800688 }
689}
690
Yilong Lia8d45f12021-02-07 02:30:21 -0800691void deepcopy_VkMappedMemoryRange(
Yilong Li422b0582021-04-30 13:09:43 -0700692 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700693 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800694 const VkMappedMemoryRange* from,
695 VkMappedMemoryRange* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800696{
Yilong Li422b0582021-04-30 13:09:43 -0700697 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700698 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800699 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700700 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
701 {
702 rootType = from->sType;
703 }
Yilong Li04218f72021-02-19 01:31:17 -0800704 const void* from_pNext = from;
705 size_t pNext_size = 0u;
706 while (!pNext_size && from_pNext)
707 {
708 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700709 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800710 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800711 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800712 if (pNext_size)
713 {
Yilong Li324fa652021-12-29 17:00:42 -0800714 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700715 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800716 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800717}
718
Yilong Lia8d45f12021-02-07 02:30:21 -0800719void deepcopy_VkMemoryAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700720 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700721 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800722 const VkMemoryAllocateInfo* from,
723 VkMemoryAllocateInfo* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800724{
Yilong Li422b0582021-04-30 13:09:43 -0700725 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700726 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800727 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700728 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
729 {
730 rootType = from->sType;
731 }
Yilong Li04218f72021-02-19 01:31:17 -0800732 const void* from_pNext = from;
733 size_t pNext_size = 0u;
734 while (!pNext_size && from_pNext)
735 {
736 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700737 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800738 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800739 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800740 if (pNext_size)
741 {
Yilong Li324fa652021-12-29 17:00:42 -0800742 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700743 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800744 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800745}
746
747void deepcopy_VkMemoryRequirements(
Yilong Li422b0582021-04-30 13:09:43 -0700748 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700749 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800750 const VkMemoryRequirements* from,
751 VkMemoryRequirements* to)
752{
Yilong Li422b0582021-04-30 13:09:43 -0700753 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700754 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800755 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800756}
757
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800758void deepcopy_VkSparseMemoryBind(
Yilong Li422b0582021-04-30 13:09:43 -0700759 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700760 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800761 const VkSparseMemoryBind* from,
762 VkSparseMemoryBind* to)
763{
Yilong Li422b0582021-04-30 13:09:43 -0700764 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700765 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800766 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800767}
768
769void deepcopy_VkSparseBufferMemoryBindInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700770 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700771 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800772 const VkSparseBufferMemoryBindInfo* from,
773 VkSparseBufferMemoryBindInfo* to)
774{
Yilong Li422b0582021-04-30 13:09:43 -0700775 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700776 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800777 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -0800778 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800779 {
Yilong Libd10ec92021-02-10 13:24:27 -0800780 to->pBinds = nullptr;
781 if (from->pBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800782 {
Yilong Li422b0582021-04-30 13:09:43 -0700783 to->pBinds = (VkSparseMemoryBind*)alloc->alloc(from->bindCount * sizeof(const VkSparseMemoryBind));
Yilong Libd10ec92021-02-10 13:24:27 -0800784 to->bindCount = from->bindCount;
785 for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
786 {
Yilong Li422b0582021-04-30 13:09:43 -0700787 deepcopy_VkSparseMemoryBind(alloc, rootType, from->pBinds + i, (VkSparseMemoryBind*)(to->pBinds + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800789 }
790 }
791}
792
793void deepcopy_VkSparseImageOpaqueMemoryBindInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700794 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700795 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800796 const VkSparseImageOpaqueMemoryBindInfo* from,
797 VkSparseImageOpaqueMemoryBindInfo* to)
798{
Yilong Li422b0582021-04-30 13:09:43 -0700799 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700800 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800801 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -0800802 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800803 {
Yilong Libd10ec92021-02-10 13:24:27 -0800804 to->pBinds = nullptr;
805 if (from->pBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800806 {
Yilong Li422b0582021-04-30 13:09:43 -0700807 to->pBinds = (VkSparseMemoryBind*)alloc->alloc(from->bindCount * sizeof(const VkSparseMemoryBind));
Yilong Libd10ec92021-02-10 13:24:27 -0800808 to->bindCount = from->bindCount;
809 for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
810 {
Yilong Li422b0582021-04-30 13:09:43 -0700811 deepcopy_VkSparseMemoryBind(alloc, rootType, from->pBinds + i, (VkSparseMemoryBind*)(to->pBinds + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800812 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800813 }
814 }
815}
816
817void deepcopy_VkImageSubresource(
Yilong Li422b0582021-04-30 13:09:43 -0700818 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700819 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800820 const VkImageSubresource* from,
821 VkImageSubresource* to)
822{
Yilong Li422b0582021-04-30 13:09:43 -0700823 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700824 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800825 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800826}
827
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800828void deepcopy_VkSparseImageMemoryBind(
Yilong Li422b0582021-04-30 13:09:43 -0700829 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700830 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800831 const VkSparseImageMemoryBind* from,
832 VkSparseImageMemoryBind* to)
833{
Yilong Li422b0582021-04-30 13:09:43 -0700834 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700835 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800836 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -0700837 deepcopy_VkImageSubresource(alloc, rootType, &from->subresource, (VkImageSubresource*)(&to->subresource));
838 deepcopy_VkOffset3D(alloc, rootType, &from->offset, (VkOffset3D*)(&to->offset));
839 deepcopy_VkExtent3D(alloc, rootType, &from->extent, (VkExtent3D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800840}
841
842void deepcopy_VkSparseImageMemoryBindInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700843 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700844 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800845 const VkSparseImageMemoryBindInfo* from,
846 VkSparseImageMemoryBindInfo* to)
847{
Yilong Li422b0582021-04-30 13:09:43 -0700848 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700849 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800850 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -0800851 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800852 {
Yilong Libd10ec92021-02-10 13:24:27 -0800853 to->pBinds = nullptr;
854 if (from->pBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800855 {
Yilong Li422b0582021-04-30 13:09:43 -0700856 to->pBinds = (VkSparseImageMemoryBind*)alloc->alloc(from->bindCount * sizeof(const VkSparseImageMemoryBind));
Yilong Libd10ec92021-02-10 13:24:27 -0800857 to->bindCount = from->bindCount;
858 for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
859 {
Yilong Li422b0582021-04-30 13:09:43 -0700860 deepcopy_VkSparseImageMemoryBind(alloc, rootType, from->pBinds + i, (VkSparseImageMemoryBind*)(to->pBinds + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800861 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800862 }
863 }
864}
865
866void deepcopy_VkBindSparseInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700867 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700868 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800869 const VkBindSparseInfo* from,
870 VkBindSparseInfo* to)
871{
Yilong Li422b0582021-04-30 13:09:43 -0700872 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700873 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800874 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700875 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
876 {
877 rootType = from->sType;
878 }
Yilong Li04218f72021-02-19 01:31:17 -0800879 const void* from_pNext = from;
880 size_t pNext_size = 0u;
881 while (!pNext_size && from_pNext)
882 {
883 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700884 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800885 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800886 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800887 if (pNext_size)
888 {
Yilong Li324fa652021-12-29 17:00:42 -0800889 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700890 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800891 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800892 to->pWaitSemaphores = nullptr;
893 if (from->pWaitSemaphores)
894 {
Yilong Li422b0582021-04-30 13:09:43 -0700895 to->pWaitSemaphores = (VkSemaphore*)alloc->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800896 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800897 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800898 {
Yilong Libd10ec92021-02-10 13:24:27 -0800899 to->pBufferBinds = nullptr;
900 if (from->pBufferBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800901 {
Yilong Li422b0582021-04-30 13:09:43 -0700902 to->pBufferBinds = (VkSparseBufferMemoryBindInfo*)alloc->alloc(from->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
Yilong Libd10ec92021-02-10 13:24:27 -0800903 to->bufferBindCount = from->bufferBindCount;
904 for (uint32_t i = 0; i < (uint32_t)from->bufferBindCount; ++i)
905 {
Yilong Li422b0582021-04-30 13:09:43 -0700906 deepcopy_VkSparseBufferMemoryBindInfo(alloc, rootType, from->pBufferBinds + i, (VkSparseBufferMemoryBindInfo*)(to->pBufferBinds + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800907 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800908 }
909 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800910 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800911 {
Yilong Libd10ec92021-02-10 13:24:27 -0800912 to->pImageOpaqueBinds = nullptr;
913 if (from->pImageOpaqueBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800914 {
Yilong Li422b0582021-04-30 13:09:43 -0700915 to->pImageOpaqueBinds = (VkSparseImageOpaqueMemoryBindInfo*)alloc->alloc(from->imageOpaqueBindCount * sizeof(const VkSparseImageOpaqueMemoryBindInfo));
Yilong Libd10ec92021-02-10 13:24:27 -0800916 to->imageOpaqueBindCount = from->imageOpaqueBindCount;
917 for (uint32_t i = 0; i < (uint32_t)from->imageOpaqueBindCount; ++i)
918 {
Yilong Li422b0582021-04-30 13:09:43 -0700919 deepcopy_VkSparseImageOpaqueMemoryBindInfo(alloc, rootType, from->pImageOpaqueBinds + i, (VkSparseImageOpaqueMemoryBindInfo*)(to->pImageOpaqueBinds + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800920 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800921 }
922 }
Lingfeng Yang55676e02021-02-08 08:39:45 -0800923 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800924 {
Yilong Libd10ec92021-02-10 13:24:27 -0800925 to->pImageBinds = nullptr;
926 if (from->pImageBinds)
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800927 {
Yilong Li422b0582021-04-30 13:09:43 -0700928 to->pImageBinds = (VkSparseImageMemoryBindInfo*)alloc->alloc(from->imageBindCount * sizeof(const VkSparseImageMemoryBindInfo));
Yilong Libd10ec92021-02-10 13:24:27 -0800929 to->imageBindCount = from->imageBindCount;
930 for (uint32_t i = 0; i < (uint32_t)from->imageBindCount; ++i)
931 {
Yilong Li422b0582021-04-30 13:09:43 -0700932 deepcopy_VkSparseImageMemoryBindInfo(alloc, rootType, from->pImageBinds + i, (VkSparseImageMemoryBindInfo*)(to->pImageBinds + i));
Yilong Libd10ec92021-02-10 13:24:27 -0800933 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800934 }
935 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800936 to->pSignalSemaphores = nullptr;
937 if (from->pSignalSemaphores)
938 {
Yilong Li422b0582021-04-30 13:09:43 -0700939 to->pSignalSemaphores = (VkSemaphore*)alloc->dupArray(from->pSignalSemaphores, from->signalSemaphoreCount * sizeof(const VkSemaphore));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800940 }
941}
942
Yilong Lia8d45f12021-02-07 02:30:21 -0800943void deepcopy_VkSparseImageFormatProperties(
Yilong Li422b0582021-04-30 13:09:43 -0700944 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700945 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800946 const VkSparseImageFormatProperties* from,
947 VkSparseImageFormatProperties* to)
948{
Yilong Li422b0582021-04-30 13:09:43 -0700949 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700950 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800951 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -0700952 deepcopy_VkExtent3D(alloc, rootType, &from->imageGranularity, (VkExtent3D*)(&to->imageGranularity));
Yilong Lia8d45f12021-02-07 02:30:21 -0800953}
954
955void deepcopy_VkSparseImageMemoryRequirements(
Yilong Li422b0582021-04-30 13:09:43 -0700956 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700957 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -0800958 const VkSparseImageMemoryRequirements* from,
959 VkSparseImageMemoryRequirements* to)
960{
Yilong Li422b0582021-04-30 13:09:43 -0700961 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700962 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -0800963 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -0700964 deepcopy_VkSparseImageFormatProperties(alloc, rootType, &from->formatProperties, (VkSparseImageFormatProperties*)(&to->formatProperties));
Yilong Lia8d45f12021-02-07 02:30:21 -0800965}
966
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800967void deepcopy_VkFenceCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700968 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700969 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800970 const VkFenceCreateInfo* from,
971 VkFenceCreateInfo* to)
972{
Yilong Li422b0582021-04-30 13:09:43 -0700973 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -0700974 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -0800975 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -0700976 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
977 {
978 rootType = from->sType;
979 }
Yilong Li04218f72021-02-19 01:31:17 -0800980 const void* from_pNext = from;
981 size_t pNext_size = 0u;
982 while (!pNext_size && from_pNext)
983 {
984 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -0700985 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -0800986 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800987 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -0800988 if (pNext_size)
989 {
Yilong Li324fa652021-12-29 17:00:42 -0800990 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -0700991 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -0800992 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800993}
994
995void deepcopy_VkSemaphoreCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -0700996 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -0700997 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800998 const VkSemaphoreCreateInfo* from,
999 VkSemaphoreCreateInfo* to)
1000{
Yilong Li422b0582021-04-30 13:09:43 -07001001 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001002 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001003 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001004 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1005 {
1006 rootType = from->sType;
1007 }
Yilong Li04218f72021-02-19 01:31:17 -08001008 const void* from_pNext = from;
1009 size_t pNext_size = 0u;
1010 while (!pNext_size && from_pNext)
1011 {
1012 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001013 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001014 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001015 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001016 if (pNext_size)
1017 {
Yilong Li324fa652021-12-29 17:00:42 -08001018 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001019 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001020 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001021}
1022
1023void deepcopy_VkEventCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001024 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001025 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001026 const VkEventCreateInfo* from,
1027 VkEventCreateInfo* to)
1028{
Yilong Li422b0582021-04-30 13:09:43 -07001029 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001030 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001031 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001032 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1033 {
1034 rootType = from->sType;
1035 }
Yilong Li04218f72021-02-19 01:31:17 -08001036 const void* from_pNext = from;
1037 size_t pNext_size = 0u;
1038 while (!pNext_size && from_pNext)
1039 {
1040 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001041 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001042 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001043 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001044 if (pNext_size)
1045 {
Yilong Li324fa652021-12-29 17:00:42 -08001046 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001047 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001048 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001049}
1050
1051void deepcopy_VkQueryPoolCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001052 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001053 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001054 const VkQueryPoolCreateInfo* from,
1055 VkQueryPoolCreateInfo* to)
1056{
Yilong Li422b0582021-04-30 13:09:43 -07001057 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001058 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001059 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001060 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1061 {
1062 rootType = from->sType;
1063 }
Yilong Li04218f72021-02-19 01:31:17 -08001064 const void* from_pNext = from;
1065 size_t pNext_size = 0u;
1066 while (!pNext_size && from_pNext)
1067 {
1068 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001069 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001070 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001071 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001072 if (pNext_size)
1073 {
Yilong Li324fa652021-12-29 17:00:42 -08001074 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001075 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001076 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001077}
1078
1079void deepcopy_VkBufferCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001080 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001081 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001082 const VkBufferCreateInfo* from,
1083 VkBufferCreateInfo* to)
1084{
Yilong Li422b0582021-04-30 13:09:43 -07001085 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001086 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001087 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001088 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1089 {
1090 rootType = from->sType;
1091 }
Yilong Li04218f72021-02-19 01:31:17 -08001092 const void* from_pNext = from;
1093 size_t pNext_size = 0u;
1094 while (!pNext_size && from_pNext)
1095 {
1096 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001097 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001098 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001099 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001100 if (pNext_size)
1101 {
Yilong Li324fa652021-12-29 17:00:42 -08001102 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001103 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001104 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001105 to->pQueueFamilyIndices = nullptr;
1106 if (from->pQueueFamilyIndices)
1107 {
Yilong Li422b0582021-04-30 13:09:43 -07001108 to->pQueueFamilyIndices = (uint32_t*)alloc->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001109 }
1110}
1111
1112void deepcopy_VkBufferViewCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001113 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001114 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001115 const VkBufferViewCreateInfo* from,
1116 VkBufferViewCreateInfo* to)
1117{
Yilong Li422b0582021-04-30 13:09:43 -07001118 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001119 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001120 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001121 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1122 {
1123 rootType = from->sType;
1124 }
Yilong Li04218f72021-02-19 01:31:17 -08001125 const void* from_pNext = from;
1126 size_t pNext_size = 0u;
1127 while (!pNext_size && from_pNext)
1128 {
1129 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001130 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001131 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001132 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001133 if (pNext_size)
1134 {
Yilong Li324fa652021-12-29 17:00:42 -08001135 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001136 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001137 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001138}
1139
1140void deepcopy_VkImageCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001141 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001142 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001143 const VkImageCreateInfo* from,
1144 VkImageCreateInfo* to)
1145{
Yilong Li422b0582021-04-30 13:09:43 -07001146 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001147 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001148 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001149 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1150 {
1151 rootType = from->sType;
1152 }
Yilong Li04218f72021-02-19 01:31:17 -08001153 const void* from_pNext = from;
1154 size_t pNext_size = 0u;
1155 while (!pNext_size && from_pNext)
1156 {
1157 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001158 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001159 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001160 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001161 if (pNext_size)
1162 {
Yilong Li324fa652021-12-29 17:00:42 -08001163 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001164 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001165 }
Yilong Li422b0582021-04-30 13:09:43 -07001166 deepcopy_VkExtent3D(alloc, rootType, &from->extent, (VkExtent3D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001167 to->pQueueFamilyIndices = nullptr;
1168 if (from->pQueueFamilyIndices)
1169 {
Yilong Li422b0582021-04-30 13:09:43 -07001170 to->pQueueFamilyIndices = (uint32_t*)alloc->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001171 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001172}
1173
1174void deepcopy_VkSubresourceLayout(
Yilong Li422b0582021-04-30 13:09:43 -07001175 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001176 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001177 const VkSubresourceLayout* from,
1178 VkSubresourceLayout* to)
1179{
Yilong Li422b0582021-04-30 13:09:43 -07001180 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001181 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001182 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001183}
1184
1185void deepcopy_VkComponentMapping(
Yilong Li422b0582021-04-30 13:09:43 -07001186 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001187 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001188 const VkComponentMapping* from,
1189 VkComponentMapping* to)
1190{
Yilong Li422b0582021-04-30 13:09:43 -07001191 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001192 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001193 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001194}
1195
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001196void deepcopy_VkImageViewCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001197 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001198 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001199 const VkImageViewCreateInfo* from,
1200 VkImageViewCreateInfo* to)
1201{
Yilong Li422b0582021-04-30 13:09:43 -07001202 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001203 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001204 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001205 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1206 {
1207 rootType = from->sType;
1208 }
Yilong Li04218f72021-02-19 01:31:17 -08001209 const void* from_pNext = from;
1210 size_t pNext_size = 0u;
1211 while (!pNext_size && from_pNext)
1212 {
1213 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001214 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001215 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001216 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001217 if (pNext_size)
1218 {
Yilong Li324fa652021-12-29 17:00:42 -08001219 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001220 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001221 }
Yilong Li422b0582021-04-30 13:09:43 -07001222 deepcopy_VkComponentMapping(alloc, rootType, &from->components, (VkComponentMapping*)(&to->components));
1223 deepcopy_VkImageSubresourceRange(alloc, rootType, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001224}
1225
1226void deepcopy_VkShaderModuleCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001227 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001228 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001229 const VkShaderModuleCreateInfo* from,
1230 VkShaderModuleCreateInfo* to)
1231{
Yilong Li422b0582021-04-30 13:09:43 -07001232 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001233 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001234 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001235 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1236 {
1237 rootType = from->sType;
1238 }
Yilong Li04218f72021-02-19 01:31:17 -08001239 const void* from_pNext = from;
1240 size_t pNext_size = 0u;
1241 while (!pNext_size && from_pNext)
1242 {
1243 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001244 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001245 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001246 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001247 if (pNext_size)
1248 {
Yilong Li324fa652021-12-29 17:00:42 -08001249 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001250 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001251 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001252 to->pCode = nullptr;
1253 if (from->pCode)
1254 {
Yilong Li422b0582021-04-30 13:09:43 -07001255 to->pCode = (uint32_t*)alloc->dupArray(from->pCode, (from->codeSize / 4) * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001256 }
1257}
1258
1259void deepcopy_VkPipelineCacheCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001260 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001261 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001262 const VkPipelineCacheCreateInfo* from,
1263 VkPipelineCacheCreateInfo* to)
1264{
Yilong Li422b0582021-04-30 13:09:43 -07001265 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001266 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001267 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001268 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1269 {
1270 rootType = from->sType;
1271 }
Yilong Li04218f72021-02-19 01:31:17 -08001272 const void* from_pNext = from;
1273 size_t pNext_size = 0u;
1274 while (!pNext_size && from_pNext)
1275 {
1276 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001277 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001278 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001279 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001280 if (pNext_size)
1281 {
Yilong Li324fa652021-12-29 17:00:42 -08001282 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001283 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001284 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001285 to->pInitialData = nullptr;
1286 if (from->pInitialData)
1287 {
Yilong Li422b0582021-04-30 13:09:43 -07001288 to->pInitialData = (void*)alloc->dupArray(from->pInitialData, from->initialDataSize * sizeof(const uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001289 }
1290}
1291
1292void deepcopy_VkSpecializationMapEntry(
Yilong Li422b0582021-04-30 13:09:43 -07001293 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001294 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001295 const VkSpecializationMapEntry* from,
1296 VkSpecializationMapEntry* to)
1297{
Yilong Li422b0582021-04-30 13:09:43 -07001298 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001299 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001300 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001301}
1302
1303void deepcopy_VkSpecializationInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001304 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001305 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001306 const VkSpecializationInfo* from,
1307 VkSpecializationInfo* to)
1308{
Yilong Li422b0582021-04-30 13:09:43 -07001309 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001310 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001311 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08001312 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001313 {
Yilong Libd10ec92021-02-10 13:24:27 -08001314 to->pMapEntries = nullptr;
1315 if (from->pMapEntries)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001316 {
Yilong Li422b0582021-04-30 13:09:43 -07001317 to->pMapEntries = (VkSpecializationMapEntry*)alloc->alloc(from->mapEntryCount * sizeof(const VkSpecializationMapEntry));
Yilong Libd10ec92021-02-10 13:24:27 -08001318 to->mapEntryCount = from->mapEntryCount;
1319 for (uint32_t i = 0; i < (uint32_t)from->mapEntryCount; ++i)
1320 {
Yilong Li422b0582021-04-30 13:09:43 -07001321 deepcopy_VkSpecializationMapEntry(alloc, rootType, from->pMapEntries + i, (VkSpecializationMapEntry*)(to->pMapEntries + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001322 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001323 }
1324 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001325 to->pData = nullptr;
1326 if (from->pData)
1327 {
Yilong Li422b0582021-04-30 13:09:43 -07001328 to->pData = (void*)alloc->dupArray(from->pData, from->dataSize * sizeof(const uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001329 }
1330}
1331
1332void deepcopy_VkPipelineShaderStageCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001333 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001334 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001335 const VkPipelineShaderStageCreateInfo* from,
1336 VkPipelineShaderStageCreateInfo* to)
1337{
Yilong Li422b0582021-04-30 13:09:43 -07001338 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001339 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001340 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001341 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1342 {
1343 rootType = from->sType;
1344 }
Yilong Li04218f72021-02-19 01:31:17 -08001345 const void* from_pNext = from;
1346 size_t pNext_size = 0u;
1347 while (!pNext_size && from_pNext)
1348 {
1349 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001350 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001351 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001352 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001353 if (pNext_size)
1354 {
Yilong Li324fa652021-12-29 17:00:42 -08001355 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001356 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001357 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001358 to->pName = nullptr;
1359 if (from->pName)
1360 {
Yilong Li422b0582021-04-30 13:09:43 -07001361 to->pName = alloc->strDup(from->pName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001362 }
1363 to->pSpecializationInfo = nullptr;
1364 if (from->pSpecializationInfo)
1365 {
Yilong Li422b0582021-04-30 13:09:43 -07001366 to->pSpecializationInfo = (VkSpecializationInfo*)alloc->alloc(sizeof(const VkSpecializationInfo));
1367 deepcopy_VkSpecializationInfo(alloc, rootType, from->pSpecializationInfo, (VkSpecializationInfo*)(to->pSpecializationInfo));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001368 }
1369}
1370
Yilong Lia8d45f12021-02-07 02:30:21 -08001371void deepcopy_VkComputePipelineCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001372 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001373 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08001374 const VkComputePipelineCreateInfo* from,
1375 VkComputePipelineCreateInfo* to)
1376{
Yilong Li422b0582021-04-30 13:09:43 -07001377 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001378 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08001379 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001380 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1381 {
1382 rootType = from->sType;
1383 }
Yilong Li04218f72021-02-19 01:31:17 -08001384 const void* from_pNext = from;
1385 size_t pNext_size = 0u;
1386 while (!pNext_size && from_pNext)
1387 {
1388 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001389 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001390 }
Yilong Lia8d45f12021-02-07 02:30:21 -08001391 to->pNext = nullptr;
1392 if (pNext_size)
1393 {
Yilong Li324fa652021-12-29 17:00:42 -08001394 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001395 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08001396 }
Yilong Li422b0582021-04-30 13:09:43 -07001397 deepcopy_VkPipelineShaderStageCreateInfo(alloc, rootType, &from->stage, (VkPipelineShaderStageCreateInfo*)(&to->stage));
Yilong Lia8d45f12021-02-07 02:30:21 -08001398}
1399
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001400void deepcopy_VkVertexInputBindingDescription(
Yilong Li422b0582021-04-30 13:09:43 -07001401 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001402 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001403 const VkVertexInputBindingDescription* from,
1404 VkVertexInputBindingDescription* to)
1405{
Yilong Li422b0582021-04-30 13:09:43 -07001406 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001407 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001408 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001409}
1410
1411void deepcopy_VkVertexInputAttributeDescription(
Yilong Li422b0582021-04-30 13:09:43 -07001412 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001413 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001414 const VkVertexInputAttributeDescription* from,
1415 VkVertexInputAttributeDescription* to)
1416{
Yilong Li422b0582021-04-30 13:09:43 -07001417 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001418 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001419 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001420}
1421
1422void deepcopy_VkPipelineVertexInputStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001423 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001424 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001425 const VkPipelineVertexInputStateCreateInfo* from,
1426 VkPipelineVertexInputStateCreateInfo* to)
1427{
Yilong Li422b0582021-04-30 13:09:43 -07001428 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001429 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001430 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001431 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1432 {
1433 rootType = from->sType;
1434 }
Yilong Li04218f72021-02-19 01:31:17 -08001435 const void* from_pNext = from;
1436 size_t pNext_size = 0u;
1437 while (!pNext_size && from_pNext)
1438 {
1439 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001440 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001441 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001442 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001443 if (pNext_size)
1444 {
Yilong Li324fa652021-12-29 17:00:42 -08001445 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001446 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001447 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001448 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001449 {
Yilong Libd10ec92021-02-10 13:24:27 -08001450 to->pVertexBindingDescriptions = nullptr;
1451 if (from->pVertexBindingDescriptions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001452 {
Yilong Li422b0582021-04-30 13:09:43 -07001453 to->pVertexBindingDescriptions = (VkVertexInputBindingDescription*)alloc->alloc(from->vertexBindingDescriptionCount * sizeof(const VkVertexInputBindingDescription));
Yilong Libd10ec92021-02-10 13:24:27 -08001454 to->vertexBindingDescriptionCount = from->vertexBindingDescriptionCount;
1455 for (uint32_t i = 0; i < (uint32_t)from->vertexBindingDescriptionCount; ++i)
1456 {
Yilong Li422b0582021-04-30 13:09:43 -07001457 deepcopy_VkVertexInputBindingDescription(alloc, rootType, from->pVertexBindingDescriptions + i, (VkVertexInputBindingDescription*)(to->pVertexBindingDescriptions + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001458 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001459 }
1460 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001461 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001462 {
Yilong Libd10ec92021-02-10 13:24:27 -08001463 to->pVertexAttributeDescriptions = nullptr;
1464 if (from->pVertexAttributeDescriptions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001465 {
Yilong Li422b0582021-04-30 13:09:43 -07001466 to->pVertexAttributeDescriptions = (VkVertexInputAttributeDescription*)alloc->alloc(from->vertexAttributeDescriptionCount * sizeof(const VkVertexInputAttributeDescription));
Yilong Libd10ec92021-02-10 13:24:27 -08001467 to->vertexAttributeDescriptionCount = from->vertexAttributeDescriptionCount;
1468 for (uint32_t i = 0; i < (uint32_t)from->vertexAttributeDescriptionCount; ++i)
1469 {
Yilong Li422b0582021-04-30 13:09:43 -07001470 deepcopy_VkVertexInputAttributeDescription(alloc, rootType, from->pVertexAttributeDescriptions + i, (VkVertexInputAttributeDescription*)(to->pVertexAttributeDescriptions + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001472 }
1473 }
1474}
1475
1476void deepcopy_VkPipelineInputAssemblyStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001477 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001478 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001479 const VkPipelineInputAssemblyStateCreateInfo* from,
1480 VkPipelineInputAssemblyStateCreateInfo* to)
1481{
Yilong Li422b0582021-04-30 13:09:43 -07001482 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001483 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001484 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001485 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1486 {
1487 rootType = from->sType;
1488 }
Yilong Li04218f72021-02-19 01:31:17 -08001489 const void* from_pNext = from;
1490 size_t pNext_size = 0u;
1491 while (!pNext_size && from_pNext)
1492 {
1493 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001494 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001495 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001496 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001497 if (pNext_size)
1498 {
Yilong Li324fa652021-12-29 17:00:42 -08001499 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001500 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001501 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001502}
1503
1504void deepcopy_VkPipelineTessellationStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001505 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001506 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001507 const VkPipelineTessellationStateCreateInfo* from,
1508 VkPipelineTessellationStateCreateInfo* to)
1509{
Yilong Li422b0582021-04-30 13:09:43 -07001510 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001511 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001512 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001513 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1514 {
1515 rootType = from->sType;
1516 }
Yilong Li04218f72021-02-19 01:31:17 -08001517 const void* from_pNext = from;
1518 size_t pNext_size = 0u;
1519 while (!pNext_size && from_pNext)
1520 {
1521 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001522 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001523 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001524 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001525 if (pNext_size)
1526 {
Yilong Li324fa652021-12-29 17:00:42 -08001527 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001528 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001529 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001530}
1531
1532void deepcopy_VkViewport(
Yilong Li422b0582021-04-30 13:09:43 -07001533 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001534 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001535 const VkViewport* from,
1536 VkViewport* to)
1537{
Yilong Li422b0582021-04-30 13:09:43 -07001538 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001539 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001540 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001541}
1542
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001543void deepcopy_VkPipelineViewportStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001544 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001545 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001546 const VkPipelineViewportStateCreateInfo* from,
1547 VkPipelineViewportStateCreateInfo* to)
1548{
Yilong Li422b0582021-04-30 13:09:43 -07001549 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001550 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001551 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001552 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1553 {
1554 rootType = from->sType;
1555 }
Yilong Li04218f72021-02-19 01:31:17 -08001556 const void* from_pNext = from;
1557 size_t pNext_size = 0u;
1558 while (!pNext_size && from_pNext)
1559 {
1560 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001561 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001562 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001563 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001564 if (pNext_size)
1565 {
Yilong Li324fa652021-12-29 17:00:42 -08001566 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001567 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001568 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001569 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001570 {
Yilong Libd10ec92021-02-10 13:24:27 -08001571 to->pViewports = nullptr;
1572 if (from->pViewports)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001573 {
Yilong Li422b0582021-04-30 13:09:43 -07001574 to->pViewports = (VkViewport*)alloc->alloc(from->viewportCount * sizeof(const VkViewport));
Yilong Libd10ec92021-02-10 13:24:27 -08001575 to->viewportCount = from->viewportCount;
1576 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
1577 {
Yilong Li422b0582021-04-30 13:09:43 -07001578 deepcopy_VkViewport(alloc, rootType, from->pViewports + i, (VkViewport*)(to->pViewports + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001579 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001580 }
1581 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001582 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001583 {
Yilong Libd10ec92021-02-10 13:24:27 -08001584 to->pScissors = nullptr;
1585 if (from->pScissors)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001586 {
Yilong Li422b0582021-04-30 13:09:43 -07001587 to->pScissors = (VkRect2D*)alloc->alloc(from->scissorCount * sizeof(const VkRect2D));
Yilong Libd10ec92021-02-10 13:24:27 -08001588 to->scissorCount = from->scissorCount;
1589 for (uint32_t i = 0; i < (uint32_t)from->scissorCount; ++i)
1590 {
Yilong Li422b0582021-04-30 13:09:43 -07001591 deepcopy_VkRect2D(alloc, rootType, from->pScissors + i, (VkRect2D*)(to->pScissors + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001592 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001593 }
1594 }
1595}
1596
1597void deepcopy_VkPipelineRasterizationStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001598 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001599 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001600 const VkPipelineRasterizationStateCreateInfo* from,
1601 VkPipelineRasterizationStateCreateInfo* to)
1602{
Yilong Li422b0582021-04-30 13:09:43 -07001603 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001604 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001605 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001606 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1607 {
1608 rootType = from->sType;
1609 }
Yilong Li04218f72021-02-19 01:31:17 -08001610 const void* from_pNext = from;
1611 size_t pNext_size = 0u;
1612 while (!pNext_size && from_pNext)
1613 {
1614 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001615 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001616 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001617 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001618 if (pNext_size)
1619 {
Yilong Li324fa652021-12-29 17:00:42 -08001620 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001621 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001622 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001623}
1624
1625void deepcopy_VkPipelineMultisampleStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001626 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001627 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001628 const VkPipelineMultisampleStateCreateInfo* from,
1629 VkPipelineMultisampleStateCreateInfo* to)
1630{
Yilong Li422b0582021-04-30 13:09:43 -07001631 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001632 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001633 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001634 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1635 {
1636 rootType = from->sType;
1637 }
Yilong Li04218f72021-02-19 01:31:17 -08001638 const void* from_pNext = from;
1639 size_t pNext_size = 0u;
1640 while (!pNext_size && from_pNext)
1641 {
1642 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001643 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001644 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001645 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001646 if (pNext_size)
1647 {
Yilong Li324fa652021-12-29 17:00:42 -08001648 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001649 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001650 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001651 to->pSampleMask = nullptr;
1652 if (from->pSampleMask)
1653 {
Yilong Li422b0582021-04-30 13:09:43 -07001654 to->pSampleMask = (VkSampleMask*)alloc->dupArray(from->pSampleMask, (((from->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001655 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001656}
1657
1658void deepcopy_VkStencilOpState(
Yilong Li422b0582021-04-30 13:09:43 -07001659 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001660 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001661 const VkStencilOpState* from,
1662 VkStencilOpState* to)
1663{
Yilong Li422b0582021-04-30 13:09:43 -07001664 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001665 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001666 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001667}
1668
1669void deepcopy_VkPipelineDepthStencilStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001670 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001671 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001672 const VkPipelineDepthStencilStateCreateInfo* from,
1673 VkPipelineDepthStencilStateCreateInfo* to)
1674{
Yilong Li422b0582021-04-30 13:09:43 -07001675 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001676 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001677 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001678 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1679 {
1680 rootType = from->sType;
1681 }
Yilong Li04218f72021-02-19 01:31:17 -08001682 const void* from_pNext = from;
1683 size_t pNext_size = 0u;
1684 while (!pNext_size && from_pNext)
1685 {
1686 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001687 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001688 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001689 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001690 if (pNext_size)
1691 {
Yilong Li324fa652021-12-29 17:00:42 -08001692 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001693 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001694 }
Yilong Li422b0582021-04-30 13:09:43 -07001695 deepcopy_VkStencilOpState(alloc, rootType, &from->front, (VkStencilOpState*)(&to->front));
1696 deepcopy_VkStencilOpState(alloc, rootType, &from->back, (VkStencilOpState*)(&to->back));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001697}
1698
1699void deepcopy_VkPipelineColorBlendAttachmentState(
Yilong Li422b0582021-04-30 13:09:43 -07001700 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001701 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001702 const VkPipelineColorBlendAttachmentState* from,
1703 VkPipelineColorBlendAttachmentState* to)
1704{
Yilong Li422b0582021-04-30 13:09:43 -07001705 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001706 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001707 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001708}
1709
1710void deepcopy_VkPipelineColorBlendStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001711 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001712 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001713 const VkPipelineColorBlendStateCreateInfo* from,
1714 VkPipelineColorBlendStateCreateInfo* to)
1715{
Yilong Li422b0582021-04-30 13:09:43 -07001716 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001717 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001718 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001719 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1720 {
1721 rootType = from->sType;
1722 }
Yilong Li04218f72021-02-19 01:31:17 -08001723 const void* from_pNext = from;
1724 size_t pNext_size = 0u;
1725 while (!pNext_size && from_pNext)
1726 {
1727 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001728 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001729 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001730 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001731 if (pNext_size)
1732 {
Yilong Li324fa652021-12-29 17:00:42 -08001733 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001734 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001735 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001736 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001737 {
Yilong Libd10ec92021-02-10 13:24:27 -08001738 to->pAttachments = nullptr;
1739 if (from->pAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001740 {
Yilong Li422b0582021-04-30 13:09:43 -07001741 to->pAttachments = (VkPipelineColorBlendAttachmentState*)alloc->alloc(from->attachmentCount * sizeof(const VkPipelineColorBlendAttachmentState));
Yilong Libd10ec92021-02-10 13:24:27 -08001742 to->attachmentCount = from->attachmentCount;
1743 for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
1744 {
Yilong Li422b0582021-04-30 13:09:43 -07001745 deepcopy_VkPipelineColorBlendAttachmentState(alloc, rootType, from->pAttachments + i, (VkPipelineColorBlendAttachmentState*)(to->pAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001746 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001747 }
1748 }
1749 memcpy(to->blendConstants, from->blendConstants, 4 * sizeof(float));
1750}
1751
1752void deepcopy_VkPipelineDynamicStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001753 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001754 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001755 const VkPipelineDynamicStateCreateInfo* from,
1756 VkPipelineDynamicStateCreateInfo* to)
1757{
Yilong Li422b0582021-04-30 13:09:43 -07001758 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001759 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001760 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001761 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1762 {
1763 rootType = from->sType;
1764 }
Yilong Li04218f72021-02-19 01:31:17 -08001765 const void* from_pNext = from;
1766 size_t pNext_size = 0u;
1767 while (!pNext_size && from_pNext)
1768 {
1769 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001770 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001771 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001772 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001773 if (pNext_size)
1774 {
Yilong Li324fa652021-12-29 17:00:42 -08001775 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001776 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001777 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001778 to->pDynamicStates = nullptr;
1779 if (from->pDynamicStates)
1780 {
Yilong Li422b0582021-04-30 13:09:43 -07001781 to->pDynamicStates = (VkDynamicState*)alloc->dupArray(from->pDynamicStates, from->dynamicStateCount * sizeof(const VkDynamicState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001782 }
1783}
1784
1785void deepcopy_VkGraphicsPipelineCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001786 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001787 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001788 const VkGraphicsPipelineCreateInfo* from,
1789 VkGraphicsPipelineCreateInfo* to)
1790{
Yilong Li422b0582021-04-30 13:09:43 -07001791 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001792 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001793 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001794 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1795 {
1796 rootType = from->sType;
1797 }
Yilong Li04218f72021-02-19 01:31:17 -08001798 const void* from_pNext = from;
1799 size_t pNext_size = 0u;
1800 while (!pNext_size && from_pNext)
1801 {
1802 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001803 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001804 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001805 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001806 if (pNext_size)
1807 {
Yilong Li324fa652021-12-29 17:00:42 -08001808 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001809 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001810 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001811 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001812 {
Yilong Libd10ec92021-02-10 13:24:27 -08001813 to->pStages = nullptr;
1814 if (from->pStages)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001815 {
Yilong Li422b0582021-04-30 13:09:43 -07001816 to->pStages = (VkPipelineShaderStageCreateInfo*)alloc->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
Yilong Libd10ec92021-02-10 13:24:27 -08001817 to->stageCount = from->stageCount;
1818 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
1819 {
Yilong Li422b0582021-04-30 13:09:43 -07001820 deepcopy_VkPipelineShaderStageCreateInfo(alloc, rootType, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001821 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001822 }
1823 }
1824 to->pVertexInputState = nullptr;
1825 if (from->pVertexInputState)
1826 {
Yilong Li422b0582021-04-30 13:09:43 -07001827 to->pVertexInputState = (VkPipelineVertexInputStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineVertexInputStateCreateInfo));
1828 deepcopy_VkPipelineVertexInputStateCreateInfo(alloc, rootType, from->pVertexInputState, (VkPipelineVertexInputStateCreateInfo*)(to->pVertexInputState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001829 }
1830 to->pInputAssemblyState = nullptr;
1831 if (from->pInputAssemblyState)
1832 {
Yilong Li422b0582021-04-30 13:09:43 -07001833 to->pInputAssemblyState = (VkPipelineInputAssemblyStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineInputAssemblyStateCreateInfo));
1834 deepcopy_VkPipelineInputAssemblyStateCreateInfo(alloc, rootType, from->pInputAssemblyState, (VkPipelineInputAssemblyStateCreateInfo*)(to->pInputAssemblyState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001835 }
1836 to->pTessellationState = nullptr;
1837 if (from->pTessellationState)
1838 {
Yilong Li422b0582021-04-30 13:09:43 -07001839 to->pTessellationState = (VkPipelineTessellationStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineTessellationStateCreateInfo));
1840 deepcopy_VkPipelineTessellationStateCreateInfo(alloc, rootType, from->pTessellationState, (VkPipelineTessellationStateCreateInfo*)(to->pTessellationState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001841 }
1842 to->pViewportState = nullptr;
1843 if (from->pViewportState)
1844 {
Yilong Li422b0582021-04-30 13:09:43 -07001845 to->pViewportState = (VkPipelineViewportStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineViewportStateCreateInfo));
1846 deepcopy_VkPipelineViewportStateCreateInfo(alloc, rootType, from->pViewportState, (VkPipelineViewportStateCreateInfo*)(to->pViewportState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001847 }
1848 to->pRasterizationState = nullptr;
1849 if (from->pRasterizationState)
1850 {
Yilong Li422b0582021-04-30 13:09:43 -07001851 to->pRasterizationState = (VkPipelineRasterizationStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineRasterizationStateCreateInfo));
1852 deepcopy_VkPipelineRasterizationStateCreateInfo(alloc, rootType, from->pRasterizationState, (VkPipelineRasterizationStateCreateInfo*)(to->pRasterizationState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001853 }
1854 to->pMultisampleState = nullptr;
1855 if (from->pMultisampleState)
1856 {
Yilong Li422b0582021-04-30 13:09:43 -07001857 to->pMultisampleState = (VkPipelineMultisampleStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineMultisampleStateCreateInfo));
1858 deepcopy_VkPipelineMultisampleStateCreateInfo(alloc, rootType, from->pMultisampleState, (VkPipelineMultisampleStateCreateInfo*)(to->pMultisampleState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001859 }
1860 to->pDepthStencilState = nullptr;
1861 if (from->pDepthStencilState)
1862 {
Yilong Li422b0582021-04-30 13:09:43 -07001863 to->pDepthStencilState = (VkPipelineDepthStencilStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineDepthStencilStateCreateInfo));
1864 deepcopy_VkPipelineDepthStencilStateCreateInfo(alloc, rootType, from->pDepthStencilState, (VkPipelineDepthStencilStateCreateInfo*)(to->pDepthStencilState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001865 }
1866 to->pColorBlendState = nullptr;
1867 if (from->pColorBlendState)
1868 {
Yilong Li422b0582021-04-30 13:09:43 -07001869 to->pColorBlendState = (VkPipelineColorBlendStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineColorBlendStateCreateInfo));
1870 deepcopy_VkPipelineColorBlendStateCreateInfo(alloc, rootType, from->pColorBlendState, (VkPipelineColorBlendStateCreateInfo*)(to->pColorBlendState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001871 }
1872 to->pDynamicState = nullptr;
1873 if (from->pDynamicState)
1874 {
Yilong Li422b0582021-04-30 13:09:43 -07001875 to->pDynamicState = (VkPipelineDynamicStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineDynamicStateCreateInfo));
1876 deepcopy_VkPipelineDynamicStateCreateInfo(alloc, rootType, from->pDynamicState, (VkPipelineDynamicStateCreateInfo*)(to->pDynamicState));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001877 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001878}
1879
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001880void deepcopy_VkPushConstantRange(
Yilong Li422b0582021-04-30 13:09:43 -07001881 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001882 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001883 const VkPushConstantRange* from,
1884 VkPushConstantRange* to)
1885{
Yilong Li422b0582021-04-30 13:09:43 -07001886 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001887 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001888 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001889}
1890
1891void deepcopy_VkPipelineLayoutCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001892 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001893 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001894 const VkPipelineLayoutCreateInfo* from,
1895 VkPipelineLayoutCreateInfo* to)
1896{
Yilong Li422b0582021-04-30 13:09:43 -07001897 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001898 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001899 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001900 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1901 {
1902 rootType = from->sType;
1903 }
Yilong Li04218f72021-02-19 01:31:17 -08001904 const void* from_pNext = from;
1905 size_t pNext_size = 0u;
1906 while (!pNext_size && from_pNext)
1907 {
1908 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001909 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001910 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001911 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001912 if (pNext_size)
1913 {
Yilong Li324fa652021-12-29 17:00:42 -08001914 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001915 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001916 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001917 to->pSetLayouts = nullptr;
1918 if (from->pSetLayouts)
1919 {
Yilong Li422b0582021-04-30 13:09:43 -07001920 to->pSetLayouts = (VkDescriptorSetLayout*)alloc->dupArray(from->pSetLayouts, from->setLayoutCount * sizeof(const VkDescriptorSetLayout));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001921 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08001922 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001923 {
Yilong Libd10ec92021-02-10 13:24:27 -08001924 to->pPushConstantRanges = nullptr;
1925 if (from->pPushConstantRanges)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001926 {
Yilong Li422b0582021-04-30 13:09:43 -07001927 to->pPushConstantRanges = (VkPushConstantRange*)alloc->alloc(from->pushConstantRangeCount * sizeof(const VkPushConstantRange));
Yilong Libd10ec92021-02-10 13:24:27 -08001928 to->pushConstantRangeCount = from->pushConstantRangeCount;
1929 for (uint32_t i = 0; i < (uint32_t)from->pushConstantRangeCount; ++i)
1930 {
Yilong Li422b0582021-04-30 13:09:43 -07001931 deepcopy_VkPushConstantRange(alloc, rootType, from->pPushConstantRanges + i, (VkPushConstantRange*)(to->pPushConstantRanges + i));
Yilong Libd10ec92021-02-10 13:24:27 -08001932 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001933 }
1934 }
1935}
1936
1937void deepcopy_VkSamplerCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001938 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001939 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001940 const VkSamplerCreateInfo* from,
1941 VkSamplerCreateInfo* to)
1942{
Yilong Li422b0582021-04-30 13:09:43 -07001943 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001944 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001945 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001946 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1947 {
1948 rootType = from->sType;
1949 }
Yilong Li04218f72021-02-19 01:31:17 -08001950 const void* from_pNext = from;
1951 size_t pNext_size = 0u;
1952 while (!pNext_size && from_pNext)
1953 {
1954 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07001955 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001956 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001957 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001958 if (pNext_size)
1959 {
Yilong Li324fa652021-12-29 17:00:42 -08001960 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001961 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001962 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001963}
1964
Yilong Lia8d45f12021-02-07 02:30:21 -08001965void deepcopy_VkCopyDescriptorSet(
Yilong Li422b0582021-04-30 13:09:43 -07001966 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001967 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08001968 const VkCopyDescriptorSet* from,
1969 VkCopyDescriptorSet* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001970{
Yilong Li422b0582021-04-30 13:09:43 -07001971 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07001972 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08001973 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07001974 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
1975 {
1976 rootType = from->sType;
1977 }
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;
Yilong Li48081632021-04-13 22:38:10 -07001983 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08001984 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001985 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08001986 if (pNext_size)
1987 {
Yilong Li324fa652021-12-29 17:00:42 -08001988 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07001989 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08001990 }
Yilong Lia8d45f12021-02-07 02:30:21 -08001991}
1992
1993void deepcopy_VkDescriptorBufferInfo(
Yilong Li422b0582021-04-30 13:09:43 -07001994 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07001995 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08001996 const VkDescriptorBufferInfo* from,
1997 VkDescriptorBufferInfo* to)
1998{
Yilong Li422b0582021-04-30 13:09:43 -07001999 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002000 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08002001 *to = *from;
2002}
2003
2004void deepcopy_VkDescriptorImageInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002005 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002006 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002007 const VkDescriptorImageInfo* from,
2008 VkDescriptorImageInfo* to)
2009{
Yilong Li422b0582021-04-30 13:09:43 -07002010 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002011 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08002012 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002013}
2014
2015void deepcopy_VkDescriptorPoolSize(
Yilong Li422b0582021-04-30 13:09:43 -07002016 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002017 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002018 const VkDescriptorPoolSize* from,
2019 VkDescriptorPoolSize* to)
2020{
Yilong Li422b0582021-04-30 13:09:43 -07002021 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002022 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002023 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002024}
2025
2026void deepcopy_VkDescriptorPoolCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002027 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002028 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002029 const VkDescriptorPoolCreateInfo* from,
2030 VkDescriptorPoolCreateInfo* to)
2031{
Yilong Li422b0582021-04-30 13:09:43 -07002032 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002033 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002034 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002035 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2036 {
2037 rootType = from->sType;
2038 }
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;
Yilong Li48081632021-04-13 22:38:10 -07002044 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002045 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002046 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002047 if (pNext_size)
2048 {
Yilong Li324fa652021-12-29 17:00:42 -08002049 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002050 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002051 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002052 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002053 {
Yilong Libd10ec92021-02-10 13:24:27 -08002054 to->pPoolSizes = nullptr;
2055 if (from->pPoolSizes)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002056 {
Yilong Li422b0582021-04-30 13:09:43 -07002057 to->pPoolSizes = (VkDescriptorPoolSize*)alloc->alloc(from->poolSizeCount * sizeof(const VkDescriptorPoolSize));
Yilong Libd10ec92021-02-10 13:24:27 -08002058 to->poolSizeCount = from->poolSizeCount;
2059 for (uint32_t i = 0; i < (uint32_t)from->poolSizeCount; ++i)
2060 {
Yilong Li422b0582021-04-30 13:09:43 -07002061 deepcopy_VkDescriptorPoolSize(alloc, rootType, from->pPoolSizes + i, (VkDescriptorPoolSize*)(to->pPoolSizes + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002062 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002063 }
2064 }
2065}
2066
2067void deepcopy_VkDescriptorSetAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002068 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002069 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002070 const VkDescriptorSetAllocateInfo* from,
2071 VkDescriptorSetAllocateInfo* to)
2072{
Yilong Li422b0582021-04-30 13:09:43 -07002073 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002074 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002075 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002076 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2077 {
2078 rootType = from->sType;
2079 }
Yilong Li04218f72021-02-19 01:31:17 -08002080 const void* from_pNext = from;
2081 size_t pNext_size = 0u;
2082 while (!pNext_size && from_pNext)
2083 {
2084 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002085 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002086 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002087 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002088 if (pNext_size)
2089 {
Yilong Li324fa652021-12-29 17:00:42 -08002090 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002091 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002092 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002093 to->pSetLayouts = nullptr;
2094 if (from->pSetLayouts)
2095 {
Yilong Li422b0582021-04-30 13:09:43 -07002096 to->pSetLayouts = (VkDescriptorSetLayout*)alloc->dupArray(from->pSetLayouts, from->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002097 }
2098}
2099
Yilong Lia8d45f12021-02-07 02:30:21 -08002100void deepcopy_VkDescriptorSetLayoutBinding(
Yilong Li422b0582021-04-30 13:09:43 -07002101 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002102 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002103 const VkDescriptorSetLayoutBinding* from,
2104 VkDescriptorSetLayoutBinding* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002105{
Yilong Li422b0582021-04-30 13:09:43 -07002106 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002107 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002108 *to = *from;
Yilong Lia8d45f12021-02-07 02:30:21 -08002109 to->pImmutableSamplers = nullptr;
2110 if (from->pImmutableSamplers)
2111 {
Yilong Li422b0582021-04-30 13:09:43 -07002112 to->pImmutableSamplers = (VkSampler*)alloc->dupArray(from->pImmutableSamplers, from->descriptorCount * sizeof(const VkSampler));
Yilong Lia8d45f12021-02-07 02:30:21 -08002113 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002114}
2115
Yilong Lia8d45f12021-02-07 02:30:21 -08002116void deepcopy_VkDescriptorSetLayoutCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002117 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002118 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002119 const VkDescriptorSetLayoutCreateInfo* from,
2120 VkDescriptorSetLayoutCreateInfo* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002121{
Yilong Li422b0582021-04-30 13:09:43 -07002122 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002123 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002124 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002125 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2126 {
2127 rootType = from->sType;
2128 }
Yilong Li04218f72021-02-19 01:31:17 -08002129 const void* from_pNext = from;
2130 size_t pNext_size = 0u;
2131 while (!pNext_size && from_pNext)
2132 {
2133 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002134 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002135 }
Yilong Lia8d45f12021-02-07 02:30:21 -08002136 to->pNext = nullptr;
2137 if (pNext_size)
2138 {
Yilong Li324fa652021-12-29 17:00:42 -08002139 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002140 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08002141 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002142 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08002143 {
Yilong Libd10ec92021-02-10 13:24:27 -08002144 to->pBindings = nullptr;
2145 if (from->pBindings)
Yilong Lia8d45f12021-02-07 02:30:21 -08002146 {
Yilong Li422b0582021-04-30 13:09:43 -07002147 to->pBindings = (VkDescriptorSetLayoutBinding*)alloc->alloc(from->bindingCount * sizeof(const VkDescriptorSetLayoutBinding));
Yilong Libd10ec92021-02-10 13:24:27 -08002148 to->bindingCount = from->bindingCount;
2149 for (uint32_t i = 0; i < (uint32_t)from->bindingCount; ++i)
2150 {
Yilong Li422b0582021-04-30 13:09:43 -07002151 deepcopy_VkDescriptorSetLayoutBinding(alloc, rootType, from->pBindings + i, (VkDescriptorSetLayoutBinding*)(to->pBindings + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002152 }
Yilong Lia8d45f12021-02-07 02:30:21 -08002153 }
2154 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002155}
2156
2157void deepcopy_VkWriteDescriptorSet(
Yilong Li422b0582021-04-30 13:09:43 -07002158 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002159 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002160 const VkWriteDescriptorSet* from,
2161 VkWriteDescriptorSet* to)
2162{
Yilong Li422b0582021-04-30 13:09:43 -07002163 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002164 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002165 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002166 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2167 {
2168 rootType = from->sType;
2169 }
Yilong Li04218f72021-02-19 01:31:17 -08002170 const void* from_pNext = from;
2171 size_t pNext_size = 0u;
2172 while (!pNext_size && from_pNext)
2173 {
2174 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002175 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002176 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002177 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002178 if (pNext_size)
2179 {
Yilong Li324fa652021-12-29 17:00:42 -08002180 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002181 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002182 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002183 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002184 {
Yilong Libd10ec92021-02-10 13:24:27 -08002185 to->pImageInfo = nullptr;
2186 if (from->pImageInfo)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002187 {
Yilong Li422b0582021-04-30 13:09:43 -07002188 to->pImageInfo = (VkDescriptorImageInfo*)alloc->alloc(from->descriptorCount * sizeof(const VkDescriptorImageInfo));
Yilong Libd10ec92021-02-10 13:24:27 -08002189 to->descriptorCount = from->descriptorCount;
2190 for (uint32_t i = 0; i < (uint32_t)from->descriptorCount; ++i)
2191 {
Yilong Li422b0582021-04-30 13:09:43 -07002192 deepcopy_VkDescriptorImageInfo(alloc, rootType, from->pImageInfo + i, (VkDescriptorImageInfo*)(to->pImageInfo + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002193 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002194 }
2195 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002196 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002197 {
Yilong Libd10ec92021-02-10 13:24:27 -08002198 to->pBufferInfo = nullptr;
2199 if (from->pBufferInfo)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002200 {
Yilong Li422b0582021-04-30 13:09:43 -07002201 to->pBufferInfo = (VkDescriptorBufferInfo*)alloc->alloc(from->descriptorCount * sizeof(const VkDescriptorBufferInfo));
Yilong Libd10ec92021-02-10 13:24:27 -08002202 to->descriptorCount = from->descriptorCount;
2203 for (uint32_t i = 0; i < (uint32_t)from->descriptorCount; ++i)
2204 {
Yilong Li422b0582021-04-30 13:09:43 -07002205 deepcopy_VkDescriptorBufferInfo(alloc, rootType, from->pBufferInfo + i, (VkDescriptorBufferInfo*)(to->pBufferInfo + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002206 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002207 }
2208 }
2209 to->pTexelBufferView = nullptr;
2210 if (from->pTexelBufferView)
2211 {
Yilong Li422b0582021-04-30 13:09:43 -07002212 to->pTexelBufferView = (VkBufferView*)alloc->dupArray(from->pTexelBufferView, from->descriptorCount * sizeof(const VkBufferView));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002213 }
2214}
2215
Yilong Lia8d45f12021-02-07 02:30:21 -08002216void deepcopy_VkAttachmentDescription(
Yilong Li422b0582021-04-30 13:09:43 -07002217 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002218 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002219 const VkAttachmentDescription* from,
2220 VkAttachmentDescription* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002221{
Yilong Li422b0582021-04-30 13:09:43 -07002222 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002223 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002224 *to = *from;
Yilong Lia8d45f12021-02-07 02:30:21 -08002225}
2226
2227void deepcopy_VkAttachmentReference(
Yilong Li422b0582021-04-30 13:09:43 -07002228 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002229 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002230 const VkAttachmentReference* from,
2231 VkAttachmentReference* to)
2232{
Yilong Li422b0582021-04-30 13:09:43 -07002233 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002234 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08002235 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002236}
2237
2238void deepcopy_VkFramebufferCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002239 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002240 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002241 const VkFramebufferCreateInfo* from,
2242 VkFramebufferCreateInfo* to)
2243{
Yilong Li422b0582021-04-30 13:09:43 -07002244 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002245 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002246 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002247 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2248 {
2249 rootType = from->sType;
2250 }
Yilong Li04218f72021-02-19 01:31:17 -08002251 const void* from_pNext = from;
2252 size_t pNext_size = 0u;
2253 while (!pNext_size && from_pNext)
2254 {
2255 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002256 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002257 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002258 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002259 if (pNext_size)
2260 {
Yilong Li324fa652021-12-29 17:00:42 -08002261 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002262 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002263 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002264 to->pAttachments = nullptr;
2265 if (from->pAttachments)
2266 {
Yilong Li422b0582021-04-30 13:09:43 -07002267 to->pAttachments = (VkImageView*)alloc->dupArray(from->pAttachments, from->attachmentCount * sizeof(const VkImageView));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002268 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002269}
2270
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002271void deepcopy_VkSubpassDescription(
Yilong Li422b0582021-04-30 13:09:43 -07002272 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002273 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002274 const VkSubpassDescription* from,
2275 VkSubpassDescription* to)
2276{
Yilong Li422b0582021-04-30 13:09:43 -07002277 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002278 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002279 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08002280 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002281 {
Yilong Libd10ec92021-02-10 13:24:27 -08002282 to->pInputAttachments = nullptr;
2283 if (from->pInputAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002284 {
Yilong Li422b0582021-04-30 13:09:43 -07002285 to->pInputAttachments = (VkAttachmentReference*)alloc->alloc(from->inputAttachmentCount * sizeof(const VkAttachmentReference));
Yilong Libd10ec92021-02-10 13:24:27 -08002286 to->inputAttachmentCount = from->inputAttachmentCount;
2287 for (uint32_t i = 0; i < (uint32_t)from->inputAttachmentCount; ++i)
2288 {
Yilong Li422b0582021-04-30 13:09:43 -07002289 deepcopy_VkAttachmentReference(alloc, rootType, from->pInputAttachments + i, (VkAttachmentReference*)(to->pInputAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002290 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002291 }
2292 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002293 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002294 {
Yilong Libd10ec92021-02-10 13:24:27 -08002295 to->pColorAttachments = nullptr;
2296 if (from->pColorAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002297 {
Yilong Li422b0582021-04-30 13:09:43 -07002298 to->pColorAttachments = (VkAttachmentReference*)alloc->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference));
Yilong Libd10ec92021-02-10 13:24:27 -08002299 to->colorAttachmentCount = from->colorAttachmentCount;
2300 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
2301 {
Yilong Li422b0582021-04-30 13:09:43 -07002302 deepcopy_VkAttachmentReference(alloc, rootType, from->pColorAttachments + i, (VkAttachmentReference*)(to->pColorAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002303 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002304 }
2305 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002306 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002307 {
Yilong Libd10ec92021-02-10 13:24:27 -08002308 to->pResolveAttachments = nullptr;
2309 if (from->pResolveAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002310 {
Yilong Li422b0582021-04-30 13:09:43 -07002311 to->pResolveAttachments = (VkAttachmentReference*)alloc->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference));
Yilong Libd10ec92021-02-10 13:24:27 -08002312 to->colorAttachmentCount = from->colorAttachmentCount;
2313 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
2314 {
Yilong Li422b0582021-04-30 13:09:43 -07002315 deepcopy_VkAttachmentReference(alloc, rootType, from->pResolveAttachments + i, (VkAttachmentReference*)(to->pResolveAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002316 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002317 }
2318 }
2319 to->pDepthStencilAttachment = nullptr;
2320 if (from->pDepthStencilAttachment)
2321 {
Yilong Li422b0582021-04-30 13:09:43 -07002322 to->pDepthStencilAttachment = (VkAttachmentReference*)alloc->alloc(sizeof(const VkAttachmentReference));
2323 deepcopy_VkAttachmentReference(alloc, rootType, from->pDepthStencilAttachment, (VkAttachmentReference*)(to->pDepthStencilAttachment));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002324 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002325 to->pPreserveAttachments = nullptr;
2326 if (from->pPreserveAttachments)
2327 {
Yilong Li422b0582021-04-30 13:09:43 -07002328 to->pPreserveAttachments = (uint32_t*)alloc->dupArray(from->pPreserveAttachments, from->preserveAttachmentCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002329 }
2330}
2331
2332void deepcopy_VkSubpassDependency(
Yilong Li422b0582021-04-30 13:09:43 -07002333 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002334 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002335 const VkSubpassDependency* from,
2336 VkSubpassDependency* to)
2337{
Yilong Li422b0582021-04-30 13:09:43 -07002338 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002339 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002340 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002341}
2342
2343void deepcopy_VkRenderPassCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002344 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002345 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002346 const VkRenderPassCreateInfo* from,
2347 VkRenderPassCreateInfo* to)
2348{
Yilong Li422b0582021-04-30 13:09:43 -07002349 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002350 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002351 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002352 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2353 {
2354 rootType = from->sType;
2355 }
Yilong Li04218f72021-02-19 01:31:17 -08002356 const void* from_pNext = from;
2357 size_t pNext_size = 0u;
2358 while (!pNext_size && from_pNext)
2359 {
2360 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002361 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002362 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002363 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002364 if (pNext_size)
2365 {
Yilong Li324fa652021-12-29 17:00:42 -08002366 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002367 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002368 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002369 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002370 {
Yilong Libd10ec92021-02-10 13:24:27 -08002371 to->pAttachments = nullptr;
2372 if (from->pAttachments)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002373 {
Yilong Li422b0582021-04-30 13:09:43 -07002374 to->pAttachments = (VkAttachmentDescription*)alloc->alloc(from->attachmentCount * sizeof(const VkAttachmentDescription));
Yilong Libd10ec92021-02-10 13:24:27 -08002375 to->attachmentCount = from->attachmentCount;
2376 for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
2377 {
Yilong Li422b0582021-04-30 13:09:43 -07002378 deepcopy_VkAttachmentDescription(alloc, rootType, from->pAttachments + i, (VkAttachmentDescription*)(to->pAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002379 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002380 }
2381 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002382 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002383 {
Yilong Libd10ec92021-02-10 13:24:27 -08002384 to->pSubpasses = nullptr;
2385 if (from->pSubpasses)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002386 {
Yilong Li422b0582021-04-30 13:09:43 -07002387 to->pSubpasses = (VkSubpassDescription*)alloc->alloc(from->subpassCount * sizeof(const VkSubpassDescription));
Yilong Libd10ec92021-02-10 13:24:27 -08002388 to->subpassCount = from->subpassCount;
2389 for (uint32_t i = 0; i < (uint32_t)from->subpassCount; ++i)
2390 {
Yilong Li422b0582021-04-30 13:09:43 -07002391 deepcopy_VkSubpassDescription(alloc, rootType, from->pSubpasses + i, (VkSubpassDescription*)(to->pSubpasses + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002392 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002393 }
2394 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002395 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002396 {
Yilong Libd10ec92021-02-10 13:24:27 -08002397 to->pDependencies = nullptr;
2398 if (from->pDependencies)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002399 {
Yilong Li422b0582021-04-30 13:09:43 -07002400 to->pDependencies = (VkSubpassDependency*)alloc->alloc(from->dependencyCount * sizeof(const VkSubpassDependency));
Yilong Libd10ec92021-02-10 13:24:27 -08002401 to->dependencyCount = from->dependencyCount;
2402 for (uint32_t i = 0; i < (uint32_t)from->dependencyCount; ++i)
2403 {
Yilong Li422b0582021-04-30 13:09:43 -07002404 deepcopy_VkSubpassDependency(alloc, rootType, from->pDependencies + i, (VkSubpassDependency*)(to->pDependencies + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002405 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002406 }
2407 }
2408}
2409
2410void deepcopy_VkCommandPoolCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002411 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002412 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002413 const VkCommandPoolCreateInfo* from,
2414 VkCommandPoolCreateInfo* to)
2415{
Yilong Li422b0582021-04-30 13:09:43 -07002416 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002417 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002418 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002419 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2420 {
2421 rootType = from->sType;
2422 }
Yilong Li04218f72021-02-19 01:31:17 -08002423 const void* from_pNext = from;
2424 size_t pNext_size = 0u;
2425 while (!pNext_size && from_pNext)
2426 {
2427 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002428 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002429 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002430 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002431 if (pNext_size)
2432 {
Yilong Li324fa652021-12-29 17:00:42 -08002433 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002434 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002435 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002436}
2437
2438void deepcopy_VkCommandBufferAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002439 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002440 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002441 const VkCommandBufferAllocateInfo* from,
2442 VkCommandBufferAllocateInfo* to)
2443{
Yilong Li422b0582021-04-30 13:09:43 -07002444 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002445 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002446 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002447 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2448 {
2449 rootType = from->sType;
2450 }
Yilong Li04218f72021-02-19 01:31:17 -08002451 const void* from_pNext = from;
2452 size_t pNext_size = 0u;
2453 while (!pNext_size && from_pNext)
2454 {
2455 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002456 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002457 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002458 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002459 if (pNext_size)
2460 {
Yilong Li324fa652021-12-29 17:00:42 -08002461 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002462 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002463 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002464}
2465
2466void deepcopy_VkCommandBufferInheritanceInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002467 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002468 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002469 const VkCommandBufferInheritanceInfo* from,
2470 VkCommandBufferInheritanceInfo* to)
2471{
Yilong Li422b0582021-04-30 13:09:43 -07002472 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002473 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002474 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002475 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2476 {
2477 rootType = from->sType;
2478 }
Yilong Li04218f72021-02-19 01:31:17 -08002479 const void* from_pNext = from;
2480 size_t pNext_size = 0u;
2481 while (!pNext_size && from_pNext)
2482 {
2483 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002484 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002485 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002486 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002487 if (pNext_size)
2488 {
Yilong Li324fa652021-12-29 17:00:42 -08002489 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002490 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002491 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002492}
2493
2494void deepcopy_VkCommandBufferBeginInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002495 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002496 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002497 const VkCommandBufferBeginInfo* from,
2498 VkCommandBufferBeginInfo* to)
2499{
Yilong Li422b0582021-04-30 13:09:43 -07002500 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002501 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002502 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002503 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2504 {
2505 rootType = from->sType;
2506 }
Yilong Li04218f72021-02-19 01:31:17 -08002507 const void* from_pNext = from;
2508 size_t pNext_size = 0u;
2509 while (!pNext_size && from_pNext)
2510 {
2511 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002512 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002513 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002514 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002515 if (pNext_size)
2516 {
Yilong Li324fa652021-12-29 17:00:42 -08002517 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002518 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002519 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002520 to->pInheritanceInfo = nullptr;
2521 if (from->pInheritanceInfo)
2522 {
Yilong Li422b0582021-04-30 13:09:43 -07002523 to->pInheritanceInfo = (VkCommandBufferInheritanceInfo*)alloc->alloc(sizeof(const VkCommandBufferInheritanceInfo));
2524 deepcopy_VkCommandBufferInheritanceInfo(alloc, rootType, from->pInheritanceInfo, (VkCommandBufferInheritanceInfo*)(to->pInheritanceInfo));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002525 }
2526}
2527
2528void deepcopy_VkBufferCopy(
Yilong Li422b0582021-04-30 13:09:43 -07002529 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002530 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002531 const VkBufferCopy* from,
2532 VkBufferCopy* to)
2533{
Yilong Li422b0582021-04-30 13:09:43 -07002534 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002535 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002536 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002537}
2538
2539void deepcopy_VkImageSubresourceLayers(
Yilong Li422b0582021-04-30 13:09:43 -07002540 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002541 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002542 const VkImageSubresourceLayers* from,
2543 VkImageSubresourceLayers* to)
2544{
Yilong Li422b0582021-04-30 13:09:43 -07002545 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002546 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002547 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002548}
2549
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002550void deepcopy_VkBufferImageCopy(
Yilong Li422b0582021-04-30 13:09:43 -07002551 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002552 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002553 const VkBufferImageCopy* from,
2554 VkBufferImageCopy* to)
2555{
Yilong Li422b0582021-04-30 13:09:43 -07002556 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002557 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002558 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002559 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->imageSubresource, (VkImageSubresourceLayers*)(&to->imageSubresource));
2560 deepcopy_VkOffset3D(alloc, rootType, &from->imageOffset, (VkOffset3D*)(&to->imageOffset));
2561 deepcopy_VkExtent3D(alloc, rootType, &from->imageExtent, (VkExtent3D*)(&to->imageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002562}
2563
2564void deepcopy_VkClearColorValue(
Yilong Li422b0582021-04-30 13:09:43 -07002565 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002566 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002567 const VkClearColorValue* from,
2568 VkClearColorValue* to)
2569{
Yilong Li422b0582021-04-30 13:09:43 -07002570 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002571 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002572 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002573 memcpy(to->float32, from->float32, 4 * sizeof(float));
2574 memcpy(to->int32, from->int32, 4 * sizeof(int32_t));
2575 memcpy(to->uint32, from->uint32, 4 * sizeof(uint32_t));
2576}
2577
2578void deepcopy_VkClearDepthStencilValue(
Yilong Li422b0582021-04-30 13:09:43 -07002579 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002580 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002581 const VkClearDepthStencilValue* from,
2582 VkClearDepthStencilValue* to)
2583{
Yilong Li422b0582021-04-30 13:09:43 -07002584 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002585 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002586 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002587}
2588
2589void deepcopy_VkClearValue(
Yilong Li422b0582021-04-30 13:09:43 -07002590 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002591 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002592 const VkClearValue* from,
2593 VkClearValue* to)
2594{
Yilong Li422b0582021-04-30 13:09:43 -07002595 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002596 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002597 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002598 deepcopy_VkClearColorValue(alloc, rootType, &from->color, (VkClearColorValue*)(&to->color));
2599 deepcopy_VkClearDepthStencilValue(alloc, rootType, &from->depthStencil, (VkClearDepthStencilValue*)(&to->depthStencil));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002600}
2601
2602void deepcopy_VkClearAttachment(
Yilong Li422b0582021-04-30 13:09:43 -07002603 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002604 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002605 const VkClearAttachment* from,
2606 VkClearAttachment* to)
2607{
Yilong Li422b0582021-04-30 13:09:43 -07002608 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002609 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002610 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002611 deepcopy_VkClearValue(alloc, rootType, &from->clearValue, (VkClearValue*)(&to->clearValue));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002612}
2613
2614void deepcopy_VkClearRect(
Yilong Li422b0582021-04-30 13:09:43 -07002615 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002616 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002617 const VkClearRect* from,
2618 VkClearRect* to)
2619{
Yilong Li422b0582021-04-30 13:09:43 -07002620 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002621 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002622 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002623 deepcopy_VkRect2D(alloc, rootType, &from->rect, (VkRect2D*)(&to->rect));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002624}
2625
Yilong Lia8d45f12021-02-07 02:30:21 -08002626void deepcopy_VkImageBlit(
Yilong Li422b0582021-04-30 13:09:43 -07002627 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002628 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002629 const VkImageBlit* from,
2630 VkImageBlit* to)
2631{
Yilong Li422b0582021-04-30 13:09:43 -07002632 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002633 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08002634 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002635 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
Yilong Lia8d45f12021-02-07 02:30:21 -08002636 for (uint32_t i = 0; i < (uint32_t)2; ++i)
2637 {
Yilong Li422b0582021-04-30 13:09:43 -07002638 deepcopy_VkOffset3D(alloc, rootType, from->srcOffsets + i, (VkOffset3D*)(to->srcOffsets + i));
Yilong Lia8d45f12021-02-07 02:30:21 -08002639 }
Yilong Li422b0582021-04-30 13:09:43 -07002640 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
Yilong Lia8d45f12021-02-07 02:30:21 -08002641 for (uint32_t i = 0; i < (uint32_t)2; ++i)
2642 {
Yilong Li422b0582021-04-30 13:09:43 -07002643 deepcopy_VkOffset3D(alloc, rootType, from->dstOffsets + i, (VkOffset3D*)(to->dstOffsets + i));
Yilong Lia8d45f12021-02-07 02:30:21 -08002644 }
2645}
2646
2647void deepcopy_VkImageCopy(
Yilong Li422b0582021-04-30 13:09:43 -07002648 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002649 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08002650 const VkImageCopy* from,
2651 VkImageCopy* to)
2652{
Yilong Li422b0582021-04-30 13:09:43 -07002653 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002654 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08002655 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002656 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
2657 deepcopy_VkOffset3D(alloc, rootType, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
2658 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
2659 deepcopy_VkOffset3D(alloc, rootType, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
2660 deepcopy_VkExtent3D(alloc, rootType, &from->extent, (VkExtent3D*)(&to->extent));
Yilong Lia8d45f12021-02-07 02:30:21 -08002661}
2662
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002663void deepcopy_VkImageResolve(
Yilong Li422b0582021-04-30 13:09:43 -07002664 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002665 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002666 const VkImageResolve* from,
2667 VkImageResolve* to)
2668{
Yilong Li422b0582021-04-30 13:09:43 -07002669 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002670 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002671 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07002672 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
2673 deepcopy_VkOffset3D(alloc, rootType, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
2674 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
2675 deepcopy_VkOffset3D(alloc, rootType, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
2676 deepcopy_VkExtent3D(alloc, rootType, &from->extent, (VkExtent3D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002677}
2678
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002679void deepcopy_VkRenderPassBeginInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002680 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002681 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002682 const VkRenderPassBeginInfo* from,
2683 VkRenderPassBeginInfo* to)
2684{
Yilong Li422b0582021-04-30 13:09:43 -07002685 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002686 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002687 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002688 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2689 {
2690 rootType = from->sType;
2691 }
Yilong Li04218f72021-02-19 01:31:17 -08002692 const void* from_pNext = from;
2693 size_t pNext_size = 0u;
2694 while (!pNext_size && from_pNext)
2695 {
2696 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002697 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002698 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002699 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002700 if (pNext_size)
2701 {
Yilong Li324fa652021-12-29 17:00:42 -08002702 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002703 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002704 }
Yilong Li422b0582021-04-30 13:09:43 -07002705 deepcopy_VkRect2D(alloc, rootType, &from->renderArea, (VkRect2D*)(&to->renderArea));
Lingfeng Yang55676e02021-02-08 08:39:45 -08002706 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002707 {
Yilong Libd10ec92021-02-10 13:24:27 -08002708 to->pClearValues = nullptr;
2709 if (from->pClearValues)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002710 {
Yilong Li422b0582021-04-30 13:09:43 -07002711 to->pClearValues = (VkClearValue*)alloc->alloc(from->clearValueCount * sizeof(const VkClearValue));
Yilong Libd10ec92021-02-10 13:24:27 -08002712 to->clearValueCount = from->clearValueCount;
2713 for (uint32_t i = 0; i < (uint32_t)from->clearValueCount; ++i)
2714 {
Yilong Li422b0582021-04-30 13:09:43 -07002715 deepcopy_VkClearValue(alloc, rootType, from->pClearValues + i, (VkClearValue*)(to->pClearValues + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002716 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002717 }
2718 }
2719}
2720
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002721#endif
2722#ifdef VK_VERSION_1_1
2723void deepcopy_VkPhysicalDeviceSubgroupProperties(
Yilong Li422b0582021-04-30 13:09:43 -07002724 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002725 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002726 const VkPhysicalDeviceSubgroupProperties* from,
2727 VkPhysicalDeviceSubgroupProperties* to)
2728{
Yilong Li422b0582021-04-30 13:09:43 -07002729 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002730 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002731 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002732 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2733 {
2734 rootType = from->sType;
2735 }
Yilong Li04218f72021-02-19 01:31:17 -08002736 const void* from_pNext = from;
2737 size_t pNext_size = 0u;
2738 while (!pNext_size && from_pNext)
2739 {
2740 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002741 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002742 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002743 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002744 if (pNext_size)
2745 {
Yilong Li422b0582021-04-30 13:09:43 -07002746 to->pNext = (void*)alloc->alloc(pNext_size);
2747 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002748 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002749}
2750
2751void deepcopy_VkBindBufferMemoryInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002752 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002753 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002754 const VkBindBufferMemoryInfo* from,
2755 VkBindBufferMemoryInfo* to)
2756{
Yilong Li422b0582021-04-30 13:09:43 -07002757 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002758 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002759 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002760 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2761 {
2762 rootType = from->sType;
2763 }
Yilong Li04218f72021-02-19 01:31:17 -08002764 const void* from_pNext = from;
2765 size_t pNext_size = 0u;
2766 while (!pNext_size && from_pNext)
2767 {
2768 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002769 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002770 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002771 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002772 if (pNext_size)
2773 {
Yilong Li324fa652021-12-29 17:00:42 -08002774 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002775 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002776 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002777}
2778
2779void deepcopy_VkBindImageMemoryInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002780 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002781 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002782 const VkBindImageMemoryInfo* from,
2783 VkBindImageMemoryInfo* to)
2784{
Yilong Li422b0582021-04-30 13:09:43 -07002785 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002786 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002787 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002788 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2789 {
2790 rootType = from->sType;
2791 }
Yilong Li04218f72021-02-19 01:31:17 -08002792 const void* from_pNext = from;
2793 size_t pNext_size = 0u;
2794 while (!pNext_size && from_pNext)
2795 {
2796 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002797 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002798 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002799 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002800 if (pNext_size)
2801 {
Yilong Li324fa652021-12-29 17:00:42 -08002802 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002803 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002804 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002805}
2806
2807void deepcopy_VkPhysicalDevice16BitStorageFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07002808 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002809 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002810 const VkPhysicalDevice16BitStorageFeatures* from,
2811 VkPhysicalDevice16BitStorageFeatures* to)
2812{
Yilong Li422b0582021-04-30 13:09:43 -07002813 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002814 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002815 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002816 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2817 {
2818 rootType = from->sType;
2819 }
Yilong Li04218f72021-02-19 01:31:17 -08002820 const void* from_pNext = from;
2821 size_t pNext_size = 0u;
2822 while (!pNext_size && from_pNext)
2823 {
2824 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002825 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002826 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002827 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002828 if (pNext_size)
2829 {
Yilong Li422b0582021-04-30 13:09:43 -07002830 to->pNext = (void*)alloc->alloc(pNext_size);
2831 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002832 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002833}
2834
2835void deepcopy_VkMemoryDedicatedRequirements(
Yilong Li422b0582021-04-30 13:09:43 -07002836 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002837 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002838 const VkMemoryDedicatedRequirements* from,
2839 VkMemoryDedicatedRequirements* to)
2840{
Yilong Li422b0582021-04-30 13:09:43 -07002841 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002842 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002843 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002844 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2845 {
2846 rootType = from->sType;
2847 }
Yilong Li04218f72021-02-19 01:31:17 -08002848 const void* from_pNext = from;
2849 size_t pNext_size = 0u;
2850 while (!pNext_size && from_pNext)
2851 {
2852 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002853 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002854 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002855 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002856 if (pNext_size)
2857 {
Yilong Li422b0582021-04-30 13:09:43 -07002858 to->pNext = (void*)alloc->alloc(pNext_size);
2859 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002860 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002861}
2862
2863void deepcopy_VkMemoryDedicatedAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002864 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002865 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002866 const VkMemoryDedicatedAllocateInfo* from,
2867 VkMemoryDedicatedAllocateInfo* to)
2868{
Yilong Li422b0582021-04-30 13:09:43 -07002869 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002870 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002871 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002872 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2873 {
2874 rootType = from->sType;
2875 }
Yilong Li04218f72021-02-19 01:31:17 -08002876 const void* from_pNext = from;
2877 size_t pNext_size = 0u;
2878 while (!pNext_size && from_pNext)
2879 {
2880 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002881 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002882 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002883 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002884 if (pNext_size)
2885 {
Yilong Li324fa652021-12-29 17:00:42 -08002886 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002887 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002888 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002889}
2890
2891void deepcopy_VkMemoryAllocateFlagsInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002892 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002893 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002894 const VkMemoryAllocateFlagsInfo* from,
2895 VkMemoryAllocateFlagsInfo* to)
2896{
Yilong Li422b0582021-04-30 13:09:43 -07002897 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002898 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002899 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002900 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2901 {
2902 rootType = from->sType;
2903 }
Yilong Li04218f72021-02-19 01:31:17 -08002904 const void* from_pNext = from;
2905 size_t pNext_size = 0u;
2906 while (!pNext_size && from_pNext)
2907 {
2908 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002909 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002910 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002911 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002912 if (pNext_size)
2913 {
Yilong Li324fa652021-12-29 17:00:42 -08002914 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002915 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002916 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002917}
2918
2919void deepcopy_VkDeviceGroupRenderPassBeginInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002920 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002921 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002922 const VkDeviceGroupRenderPassBeginInfo* from,
2923 VkDeviceGroupRenderPassBeginInfo* to)
2924{
Yilong Li422b0582021-04-30 13:09:43 -07002925 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002926 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002927 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002928 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2929 {
2930 rootType = from->sType;
2931 }
Yilong Li04218f72021-02-19 01:31:17 -08002932 const void* from_pNext = from;
2933 size_t pNext_size = 0u;
2934 while (!pNext_size && from_pNext)
2935 {
2936 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002937 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002938 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002939 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002940 if (pNext_size)
2941 {
Yilong Li324fa652021-12-29 17:00:42 -08002942 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002943 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002944 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08002945 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002946 {
Yilong Libd10ec92021-02-10 13:24:27 -08002947 to->pDeviceRenderAreas = nullptr;
2948 if (from->pDeviceRenderAreas)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002949 {
Yilong Li422b0582021-04-30 13:09:43 -07002950 to->pDeviceRenderAreas = (VkRect2D*)alloc->alloc(from->deviceRenderAreaCount * sizeof(const VkRect2D));
Yilong Libd10ec92021-02-10 13:24:27 -08002951 to->deviceRenderAreaCount = from->deviceRenderAreaCount;
2952 for (uint32_t i = 0; i < (uint32_t)from->deviceRenderAreaCount; ++i)
2953 {
Yilong Li422b0582021-04-30 13:09:43 -07002954 deepcopy_VkRect2D(alloc, rootType, from->pDeviceRenderAreas + i, (VkRect2D*)(to->pDeviceRenderAreas + i));
Yilong Libd10ec92021-02-10 13:24:27 -08002955 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002956 }
2957 }
2958}
2959
2960void deepcopy_VkDeviceGroupCommandBufferBeginInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002961 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002962 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002963 const VkDeviceGroupCommandBufferBeginInfo* from,
2964 VkDeviceGroupCommandBufferBeginInfo* to)
2965{
Yilong Li422b0582021-04-30 13:09:43 -07002966 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002967 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002968 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002969 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2970 {
2971 rootType = from->sType;
2972 }
Yilong Li04218f72021-02-19 01:31:17 -08002973 const void* from_pNext = from;
2974 size_t pNext_size = 0u;
2975 while (!pNext_size && from_pNext)
2976 {
2977 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07002978 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08002979 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002980 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08002981 if (pNext_size)
2982 {
Yilong Li324fa652021-12-29 17:00:42 -08002983 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07002984 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08002985 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002986}
2987
2988void deepcopy_VkDeviceGroupSubmitInfo(
Yilong Li422b0582021-04-30 13:09:43 -07002989 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07002990 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002991 const VkDeviceGroupSubmitInfo* from,
2992 VkDeviceGroupSubmitInfo* to)
2993{
Yilong Li422b0582021-04-30 13:09:43 -07002994 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07002995 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08002996 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07002997 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
2998 {
2999 rootType = from->sType;
3000 }
Yilong Li04218f72021-02-19 01:31:17 -08003001 const void* from_pNext = from;
3002 size_t pNext_size = 0u;
3003 while (!pNext_size && from_pNext)
3004 {
3005 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003006 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003007 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003008 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003009 if (pNext_size)
3010 {
Yilong Li324fa652021-12-29 17:00:42 -08003011 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003012 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003013 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003014 to->pWaitSemaphoreDeviceIndices = nullptr;
3015 if (from->pWaitSemaphoreDeviceIndices)
3016 {
Yilong Li422b0582021-04-30 13:09:43 -07003017 to->pWaitSemaphoreDeviceIndices = (uint32_t*)alloc->dupArray(from->pWaitSemaphoreDeviceIndices, from->waitSemaphoreCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003018 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003019 to->pCommandBufferDeviceMasks = nullptr;
3020 if (from->pCommandBufferDeviceMasks)
3021 {
Yilong Li422b0582021-04-30 13:09:43 -07003022 to->pCommandBufferDeviceMasks = (uint32_t*)alloc->dupArray(from->pCommandBufferDeviceMasks, from->commandBufferCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003023 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003024 to->pSignalSemaphoreDeviceIndices = nullptr;
3025 if (from->pSignalSemaphoreDeviceIndices)
3026 {
Yilong Li422b0582021-04-30 13:09:43 -07003027 to->pSignalSemaphoreDeviceIndices = (uint32_t*)alloc->dupArray(from->pSignalSemaphoreDeviceIndices, from->signalSemaphoreCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003028 }
3029}
3030
3031void deepcopy_VkDeviceGroupBindSparseInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003032 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003033 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003034 const VkDeviceGroupBindSparseInfo* from,
3035 VkDeviceGroupBindSparseInfo* to)
3036{
Yilong Li422b0582021-04-30 13:09:43 -07003037 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003038 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003039 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003040 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3041 {
3042 rootType = from->sType;
3043 }
Yilong Li04218f72021-02-19 01:31:17 -08003044 const void* from_pNext = from;
3045 size_t pNext_size = 0u;
3046 while (!pNext_size && from_pNext)
3047 {
3048 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003049 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003050 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003051 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003052 if (pNext_size)
3053 {
Yilong Li324fa652021-12-29 17:00:42 -08003054 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003055 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003056 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003057}
3058
3059void deepcopy_VkBindBufferMemoryDeviceGroupInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003060 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003061 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003062 const VkBindBufferMemoryDeviceGroupInfo* from,
3063 VkBindBufferMemoryDeviceGroupInfo* to)
3064{
Yilong Li422b0582021-04-30 13:09:43 -07003065 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003066 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003067 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003068 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3069 {
3070 rootType = from->sType;
3071 }
Yilong Li04218f72021-02-19 01:31:17 -08003072 const void* from_pNext = from;
3073 size_t pNext_size = 0u;
3074 while (!pNext_size && from_pNext)
3075 {
3076 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003077 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003078 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003079 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003080 if (pNext_size)
3081 {
Yilong Li324fa652021-12-29 17:00:42 -08003082 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003083 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003084 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003085 to->pDeviceIndices = nullptr;
3086 if (from->pDeviceIndices)
3087 {
Yilong Li422b0582021-04-30 13:09:43 -07003088 to->pDeviceIndices = (uint32_t*)alloc->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003089 }
3090}
3091
3092void deepcopy_VkBindImageMemoryDeviceGroupInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003093 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003094 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003095 const VkBindImageMemoryDeviceGroupInfo* from,
3096 VkBindImageMemoryDeviceGroupInfo* to)
3097{
Yilong Li422b0582021-04-30 13:09:43 -07003098 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003099 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003100 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003101 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3102 {
3103 rootType = from->sType;
3104 }
Yilong Li04218f72021-02-19 01:31:17 -08003105 const void* from_pNext = from;
3106 size_t pNext_size = 0u;
3107 while (!pNext_size && from_pNext)
3108 {
3109 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003110 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003111 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003112 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003113 if (pNext_size)
3114 {
Yilong Li324fa652021-12-29 17:00:42 -08003115 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003116 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003117 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003118 to->pDeviceIndices = nullptr;
3119 if (from->pDeviceIndices)
3120 {
Yilong Li422b0582021-04-30 13:09:43 -07003121 to->pDeviceIndices = (uint32_t*)alloc->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003122 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08003123 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003124 {
Yilong Libd10ec92021-02-10 13:24:27 -08003125 to->pSplitInstanceBindRegions = nullptr;
3126 if (from->pSplitInstanceBindRegions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003127 {
Yilong Li422b0582021-04-30 13:09:43 -07003128 to->pSplitInstanceBindRegions = (VkRect2D*)alloc->alloc(from->splitInstanceBindRegionCount * sizeof(const VkRect2D));
Yilong Libd10ec92021-02-10 13:24:27 -08003129 to->splitInstanceBindRegionCount = from->splitInstanceBindRegionCount;
3130 for (uint32_t i = 0; i < (uint32_t)from->splitInstanceBindRegionCount; ++i)
3131 {
Yilong Li422b0582021-04-30 13:09:43 -07003132 deepcopy_VkRect2D(alloc, rootType, from->pSplitInstanceBindRegions + i, (VkRect2D*)(to->pSplitInstanceBindRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -08003133 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003134 }
3135 }
3136}
3137
3138void deepcopy_VkPhysicalDeviceGroupProperties(
Yilong Li422b0582021-04-30 13:09:43 -07003139 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003140 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003141 const VkPhysicalDeviceGroupProperties* from,
3142 VkPhysicalDeviceGroupProperties* to)
3143{
Yilong Li422b0582021-04-30 13:09:43 -07003144 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003145 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003146 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003147 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3148 {
3149 rootType = from->sType;
3150 }
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;
Yilong Li48081632021-04-13 22:38:10 -07003156 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003157 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003158 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003159 if (pNext_size)
3160 {
Yilong Li422b0582021-04-30 13:09:43 -07003161 to->pNext = (void*)alloc->alloc(pNext_size);
3162 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003164 memcpy(to->physicalDevices, from->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003165}
3166
3167void deepcopy_VkDeviceGroupDeviceCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003168 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003169 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003170 const VkDeviceGroupDeviceCreateInfo* from,
3171 VkDeviceGroupDeviceCreateInfo* to)
3172{
Yilong Li422b0582021-04-30 13:09:43 -07003173 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003174 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003175 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003176 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3177 {
3178 rootType = from->sType;
3179 }
Yilong Li04218f72021-02-19 01:31:17 -08003180 const void* from_pNext = from;
3181 size_t pNext_size = 0u;
3182 while (!pNext_size && from_pNext)
3183 {
3184 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003185 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003186 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003187 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003188 if (pNext_size)
3189 {
Yilong Li324fa652021-12-29 17:00:42 -08003190 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003191 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003192 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003193 to->pPhysicalDevices = nullptr;
3194 if (from->pPhysicalDevices)
3195 {
Yilong Li422b0582021-04-30 13:09:43 -07003196 to->pPhysicalDevices = (VkPhysicalDevice*)alloc->dupArray(from->pPhysicalDevices, from->physicalDeviceCount * sizeof(const VkPhysicalDevice));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003197 }
3198}
3199
3200void deepcopy_VkBufferMemoryRequirementsInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07003201 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003202 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003203 const VkBufferMemoryRequirementsInfo2* from,
3204 VkBufferMemoryRequirementsInfo2* to)
3205{
Yilong Li422b0582021-04-30 13:09:43 -07003206 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003207 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003208 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003209 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3210 {
3211 rootType = from->sType;
3212 }
Yilong Li04218f72021-02-19 01:31:17 -08003213 const void* from_pNext = from;
3214 size_t pNext_size = 0u;
3215 while (!pNext_size && from_pNext)
3216 {
3217 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003218 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003219 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003220 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003221 if (pNext_size)
3222 {
Yilong Li324fa652021-12-29 17:00:42 -08003223 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003224 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003225 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003226}
3227
3228void deepcopy_VkImageMemoryRequirementsInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07003229 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003230 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003231 const VkImageMemoryRequirementsInfo2* from,
3232 VkImageMemoryRequirementsInfo2* to)
3233{
Yilong Li422b0582021-04-30 13:09:43 -07003234 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003235 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003236 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003237 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3238 {
3239 rootType = from->sType;
3240 }
Yilong Li04218f72021-02-19 01:31:17 -08003241 const void* from_pNext = from;
3242 size_t pNext_size = 0u;
3243 while (!pNext_size && from_pNext)
3244 {
3245 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003246 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003247 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003248 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003249 if (pNext_size)
3250 {
Yilong Li324fa652021-12-29 17:00:42 -08003251 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003252 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003253 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003254}
3255
3256void deepcopy_VkImageSparseMemoryRequirementsInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07003257 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003258 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003259 const VkImageSparseMemoryRequirementsInfo2* from,
3260 VkImageSparseMemoryRequirementsInfo2* to)
3261{
Yilong Li422b0582021-04-30 13:09:43 -07003262 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003263 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003264 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003265 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3266 {
3267 rootType = from->sType;
3268 }
Yilong Li04218f72021-02-19 01:31:17 -08003269 const void* from_pNext = from;
3270 size_t pNext_size = 0u;
3271 while (!pNext_size && from_pNext)
3272 {
3273 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003274 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003275 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003276 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003277 if (pNext_size)
3278 {
Yilong Li324fa652021-12-29 17:00:42 -08003279 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003280 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003281 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003282}
3283
3284void deepcopy_VkMemoryRequirements2(
Yilong Li422b0582021-04-30 13:09:43 -07003285 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003286 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003287 const VkMemoryRequirements2* from,
3288 VkMemoryRequirements2* to)
3289{
Yilong Li422b0582021-04-30 13:09:43 -07003290 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003291 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003292 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003293 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3294 {
3295 rootType = from->sType;
3296 }
Yilong Li04218f72021-02-19 01:31:17 -08003297 const void* from_pNext = from;
3298 size_t pNext_size = 0u;
3299 while (!pNext_size && from_pNext)
3300 {
3301 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003302 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003303 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003304 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003305 if (pNext_size)
3306 {
Yilong Li422b0582021-04-30 13:09:43 -07003307 to->pNext = (void*)alloc->alloc(pNext_size);
3308 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003309 }
Yilong Li422b0582021-04-30 13:09:43 -07003310 deepcopy_VkMemoryRequirements(alloc, rootType, &from->memoryRequirements, (VkMemoryRequirements*)(&to->memoryRequirements));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003311}
3312
3313void deepcopy_VkSparseImageMemoryRequirements2(
Yilong Li422b0582021-04-30 13:09:43 -07003314 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003315 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003316 const VkSparseImageMemoryRequirements2* from,
3317 VkSparseImageMemoryRequirements2* to)
3318{
Yilong Li422b0582021-04-30 13:09:43 -07003319 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003320 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003321 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003322 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3323 {
3324 rootType = from->sType;
3325 }
Yilong Li04218f72021-02-19 01:31:17 -08003326 const void* from_pNext = from;
3327 size_t pNext_size = 0u;
3328 while (!pNext_size && from_pNext)
3329 {
3330 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003331 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003332 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003333 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003334 if (pNext_size)
3335 {
Yilong Li422b0582021-04-30 13:09:43 -07003336 to->pNext = (void*)alloc->alloc(pNext_size);
3337 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003338 }
Yilong Li422b0582021-04-30 13:09:43 -07003339 deepcopy_VkSparseImageMemoryRequirements(alloc, rootType, &from->memoryRequirements, (VkSparseImageMemoryRequirements*)(&to->memoryRequirements));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003340}
3341
3342void deepcopy_VkPhysicalDeviceFeatures2(
Yilong Li422b0582021-04-30 13:09:43 -07003343 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003344 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003345 const VkPhysicalDeviceFeatures2* from,
3346 VkPhysicalDeviceFeatures2* to)
3347{
Yilong Li422b0582021-04-30 13:09:43 -07003348 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003349 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003350 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003351 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3352 {
3353 rootType = from->sType;
3354 }
Yilong Li04218f72021-02-19 01:31:17 -08003355 const void* from_pNext = from;
3356 size_t pNext_size = 0u;
3357 while (!pNext_size && from_pNext)
3358 {
3359 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003360 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003361 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003362 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003363 if (pNext_size)
3364 {
Yilong Li422b0582021-04-30 13:09:43 -07003365 to->pNext = (void*)alloc->alloc(pNext_size);
3366 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003367 }
Yilong Li422b0582021-04-30 13:09:43 -07003368 deepcopy_VkPhysicalDeviceFeatures(alloc, rootType, &from->features, (VkPhysicalDeviceFeatures*)(&to->features));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003369}
3370
3371void deepcopy_VkPhysicalDeviceProperties2(
Yilong Li422b0582021-04-30 13:09:43 -07003372 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003373 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003374 const VkPhysicalDeviceProperties2* from,
3375 VkPhysicalDeviceProperties2* to)
3376{
Yilong Li422b0582021-04-30 13:09:43 -07003377 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003378 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003379 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003380 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3381 {
3382 rootType = from->sType;
3383 }
Yilong Li04218f72021-02-19 01:31:17 -08003384 const void* from_pNext = from;
3385 size_t pNext_size = 0u;
3386 while (!pNext_size && from_pNext)
3387 {
3388 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003389 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003390 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003391 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003392 if (pNext_size)
3393 {
Yilong Li422b0582021-04-30 13:09:43 -07003394 to->pNext = (void*)alloc->alloc(pNext_size);
3395 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003396 }
Yilong Li422b0582021-04-30 13:09:43 -07003397 deepcopy_VkPhysicalDeviceProperties(alloc, rootType, &from->properties, (VkPhysicalDeviceProperties*)(&to->properties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003398}
3399
3400void deepcopy_VkFormatProperties2(
Yilong Li422b0582021-04-30 13:09:43 -07003401 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003402 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003403 const VkFormatProperties2* from,
3404 VkFormatProperties2* to)
3405{
Yilong Li422b0582021-04-30 13:09:43 -07003406 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003407 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003408 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003409 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3410 {
3411 rootType = from->sType;
3412 }
Yilong Li04218f72021-02-19 01:31:17 -08003413 const void* from_pNext = from;
3414 size_t pNext_size = 0u;
3415 while (!pNext_size && from_pNext)
3416 {
3417 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003418 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003419 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003420 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003421 if (pNext_size)
3422 {
Yilong Li422b0582021-04-30 13:09:43 -07003423 to->pNext = (void*)alloc->alloc(pNext_size);
3424 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003425 }
Yilong Li422b0582021-04-30 13:09:43 -07003426 deepcopy_VkFormatProperties(alloc, rootType, &from->formatProperties, (VkFormatProperties*)(&to->formatProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003427}
3428
3429void deepcopy_VkImageFormatProperties2(
Yilong Li422b0582021-04-30 13:09:43 -07003430 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003431 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003432 const VkImageFormatProperties2* from,
3433 VkImageFormatProperties2* to)
3434{
Yilong Li422b0582021-04-30 13:09:43 -07003435 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003436 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003437 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003438 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3439 {
3440 rootType = from->sType;
3441 }
Yilong Li04218f72021-02-19 01:31:17 -08003442 const void* from_pNext = from;
3443 size_t pNext_size = 0u;
3444 while (!pNext_size && from_pNext)
3445 {
3446 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003447 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003448 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003449 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003450 if (pNext_size)
3451 {
Yilong Li422b0582021-04-30 13:09:43 -07003452 to->pNext = (void*)alloc->alloc(pNext_size);
3453 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003454 }
Yilong Li422b0582021-04-30 13:09:43 -07003455 deepcopy_VkImageFormatProperties(alloc, rootType, &from->imageFormatProperties, (VkImageFormatProperties*)(&to->imageFormatProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003456}
3457
3458void deepcopy_VkPhysicalDeviceImageFormatInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07003459 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003460 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003461 const VkPhysicalDeviceImageFormatInfo2* from,
3462 VkPhysicalDeviceImageFormatInfo2* to)
3463{
Yilong Li422b0582021-04-30 13:09:43 -07003464 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003465 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003466 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003467 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3468 {
3469 rootType = from->sType;
3470 }
Yilong Li04218f72021-02-19 01:31:17 -08003471 const void* from_pNext = from;
3472 size_t pNext_size = 0u;
3473 while (!pNext_size && from_pNext)
3474 {
3475 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003476 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003477 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003478 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003479 if (pNext_size)
3480 {
Yilong Li324fa652021-12-29 17:00:42 -08003481 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003482 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003483 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003484}
3485
3486void deepcopy_VkQueueFamilyProperties2(
Yilong Li422b0582021-04-30 13:09:43 -07003487 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003488 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003489 const VkQueueFamilyProperties2* from,
3490 VkQueueFamilyProperties2* to)
3491{
Yilong Li422b0582021-04-30 13:09:43 -07003492 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003493 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003494 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003495 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3496 {
3497 rootType = from->sType;
3498 }
Yilong Li04218f72021-02-19 01:31:17 -08003499 const void* from_pNext = from;
3500 size_t pNext_size = 0u;
3501 while (!pNext_size && from_pNext)
3502 {
3503 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003504 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003505 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003506 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003507 if (pNext_size)
3508 {
Yilong Li422b0582021-04-30 13:09:43 -07003509 to->pNext = (void*)alloc->alloc(pNext_size);
3510 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003511 }
Yilong Li422b0582021-04-30 13:09:43 -07003512 deepcopy_VkQueueFamilyProperties(alloc, rootType, &from->queueFamilyProperties, (VkQueueFamilyProperties*)(&to->queueFamilyProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003513}
3514
3515void deepcopy_VkPhysicalDeviceMemoryProperties2(
Yilong Li422b0582021-04-30 13:09:43 -07003516 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003517 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003518 const VkPhysicalDeviceMemoryProperties2* from,
3519 VkPhysicalDeviceMemoryProperties2* to)
3520{
Yilong Li422b0582021-04-30 13:09:43 -07003521 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003522 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003523 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003524 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3525 {
3526 rootType = from->sType;
3527 }
Yilong Li04218f72021-02-19 01:31:17 -08003528 const void* from_pNext = from;
3529 size_t pNext_size = 0u;
3530 while (!pNext_size && from_pNext)
3531 {
3532 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003533 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003534 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003535 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003536 if (pNext_size)
3537 {
Yilong Li422b0582021-04-30 13:09:43 -07003538 to->pNext = (void*)alloc->alloc(pNext_size);
3539 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003540 }
Yilong Li422b0582021-04-30 13:09:43 -07003541 deepcopy_VkPhysicalDeviceMemoryProperties(alloc, rootType, &from->memoryProperties, (VkPhysicalDeviceMemoryProperties*)(&to->memoryProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003542}
3543
3544void deepcopy_VkSparseImageFormatProperties2(
Yilong Li422b0582021-04-30 13:09:43 -07003545 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003546 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003547 const VkSparseImageFormatProperties2* from,
3548 VkSparseImageFormatProperties2* to)
3549{
Yilong Li422b0582021-04-30 13:09:43 -07003550 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003551 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003552 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003553 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3554 {
3555 rootType = from->sType;
3556 }
Yilong Li04218f72021-02-19 01:31:17 -08003557 const void* from_pNext = from;
3558 size_t pNext_size = 0u;
3559 while (!pNext_size && from_pNext)
3560 {
3561 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003562 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003563 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003564 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003565 if (pNext_size)
3566 {
Yilong Li422b0582021-04-30 13:09:43 -07003567 to->pNext = (void*)alloc->alloc(pNext_size);
3568 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003569 }
Yilong Li422b0582021-04-30 13:09:43 -07003570 deepcopy_VkSparseImageFormatProperties(alloc, rootType, &from->properties, (VkSparseImageFormatProperties*)(&to->properties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003571}
3572
3573void deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07003574 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003575 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003576 const VkPhysicalDeviceSparseImageFormatInfo2* from,
3577 VkPhysicalDeviceSparseImageFormatInfo2* to)
3578{
Yilong Li422b0582021-04-30 13:09:43 -07003579 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003580 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003581 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003582 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3583 {
3584 rootType = from->sType;
3585 }
Yilong Li04218f72021-02-19 01:31:17 -08003586 const void* from_pNext = from;
3587 size_t pNext_size = 0u;
3588 while (!pNext_size && from_pNext)
3589 {
3590 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003591 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003592 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003593 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003594 if (pNext_size)
3595 {
Yilong Li324fa652021-12-29 17:00:42 -08003596 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003597 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003598 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003599}
3600
3601void deepcopy_VkPhysicalDevicePointClippingProperties(
Yilong Li422b0582021-04-30 13:09:43 -07003602 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003603 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003604 const VkPhysicalDevicePointClippingProperties* from,
3605 VkPhysicalDevicePointClippingProperties* to)
3606{
Yilong Li422b0582021-04-30 13:09:43 -07003607 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003608 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003609 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003610 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3611 {
3612 rootType = from->sType;
3613 }
Yilong Li04218f72021-02-19 01:31:17 -08003614 const void* from_pNext = from;
3615 size_t pNext_size = 0u;
3616 while (!pNext_size && from_pNext)
3617 {
3618 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003619 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003620 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003621 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003622 if (pNext_size)
3623 {
Yilong Li422b0582021-04-30 13:09:43 -07003624 to->pNext = (void*)alloc->alloc(pNext_size);
3625 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003626 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003627}
3628
3629void deepcopy_VkInputAttachmentAspectReference(
Yilong Li422b0582021-04-30 13:09:43 -07003630 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003631 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003632 const VkInputAttachmentAspectReference* from,
3633 VkInputAttachmentAspectReference* to)
3634{
Yilong Li422b0582021-04-30 13:09:43 -07003635 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003636 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003637 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003638}
3639
3640void deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003641 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003642 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003643 const VkRenderPassInputAttachmentAspectCreateInfo* from,
3644 VkRenderPassInputAttachmentAspectCreateInfo* to)
3645{
Yilong Li422b0582021-04-30 13:09:43 -07003646 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003647 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003648 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003649 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3650 {
3651 rootType = from->sType;
3652 }
Yilong Li04218f72021-02-19 01:31:17 -08003653 const void* from_pNext = from;
3654 size_t pNext_size = 0u;
3655 while (!pNext_size && from_pNext)
3656 {
3657 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003658 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003659 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003660 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003661 if (pNext_size)
3662 {
Yilong Li324fa652021-12-29 17:00:42 -08003663 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003664 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003665 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08003666 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003667 {
Yilong Libd10ec92021-02-10 13:24:27 -08003668 to->pAspectReferences = nullptr;
3669 if (from->pAspectReferences)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003670 {
Yilong Li422b0582021-04-30 13:09:43 -07003671 to->pAspectReferences = (VkInputAttachmentAspectReference*)alloc->alloc(from->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
Yilong Libd10ec92021-02-10 13:24:27 -08003672 to->aspectReferenceCount = from->aspectReferenceCount;
3673 for (uint32_t i = 0; i < (uint32_t)from->aspectReferenceCount; ++i)
3674 {
Yilong Li422b0582021-04-30 13:09:43 -07003675 deepcopy_VkInputAttachmentAspectReference(alloc, rootType, from->pAspectReferences + i, (VkInputAttachmentAspectReference*)(to->pAspectReferences + i));
Yilong Libd10ec92021-02-10 13:24:27 -08003676 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003677 }
3678 }
3679}
3680
3681void deepcopy_VkImageViewUsageCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003682 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003683 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003684 const VkImageViewUsageCreateInfo* from,
3685 VkImageViewUsageCreateInfo* to)
3686{
Yilong Li422b0582021-04-30 13:09:43 -07003687 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003688 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003689 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003690 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3691 {
3692 rootType = from->sType;
3693 }
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;
Yilong Li48081632021-04-13 22:38:10 -07003699 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003700 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003701 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003702 if (pNext_size)
3703 {
Yilong Li324fa652021-12-29 17:00:42 -08003704 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003705 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003706 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003707}
3708
3709void deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003710 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003711 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003712 const VkPipelineTessellationDomainOriginStateCreateInfo* from,
3713 VkPipelineTessellationDomainOriginStateCreateInfo* to)
3714{
Yilong Li422b0582021-04-30 13:09:43 -07003715 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003716 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003717 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003718 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3719 {
3720 rootType = from->sType;
3721 }
Yilong Li04218f72021-02-19 01:31:17 -08003722 const void* from_pNext = from;
3723 size_t pNext_size = 0u;
3724 while (!pNext_size && from_pNext)
3725 {
3726 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003727 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003728 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003729 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003730 if (pNext_size)
3731 {
Yilong Li324fa652021-12-29 17:00:42 -08003732 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003733 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003734 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003735}
3736
3737void deepcopy_VkRenderPassMultiviewCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003738 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003739 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003740 const VkRenderPassMultiviewCreateInfo* from,
3741 VkRenderPassMultiviewCreateInfo* to)
3742{
Yilong Li422b0582021-04-30 13:09:43 -07003743 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003744 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003745 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003746 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3747 {
3748 rootType = from->sType;
3749 }
Yilong Li04218f72021-02-19 01:31:17 -08003750 const void* from_pNext = from;
3751 size_t pNext_size = 0u;
3752 while (!pNext_size && from_pNext)
3753 {
3754 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003755 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003756 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003757 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003758 if (pNext_size)
3759 {
Yilong Li324fa652021-12-29 17:00:42 -08003760 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003761 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003762 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003763 to->pViewMasks = nullptr;
3764 if (from->pViewMasks)
3765 {
Yilong Li422b0582021-04-30 13:09:43 -07003766 to->pViewMasks = (uint32_t*)alloc->dupArray(from->pViewMasks, from->subpassCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003767 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003768 to->pViewOffsets = nullptr;
3769 if (from->pViewOffsets)
3770 {
Yilong Li422b0582021-04-30 13:09:43 -07003771 to->pViewOffsets = (int32_t*)alloc->dupArray(from->pViewOffsets, from->dependencyCount * sizeof(const int32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003772 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003773 to->pCorrelationMasks = nullptr;
3774 if (from->pCorrelationMasks)
3775 {
Yilong Li422b0582021-04-30 13:09:43 -07003776 to->pCorrelationMasks = (uint32_t*)alloc->dupArray(from->pCorrelationMasks, from->correlationMaskCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003777 }
3778}
3779
3780void deepcopy_VkPhysicalDeviceMultiviewFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07003781 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003782 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003783 const VkPhysicalDeviceMultiviewFeatures* from,
3784 VkPhysicalDeviceMultiviewFeatures* to)
3785{
Yilong Li422b0582021-04-30 13:09:43 -07003786 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003787 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003788 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003789 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3790 {
3791 rootType = from->sType;
3792 }
Yilong Li04218f72021-02-19 01:31:17 -08003793 const void* from_pNext = from;
3794 size_t pNext_size = 0u;
3795 while (!pNext_size && from_pNext)
3796 {
3797 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003798 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003799 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003800 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003801 if (pNext_size)
3802 {
Yilong Li422b0582021-04-30 13:09:43 -07003803 to->pNext = (void*)alloc->alloc(pNext_size);
3804 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003805 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003806}
3807
3808void deepcopy_VkPhysicalDeviceMultiviewProperties(
Yilong Li422b0582021-04-30 13:09:43 -07003809 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003810 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003811 const VkPhysicalDeviceMultiviewProperties* from,
3812 VkPhysicalDeviceMultiviewProperties* to)
3813{
Yilong Li422b0582021-04-30 13:09:43 -07003814 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003815 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003816 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003817 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3818 {
3819 rootType = from->sType;
3820 }
Yilong Li04218f72021-02-19 01:31:17 -08003821 const void* from_pNext = from;
3822 size_t pNext_size = 0u;
3823 while (!pNext_size && from_pNext)
3824 {
3825 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003826 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003827 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003828 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003829 if (pNext_size)
3830 {
Yilong Li422b0582021-04-30 13:09:43 -07003831 to->pNext = (void*)alloc->alloc(pNext_size);
3832 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003833 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003834}
3835
Yilong Lia8d45f12021-02-07 02:30:21 -08003836void deepcopy_VkPhysicalDeviceVariablePointersFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07003837 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003838 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08003839 const VkPhysicalDeviceVariablePointersFeatures* from,
3840 VkPhysicalDeviceVariablePointersFeatures* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003841{
Yilong Li422b0582021-04-30 13:09:43 -07003842 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003843 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003844 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003845 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3846 {
3847 rootType = from->sType;
3848 }
Yilong Li04218f72021-02-19 01:31:17 -08003849 const void* from_pNext = from;
3850 size_t pNext_size = 0u;
3851 while (!pNext_size && from_pNext)
3852 {
3853 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003854 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003855 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003856 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003857 if (pNext_size)
3858 {
Yilong Li422b0582021-04-30 13:09:43 -07003859 to->pNext = (void*)alloc->alloc(pNext_size);
3860 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003861 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003862}
3863
3864void deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07003865 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003866 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003867 const VkPhysicalDeviceProtectedMemoryFeatures* from,
3868 VkPhysicalDeviceProtectedMemoryFeatures* to)
3869{
Yilong Li422b0582021-04-30 13:09:43 -07003870 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003871 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003872 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003873 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3874 {
3875 rootType = from->sType;
3876 }
Yilong Li04218f72021-02-19 01:31:17 -08003877 const void* from_pNext = from;
3878 size_t pNext_size = 0u;
3879 while (!pNext_size && from_pNext)
3880 {
3881 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003882 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003883 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003884 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003885 if (pNext_size)
3886 {
Yilong Li422b0582021-04-30 13:09:43 -07003887 to->pNext = (void*)alloc->alloc(pNext_size);
3888 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003889 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003890}
3891
3892void deepcopy_VkPhysicalDeviceProtectedMemoryProperties(
Yilong Li422b0582021-04-30 13:09:43 -07003893 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003894 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003895 const VkPhysicalDeviceProtectedMemoryProperties* from,
3896 VkPhysicalDeviceProtectedMemoryProperties* to)
3897{
Yilong Li422b0582021-04-30 13:09:43 -07003898 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003899 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003900 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003901 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3902 {
3903 rootType = from->sType;
3904 }
Yilong Li04218f72021-02-19 01:31:17 -08003905 const void* from_pNext = from;
3906 size_t pNext_size = 0u;
3907 while (!pNext_size && from_pNext)
3908 {
3909 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003910 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003911 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003912 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003913 if (pNext_size)
3914 {
Yilong Li422b0582021-04-30 13:09:43 -07003915 to->pNext = (void*)alloc->alloc(pNext_size);
3916 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003917 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003918}
3919
3920void deepcopy_VkDeviceQueueInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07003921 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003922 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003923 const VkDeviceQueueInfo2* from,
3924 VkDeviceQueueInfo2* to)
3925{
Yilong Li422b0582021-04-30 13:09:43 -07003926 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003927 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003928 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003929 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3930 {
3931 rootType = from->sType;
3932 }
Yilong Li04218f72021-02-19 01:31:17 -08003933 const void* from_pNext = from;
3934 size_t pNext_size = 0u;
3935 while (!pNext_size && from_pNext)
3936 {
3937 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003938 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003939 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003940 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003941 if (pNext_size)
3942 {
Yilong Li324fa652021-12-29 17:00:42 -08003943 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003944 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003945 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003946}
3947
3948void deepcopy_VkProtectedSubmitInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003949 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003950 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003951 const VkProtectedSubmitInfo* from,
3952 VkProtectedSubmitInfo* to)
3953{
Yilong Li422b0582021-04-30 13:09:43 -07003954 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003955 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003956 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003957 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3958 {
3959 rootType = from->sType;
3960 }
Yilong Li04218f72021-02-19 01:31:17 -08003961 const void* from_pNext = from;
3962 size_t pNext_size = 0u;
3963 while (!pNext_size && from_pNext)
3964 {
3965 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003966 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003967 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003968 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003969 if (pNext_size)
3970 {
Yilong Li324fa652021-12-29 17:00:42 -08003971 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07003972 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08003973 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003974}
3975
3976void deepcopy_VkSamplerYcbcrConversionCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07003977 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07003978 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003979 const VkSamplerYcbcrConversionCreateInfo* from,
3980 VkSamplerYcbcrConversionCreateInfo* to)
3981{
Yilong Li422b0582021-04-30 13:09:43 -07003982 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07003983 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08003984 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07003985 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
3986 {
3987 rootType = from->sType;
3988 }
Yilong Li04218f72021-02-19 01:31:17 -08003989 const void* from_pNext = from;
3990 size_t pNext_size = 0u;
3991 while (!pNext_size && from_pNext)
3992 {
3993 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07003994 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08003995 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003996 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08003997 if (pNext_size)
3998 {
Yilong Li324fa652021-12-29 17:00:42 -08003999 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004000 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004001 }
Yilong Li422b0582021-04-30 13:09:43 -07004002 deepcopy_VkComponentMapping(alloc, rootType, &from->components, (VkComponentMapping*)(&to->components));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004003}
4004
4005void deepcopy_VkSamplerYcbcrConversionInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004006 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004007 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004008 const VkSamplerYcbcrConversionInfo* from,
4009 VkSamplerYcbcrConversionInfo* to)
4010{
Yilong Li422b0582021-04-30 13:09:43 -07004011 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004012 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004013 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004014 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4015 {
4016 rootType = from->sType;
4017 }
Yilong Li04218f72021-02-19 01:31:17 -08004018 const void* from_pNext = from;
4019 size_t pNext_size = 0u;
4020 while (!pNext_size && from_pNext)
4021 {
4022 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004023 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004024 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004025 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004026 if (pNext_size)
4027 {
Yilong Li324fa652021-12-29 17:00:42 -08004028 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004029 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004030 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004031}
4032
4033void deepcopy_VkBindImagePlaneMemoryInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004034 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004035 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004036 const VkBindImagePlaneMemoryInfo* from,
4037 VkBindImagePlaneMemoryInfo* to)
4038{
Yilong Li422b0582021-04-30 13:09:43 -07004039 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004040 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004041 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004042 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4043 {
4044 rootType = from->sType;
4045 }
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;
Yilong Li48081632021-04-13 22:38:10 -07004051 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004052 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004053 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004054 if (pNext_size)
4055 {
Yilong Li324fa652021-12-29 17:00:42 -08004056 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004057 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004058 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004059}
4060
4061void deepcopy_VkImagePlaneMemoryRequirementsInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004062 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004063 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004064 const VkImagePlaneMemoryRequirementsInfo* from,
4065 VkImagePlaneMemoryRequirementsInfo* to)
4066{
Yilong Li422b0582021-04-30 13:09:43 -07004067 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004068 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004069 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004070 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4071 {
4072 rootType = from->sType;
4073 }
Yilong Li04218f72021-02-19 01:31:17 -08004074 const void* from_pNext = from;
4075 size_t pNext_size = 0u;
4076 while (!pNext_size && from_pNext)
4077 {
4078 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004079 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004080 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004081 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004082 if (pNext_size)
4083 {
Yilong Li324fa652021-12-29 17:00:42 -08004084 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004085 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004086 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004087}
4088
4089void deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07004090 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004091 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004092 const VkPhysicalDeviceSamplerYcbcrConversionFeatures* from,
4093 VkPhysicalDeviceSamplerYcbcrConversionFeatures* to)
4094{
Yilong Li422b0582021-04-30 13:09:43 -07004095 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004096 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004097 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004098 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4099 {
4100 rootType = from->sType;
4101 }
Yilong Li04218f72021-02-19 01:31:17 -08004102 const void* from_pNext = from;
4103 size_t pNext_size = 0u;
4104 while (!pNext_size && from_pNext)
4105 {
4106 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004107 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004108 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004109 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004110 if (pNext_size)
4111 {
Yilong Li422b0582021-04-30 13:09:43 -07004112 to->pNext = (void*)alloc->alloc(pNext_size);
4113 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004114 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004115}
4116
4117void deepcopy_VkSamplerYcbcrConversionImageFormatProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004118 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004119 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004120 const VkSamplerYcbcrConversionImageFormatProperties* from,
4121 VkSamplerYcbcrConversionImageFormatProperties* to)
4122{
Yilong Li422b0582021-04-30 13:09:43 -07004123 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004124 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004125 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004126 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4127 {
4128 rootType = from->sType;
4129 }
Yilong Li04218f72021-02-19 01:31:17 -08004130 const void* from_pNext = from;
4131 size_t pNext_size = 0u;
4132 while (!pNext_size && from_pNext)
4133 {
4134 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004135 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004136 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004137 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004138 if (pNext_size)
4139 {
Yilong Li422b0582021-04-30 13:09:43 -07004140 to->pNext = (void*)alloc->alloc(pNext_size);
4141 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004142 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004143}
4144
4145void deepcopy_VkDescriptorUpdateTemplateEntry(
Yilong Li422b0582021-04-30 13:09:43 -07004146 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004147 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004148 const VkDescriptorUpdateTemplateEntry* from,
4149 VkDescriptorUpdateTemplateEntry* to)
4150{
Yilong Li422b0582021-04-30 13:09:43 -07004151 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004152 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004153 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004154}
4155
4156void deepcopy_VkDescriptorUpdateTemplateCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004157 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004158 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004159 const VkDescriptorUpdateTemplateCreateInfo* from,
4160 VkDescriptorUpdateTemplateCreateInfo* to)
4161{
Yilong Li422b0582021-04-30 13:09:43 -07004162 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004163 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004164 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004165 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4166 {
4167 rootType = from->sType;
4168 }
Yilong Li04218f72021-02-19 01:31:17 -08004169 const void* from_pNext = from;
4170 size_t pNext_size = 0u;
4171 while (!pNext_size && from_pNext)
4172 {
4173 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004174 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004175 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004176 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004177 if (pNext_size)
4178 {
Yilong Li324fa652021-12-29 17:00:42 -08004179 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004180 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004181 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004182 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004183 {
Yilong Libd10ec92021-02-10 13:24:27 -08004184 to->pDescriptorUpdateEntries = nullptr;
4185 if (from->pDescriptorUpdateEntries)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004186 {
Yilong Li422b0582021-04-30 13:09:43 -07004187 to->pDescriptorUpdateEntries = (VkDescriptorUpdateTemplateEntry*)alloc->alloc(from->descriptorUpdateEntryCount * sizeof(const VkDescriptorUpdateTemplateEntry));
Yilong Libd10ec92021-02-10 13:24:27 -08004188 to->descriptorUpdateEntryCount = from->descriptorUpdateEntryCount;
4189 for (uint32_t i = 0; i < (uint32_t)from->descriptorUpdateEntryCount; ++i)
4190 {
Yilong Li422b0582021-04-30 13:09:43 -07004191 deepcopy_VkDescriptorUpdateTemplateEntry(alloc, rootType, from->pDescriptorUpdateEntries + i, (VkDescriptorUpdateTemplateEntry*)(to->pDescriptorUpdateEntries + i));
Yilong Libd10ec92021-02-10 13:24:27 -08004192 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004193 }
4194 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004195}
4196
4197void deepcopy_VkExternalMemoryProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004198 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004199 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004200 const VkExternalMemoryProperties* from,
4201 VkExternalMemoryProperties* to)
4202{
Yilong Li422b0582021-04-30 13:09:43 -07004203 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004204 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004205 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004206}
4207
4208void deepcopy_VkPhysicalDeviceExternalImageFormatInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004209 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004210 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004211 const VkPhysicalDeviceExternalImageFormatInfo* from,
4212 VkPhysicalDeviceExternalImageFormatInfo* to)
4213{
Yilong Li422b0582021-04-30 13:09:43 -07004214 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004215 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004216 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004217 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4218 {
4219 rootType = from->sType;
4220 }
Yilong Li04218f72021-02-19 01:31:17 -08004221 const void* from_pNext = from;
4222 size_t pNext_size = 0u;
4223 while (!pNext_size && from_pNext)
4224 {
4225 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004226 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004227 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004228 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004229 if (pNext_size)
4230 {
Yilong Li324fa652021-12-29 17:00:42 -08004231 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004232 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004233 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004234}
4235
4236void deepcopy_VkExternalImageFormatProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004237 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004238 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004239 const VkExternalImageFormatProperties* from,
4240 VkExternalImageFormatProperties* to)
4241{
Yilong Li422b0582021-04-30 13:09:43 -07004242 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004243 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004244 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004245 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4246 {
4247 rootType = from->sType;
4248 }
Yilong Li04218f72021-02-19 01:31:17 -08004249 const void* from_pNext = from;
4250 size_t pNext_size = 0u;
4251 while (!pNext_size && from_pNext)
4252 {
4253 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004254 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004255 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004256 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004257 if (pNext_size)
4258 {
Yilong Li422b0582021-04-30 13:09:43 -07004259 to->pNext = (void*)alloc->alloc(pNext_size);
4260 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004261 }
Yilong Li422b0582021-04-30 13:09:43 -07004262 deepcopy_VkExternalMemoryProperties(alloc, rootType, &from->externalMemoryProperties, (VkExternalMemoryProperties*)(&to->externalMemoryProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004263}
4264
4265void deepcopy_VkPhysicalDeviceExternalBufferInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004266 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004267 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004268 const VkPhysicalDeviceExternalBufferInfo* from,
4269 VkPhysicalDeviceExternalBufferInfo* to)
4270{
Yilong Li422b0582021-04-30 13:09:43 -07004271 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004272 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004273 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004274 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4275 {
4276 rootType = from->sType;
4277 }
Yilong Li04218f72021-02-19 01:31:17 -08004278 const void* from_pNext = from;
4279 size_t pNext_size = 0u;
4280 while (!pNext_size && from_pNext)
4281 {
4282 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004283 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004284 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004285 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004286 if (pNext_size)
4287 {
Yilong Li324fa652021-12-29 17:00:42 -08004288 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004289 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004290 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004291}
4292
4293void deepcopy_VkExternalBufferProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004294 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004295 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004296 const VkExternalBufferProperties* from,
4297 VkExternalBufferProperties* to)
4298{
Yilong Li422b0582021-04-30 13:09:43 -07004299 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004300 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004301 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004302 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4303 {
4304 rootType = from->sType;
4305 }
Yilong Li04218f72021-02-19 01:31:17 -08004306 const void* from_pNext = from;
4307 size_t pNext_size = 0u;
4308 while (!pNext_size && from_pNext)
4309 {
4310 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004311 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004312 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004313 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004314 if (pNext_size)
4315 {
Yilong Li422b0582021-04-30 13:09:43 -07004316 to->pNext = (void*)alloc->alloc(pNext_size);
4317 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004318 }
Yilong Li422b0582021-04-30 13:09:43 -07004319 deepcopy_VkExternalMemoryProperties(alloc, rootType, &from->externalMemoryProperties, (VkExternalMemoryProperties*)(&to->externalMemoryProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004320}
4321
4322void deepcopy_VkPhysicalDeviceIDProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004323 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004324 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004325 const VkPhysicalDeviceIDProperties* from,
4326 VkPhysicalDeviceIDProperties* to)
4327{
Yilong Li422b0582021-04-30 13:09:43 -07004328 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004329 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004330 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004331 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4332 {
4333 rootType = from->sType;
4334 }
Yilong Li04218f72021-02-19 01:31:17 -08004335 const void* from_pNext = from;
4336 size_t pNext_size = 0u;
4337 while (!pNext_size && from_pNext)
4338 {
4339 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004340 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004341 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004342 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004343 if (pNext_size)
4344 {
Yilong Li422b0582021-04-30 13:09:43 -07004345 to->pNext = (void*)alloc->alloc(pNext_size);
4346 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004347 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004348 memcpy(to->deviceUUID, from->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
4349 memcpy(to->driverUUID, from->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
4350 memcpy(to->deviceLUID, from->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004351}
4352
4353void deepcopy_VkExternalMemoryImageCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004354 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004355 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004356 const VkExternalMemoryImageCreateInfo* from,
4357 VkExternalMemoryImageCreateInfo* to)
4358{
Yilong Li422b0582021-04-30 13:09:43 -07004359 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004360 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004361 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004362 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4363 {
4364 rootType = from->sType;
4365 }
Yilong Li04218f72021-02-19 01:31:17 -08004366 const void* from_pNext = from;
4367 size_t pNext_size = 0u;
4368 while (!pNext_size && from_pNext)
4369 {
4370 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004371 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004372 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004373 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004374 if (pNext_size)
4375 {
Yilong Li324fa652021-12-29 17:00:42 -08004376 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004377 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004378 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004379}
4380
4381void deepcopy_VkExternalMemoryBufferCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004382 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004383 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004384 const VkExternalMemoryBufferCreateInfo* from,
4385 VkExternalMemoryBufferCreateInfo* to)
4386{
Yilong Li422b0582021-04-30 13:09:43 -07004387 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004388 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004389 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004390 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4391 {
4392 rootType = from->sType;
4393 }
Yilong Li04218f72021-02-19 01:31:17 -08004394 const void* from_pNext = from;
4395 size_t pNext_size = 0u;
4396 while (!pNext_size && from_pNext)
4397 {
4398 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004399 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004400 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004401 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004402 if (pNext_size)
4403 {
Yilong Li324fa652021-12-29 17:00:42 -08004404 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004405 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004406 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004407}
4408
4409void deepcopy_VkExportMemoryAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004410 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004411 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004412 const VkExportMemoryAllocateInfo* from,
4413 VkExportMemoryAllocateInfo* to)
4414{
Yilong Li422b0582021-04-30 13:09:43 -07004415 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004416 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004417 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004418 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4419 {
4420 rootType = from->sType;
4421 }
Yilong Li04218f72021-02-19 01:31:17 -08004422 const void* from_pNext = from;
4423 size_t pNext_size = 0u;
4424 while (!pNext_size && from_pNext)
4425 {
4426 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004427 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004428 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004429 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004430 if (pNext_size)
4431 {
Yilong Li324fa652021-12-29 17:00:42 -08004432 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004433 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004434 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004435}
4436
4437void deepcopy_VkPhysicalDeviceExternalFenceInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004438 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004439 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004440 const VkPhysicalDeviceExternalFenceInfo* from,
4441 VkPhysicalDeviceExternalFenceInfo* to)
4442{
Yilong Li422b0582021-04-30 13:09:43 -07004443 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004444 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004445 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004446 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4447 {
4448 rootType = from->sType;
4449 }
Yilong Li04218f72021-02-19 01:31:17 -08004450 const void* from_pNext = from;
4451 size_t pNext_size = 0u;
4452 while (!pNext_size && from_pNext)
4453 {
4454 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004455 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004456 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004457 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004458 if (pNext_size)
4459 {
Yilong Li324fa652021-12-29 17:00:42 -08004460 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004461 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004462 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004463}
4464
4465void deepcopy_VkExternalFenceProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004466 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004467 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004468 const VkExternalFenceProperties* from,
4469 VkExternalFenceProperties* to)
4470{
Yilong Li422b0582021-04-30 13:09:43 -07004471 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004472 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004473 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004474 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4475 {
4476 rootType = from->sType;
4477 }
Yilong Li04218f72021-02-19 01:31:17 -08004478 const void* from_pNext = from;
4479 size_t pNext_size = 0u;
4480 while (!pNext_size && from_pNext)
4481 {
4482 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004483 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004484 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004485 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004486 if (pNext_size)
4487 {
Yilong Li422b0582021-04-30 13:09:43 -07004488 to->pNext = (void*)alloc->alloc(pNext_size);
4489 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004490 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004491}
4492
4493void deepcopy_VkExportFenceCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004494 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004495 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004496 const VkExportFenceCreateInfo* from,
4497 VkExportFenceCreateInfo* to)
4498{
Yilong Li422b0582021-04-30 13:09:43 -07004499 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004500 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004501 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004502 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4503 {
4504 rootType = from->sType;
4505 }
Yilong Li04218f72021-02-19 01:31:17 -08004506 const void* from_pNext = from;
4507 size_t pNext_size = 0u;
4508 while (!pNext_size && from_pNext)
4509 {
4510 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004511 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004512 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004513 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004514 if (pNext_size)
4515 {
Yilong Li324fa652021-12-29 17:00:42 -08004516 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004517 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004518 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004519}
4520
4521void deepcopy_VkExportSemaphoreCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004522 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004523 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004524 const VkExportSemaphoreCreateInfo* from,
4525 VkExportSemaphoreCreateInfo* to)
4526{
Yilong Li422b0582021-04-30 13:09:43 -07004527 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004528 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004529 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004530 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4531 {
4532 rootType = from->sType;
4533 }
Yilong Li04218f72021-02-19 01:31:17 -08004534 const void* from_pNext = from;
4535 size_t pNext_size = 0u;
4536 while (!pNext_size && from_pNext)
4537 {
4538 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004539 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004540 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004541 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004542 if (pNext_size)
4543 {
Yilong Li324fa652021-12-29 17:00:42 -08004544 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004545 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004546 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004547}
4548
4549void deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004550 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004551 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004552 const VkPhysicalDeviceExternalSemaphoreInfo* from,
4553 VkPhysicalDeviceExternalSemaphoreInfo* to)
4554{
Yilong Li422b0582021-04-30 13:09:43 -07004555 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004556 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004557 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004558 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4559 {
4560 rootType = from->sType;
4561 }
Yilong Li04218f72021-02-19 01:31:17 -08004562 const void* from_pNext = from;
4563 size_t pNext_size = 0u;
4564 while (!pNext_size && from_pNext)
4565 {
4566 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004567 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004568 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004569 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004570 if (pNext_size)
4571 {
Yilong Li324fa652021-12-29 17:00:42 -08004572 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004573 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004574 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004575}
4576
4577void deepcopy_VkExternalSemaphoreProperties(
Yilong Li422b0582021-04-30 13:09:43 -07004578 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004579 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004580 const VkExternalSemaphoreProperties* from,
4581 VkExternalSemaphoreProperties* to)
4582{
Yilong Li422b0582021-04-30 13:09:43 -07004583 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004584 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004585 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004586 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4587 {
4588 rootType = from->sType;
4589 }
Yilong Li04218f72021-02-19 01:31:17 -08004590 const void* from_pNext = from;
4591 size_t pNext_size = 0u;
4592 while (!pNext_size && from_pNext)
4593 {
4594 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004595 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004596 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004597 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004598 if (pNext_size)
4599 {
Yilong Li422b0582021-04-30 13:09:43 -07004600 to->pNext = (void*)alloc->alloc(pNext_size);
4601 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004602 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004603}
4604
4605void deepcopy_VkPhysicalDeviceMaintenance3Properties(
Yilong Li422b0582021-04-30 13:09:43 -07004606 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004607 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004608 const VkPhysicalDeviceMaintenance3Properties* from,
4609 VkPhysicalDeviceMaintenance3Properties* to)
4610{
Yilong Li422b0582021-04-30 13:09:43 -07004611 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004612 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004613 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004614 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4615 {
4616 rootType = from->sType;
4617 }
Yilong Li04218f72021-02-19 01:31:17 -08004618 const void* from_pNext = from;
4619 size_t pNext_size = 0u;
4620 while (!pNext_size && from_pNext)
4621 {
4622 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004623 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004624 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004625 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004626 if (pNext_size)
4627 {
Yilong Li422b0582021-04-30 13:09:43 -07004628 to->pNext = (void*)alloc->alloc(pNext_size);
4629 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004630 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004631}
4632
4633void deepcopy_VkDescriptorSetLayoutSupport(
Yilong Li422b0582021-04-30 13:09:43 -07004634 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004635 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004636 const VkDescriptorSetLayoutSupport* from,
4637 VkDescriptorSetLayoutSupport* to)
4638{
Yilong Li422b0582021-04-30 13:09:43 -07004639 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004640 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004641 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004642 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4643 {
4644 rootType = from->sType;
4645 }
Yilong Li04218f72021-02-19 01:31:17 -08004646 const void* from_pNext = from;
4647 size_t pNext_size = 0u;
4648 while (!pNext_size && from_pNext)
4649 {
4650 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004651 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004652 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004653 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004654 if (pNext_size)
4655 {
Yilong Li422b0582021-04-30 13:09:43 -07004656 to->pNext = (void*)alloc->alloc(pNext_size);
4657 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004658 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004659}
4660
Yilong Lia8d45f12021-02-07 02:30:21 -08004661void deepcopy_VkPhysicalDeviceShaderDrawParametersFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07004662 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004663 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004664 const VkPhysicalDeviceShaderDrawParametersFeatures* from,
4665 VkPhysicalDeviceShaderDrawParametersFeatures* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004666{
Yilong Li422b0582021-04-30 13:09:43 -07004667 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004668 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08004669 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004670 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4671 {
4672 rootType = from->sType;
4673 }
Yilong Li04218f72021-02-19 01:31:17 -08004674 const void* from_pNext = from;
4675 size_t pNext_size = 0u;
4676 while (!pNext_size && from_pNext)
4677 {
4678 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004679 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004680 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004681 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08004682 if (pNext_size)
4683 {
Yilong Li422b0582021-04-30 13:09:43 -07004684 to->pNext = (void*)alloc->alloc(pNext_size);
4685 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08004686 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004687}
4688
4689#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004690#ifdef VK_VERSION_1_2
4691void deepcopy_VkPhysicalDeviceVulkan11Features(
Yilong Li422b0582021-04-30 13:09:43 -07004692 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004693 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004694 const VkPhysicalDeviceVulkan11Features* from,
4695 VkPhysicalDeviceVulkan11Features* to)
4696{
Yilong Li422b0582021-04-30 13:09:43 -07004697 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004698 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004699 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004700 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4701 {
4702 rootType = from->sType;
4703 }
Yilong Li04218f72021-02-19 01:31:17 -08004704 const void* from_pNext = from;
4705 size_t pNext_size = 0u;
4706 while (!pNext_size && from_pNext)
4707 {
4708 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004709 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004710 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004711 to->pNext = nullptr;
4712 if (pNext_size)
4713 {
Yilong Li422b0582021-04-30 13:09:43 -07004714 to->pNext = (void*)alloc->alloc(pNext_size);
4715 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004716 }
4717}
4718
4719void deepcopy_VkPhysicalDeviceVulkan11Properties(
Yilong Li422b0582021-04-30 13:09:43 -07004720 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004721 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004722 const VkPhysicalDeviceVulkan11Properties* from,
4723 VkPhysicalDeviceVulkan11Properties* to)
4724{
Yilong Li422b0582021-04-30 13:09:43 -07004725 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004726 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004727 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004728 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4729 {
4730 rootType = from->sType;
4731 }
Yilong Li04218f72021-02-19 01:31:17 -08004732 const void* from_pNext = from;
4733 size_t pNext_size = 0u;
4734 while (!pNext_size && from_pNext)
4735 {
4736 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004737 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004738 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004739 to->pNext = nullptr;
4740 if (pNext_size)
4741 {
Yilong Li422b0582021-04-30 13:09:43 -07004742 to->pNext = (void*)alloc->alloc(pNext_size);
4743 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004744 }
4745 memcpy(to->deviceUUID, from->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
4746 memcpy(to->driverUUID, from->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
4747 memcpy(to->deviceLUID, from->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
4748}
4749
4750void deepcopy_VkPhysicalDeviceVulkan12Features(
Yilong Li422b0582021-04-30 13:09:43 -07004751 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004752 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004753 const VkPhysicalDeviceVulkan12Features* from,
4754 VkPhysicalDeviceVulkan12Features* to)
4755{
Yilong Li422b0582021-04-30 13:09:43 -07004756 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004757 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004758 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004759 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4760 {
4761 rootType = from->sType;
4762 }
Yilong Li04218f72021-02-19 01:31:17 -08004763 const void* from_pNext = from;
4764 size_t pNext_size = 0u;
4765 while (!pNext_size && from_pNext)
4766 {
4767 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004768 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004769 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004770 to->pNext = nullptr;
4771 if (pNext_size)
4772 {
Yilong Li422b0582021-04-30 13:09:43 -07004773 to->pNext = (void*)alloc->alloc(pNext_size);
4774 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004775 }
4776}
4777
4778void deepcopy_VkConformanceVersion(
Yilong Li422b0582021-04-30 13:09:43 -07004779 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004780 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004781 const VkConformanceVersion* from,
4782 VkConformanceVersion* to)
4783{
Yilong Li422b0582021-04-30 13:09:43 -07004784 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004785 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004786 *to = *from;
4787}
4788
4789void deepcopy_VkPhysicalDeviceVulkan12Properties(
Yilong Li422b0582021-04-30 13:09:43 -07004790 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004791 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004792 const VkPhysicalDeviceVulkan12Properties* from,
4793 VkPhysicalDeviceVulkan12Properties* to)
4794{
Yilong Li422b0582021-04-30 13:09:43 -07004795 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004796 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004797 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004798 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4799 {
4800 rootType = from->sType;
4801 }
Yilong Li04218f72021-02-19 01:31:17 -08004802 const void* from_pNext = from;
4803 size_t pNext_size = 0u;
4804 while (!pNext_size && from_pNext)
4805 {
4806 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004807 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004808 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004809 to->pNext = nullptr;
4810 if (pNext_size)
4811 {
Yilong Li422b0582021-04-30 13:09:43 -07004812 to->pNext = (void*)alloc->alloc(pNext_size);
4813 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004814 }
4815 memcpy(to->driverName, from->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
4816 memcpy(to->driverInfo, from->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
Yilong Li422b0582021-04-30 13:09:43 -07004817 deepcopy_VkConformanceVersion(alloc, rootType, &from->conformanceVersion, (VkConformanceVersion*)(&to->conformanceVersion));
Yilong Lia8d45f12021-02-07 02:30:21 -08004818}
4819
4820void deepcopy_VkImageFormatListCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07004821 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004822 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004823 const VkImageFormatListCreateInfo* from,
4824 VkImageFormatListCreateInfo* to)
4825{
Yilong Li422b0582021-04-30 13:09:43 -07004826 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004827 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004828 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004829 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4830 {
4831 rootType = from->sType;
4832 }
Yilong Li04218f72021-02-19 01:31:17 -08004833 const void* from_pNext = from;
4834 size_t pNext_size = 0u;
4835 while (!pNext_size && from_pNext)
4836 {
4837 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004838 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004839 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004840 to->pNext = nullptr;
4841 if (pNext_size)
4842 {
Yilong Li324fa652021-12-29 17:00:42 -08004843 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004844 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004845 }
4846 to->pViewFormats = nullptr;
4847 if (from->pViewFormats)
4848 {
Yilong Li422b0582021-04-30 13:09:43 -07004849 to->pViewFormats = (VkFormat*)alloc->dupArray(from->pViewFormats, from->viewFormatCount * sizeof(const VkFormat));
Yilong Lia8d45f12021-02-07 02:30:21 -08004850 }
4851}
4852
4853void deepcopy_VkAttachmentDescription2(
Yilong Li422b0582021-04-30 13:09:43 -07004854 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004855 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004856 const VkAttachmentDescription2* from,
4857 VkAttachmentDescription2* to)
4858{
Yilong Li422b0582021-04-30 13:09:43 -07004859 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004860 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004861 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004862 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4863 {
4864 rootType = from->sType;
4865 }
Yilong Li04218f72021-02-19 01:31:17 -08004866 const void* from_pNext = from;
4867 size_t pNext_size = 0u;
4868 while (!pNext_size && from_pNext)
4869 {
4870 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004871 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004872 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004873 to->pNext = nullptr;
4874 if (pNext_size)
4875 {
Yilong Li324fa652021-12-29 17:00:42 -08004876 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004877 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004878 }
4879}
4880
4881void deepcopy_VkAttachmentReference2(
Yilong Li422b0582021-04-30 13:09:43 -07004882 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004883 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004884 const VkAttachmentReference2* from,
4885 VkAttachmentReference2* to)
4886{
Yilong Li422b0582021-04-30 13:09:43 -07004887 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004888 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004889 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004890 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4891 {
4892 rootType = from->sType;
4893 }
Yilong Li04218f72021-02-19 01:31:17 -08004894 const void* from_pNext = from;
4895 size_t pNext_size = 0u;
4896 while (!pNext_size && from_pNext)
4897 {
4898 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004899 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004900 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004901 to->pNext = nullptr;
4902 if (pNext_size)
4903 {
Yilong Li324fa652021-12-29 17:00:42 -08004904 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004905 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004906 }
4907}
4908
4909void deepcopy_VkSubpassDescription2(
Yilong Li422b0582021-04-30 13:09:43 -07004910 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004911 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004912 const VkSubpassDescription2* from,
4913 VkSubpassDescription2* to)
4914{
Yilong Li422b0582021-04-30 13:09:43 -07004915 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004916 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004917 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004918 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4919 {
4920 rootType = from->sType;
4921 }
Yilong Li04218f72021-02-19 01:31:17 -08004922 const void* from_pNext = from;
4923 size_t pNext_size = 0u;
4924 while (!pNext_size && from_pNext)
4925 {
4926 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07004927 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08004928 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004929 to->pNext = nullptr;
4930 if (pNext_size)
4931 {
Yilong Li324fa652021-12-29 17:00:42 -08004932 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07004933 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08004934 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004935 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004936 {
Yilong Libd10ec92021-02-10 13:24:27 -08004937 to->pInputAttachments = nullptr;
4938 if (from->pInputAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004939 {
Yilong Li422b0582021-04-30 13:09:43 -07004940 to->pInputAttachments = (VkAttachmentReference2*)alloc->alloc(from->inputAttachmentCount * sizeof(const VkAttachmentReference2));
Yilong Libd10ec92021-02-10 13:24:27 -08004941 to->inputAttachmentCount = from->inputAttachmentCount;
4942 for (uint32_t i = 0; i < (uint32_t)from->inputAttachmentCount; ++i)
4943 {
Yilong Li422b0582021-04-30 13:09:43 -07004944 deepcopy_VkAttachmentReference2(alloc, rootType, from->pInputAttachments + i, (VkAttachmentReference2*)(to->pInputAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08004945 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004946 }
4947 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004948 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004949 {
Yilong Libd10ec92021-02-10 13:24:27 -08004950 to->pColorAttachments = nullptr;
4951 if (from->pColorAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004952 {
Yilong Li422b0582021-04-30 13:09:43 -07004953 to->pColorAttachments = (VkAttachmentReference2*)alloc->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference2));
Yilong Libd10ec92021-02-10 13:24:27 -08004954 to->colorAttachmentCount = from->colorAttachmentCount;
4955 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
4956 {
Yilong Li422b0582021-04-30 13:09:43 -07004957 deepcopy_VkAttachmentReference2(alloc, rootType, from->pColorAttachments + i, (VkAttachmentReference2*)(to->pColorAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08004958 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004959 }
4960 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08004961 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08004962 {
Yilong Libd10ec92021-02-10 13:24:27 -08004963 to->pResolveAttachments = nullptr;
4964 if (from->pResolveAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08004965 {
Yilong Li422b0582021-04-30 13:09:43 -07004966 to->pResolveAttachments = (VkAttachmentReference2*)alloc->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference2));
Yilong Libd10ec92021-02-10 13:24:27 -08004967 to->colorAttachmentCount = from->colorAttachmentCount;
4968 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
4969 {
Yilong Li422b0582021-04-30 13:09:43 -07004970 deepcopy_VkAttachmentReference2(alloc, rootType, from->pResolveAttachments + i, (VkAttachmentReference2*)(to->pResolveAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08004971 }
Yilong Lia8d45f12021-02-07 02:30:21 -08004972 }
4973 }
4974 to->pDepthStencilAttachment = nullptr;
4975 if (from->pDepthStencilAttachment)
4976 {
Yilong Li422b0582021-04-30 13:09:43 -07004977 to->pDepthStencilAttachment = (VkAttachmentReference2*)alloc->alloc(sizeof(const VkAttachmentReference2));
4978 deepcopy_VkAttachmentReference2(alloc, rootType, from->pDepthStencilAttachment, (VkAttachmentReference2*)(to->pDepthStencilAttachment));
Yilong Lia8d45f12021-02-07 02:30:21 -08004979 }
4980 to->pPreserveAttachments = nullptr;
4981 if (from->pPreserveAttachments)
4982 {
Yilong Li422b0582021-04-30 13:09:43 -07004983 to->pPreserveAttachments = (uint32_t*)alloc->dupArray(from->pPreserveAttachments, from->preserveAttachmentCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08004984 }
4985}
4986
4987void deepcopy_VkSubpassDependency2(
Yilong Li422b0582021-04-30 13:09:43 -07004988 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07004989 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08004990 const VkSubpassDependency2* from,
4991 VkSubpassDependency2* to)
4992{
Yilong Li422b0582021-04-30 13:09:43 -07004993 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07004994 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08004995 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07004996 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
4997 {
4998 rootType = from->sType;
4999 }
Yilong Li04218f72021-02-19 01:31:17 -08005000 const void* from_pNext = from;
5001 size_t pNext_size = 0u;
5002 while (!pNext_size && from_pNext)
5003 {
5004 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005005 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005006 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005007 to->pNext = nullptr;
5008 if (pNext_size)
5009 {
Yilong Li324fa652021-12-29 17:00:42 -08005010 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005011 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005012 }
5013}
5014
5015void deepcopy_VkRenderPassCreateInfo2(
Yilong Li422b0582021-04-30 13:09:43 -07005016 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005017 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005018 const VkRenderPassCreateInfo2* from,
5019 VkRenderPassCreateInfo2* to)
5020{
Yilong Li422b0582021-04-30 13:09:43 -07005021 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005022 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005023 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005024 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5025 {
5026 rootType = from->sType;
5027 }
Yilong Li04218f72021-02-19 01:31:17 -08005028 const void* from_pNext = from;
5029 size_t pNext_size = 0u;
5030 while (!pNext_size && from_pNext)
5031 {
5032 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005033 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005034 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005035 to->pNext = nullptr;
5036 if (pNext_size)
5037 {
Yilong Li324fa652021-12-29 17:00:42 -08005038 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005039 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005040 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08005041 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08005042 {
Yilong Libd10ec92021-02-10 13:24:27 -08005043 to->pAttachments = nullptr;
5044 if (from->pAttachments)
Yilong Lia8d45f12021-02-07 02:30:21 -08005045 {
Yilong Li422b0582021-04-30 13:09:43 -07005046 to->pAttachments = (VkAttachmentDescription2*)alloc->alloc(from->attachmentCount * sizeof(const VkAttachmentDescription2));
Yilong Libd10ec92021-02-10 13:24:27 -08005047 to->attachmentCount = from->attachmentCount;
5048 for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
5049 {
Yilong Li422b0582021-04-30 13:09:43 -07005050 deepcopy_VkAttachmentDescription2(alloc, rootType, from->pAttachments + i, (VkAttachmentDescription2*)(to->pAttachments + i));
Yilong Libd10ec92021-02-10 13:24:27 -08005051 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005052 }
5053 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08005054 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08005055 {
Yilong Libd10ec92021-02-10 13:24:27 -08005056 to->pSubpasses = nullptr;
5057 if (from->pSubpasses)
Yilong Lia8d45f12021-02-07 02:30:21 -08005058 {
Yilong Li422b0582021-04-30 13:09:43 -07005059 to->pSubpasses = (VkSubpassDescription2*)alloc->alloc(from->subpassCount * sizeof(const VkSubpassDescription2));
Yilong Libd10ec92021-02-10 13:24:27 -08005060 to->subpassCount = from->subpassCount;
5061 for (uint32_t i = 0; i < (uint32_t)from->subpassCount; ++i)
5062 {
Yilong Li422b0582021-04-30 13:09:43 -07005063 deepcopy_VkSubpassDescription2(alloc, rootType, from->pSubpasses + i, (VkSubpassDescription2*)(to->pSubpasses + i));
Yilong Libd10ec92021-02-10 13:24:27 -08005064 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005065 }
5066 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08005067 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08005068 {
Yilong Libd10ec92021-02-10 13:24:27 -08005069 to->pDependencies = nullptr;
5070 if (from->pDependencies)
Yilong Lia8d45f12021-02-07 02:30:21 -08005071 {
Yilong Li422b0582021-04-30 13:09:43 -07005072 to->pDependencies = (VkSubpassDependency2*)alloc->alloc(from->dependencyCount * sizeof(const VkSubpassDependency2));
Yilong Libd10ec92021-02-10 13:24:27 -08005073 to->dependencyCount = from->dependencyCount;
5074 for (uint32_t i = 0; i < (uint32_t)from->dependencyCount; ++i)
5075 {
Yilong Li422b0582021-04-30 13:09:43 -07005076 deepcopy_VkSubpassDependency2(alloc, rootType, from->pDependencies + i, (VkSubpassDependency2*)(to->pDependencies + i));
Yilong Libd10ec92021-02-10 13:24:27 -08005077 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005078 }
5079 }
5080 to->pCorrelatedViewMasks = nullptr;
5081 if (from->pCorrelatedViewMasks)
5082 {
Yilong Li422b0582021-04-30 13:09:43 -07005083 to->pCorrelatedViewMasks = (uint32_t*)alloc->dupArray(from->pCorrelatedViewMasks, from->correlatedViewMaskCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08005084 }
5085}
5086
5087void deepcopy_VkSubpassBeginInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005088 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005089 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005090 const VkSubpassBeginInfo* from,
5091 VkSubpassBeginInfo* to)
5092{
Yilong Li422b0582021-04-30 13:09:43 -07005093 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005094 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005095 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005096 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5097 {
5098 rootType = from->sType;
5099 }
Yilong Li04218f72021-02-19 01:31:17 -08005100 const void* from_pNext = from;
5101 size_t pNext_size = 0u;
5102 while (!pNext_size && from_pNext)
5103 {
5104 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005105 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005106 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005107 to->pNext = nullptr;
5108 if (pNext_size)
5109 {
Yilong Li324fa652021-12-29 17:00:42 -08005110 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005111 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005112 }
5113}
5114
5115void deepcopy_VkSubpassEndInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005116 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005117 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005118 const VkSubpassEndInfo* from,
5119 VkSubpassEndInfo* to)
5120{
Yilong Li422b0582021-04-30 13:09:43 -07005121 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005122 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005123 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005124 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5125 {
5126 rootType = from->sType;
5127 }
Yilong Li04218f72021-02-19 01:31:17 -08005128 const void* from_pNext = from;
5129 size_t pNext_size = 0u;
5130 while (!pNext_size && from_pNext)
5131 {
5132 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005133 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005134 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005135 to->pNext = nullptr;
5136 if (pNext_size)
5137 {
Yilong Li324fa652021-12-29 17:00:42 -08005138 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005139 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005140 }
5141}
5142
5143void deepcopy_VkPhysicalDevice8BitStorageFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005144 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005145 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005146 const VkPhysicalDevice8BitStorageFeatures* from,
5147 VkPhysicalDevice8BitStorageFeatures* to)
5148{
Yilong Li422b0582021-04-30 13:09:43 -07005149 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005150 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005151 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005152 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5153 {
5154 rootType = from->sType;
5155 }
Yilong Li04218f72021-02-19 01:31:17 -08005156 const void* from_pNext = from;
5157 size_t pNext_size = 0u;
5158 while (!pNext_size && from_pNext)
5159 {
5160 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005161 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005162 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005163 to->pNext = nullptr;
5164 if (pNext_size)
5165 {
Yilong Li422b0582021-04-30 13:09:43 -07005166 to->pNext = (void*)alloc->alloc(pNext_size);
5167 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005168 }
5169}
5170
5171void deepcopy_VkPhysicalDeviceDriverProperties(
Yilong Li422b0582021-04-30 13:09:43 -07005172 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005173 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005174 const VkPhysicalDeviceDriverProperties* from,
5175 VkPhysicalDeviceDriverProperties* to)
5176{
Yilong Li422b0582021-04-30 13:09:43 -07005177 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005178 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005179 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005180 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5181 {
5182 rootType = from->sType;
5183 }
Yilong Li04218f72021-02-19 01:31:17 -08005184 const void* from_pNext = from;
5185 size_t pNext_size = 0u;
5186 while (!pNext_size && from_pNext)
5187 {
5188 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005189 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005190 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005191 to->pNext = nullptr;
5192 if (pNext_size)
5193 {
Yilong Li422b0582021-04-30 13:09:43 -07005194 to->pNext = (void*)alloc->alloc(pNext_size);
5195 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005196 }
5197 memcpy(to->driverName, from->driverName, VK_MAX_DRIVER_NAME_SIZE * sizeof(char));
5198 memcpy(to->driverInfo, from->driverInfo, VK_MAX_DRIVER_INFO_SIZE * sizeof(char));
Yilong Li422b0582021-04-30 13:09:43 -07005199 deepcopy_VkConformanceVersion(alloc, rootType, &from->conformanceVersion, (VkConformanceVersion*)(&to->conformanceVersion));
Yilong Lia8d45f12021-02-07 02:30:21 -08005200}
5201
5202void deepcopy_VkPhysicalDeviceShaderAtomicInt64Features(
Yilong Li422b0582021-04-30 13:09:43 -07005203 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005204 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005205 const VkPhysicalDeviceShaderAtomicInt64Features* from,
5206 VkPhysicalDeviceShaderAtomicInt64Features* to)
5207{
Yilong Li422b0582021-04-30 13:09:43 -07005208 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005209 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005210 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005211 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5212 {
5213 rootType = from->sType;
5214 }
Yilong Li04218f72021-02-19 01:31:17 -08005215 const void* from_pNext = from;
5216 size_t pNext_size = 0u;
5217 while (!pNext_size && from_pNext)
5218 {
5219 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005220 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005221 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005222 to->pNext = nullptr;
5223 if (pNext_size)
5224 {
Yilong Li422b0582021-04-30 13:09:43 -07005225 to->pNext = (void*)alloc->alloc(pNext_size);
5226 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005227 }
5228}
5229
5230void deepcopy_VkPhysicalDeviceShaderFloat16Int8Features(
Yilong Li422b0582021-04-30 13:09:43 -07005231 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005232 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005233 const VkPhysicalDeviceShaderFloat16Int8Features* from,
5234 VkPhysicalDeviceShaderFloat16Int8Features* to)
5235{
Yilong Li422b0582021-04-30 13:09:43 -07005236 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005237 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005238 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005239 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5240 {
5241 rootType = from->sType;
5242 }
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;
Yilong Li48081632021-04-13 22:38:10 -07005248 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005249 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005250 to->pNext = nullptr;
5251 if (pNext_size)
5252 {
Yilong Li422b0582021-04-30 13:09:43 -07005253 to->pNext = (void*)alloc->alloc(pNext_size);
5254 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005255 }
5256}
5257
5258void deepcopy_VkPhysicalDeviceFloatControlsProperties(
Yilong Li422b0582021-04-30 13:09:43 -07005259 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005260 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005261 const VkPhysicalDeviceFloatControlsProperties* from,
5262 VkPhysicalDeviceFloatControlsProperties* to)
5263{
Yilong Li422b0582021-04-30 13:09:43 -07005264 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005265 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005266 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005267 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5268 {
5269 rootType = from->sType;
5270 }
Yilong Li04218f72021-02-19 01:31:17 -08005271 const void* from_pNext = from;
5272 size_t pNext_size = 0u;
5273 while (!pNext_size && from_pNext)
5274 {
5275 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005276 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005277 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005278 to->pNext = nullptr;
5279 if (pNext_size)
5280 {
Yilong Li422b0582021-04-30 13:09:43 -07005281 to->pNext = (void*)alloc->alloc(pNext_size);
5282 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005283 }
5284}
5285
5286void deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005287 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005288 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005289 const VkDescriptorSetLayoutBindingFlagsCreateInfo* from,
5290 VkDescriptorSetLayoutBindingFlagsCreateInfo* to)
5291{
Yilong Li422b0582021-04-30 13:09:43 -07005292 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005293 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005294 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005295 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5296 {
5297 rootType = from->sType;
5298 }
Yilong Li04218f72021-02-19 01:31:17 -08005299 const void* from_pNext = from;
5300 size_t pNext_size = 0u;
5301 while (!pNext_size && from_pNext)
5302 {
5303 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005304 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005305 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005306 to->pNext = nullptr;
5307 if (pNext_size)
5308 {
Yilong Li324fa652021-12-29 17:00:42 -08005309 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005310 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005311 }
5312 to->pBindingFlags = nullptr;
5313 if (from->pBindingFlags)
5314 {
Yilong Li422b0582021-04-30 13:09:43 -07005315 to->pBindingFlags = (VkDescriptorBindingFlags*)alloc->dupArray(from->pBindingFlags, from->bindingCount * sizeof(const VkDescriptorBindingFlags));
Yilong Lia8d45f12021-02-07 02:30:21 -08005316 }
5317}
5318
5319void deepcopy_VkPhysicalDeviceDescriptorIndexingFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005320 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005321 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005322 const VkPhysicalDeviceDescriptorIndexingFeatures* from,
5323 VkPhysicalDeviceDescriptorIndexingFeatures* to)
5324{
Yilong Li422b0582021-04-30 13:09:43 -07005325 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005326 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005327 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005328 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5329 {
5330 rootType = from->sType;
5331 }
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;
Yilong Li48081632021-04-13 22:38:10 -07005337 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005338 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005339 to->pNext = nullptr;
5340 if (pNext_size)
5341 {
Yilong Li422b0582021-04-30 13:09:43 -07005342 to->pNext = (void*)alloc->alloc(pNext_size);
5343 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005344 }
5345}
5346
5347void deepcopy_VkPhysicalDeviceDescriptorIndexingProperties(
Yilong Li422b0582021-04-30 13:09:43 -07005348 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005349 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005350 const VkPhysicalDeviceDescriptorIndexingProperties* from,
5351 VkPhysicalDeviceDescriptorIndexingProperties* to)
5352{
Yilong Li422b0582021-04-30 13:09:43 -07005353 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005354 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005355 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005356 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5357 {
5358 rootType = from->sType;
5359 }
Yilong Li04218f72021-02-19 01:31:17 -08005360 const void* from_pNext = from;
5361 size_t pNext_size = 0u;
5362 while (!pNext_size && from_pNext)
5363 {
5364 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005365 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005366 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005367 to->pNext = nullptr;
5368 if (pNext_size)
5369 {
Yilong Li422b0582021-04-30 13:09:43 -07005370 to->pNext = (void*)alloc->alloc(pNext_size);
5371 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005372 }
5373}
5374
5375void deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005376 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005377 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005378 const VkDescriptorSetVariableDescriptorCountAllocateInfo* from,
5379 VkDescriptorSetVariableDescriptorCountAllocateInfo* to)
5380{
Yilong Li422b0582021-04-30 13:09:43 -07005381 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005382 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005383 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005384 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5385 {
5386 rootType = from->sType;
5387 }
Yilong Li04218f72021-02-19 01:31:17 -08005388 const void* from_pNext = from;
5389 size_t pNext_size = 0u;
5390 while (!pNext_size && from_pNext)
5391 {
5392 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005393 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005394 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005395 to->pNext = nullptr;
5396 if (pNext_size)
5397 {
Yilong Li324fa652021-12-29 17:00:42 -08005398 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005399 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005400 }
5401 to->pDescriptorCounts = nullptr;
5402 if (from->pDescriptorCounts)
5403 {
Yilong Li422b0582021-04-30 13:09:43 -07005404 to->pDescriptorCounts = (uint32_t*)alloc->dupArray(from->pDescriptorCounts, from->descriptorSetCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08005405 }
5406}
5407
5408void deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupport(
Yilong Li422b0582021-04-30 13:09:43 -07005409 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005410 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005411 const VkDescriptorSetVariableDescriptorCountLayoutSupport* from,
5412 VkDescriptorSetVariableDescriptorCountLayoutSupport* to)
5413{
Yilong Li422b0582021-04-30 13:09:43 -07005414 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005415 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005416 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005417 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5418 {
5419 rootType = from->sType;
5420 }
Yilong Li04218f72021-02-19 01:31:17 -08005421 const void* from_pNext = from;
5422 size_t pNext_size = 0u;
5423 while (!pNext_size && from_pNext)
5424 {
5425 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005426 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005427 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005428 to->pNext = nullptr;
5429 if (pNext_size)
5430 {
Yilong Li422b0582021-04-30 13:09:43 -07005431 to->pNext = (void*)alloc->alloc(pNext_size);
5432 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005433 }
5434}
5435
5436void deepcopy_VkSubpassDescriptionDepthStencilResolve(
Yilong Li422b0582021-04-30 13:09:43 -07005437 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005438 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005439 const VkSubpassDescriptionDepthStencilResolve* from,
5440 VkSubpassDescriptionDepthStencilResolve* to)
5441{
Yilong Li422b0582021-04-30 13:09:43 -07005442 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005443 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005444 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005445 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5446 {
5447 rootType = from->sType;
5448 }
Yilong Li04218f72021-02-19 01:31:17 -08005449 const void* from_pNext = from;
5450 size_t pNext_size = 0u;
5451 while (!pNext_size && from_pNext)
5452 {
5453 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005454 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005455 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005456 to->pNext = nullptr;
5457 if (pNext_size)
5458 {
Yilong Li324fa652021-12-29 17:00:42 -08005459 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005460 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005461 }
5462 to->pDepthStencilResolveAttachment = nullptr;
5463 if (from->pDepthStencilResolveAttachment)
5464 {
Yilong Li422b0582021-04-30 13:09:43 -07005465 to->pDepthStencilResolveAttachment = (VkAttachmentReference2*)alloc->alloc(sizeof(const VkAttachmentReference2));
5466 deepcopy_VkAttachmentReference2(alloc, rootType, from->pDepthStencilResolveAttachment, (VkAttachmentReference2*)(to->pDepthStencilResolveAttachment));
Yilong Lia8d45f12021-02-07 02:30:21 -08005467 }
5468}
5469
5470void deepcopy_VkPhysicalDeviceDepthStencilResolveProperties(
Yilong Li422b0582021-04-30 13:09:43 -07005471 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005472 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005473 const VkPhysicalDeviceDepthStencilResolveProperties* from,
5474 VkPhysicalDeviceDepthStencilResolveProperties* to)
5475{
Yilong Li422b0582021-04-30 13:09:43 -07005476 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005477 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005478 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005479 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5480 {
5481 rootType = from->sType;
5482 }
Yilong Li04218f72021-02-19 01:31:17 -08005483 const void* from_pNext = from;
5484 size_t pNext_size = 0u;
5485 while (!pNext_size && from_pNext)
5486 {
5487 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005488 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005489 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005490 to->pNext = nullptr;
5491 if (pNext_size)
5492 {
Yilong Li422b0582021-04-30 13:09:43 -07005493 to->pNext = (void*)alloc->alloc(pNext_size);
5494 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005495 }
5496}
5497
5498void deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005499 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005500 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005501 const VkPhysicalDeviceScalarBlockLayoutFeatures* from,
5502 VkPhysicalDeviceScalarBlockLayoutFeatures* to)
5503{
Yilong Li422b0582021-04-30 13:09:43 -07005504 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005505 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005506 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005507 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5508 {
5509 rootType = from->sType;
5510 }
Yilong Li04218f72021-02-19 01:31:17 -08005511 const void* from_pNext = from;
5512 size_t pNext_size = 0u;
5513 while (!pNext_size && from_pNext)
5514 {
5515 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005516 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005517 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005518 to->pNext = nullptr;
5519 if (pNext_size)
5520 {
Yilong Li422b0582021-04-30 13:09:43 -07005521 to->pNext = (void*)alloc->alloc(pNext_size);
5522 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005523 }
5524}
5525
5526void deepcopy_VkImageStencilUsageCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005527 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005528 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005529 const VkImageStencilUsageCreateInfo* from,
5530 VkImageStencilUsageCreateInfo* to)
5531{
Yilong Li422b0582021-04-30 13:09:43 -07005532 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005533 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005534 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005535 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5536 {
5537 rootType = from->sType;
5538 }
Yilong Li04218f72021-02-19 01:31:17 -08005539 const void* from_pNext = from;
5540 size_t pNext_size = 0u;
5541 while (!pNext_size && from_pNext)
5542 {
5543 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005544 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005545 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005546 to->pNext = nullptr;
5547 if (pNext_size)
5548 {
Yilong Li324fa652021-12-29 17:00:42 -08005549 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005550 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005551 }
5552}
5553
5554void deepcopy_VkSamplerReductionModeCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005555 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005556 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005557 const VkSamplerReductionModeCreateInfo* from,
5558 VkSamplerReductionModeCreateInfo* to)
5559{
Yilong Li422b0582021-04-30 13:09:43 -07005560 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005561 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005562 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005563 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5564 {
5565 rootType = from->sType;
5566 }
Yilong Li04218f72021-02-19 01:31:17 -08005567 const void* from_pNext = from;
5568 size_t pNext_size = 0u;
5569 while (!pNext_size && from_pNext)
5570 {
5571 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005572 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005573 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005574 to->pNext = nullptr;
5575 if (pNext_size)
5576 {
Yilong Li324fa652021-12-29 17:00:42 -08005577 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005578 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005579 }
5580}
5581
5582void deepcopy_VkPhysicalDeviceSamplerFilterMinmaxProperties(
Yilong Li422b0582021-04-30 13:09:43 -07005583 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005584 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005585 const VkPhysicalDeviceSamplerFilterMinmaxProperties* from,
5586 VkPhysicalDeviceSamplerFilterMinmaxProperties* to)
5587{
Yilong Li422b0582021-04-30 13:09:43 -07005588 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005589 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005590 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005591 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5592 {
5593 rootType = from->sType;
5594 }
Yilong Li04218f72021-02-19 01:31:17 -08005595 const void* from_pNext = from;
5596 size_t pNext_size = 0u;
5597 while (!pNext_size && from_pNext)
5598 {
5599 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005600 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005601 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005602 to->pNext = nullptr;
5603 if (pNext_size)
5604 {
Yilong Li422b0582021-04-30 13:09:43 -07005605 to->pNext = (void*)alloc->alloc(pNext_size);
5606 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005607 }
5608}
5609
5610void deepcopy_VkPhysicalDeviceVulkanMemoryModelFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005611 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005612 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005613 const VkPhysicalDeviceVulkanMemoryModelFeatures* from,
5614 VkPhysicalDeviceVulkanMemoryModelFeatures* to)
5615{
Yilong Li422b0582021-04-30 13:09:43 -07005616 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005617 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005618 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005619 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5620 {
5621 rootType = from->sType;
5622 }
Yilong Li04218f72021-02-19 01:31:17 -08005623 const void* from_pNext = from;
5624 size_t pNext_size = 0u;
5625 while (!pNext_size && from_pNext)
5626 {
5627 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005628 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005629 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005630 to->pNext = nullptr;
5631 if (pNext_size)
5632 {
Yilong Li422b0582021-04-30 13:09:43 -07005633 to->pNext = (void*)alloc->alloc(pNext_size);
5634 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005635 }
5636}
5637
5638void deepcopy_VkPhysicalDeviceImagelessFramebufferFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005639 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005640 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005641 const VkPhysicalDeviceImagelessFramebufferFeatures* from,
5642 VkPhysicalDeviceImagelessFramebufferFeatures* to)
5643{
Yilong Li422b0582021-04-30 13:09:43 -07005644 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005645 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005646 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005647 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5648 {
5649 rootType = from->sType;
5650 }
Yilong Li04218f72021-02-19 01:31:17 -08005651 const void* from_pNext = from;
5652 size_t pNext_size = 0u;
5653 while (!pNext_size && from_pNext)
5654 {
5655 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005656 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005657 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005658 to->pNext = nullptr;
5659 if (pNext_size)
5660 {
Yilong Li422b0582021-04-30 13:09:43 -07005661 to->pNext = (void*)alloc->alloc(pNext_size);
5662 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005663 }
5664}
5665
5666void deepcopy_VkFramebufferAttachmentImageInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005667 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005668 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005669 const VkFramebufferAttachmentImageInfo* from,
5670 VkFramebufferAttachmentImageInfo* to)
5671{
Yilong Li422b0582021-04-30 13:09:43 -07005672 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005673 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005674 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005675 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5676 {
5677 rootType = from->sType;
5678 }
Yilong Li04218f72021-02-19 01:31:17 -08005679 const void* from_pNext = from;
5680 size_t pNext_size = 0u;
5681 while (!pNext_size && from_pNext)
5682 {
5683 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005684 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005685 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005686 to->pNext = nullptr;
5687 if (pNext_size)
5688 {
Yilong Li324fa652021-12-29 17:00:42 -08005689 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005690 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005691 }
5692 to->pViewFormats = nullptr;
5693 if (from->pViewFormats)
5694 {
Yilong Li422b0582021-04-30 13:09:43 -07005695 to->pViewFormats = (VkFormat*)alloc->dupArray(from->pViewFormats, from->viewFormatCount * sizeof(const VkFormat));
Yilong Lia8d45f12021-02-07 02:30:21 -08005696 }
5697}
5698
5699void deepcopy_VkFramebufferAttachmentsCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005700 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005701 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005702 const VkFramebufferAttachmentsCreateInfo* from,
5703 VkFramebufferAttachmentsCreateInfo* to)
5704{
Yilong Li422b0582021-04-30 13:09:43 -07005705 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005706 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005707 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005708 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5709 {
5710 rootType = from->sType;
5711 }
Yilong Li04218f72021-02-19 01:31:17 -08005712 const void* from_pNext = from;
5713 size_t pNext_size = 0u;
5714 while (!pNext_size && from_pNext)
5715 {
5716 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005717 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005718 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005719 to->pNext = nullptr;
5720 if (pNext_size)
5721 {
Yilong Li324fa652021-12-29 17:00:42 -08005722 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005723 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005724 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08005725 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -08005726 {
Yilong Libd10ec92021-02-10 13:24:27 -08005727 to->pAttachmentImageInfos = nullptr;
5728 if (from->pAttachmentImageInfos)
Yilong Lia8d45f12021-02-07 02:30:21 -08005729 {
Yilong Li422b0582021-04-30 13:09:43 -07005730 to->pAttachmentImageInfos = (VkFramebufferAttachmentImageInfo*)alloc->alloc(from->attachmentImageInfoCount * sizeof(const VkFramebufferAttachmentImageInfo));
Yilong Libd10ec92021-02-10 13:24:27 -08005731 to->attachmentImageInfoCount = from->attachmentImageInfoCount;
5732 for (uint32_t i = 0; i < (uint32_t)from->attachmentImageInfoCount; ++i)
5733 {
Yilong Li422b0582021-04-30 13:09:43 -07005734 deepcopy_VkFramebufferAttachmentImageInfo(alloc, rootType, from->pAttachmentImageInfos + i, (VkFramebufferAttachmentImageInfo*)(to->pAttachmentImageInfos + i));
Yilong Libd10ec92021-02-10 13:24:27 -08005735 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005736 }
5737 }
5738}
5739
5740void deepcopy_VkRenderPassAttachmentBeginInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005741 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005742 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005743 const VkRenderPassAttachmentBeginInfo* from,
5744 VkRenderPassAttachmentBeginInfo* to)
5745{
Yilong Li422b0582021-04-30 13:09:43 -07005746 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005747 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005748 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005749 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5750 {
5751 rootType = from->sType;
5752 }
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;
Yilong Li48081632021-04-13 22:38:10 -07005758 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005759 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005760 to->pNext = nullptr;
5761 if (pNext_size)
5762 {
Yilong Li324fa652021-12-29 17:00:42 -08005763 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07005764 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005765 }
5766 to->pAttachments = nullptr;
5767 if (from->pAttachments)
5768 {
Yilong Li422b0582021-04-30 13:09:43 -07005769 to->pAttachments = (VkImageView*)alloc->dupArray(from->pAttachments, from->attachmentCount * sizeof(const VkImageView));
Yilong Lia8d45f12021-02-07 02:30:21 -08005770 }
5771}
5772
5773void deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005774 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005775 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005776 const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* from,
5777 VkPhysicalDeviceUniformBufferStandardLayoutFeatures* to)
5778{
Yilong Li422b0582021-04-30 13:09:43 -07005779 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005780 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005781 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005782 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5783 {
5784 rootType = from->sType;
5785 }
Yilong Li04218f72021-02-19 01:31:17 -08005786 const void* from_pNext = from;
5787 size_t pNext_size = 0u;
5788 while (!pNext_size && from_pNext)
5789 {
5790 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005791 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005792 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005793 to->pNext = nullptr;
5794 if (pNext_size)
5795 {
Yilong Li422b0582021-04-30 13:09:43 -07005796 to->pNext = (void*)alloc->alloc(pNext_size);
5797 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005798 }
5799}
5800
5801void deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005802 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005803 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005804 const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* from,
5805 VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* to)
5806{
Yilong Li422b0582021-04-30 13:09:43 -07005807 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005808 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005809 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005810 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5811 {
5812 rootType = from->sType;
5813 }
Yilong Li04218f72021-02-19 01:31:17 -08005814 const void* from_pNext = from;
5815 size_t pNext_size = 0u;
5816 while (!pNext_size && from_pNext)
5817 {
5818 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005819 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005820 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005821 to->pNext = nullptr;
5822 if (pNext_size)
5823 {
Yilong Li422b0582021-04-30 13:09:43 -07005824 to->pNext = (void*)alloc->alloc(pNext_size);
5825 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005826 }
5827}
5828
5829void deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005830 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005831 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005832 const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* from,
5833 VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* to)
5834{
Yilong Li422b0582021-04-30 13:09:43 -07005835 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005836 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005837 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005838 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5839 {
5840 rootType = from->sType;
5841 }
Yilong Li04218f72021-02-19 01:31:17 -08005842 const void* from_pNext = from;
5843 size_t pNext_size = 0u;
5844 while (!pNext_size && from_pNext)
5845 {
5846 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005847 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005848 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005849 to->pNext = nullptr;
5850 if (pNext_size)
5851 {
Yilong Li422b0582021-04-30 13:09:43 -07005852 to->pNext = (void*)alloc->alloc(pNext_size);
5853 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005854 }
5855}
5856
5857void deepcopy_VkAttachmentReferenceStencilLayout(
Yilong Li422b0582021-04-30 13:09:43 -07005858 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005859 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005860 const VkAttachmentReferenceStencilLayout* from,
5861 VkAttachmentReferenceStencilLayout* to)
5862{
Yilong Li422b0582021-04-30 13:09:43 -07005863 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005864 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005865 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005866 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5867 {
5868 rootType = from->sType;
5869 }
Yilong Li04218f72021-02-19 01:31:17 -08005870 const void* from_pNext = from;
5871 size_t pNext_size = 0u;
5872 while (!pNext_size && from_pNext)
5873 {
5874 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005875 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005876 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005877 to->pNext = nullptr;
5878 if (pNext_size)
5879 {
Yilong Li422b0582021-04-30 13:09:43 -07005880 to->pNext = (void*)alloc->alloc(pNext_size);
5881 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005882 }
5883}
5884
5885void deepcopy_VkAttachmentDescriptionStencilLayout(
Yilong Li422b0582021-04-30 13:09:43 -07005886 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005887 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005888 const VkAttachmentDescriptionStencilLayout* from,
5889 VkAttachmentDescriptionStencilLayout* to)
5890{
Yilong Li422b0582021-04-30 13:09:43 -07005891 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005892 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005893 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005894 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5895 {
5896 rootType = from->sType;
5897 }
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;
Yilong Li48081632021-04-13 22:38:10 -07005903 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005904 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005905 to->pNext = nullptr;
5906 if (pNext_size)
5907 {
Yilong Li422b0582021-04-30 13:09:43 -07005908 to->pNext = (void*)alloc->alloc(pNext_size);
5909 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005910 }
5911}
5912
5913void deepcopy_VkPhysicalDeviceHostQueryResetFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005914 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005915 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005916 const VkPhysicalDeviceHostQueryResetFeatures* from,
5917 VkPhysicalDeviceHostQueryResetFeatures* to)
5918{
Yilong Li422b0582021-04-30 13:09:43 -07005919 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005920 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005921 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005922 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5923 {
5924 rootType = from->sType;
5925 }
Yilong Li04218f72021-02-19 01:31:17 -08005926 const void* from_pNext = from;
5927 size_t pNext_size = 0u;
5928 while (!pNext_size && from_pNext)
5929 {
5930 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005931 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005932 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005933 to->pNext = nullptr;
5934 if (pNext_size)
5935 {
Yilong Li422b0582021-04-30 13:09:43 -07005936 to->pNext = (void*)alloc->alloc(pNext_size);
5937 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005938 }
5939}
5940
5941void deepcopy_VkPhysicalDeviceTimelineSemaphoreFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07005942 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005943 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005944 const VkPhysicalDeviceTimelineSemaphoreFeatures* from,
5945 VkPhysicalDeviceTimelineSemaphoreFeatures* to)
5946{
Yilong Li422b0582021-04-30 13:09:43 -07005947 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005948 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005949 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005950 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5951 {
5952 rootType = from->sType;
5953 }
Yilong Li04218f72021-02-19 01:31:17 -08005954 const void* from_pNext = from;
5955 size_t pNext_size = 0u;
5956 while (!pNext_size && from_pNext)
5957 {
5958 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005959 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005960 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005961 to->pNext = nullptr;
5962 if (pNext_size)
5963 {
Yilong Li422b0582021-04-30 13:09:43 -07005964 to->pNext = (void*)alloc->alloc(pNext_size);
5965 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005966 }
5967}
5968
5969void deepcopy_VkPhysicalDeviceTimelineSemaphoreProperties(
Yilong Li422b0582021-04-30 13:09:43 -07005970 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005971 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08005972 const VkPhysicalDeviceTimelineSemaphoreProperties* from,
5973 VkPhysicalDeviceTimelineSemaphoreProperties* to)
5974{
Yilong Li422b0582021-04-30 13:09:43 -07005975 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07005976 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08005977 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07005978 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
5979 {
5980 rootType = from->sType;
5981 }
Yilong Li04218f72021-02-19 01:31:17 -08005982 const void* from_pNext = from;
5983 size_t pNext_size = 0u;
5984 while (!pNext_size && from_pNext)
5985 {
5986 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07005987 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08005988 }
Yilong Lia8d45f12021-02-07 02:30:21 -08005989 to->pNext = nullptr;
5990 if (pNext_size)
5991 {
Yilong Li422b0582021-04-30 13:09:43 -07005992 to->pNext = (void*)alloc->alloc(pNext_size);
5993 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08005994 }
5995}
5996
5997void deepcopy_VkSemaphoreTypeCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07005998 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07005999 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006000 const VkSemaphoreTypeCreateInfo* from,
6001 VkSemaphoreTypeCreateInfo* to)
6002{
Yilong Li422b0582021-04-30 13:09:43 -07006003 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006004 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006005 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006006 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6007 {
6008 rootType = from->sType;
6009 }
Yilong Li04218f72021-02-19 01:31:17 -08006010 const void* from_pNext = from;
6011 size_t pNext_size = 0u;
6012 while (!pNext_size && from_pNext)
6013 {
6014 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006015 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006016 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006017 to->pNext = nullptr;
6018 if (pNext_size)
6019 {
Yilong Li324fa652021-12-29 17:00:42 -08006020 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006021 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006022 }
6023}
6024
6025void deepcopy_VkTimelineSemaphoreSubmitInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006026 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006027 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006028 const VkTimelineSemaphoreSubmitInfo* from,
6029 VkTimelineSemaphoreSubmitInfo* to)
6030{
Yilong Li422b0582021-04-30 13:09:43 -07006031 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006032 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006033 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006034 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6035 {
6036 rootType = from->sType;
6037 }
Yilong Li04218f72021-02-19 01:31:17 -08006038 const void* from_pNext = from;
6039 size_t pNext_size = 0u;
6040 while (!pNext_size && from_pNext)
6041 {
6042 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006043 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006044 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006045 to->pNext = nullptr;
6046 if (pNext_size)
6047 {
Yilong Li324fa652021-12-29 17:00:42 -08006048 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006049 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006050 }
6051 to->pWaitSemaphoreValues = nullptr;
6052 if (from->pWaitSemaphoreValues)
6053 {
Yilong Li422b0582021-04-30 13:09:43 -07006054 to->pWaitSemaphoreValues = (uint64_t*)alloc->dupArray(from->pWaitSemaphoreValues, from->waitSemaphoreValueCount * sizeof(const uint64_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08006055 }
6056 to->pSignalSemaphoreValues = nullptr;
6057 if (from->pSignalSemaphoreValues)
6058 {
Yilong Li422b0582021-04-30 13:09:43 -07006059 to->pSignalSemaphoreValues = (uint64_t*)alloc->dupArray(from->pSignalSemaphoreValues, from->signalSemaphoreValueCount * sizeof(const uint64_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08006060 }
6061}
6062
6063void deepcopy_VkSemaphoreWaitInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006064 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006065 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006066 const VkSemaphoreWaitInfo* from,
6067 VkSemaphoreWaitInfo* to)
6068{
Yilong Li422b0582021-04-30 13:09:43 -07006069 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006070 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006071 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006072 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6073 {
6074 rootType = from->sType;
6075 }
Yilong Li04218f72021-02-19 01:31:17 -08006076 const void* from_pNext = from;
6077 size_t pNext_size = 0u;
6078 while (!pNext_size && from_pNext)
6079 {
6080 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006081 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006082 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006083 to->pNext = nullptr;
6084 if (pNext_size)
6085 {
Yilong Li324fa652021-12-29 17:00:42 -08006086 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006087 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006088 }
6089 to->pSemaphores = nullptr;
6090 if (from->pSemaphores)
6091 {
Yilong Li422b0582021-04-30 13:09:43 -07006092 to->pSemaphores = (VkSemaphore*)alloc->dupArray(from->pSemaphores, from->semaphoreCount * sizeof(const VkSemaphore));
Yilong Lia8d45f12021-02-07 02:30:21 -08006093 }
6094 to->pValues = nullptr;
6095 if (from->pValues)
6096 {
Yilong Li422b0582021-04-30 13:09:43 -07006097 to->pValues = (uint64_t*)alloc->dupArray(from->pValues, from->semaphoreCount * sizeof(const uint64_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08006098 }
6099}
6100
6101void deepcopy_VkSemaphoreSignalInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006102 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006103 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006104 const VkSemaphoreSignalInfo* from,
6105 VkSemaphoreSignalInfo* to)
6106{
Yilong Li422b0582021-04-30 13:09:43 -07006107 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006108 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006109 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006110 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6111 {
6112 rootType = from->sType;
6113 }
Yilong Li04218f72021-02-19 01:31:17 -08006114 const void* from_pNext = from;
6115 size_t pNext_size = 0u;
6116 while (!pNext_size && from_pNext)
6117 {
6118 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006119 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006120 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006121 to->pNext = nullptr;
6122 if (pNext_size)
6123 {
Yilong Li324fa652021-12-29 17:00:42 -08006124 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006125 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006126 }
6127}
6128
6129void deepcopy_VkPhysicalDeviceBufferDeviceAddressFeatures(
Yilong Li422b0582021-04-30 13:09:43 -07006130 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006131 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006132 const VkPhysicalDeviceBufferDeviceAddressFeatures* from,
6133 VkPhysicalDeviceBufferDeviceAddressFeatures* to)
6134{
Yilong Li422b0582021-04-30 13:09:43 -07006135 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006136 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006137 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006138 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6139 {
6140 rootType = from->sType;
6141 }
Yilong Li04218f72021-02-19 01:31:17 -08006142 const void* from_pNext = from;
6143 size_t pNext_size = 0u;
6144 while (!pNext_size && from_pNext)
6145 {
6146 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006147 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006148 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006149 to->pNext = nullptr;
6150 if (pNext_size)
6151 {
Yilong Li422b0582021-04-30 13:09:43 -07006152 to->pNext = (void*)alloc->alloc(pNext_size);
6153 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006154 }
6155}
6156
6157void deepcopy_VkBufferDeviceAddressInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006158 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006159 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006160 const VkBufferDeviceAddressInfo* from,
6161 VkBufferDeviceAddressInfo* to)
6162{
Yilong Li422b0582021-04-30 13:09:43 -07006163 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006164 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006165 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006166 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6167 {
6168 rootType = from->sType;
6169 }
Yilong Li04218f72021-02-19 01:31:17 -08006170 const void* from_pNext = from;
6171 size_t pNext_size = 0u;
6172 while (!pNext_size && from_pNext)
6173 {
6174 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006175 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006176 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006177 to->pNext = nullptr;
6178 if (pNext_size)
6179 {
Yilong Li324fa652021-12-29 17:00:42 -08006180 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006181 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006182 }
6183}
6184
6185void deepcopy_VkBufferOpaqueCaptureAddressCreateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006186 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006187 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006188 const VkBufferOpaqueCaptureAddressCreateInfo* from,
6189 VkBufferOpaqueCaptureAddressCreateInfo* to)
6190{
Yilong Li422b0582021-04-30 13:09:43 -07006191 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006192 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006193 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006194 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6195 {
6196 rootType = from->sType;
6197 }
Yilong Li04218f72021-02-19 01:31:17 -08006198 const void* from_pNext = from;
6199 size_t pNext_size = 0u;
6200 while (!pNext_size && from_pNext)
6201 {
6202 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006203 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006204 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006205 to->pNext = nullptr;
6206 if (pNext_size)
6207 {
Yilong Li324fa652021-12-29 17:00:42 -08006208 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006209 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006210 }
6211}
6212
6213void deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006214 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006215 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006216 const VkMemoryOpaqueCaptureAddressAllocateInfo* from,
6217 VkMemoryOpaqueCaptureAddressAllocateInfo* to)
6218{
Yilong Li422b0582021-04-30 13:09:43 -07006219 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006220 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006221 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006222 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6223 {
6224 rootType = from->sType;
6225 }
Yilong Li04218f72021-02-19 01:31:17 -08006226 const void* from_pNext = from;
6227 size_t pNext_size = 0u;
6228 while (!pNext_size && from_pNext)
6229 {
6230 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006231 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006232 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006233 to->pNext = nullptr;
6234 if (pNext_size)
6235 {
Yilong Li324fa652021-12-29 17:00:42 -08006236 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006237 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006238 }
6239}
6240
6241void deepcopy_VkDeviceMemoryOpaqueCaptureAddressInfo(
Yilong Li422b0582021-04-30 13:09:43 -07006242 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006243 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006244 const VkDeviceMemoryOpaqueCaptureAddressInfo* from,
6245 VkDeviceMemoryOpaqueCaptureAddressInfo* to)
6246{
Yilong Li422b0582021-04-30 13:09:43 -07006247 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006248 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006249 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006250 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6251 {
6252 rootType = from->sType;
6253 }
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;
Yilong Li48081632021-04-13 22:38:10 -07006259 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006260 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006261 to->pNext = nullptr;
6262 if (pNext_size)
6263 {
Yilong Li324fa652021-12-29 17:00:42 -08006264 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006265 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08006266 }
6267}
6268
6269#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006270#ifdef VK_KHR_surface
6271void deepcopy_VkSurfaceCapabilitiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006272 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006273 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006274 const VkSurfaceCapabilitiesKHR* from,
6275 VkSurfaceCapabilitiesKHR* to)
6276{
Yilong Li422b0582021-04-30 13:09:43 -07006277 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006278 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006279 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07006280 deepcopy_VkExtent2D(alloc, rootType, &from->currentExtent, (VkExtent2D*)(&to->currentExtent));
6281 deepcopy_VkExtent2D(alloc, rootType, &from->minImageExtent, (VkExtent2D*)(&to->minImageExtent));
6282 deepcopy_VkExtent2D(alloc, rootType, &from->maxImageExtent, (VkExtent2D*)(&to->maxImageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006283}
6284
6285void deepcopy_VkSurfaceFormatKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006286 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006287 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006288 const VkSurfaceFormatKHR* from,
6289 VkSurfaceFormatKHR* to)
6290{
Yilong Li422b0582021-04-30 13:09:43 -07006291 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006292 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006293 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006294}
6295
6296#endif
6297#ifdef VK_KHR_swapchain
6298void deepcopy_VkSwapchainCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006299 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006300 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006301 const VkSwapchainCreateInfoKHR* from,
6302 VkSwapchainCreateInfoKHR* to)
6303{
Yilong Li422b0582021-04-30 13:09:43 -07006304 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006305 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006306 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006307 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6308 {
6309 rootType = from->sType;
6310 }
Yilong Li04218f72021-02-19 01:31:17 -08006311 const void* from_pNext = from;
6312 size_t pNext_size = 0u;
6313 while (!pNext_size && from_pNext)
6314 {
6315 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006316 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006317 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006318 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006319 if (pNext_size)
6320 {
Yilong Li324fa652021-12-29 17:00:42 -08006321 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006322 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006323 }
Yilong Li422b0582021-04-30 13:09:43 -07006324 deepcopy_VkExtent2D(alloc, rootType, &from->imageExtent, (VkExtent2D*)(&to->imageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006325 to->pQueueFamilyIndices = nullptr;
6326 if (from->pQueueFamilyIndices)
6327 {
Yilong Li422b0582021-04-30 13:09:43 -07006328 to->pQueueFamilyIndices = (uint32_t*)alloc->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006330}
6331
6332void deepcopy_VkPresentInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006333 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006334 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006335 const VkPresentInfoKHR* from,
6336 VkPresentInfoKHR* to)
6337{
Yilong Li422b0582021-04-30 13:09:43 -07006338 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006339 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006340 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006341 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6342 {
6343 rootType = from->sType;
6344 }
Yilong Li04218f72021-02-19 01:31:17 -08006345 const void* from_pNext = from;
6346 size_t pNext_size = 0u;
6347 while (!pNext_size && from_pNext)
6348 {
6349 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006350 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006351 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006352 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006353 if (pNext_size)
6354 {
Yilong Li324fa652021-12-29 17:00:42 -08006355 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006356 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006357 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006358 to->pWaitSemaphores = nullptr;
6359 if (from->pWaitSemaphores)
6360 {
Yilong Li422b0582021-04-30 13:09:43 -07006361 to->pWaitSemaphores = (VkSemaphore*)alloc->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006362 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006363 to->pSwapchains = nullptr;
6364 if (from->pSwapchains)
6365 {
Yilong Li422b0582021-04-30 13:09:43 -07006366 to->pSwapchains = (VkSwapchainKHR*)alloc->dupArray(from->pSwapchains, from->swapchainCount * sizeof(const VkSwapchainKHR));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006367 }
6368 to->pImageIndices = nullptr;
6369 if (from->pImageIndices)
6370 {
Yilong Li422b0582021-04-30 13:09:43 -07006371 to->pImageIndices = (uint32_t*)alloc->dupArray(from->pImageIndices, from->swapchainCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006372 }
6373 to->pResults = nullptr;
6374 if (from->pResults)
6375 {
Yilong Li422b0582021-04-30 13:09:43 -07006376 to->pResults = (VkResult*)alloc->dupArray(from->pResults, from->swapchainCount * sizeof(VkResult));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006377 }
6378}
6379
6380void deepcopy_VkImageSwapchainCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006381 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006382 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006383 const VkImageSwapchainCreateInfoKHR* from,
6384 VkImageSwapchainCreateInfoKHR* to)
6385{
Yilong Li422b0582021-04-30 13:09:43 -07006386 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006387 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006388 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006389 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6390 {
6391 rootType = from->sType;
6392 }
Yilong Li04218f72021-02-19 01:31:17 -08006393 const void* from_pNext = from;
6394 size_t pNext_size = 0u;
6395 while (!pNext_size && from_pNext)
6396 {
6397 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006398 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006399 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006400 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006401 if (pNext_size)
6402 {
Yilong Li324fa652021-12-29 17:00:42 -08006403 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006404 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006405 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006406}
6407
6408void deepcopy_VkBindImageMemorySwapchainInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006409 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006410 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006411 const VkBindImageMemorySwapchainInfoKHR* from,
6412 VkBindImageMemorySwapchainInfoKHR* to)
6413{
Yilong Li422b0582021-04-30 13:09:43 -07006414 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006415 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006416 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006417 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6418 {
6419 rootType = from->sType;
6420 }
Yilong Li04218f72021-02-19 01:31:17 -08006421 const void* from_pNext = from;
6422 size_t pNext_size = 0u;
6423 while (!pNext_size && from_pNext)
6424 {
6425 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006426 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006427 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006428 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006429 if (pNext_size)
6430 {
Yilong Li324fa652021-12-29 17:00:42 -08006431 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006432 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006433 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006434}
6435
6436void deepcopy_VkAcquireNextImageInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006437 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006438 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006439 const VkAcquireNextImageInfoKHR* from,
6440 VkAcquireNextImageInfoKHR* to)
6441{
Yilong Li422b0582021-04-30 13:09:43 -07006442 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006443 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006444 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006445 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6446 {
6447 rootType = from->sType;
6448 }
Yilong Li04218f72021-02-19 01:31:17 -08006449 const void* from_pNext = from;
6450 size_t pNext_size = 0u;
6451 while (!pNext_size && from_pNext)
6452 {
6453 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006454 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006455 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006456 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006457 if (pNext_size)
6458 {
Yilong Li324fa652021-12-29 17:00:42 -08006459 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006460 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006461 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006462}
6463
6464void deepcopy_VkDeviceGroupPresentCapabilitiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006465 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006466 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006467 const VkDeviceGroupPresentCapabilitiesKHR* from,
6468 VkDeviceGroupPresentCapabilitiesKHR* to)
6469{
Yilong Li422b0582021-04-30 13:09:43 -07006470 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006471 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006472 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006473 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6474 {
6475 rootType = from->sType;
6476 }
Yilong Li04218f72021-02-19 01:31:17 -08006477 const void* from_pNext = from;
6478 size_t pNext_size = 0u;
6479 while (!pNext_size && from_pNext)
6480 {
6481 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006482 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006483 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006484 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006485 if (pNext_size)
6486 {
Yilong Li324fa652021-12-29 17:00:42 -08006487 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006488 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006489 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006490 memcpy(to->presentMask, from->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006491}
6492
6493void deepcopy_VkDeviceGroupPresentInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006494 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006495 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006496 const VkDeviceGroupPresentInfoKHR* from,
6497 VkDeviceGroupPresentInfoKHR* to)
6498{
Yilong Li422b0582021-04-30 13:09:43 -07006499 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006500 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006501 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006502 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6503 {
6504 rootType = from->sType;
6505 }
Yilong Li04218f72021-02-19 01:31:17 -08006506 const void* from_pNext = from;
6507 size_t pNext_size = 0u;
6508 while (!pNext_size && from_pNext)
6509 {
6510 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006511 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006512 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006513 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006514 if (pNext_size)
6515 {
Yilong Li324fa652021-12-29 17:00:42 -08006516 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006517 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006518 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006519 to->pDeviceMasks = nullptr;
6520 if (from->pDeviceMasks)
6521 {
Yilong Li422b0582021-04-30 13:09:43 -07006522 to->pDeviceMasks = (uint32_t*)alloc->dupArray(from->pDeviceMasks, from->swapchainCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006524}
6525
6526void deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006527 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006528 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006529 const VkDeviceGroupSwapchainCreateInfoKHR* from,
6530 VkDeviceGroupSwapchainCreateInfoKHR* to)
6531{
Yilong Li422b0582021-04-30 13:09:43 -07006532 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006533 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006534 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006535 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6536 {
6537 rootType = from->sType;
6538 }
Yilong Li04218f72021-02-19 01:31:17 -08006539 const void* from_pNext = from;
6540 size_t pNext_size = 0u;
6541 while (!pNext_size && from_pNext)
6542 {
6543 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006544 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006545 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006546 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006547 if (pNext_size)
6548 {
Yilong Li324fa652021-12-29 17:00:42 -08006549 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006550 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006551 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006552}
6553
6554#endif
6555#ifdef VK_KHR_display
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006556void deepcopy_VkDisplayModeParametersKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006557 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006558 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006559 const VkDisplayModeParametersKHR* from,
6560 VkDisplayModeParametersKHR* to)
6561{
Yilong Li422b0582021-04-30 13:09:43 -07006562 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006563 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006564 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07006565 deepcopy_VkExtent2D(alloc, rootType, &from->visibleRegion, (VkExtent2D*)(&to->visibleRegion));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006566}
6567
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006568void deepcopy_VkDisplayModeCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006569 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006570 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006571 const VkDisplayModeCreateInfoKHR* from,
6572 VkDisplayModeCreateInfoKHR* to)
6573{
Yilong Li422b0582021-04-30 13:09:43 -07006574 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006575 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006576 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006577 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6578 {
6579 rootType = from->sType;
6580 }
Yilong Li04218f72021-02-19 01:31:17 -08006581 const void* from_pNext = from;
6582 size_t pNext_size = 0u;
6583 while (!pNext_size && from_pNext)
6584 {
6585 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006586 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006587 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006588 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006589 if (pNext_size)
6590 {
Yilong Li324fa652021-12-29 17:00:42 -08006591 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006592 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006593 }
Yilong Li422b0582021-04-30 13:09:43 -07006594 deepcopy_VkDisplayModeParametersKHR(alloc, rootType, &from->parameters, (VkDisplayModeParametersKHR*)(&to->parameters));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006595}
6596
Yilong Lia8d45f12021-02-07 02:30:21 -08006597void deepcopy_VkDisplayModePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006598 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006599 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006600 const VkDisplayModePropertiesKHR* from,
6601 VkDisplayModePropertiesKHR* to)
6602{
Yilong Li422b0582021-04-30 13:09:43 -07006603 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006604 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006605 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07006606 deepcopy_VkDisplayModeParametersKHR(alloc, rootType, &from->parameters, (VkDisplayModeParametersKHR*)(&to->parameters));
Yilong Lia8d45f12021-02-07 02:30:21 -08006607}
6608
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006609void deepcopy_VkDisplayPlaneCapabilitiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006610 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006611 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 const VkDisplayPlaneCapabilitiesKHR* from,
6613 VkDisplayPlaneCapabilitiesKHR* to)
6614{
Yilong Li422b0582021-04-30 13:09:43 -07006615 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006616 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006617 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07006618 deepcopy_VkOffset2D(alloc, rootType, &from->minSrcPosition, (VkOffset2D*)(&to->minSrcPosition));
6619 deepcopy_VkOffset2D(alloc, rootType, &from->maxSrcPosition, (VkOffset2D*)(&to->maxSrcPosition));
6620 deepcopy_VkExtent2D(alloc, rootType, &from->minSrcExtent, (VkExtent2D*)(&to->minSrcExtent));
6621 deepcopy_VkExtent2D(alloc, rootType, &from->maxSrcExtent, (VkExtent2D*)(&to->maxSrcExtent));
6622 deepcopy_VkOffset2D(alloc, rootType, &from->minDstPosition, (VkOffset2D*)(&to->minDstPosition));
6623 deepcopy_VkOffset2D(alloc, rootType, &from->maxDstPosition, (VkOffset2D*)(&to->maxDstPosition));
6624 deepcopy_VkExtent2D(alloc, rootType, &from->minDstExtent, (VkExtent2D*)(&to->minDstExtent));
6625 deepcopy_VkExtent2D(alloc, rootType, &from->maxDstExtent, (VkExtent2D*)(&to->maxDstExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006626}
6627
6628void deepcopy_VkDisplayPlanePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006629 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006630 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006631 const VkDisplayPlanePropertiesKHR* from,
6632 VkDisplayPlanePropertiesKHR* to)
6633{
Yilong Li422b0582021-04-30 13:09:43 -07006634 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006635 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006636 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006637}
6638
Yilong Lia8d45f12021-02-07 02:30:21 -08006639void deepcopy_VkDisplayPropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006640 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006641 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08006642 const VkDisplayPropertiesKHR* from,
6643 VkDisplayPropertiesKHR* to)
6644{
Yilong Li422b0582021-04-30 13:09:43 -07006645 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006646 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08006647 *to = *from;
6648 to->displayName = nullptr;
6649 if (from->displayName)
6650 {
Yilong Li422b0582021-04-30 13:09:43 -07006651 to->displayName = alloc->strDup(from->displayName);
Yilong Lia8d45f12021-02-07 02:30:21 -08006652 }
Yilong Li422b0582021-04-30 13:09:43 -07006653 deepcopy_VkExtent2D(alloc, rootType, &from->physicalDimensions, (VkExtent2D*)(&to->physicalDimensions));
6654 deepcopy_VkExtent2D(alloc, rootType, &from->physicalResolution, (VkExtent2D*)(&to->physicalResolution));
Yilong Lia8d45f12021-02-07 02:30:21 -08006655}
6656
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006657void deepcopy_VkDisplaySurfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006658 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006659 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006660 const VkDisplaySurfaceCreateInfoKHR* from,
6661 VkDisplaySurfaceCreateInfoKHR* to)
6662{
Yilong Li422b0582021-04-30 13:09:43 -07006663 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006664 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006665 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006666 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6667 {
6668 rootType = from->sType;
6669 }
Yilong Li04218f72021-02-19 01:31:17 -08006670 const void* from_pNext = from;
6671 size_t pNext_size = 0u;
6672 while (!pNext_size && from_pNext)
6673 {
6674 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006675 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006676 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006677 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006678 if (pNext_size)
6679 {
Yilong Li324fa652021-12-29 17:00:42 -08006680 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006681 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006682 }
Yilong Li422b0582021-04-30 13:09:43 -07006683 deepcopy_VkExtent2D(alloc, rootType, &from->imageExtent, (VkExtent2D*)(&to->imageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006684}
6685
6686#endif
6687#ifdef VK_KHR_display_swapchain
6688void deepcopy_VkDisplayPresentInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006689 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006690 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006691 const VkDisplayPresentInfoKHR* from,
6692 VkDisplayPresentInfoKHR* to)
6693{
Yilong Li422b0582021-04-30 13:09:43 -07006694 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006695 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006696 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006697 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6698 {
6699 rootType = from->sType;
6700 }
Yilong Li04218f72021-02-19 01:31:17 -08006701 const void* from_pNext = from;
6702 size_t pNext_size = 0u;
6703 while (!pNext_size && from_pNext)
6704 {
6705 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006706 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006707 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006708 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006709 if (pNext_size)
6710 {
Yilong Li324fa652021-12-29 17:00:42 -08006711 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006712 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006713 }
Yilong Li422b0582021-04-30 13:09:43 -07006714 deepcopy_VkRect2D(alloc, rootType, &from->srcRect, (VkRect2D*)(&to->srcRect));
6715 deepcopy_VkRect2D(alloc, rootType, &from->dstRect, (VkRect2D*)(&to->dstRect));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006716}
6717
6718#endif
6719#ifdef VK_KHR_xlib_surface
6720void deepcopy_VkXlibSurfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006721 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006722 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006723 const VkXlibSurfaceCreateInfoKHR* from,
6724 VkXlibSurfaceCreateInfoKHR* to)
6725{
Yilong Li422b0582021-04-30 13:09:43 -07006726 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006727 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006728 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006729 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6730 {
6731 rootType = from->sType;
6732 }
Yilong Li04218f72021-02-19 01:31:17 -08006733 const void* from_pNext = from;
6734 size_t pNext_size = 0u;
6735 while (!pNext_size && from_pNext)
6736 {
6737 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006738 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006739 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006740 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006741 if (pNext_size)
6742 {
Yilong Li324fa652021-12-29 17:00:42 -08006743 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006744 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006745 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006746 to->dpy = nullptr;
6747 if (from->dpy)
6748 {
Yilong Li422b0582021-04-30 13:09:43 -07006749 to->dpy = (Display*)alloc->dupArray(from->dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006750 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006751}
6752
6753#endif
6754#ifdef VK_KHR_xcb_surface
6755void deepcopy_VkXcbSurfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006756 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006757 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006758 const VkXcbSurfaceCreateInfoKHR* from,
6759 VkXcbSurfaceCreateInfoKHR* to)
6760{
Yilong Li422b0582021-04-30 13:09:43 -07006761 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006762 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006763 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006764 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6765 {
6766 rootType = from->sType;
6767 }
Yilong Li04218f72021-02-19 01:31:17 -08006768 const void* from_pNext = from;
6769 size_t pNext_size = 0u;
6770 while (!pNext_size && from_pNext)
6771 {
6772 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006773 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006774 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006775 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006776 if (pNext_size)
6777 {
Yilong Li324fa652021-12-29 17:00:42 -08006778 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006779 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006780 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006781 to->connection = nullptr;
6782 if (from->connection)
6783 {
Yilong Li422b0582021-04-30 13:09:43 -07006784 to->connection = (xcb_connection_t*)alloc->dupArray(from->connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006785 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006786}
6787
6788#endif
6789#ifdef VK_KHR_wayland_surface
6790void deepcopy_VkWaylandSurfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006791 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006792 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006793 const VkWaylandSurfaceCreateInfoKHR* from,
6794 VkWaylandSurfaceCreateInfoKHR* to)
6795{
Yilong Li422b0582021-04-30 13:09:43 -07006796 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006797 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006798 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006799 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6800 {
6801 rootType = from->sType;
6802 }
Yilong Li04218f72021-02-19 01:31:17 -08006803 const void* from_pNext = from;
6804 size_t pNext_size = 0u;
6805 while (!pNext_size && from_pNext)
6806 {
6807 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006808 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006809 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006810 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006811 if (pNext_size)
6812 {
Yilong Li324fa652021-12-29 17:00:42 -08006813 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006814 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006815 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006816 to->display = nullptr;
6817 if (from->display)
6818 {
Yilong Li422b0582021-04-30 13:09:43 -07006819 to->display = (wl_display*)alloc->dupArray(from->display, sizeof(wl_display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006820 }
6821 to->surface = nullptr;
6822 if (from->surface)
6823 {
Yilong Li422b0582021-04-30 13:09:43 -07006824 to->surface = (wl_surface*)alloc->dupArray(from->surface, sizeof(wl_surface));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006825 }
6826}
6827
6828#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006829#ifdef VK_KHR_android_surface
6830void deepcopy_VkAndroidSurfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006831 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006832 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006833 const VkAndroidSurfaceCreateInfoKHR* from,
6834 VkAndroidSurfaceCreateInfoKHR* to)
6835{
Yilong Li422b0582021-04-30 13:09:43 -07006836 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006837 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006838 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006839 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6840 {
6841 rootType = from->sType;
6842 }
Yilong Li04218f72021-02-19 01:31:17 -08006843 const void* from_pNext = from;
6844 size_t pNext_size = 0u;
6845 while (!pNext_size && from_pNext)
6846 {
6847 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006848 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006849 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006850 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006851 if (pNext_size)
6852 {
Yilong Li324fa652021-12-29 17:00:42 -08006853 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006854 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006855 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006856 to->window = nullptr;
6857 if (from->window)
6858 {
Yilong Li422b0582021-04-30 13:09:43 -07006859 to->window = (ANativeWindow*)alloc->dupArray(from->window, sizeof(ANativeWindow));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006860 }
6861}
6862
6863#endif
6864#ifdef VK_KHR_win32_surface
6865void deepcopy_VkWin32SurfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07006866 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07006867 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006868 const VkWin32SurfaceCreateInfoKHR* from,
6869 VkWin32SurfaceCreateInfoKHR* to)
6870{
Yilong Li422b0582021-04-30 13:09:43 -07006871 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07006872 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08006873 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07006874 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6875 {
6876 rootType = from->sType;
6877 }
Yilong Li04218f72021-02-19 01:31:17 -08006878 const void* from_pNext = from;
6879 size_t pNext_size = 0u;
6880 while (!pNext_size && from_pNext)
6881 {
6882 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07006883 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08006884 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006885 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08006886 if (pNext_size)
6887 {
Yilong Li324fa652021-12-29 17:00:42 -08006888 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07006889 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08006890 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006891}
6892
6893#endif
6894#ifdef VK_KHR_sampler_mirror_clamp_to_edge
6895#endif
Yilong Li353409a2022-01-04 02:37:56 -08006896#ifdef VK_KHR_video_queue
6897void deepcopy_VkVideoQueueFamilyProperties2KHR(
6898 Allocator* alloc,
6899 VkStructureType rootType,
6900 const VkVideoQueueFamilyProperties2KHR* from,
6901 VkVideoQueueFamilyProperties2KHR* to)
6902{
6903 (void)alloc;
6904 (void)rootType;
6905 *to = *from;
6906 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6907 {
6908 rootType = from->sType;
6909 }
6910 const void* from_pNext = from;
6911 size_t pNext_size = 0u;
6912 while (!pNext_size && from_pNext)
6913 {
6914 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6915 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
6916 }
6917 to->pNext = nullptr;
6918 if (pNext_size)
6919 {
6920 to->pNext = (void*)alloc->alloc(pNext_size);
6921 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
6922 }
6923}
6924
6925void deepcopy_VkVideoProfileKHR(
6926 Allocator* alloc,
6927 VkStructureType rootType,
6928 const VkVideoProfileKHR* from,
6929 VkVideoProfileKHR* to)
6930{
6931 (void)alloc;
6932 (void)rootType;
6933 *to = *from;
6934 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6935 {
6936 rootType = from->sType;
6937 }
6938 const void* from_pNext = from;
6939 size_t pNext_size = 0u;
6940 while (!pNext_size && from_pNext)
6941 {
6942 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6943 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
6944 }
6945 to->pNext = nullptr;
6946 if (pNext_size)
6947 {
6948 to->pNext = (void*)alloc->alloc(pNext_size);
6949 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
6950 }
6951}
6952
6953void deepcopy_VkVideoProfilesKHR(
6954 Allocator* alloc,
6955 VkStructureType rootType,
6956 const VkVideoProfilesKHR* from,
6957 VkVideoProfilesKHR* to)
6958{
6959 (void)alloc;
6960 (void)rootType;
6961 *to = *from;
6962 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6963 {
6964 rootType = from->sType;
6965 }
6966 const void* from_pNext = from;
6967 size_t pNext_size = 0u;
6968 while (!pNext_size && from_pNext)
6969 {
6970 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
6971 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
6972 }
6973 to->pNext = nullptr;
6974 if (pNext_size)
6975 {
6976 to->pNext = (void*)alloc->alloc(pNext_size);
6977 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
6978 }
6979 to->pProfiles = nullptr;
6980 if (from->pProfiles)
6981 {
6982 to->pProfiles = (VkVideoProfileKHR*)alloc->alloc(sizeof(const VkVideoProfileKHR));
6983 deepcopy_VkVideoProfileKHR(alloc, rootType, from->pProfiles, (VkVideoProfileKHR*)(to->pProfiles));
6984 }
6985}
6986
6987void deepcopy_VkVideoCapabilitiesKHR(
6988 Allocator* alloc,
6989 VkStructureType rootType,
6990 const VkVideoCapabilitiesKHR* from,
6991 VkVideoCapabilitiesKHR* to)
6992{
6993 (void)alloc;
6994 (void)rootType;
6995 *to = *from;
6996 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
6997 {
6998 rootType = from->sType;
6999 }
7000 const void* from_pNext = from;
7001 size_t pNext_size = 0u;
7002 while (!pNext_size && from_pNext)
7003 {
7004 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7005 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7006 }
7007 to->pNext = nullptr;
7008 if (pNext_size)
7009 {
7010 to->pNext = (void*)alloc->alloc(pNext_size);
7011 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7012 }
7013 deepcopy_VkExtent2D(alloc, rootType, &from->videoPictureExtentGranularity, (VkExtent2D*)(&to->videoPictureExtentGranularity));
7014 deepcopy_VkExtent2D(alloc, rootType, &from->minExtent, (VkExtent2D*)(&to->minExtent));
7015 deepcopy_VkExtent2D(alloc, rootType, &from->maxExtent, (VkExtent2D*)(&to->maxExtent));
7016}
7017
7018void deepcopy_VkPhysicalDeviceVideoFormatInfoKHR(
7019 Allocator* alloc,
7020 VkStructureType rootType,
7021 const VkPhysicalDeviceVideoFormatInfoKHR* from,
7022 VkPhysicalDeviceVideoFormatInfoKHR* to)
7023{
7024 (void)alloc;
7025 (void)rootType;
7026 *to = *from;
7027 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7028 {
7029 rootType = from->sType;
7030 }
7031 const void* from_pNext = from;
7032 size_t pNext_size = 0u;
7033 while (!pNext_size && from_pNext)
7034 {
7035 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7036 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7037 }
7038 to->pNext = nullptr;
7039 if (pNext_size)
7040 {
7041 to->pNext = (void*)alloc->alloc(pNext_size);
7042 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7043 }
7044 to->pVideoProfiles = nullptr;
7045 if (from->pVideoProfiles)
7046 {
7047 to->pVideoProfiles = (VkVideoProfilesKHR*)alloc->alloc(sizeof(const VkVideoProfilesKHR));
7048 deepcopy_VkVideoProfilesKHR(alloc, rootType, from->pVideoProfiles, (VkVideoProfilesKHR*)(to->pVideoProfiles));
7049 }
7050}
7051
7052void deepcopy_VkVideoFormatPropertiesKHR(
7053 Allocator* alloc,
7054 VkStructureType rootType,
7055 const VkVideoFormatPropertiesKHR* from,
7056 VkVideoFormatPropertiesKHR* to)
7057{
7058 (void)alloc;
7059 (void)rootType;
7060 *to = *from;
7061 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7062 {
7063 rootType = from->sType;
7064 }
7065 const void* from_pNext = from;
7066 size_t pNext_size = 0u;
7067 while (!pNext_size && from_pNext)
7068 {
7069 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7070 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7071 }
7072 to->pNext = nullptr;
7073 if (pNext_size)
7074 {
7075 to->pNext = (void*)alloc->alloc(pNext_size);
7076 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7077 }
7078}
7079
7080void deepcopy_VkVideoPictureResourceKHR(
7081 Allocator* alloc,
7082 VkStructureType rootType,
7083 const VkVideoPictureResourceKHR* from,
7084 VkVideoPictureResourceKHR* to)
7085{
7086 (void)alloc;
7087 (void)rootType;
7088 *to = *from;
7089 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7090 {
7091 rootType = from->sType;
7092 }
7093 const void* from_pNext = from;
7094 size_t pNext_size = 0u;
7095 while (!pNext_size && from_pNext)
7096 {
7097 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7098 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7099 }
7100 to->pNext = nullptr;
7101 if (pNext_size)
7102 {
7103 to->pNext = (void*)alloc->alloc(pNext_size);
7104 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7105 }
7106 deepcopy_VkOffset2D(alloc, rootType, &from->codedOffset, (VkOffset2D*)(&to->codedOffset));
7107 deepcopy_VkExtent2D(alloc, rootType, &from->codedExtent, (VkExtent2D*)(&to->codedExtent));
7108}
7109
7110void deepcopy_VkVideoReferenceSlotKHR(
7111 Allocator* alloc,
7112 VkStructureType rootType,
7113 const VkVideoReferenceSlotKHR* from,
7114 VkVideoReferenceSlotKHR* to)
7115{
7116 (void)alloc;
7117 (void)rootType;
7118 *to = *from;
7119 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7120 {
7121 rootType = from->sType;
7122 }
7123 const void* from_pNext = from;
7124 size_t pNext_size = 0u;
7125 while (!pNext_size && from_pNext)
7126 {
7127 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7128 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7129 }
7130 to->pNext = nullptr;
7131 if (pNext_size)
7132 {
7133 to->pNext = (void*)alloc->alloc(pNext_size);
7134 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7135 }
7136 to->pPictureResource = nullptr;
7137 if (from->pPictureResource)
7138 {
7139 to->pPictureResource = (VkVideoPictureResourceKHR*)alloc->alloc(sizeof(const VkVideoPictureResourceKHR));
7140 deepcopy_VkVideoPictureResourceKHR(alloc, rootType, from->pPictureResource, (VkVideoPictureResourceKHR*)(to->pPictureResource));
7141 }
7142}
7143
7144void deepcopy_VkVideoGetMemoryPropertiesKHR(
7145 Allocator* alloc,
7146 VkStructureType rootType,
7147 const VkVideoGetMemoryPropertiesKHR* from,
7148 VkVideoGetMemoryPropertiesKHR* to)
7149{
7150 (void)alloc;
7151 (void)rootType;
7152 *to = *from;
7153 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7154 {
7155 rootType = from->sType;
7156 }
7157 const void* from_pNext = from;
7158 size_t pNext_size = 0u;
7159 while (!pNext_size && from_pNext)
7160 {
7161 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7162 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7163 }
7164 to->pNext = nullptr;
7165 if (pNext_size)
7166 {
7167 to->pNext = (void*)alloc->alloc(pNext_size);
7168 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7169 }
7170 to->pMemoryRequirements = nullptr;
7171 if (from->pMemoryRequirements)
7172 {
7173 to->pMemoryRequirements = (VkMemoryRequirements2*)alloc->alloc(sizeof(VkMemoryRequirements2));
7174 deepcopy_VkMemoryRequirements2(alloc, rootType, from->pMemoryRequirements, (VkMemoryRequirements2*)(to->pMemoryRequirements));
7175 }
7176}
7177
7178void deepcopy_VkVideoBindMemoryKHR(
7179 Allocator* alloc,
7180 VkStructureType rootType,
7181 const VkVideoBindMemoryKHR* from,
7182 VkVideoBindMemoryKHR* to)
7183{
7184 (void)alloc;
7185 (void)rootType;
7186 *to = *from;
7187 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7188 {
7189 rootType = from->sType;
7190 }
7191 const void* from_pNext = from;
7192 size_t pNext_size = 0u;
7193 while (!pNext_size && from_pNext)
7194 {
7195 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7196 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7197 }
7198 to->pNext = nullptr;
7199 if (pNext_size)
7200 {
7201 to->pNext = (void*)alloc->alloc(pNext_size);
7202 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7203 }
7204}
7205
7206void deepcopy_VkVideoSessionCreateInfoKHR(
7207 Allocator* alloc,
7208 VkStructureType rootType,
7209 const VkVideoSessionCreateInfoKHR* from,
7210 VkVideoSessionCreateInfoKHR* to)
7211{
7212 (void)alloc;
7213 (void)rootType;
7214 *to = *from;
7215 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7216 {
7217 rootType = from->sType;
7218 }
7219 const void* from_pNext = from;
7220 size_t pNext_size = 0u;
7221 while (!pNext_size && from_pNext)
7222 {
7223 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7224 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7225 }
7226 to->pNext = nullptr;
7227 if (pNext_size)
7228 {
7229 to->pNext = (void*)alloc->alloc(pNext_size);
7230 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7231 }
7232 to->pVideoProfile = nullptr;
7233 if (from->pVideoProfile)
7234 {
7235 to->pVideoProfile = (VkVideoProfileKHR*)alloc->alloc(sizeof(const VkVideoProfileKHR));
7236 deepcopy_VkVideoProfileKHR(alloc, rootType, from->pVideoProfile, (VkVideoProfileKHR*)(to->pVideoProfile));
7237 }
7238 deepcopy_VkExtent2D(alloc, rootType, &from->maxCodedExtent, (VkExtent2D*)(&to->maxCodedExtent));
7239}
7240
7241void deepcopy_VkVideoSessionParametersCreateInfoKHR(
7242 Allocator* alloc,
7243 VkStructureType rootType,
7244 const VkVideoSessionParametersCreateInfoKHR* from,
7245 VkVideoSessionParametersCreateInfoKHR* to)
7246{
7247 (void)alloc;
7248 (void)rootType;
7249 *to = *from;
7250 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7251 {
7252 rootType = from->sType;
7253 }
7254 const void* from_pNext = from;
7255 size_t pNext_size = 0u;
7256 while (!pNext_size && from_pNext)
7257 {
7258 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7259 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7260 }
7261 to->pNext = nullptr;
7262 if (pNext_size)
7263 {
7264 to->pNext = (void*)alloc->alloc(pNext_size);
7265 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7266 }
7267}
7268
7269void deepcopy_VkVideoSessionParametersUpdateInfoKHR(
7270 Allocator* alloc,
7271 VkStructureType rootType,
7272 const VkVideoSessionParametersUpdateInfoKHR* from,
7273 VkVideoSessionParametersUpdateInfoKHR* to)
7274{
7275 (void)alloc;
7276 (void)rootType;
7277 *to = *from;
7278 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7279 {
7280 rootType = from->sType;
7281 }
7282 const void* from_pNext = from;
7283 size_t pNext_size = 0u;
7284 while (!pNext_size && from_pNext)
7285 {
7286 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7287 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7288 }
7289 to->pNext = nullptr;
7290 if (pNext_size)
7291 {
7292 to->pNext = (void*)alloc->alloc(pNext_size);
7293 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7294 }
7295}
7296
7297void deepcopy_VkVideoBeginCodingInfoKHR(
7298 Allocator* alloc,
7299 VkStructureType rootType,
7300 const VkVideoBeginCodingInfoKHR* from,
7301 VkVideoBeginCodingInfoKHR* to)
7302{
7303 (void)alloc;
7304 (void)rootType;
7305 *to = *from;
7306 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7307 {
7308 rootType = from->sType;
7309 }
7310 const void* from_pNext = from;
7311 size_t pNext_size = 0u;
7312 while (!pNext_size && from_pNext)
7313 {
7314 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7315 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7316 }
7317 to->pNext = nullptr;
7318 if (pNext_size)
7319 {
7320 to->pNext = (void*)alloc->alloc(pNext_size);
7321 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7322 }
7323 if (from)
7324 {
7325 to->pReferenceSlots = nullptr;
7326 if (from->pReferenceSlots)
7327 {
7328 to->pReferenceSlots = (VkVideoReferenceSlotKHR*)alloc->alloc(from->referenceSlotCount * sizeof(const VkVideoReferenceSlotKHR));
7329 to->referenceSlotCount = from->referenceSlotCount;
7330 for (uint32_t i = 0; i < (uint32_t)from->referenceSlotCount; ++i)
7331 {
7332 deepcopy_VkVideoReferenceSlotKHR(alloc, rootType, from->pReferenceSlots + i, (VkVideoReferenceSlotKHR*)(to->pReferenceSlots + i));
7333 }
7334 }
7335 }
7336}
7337
7338void deepcopy_VkVideoEndCodingInfoKHR(
7339 Allocator* alloc,
7340 VkStructureType rootType,
7341 const VkVideoEndCodingInfoKHR* from,
7342 VkVideoEndCodingInfoKHR* to)
7343{
7344 (void)alloc;
7345 (void)rootType;
7346 *to = *from;
7347 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7348 {
7349 rootType = from->sType;
7350 }
7351 const void* from_pNext = from;
7352 size_t pNext_size = 0u;
7353 while (!pNext_size && from_pNext)
7354 {
7355 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7356 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7357 }
7358 to->pNext = nullptr;
7359 if (pNext_size)
7360 {
7361 to->pNext = (void*)alloc->alloc(pNext_size);
7362 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7363 }
7364}
7365
7366void deepcopy_VkVideoCodingControlInfoKHR(
7367 Allocator* alloc,
7368 VkStructureType rootType,
7369 const VkVideoCodingControlInfoKHR* from,
7370 VkVideoCodingControlInfoKHR* to)
7371{
7372 (void)alloc;
7373 (void)rootType;
7374 *to = *from;
7375 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7376 {
7377 rootType = from->sType;
7378 }
7379 const void* from_pNext = from;
7380 size_t pNext_size = 0u;
7381 while (!pNext_size && from_pNext)
7382 {
7383 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7384 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7385 }
7386 to->pNext = nullptr;
7387 if (pNext_size)
7388 {
7389 to->pNext = (void*)alloc->alloc(pNext_size);
7390 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7391 }
7392}
7393
7394#endif
7395#ifdef VK_KHR_video_decode_queue
7396void deepcopy_VkVideoDecodeInfoKHR(
7397 Allocator* alloc,
7398 VkStructureType rootType,
7399 const VkVideoDecodeInfoKHR* from,
7400 VkVideoDecodeInfoKHR* to)
7401{
7402 (void)alloc;
7403 (void)rootType;
7404 *to = *from;
7405 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7406 {
7407 rootType = from->sType;
7408 }
7409 const void* from_pNext = from;
7410 size_t pNext_size = 0u;
7411 while (!pNext_size && from_pNext)
7412 {
7413 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7414 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7415 }
7416 to->pNext = nullptr;
7417 if (pNext_size)
7418 {
7419 to->pNext = (void*)alloc->alloc(pNext_size);
7420 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7421 }
7422 deepcopy_VkOffset2D(alloc, rootType, &from->codedOffset, (VkOffset2D*)(&to->codedOffset));
7423 deepcopy_VkExtent2D(alloc, rootType, &from->codedExtent, (VkExtent2D*)(&to->codedExtent));
7424 deepcopy_VkVideoPictureResourceKHR(alloc, rootType, &from->dstPictureResource, (VkVideoPictureResourceKHR*)(&to->dstPictureResource));
7425 to->pSetupReferenceSlot = nullptr;
7426 if (from->pSetupReferenceSlot)
7427 {
7428 to->pSetupReferenceSlot = (VkVideoReferenceSlotKHR*)alloc->alloc(sizeof(const VkVideoReferenceSlotKHR));
7429 deepcopy_VkVideoReferenceSlotKHR(alloc, rootType, from->pSetupReferenceSlot, (VkVideoReferenceSlotKHR*)(to->pSetupReferenceSlot));
7430 }
7431 if (from)
7432 {
7433 to->pReferenceSlots = nullptr;
7434 if (from->pReferenceSlots)
7435 {
7436 to->pReferenceSlots = (VkVideoReferenceSlotKHR*)alloc->alloc(from->referenceSlotCount * sizeof(const VkVideoReferenceSlotKHR));
7437 to->referenceSlotCount = from->referenceSlotCount;
7438 for (uint32_t i = 0; i < (uint32_t)from->referenceSlotCount; ++i)
7439 {
7440 deepcopy_VkVideoReferenceSlotKHR(alloc, rootType, from->pReferenceSlots + i, (VkVideoReferenceSlotKHR*)(to->pReferenceSlots + i));
7441 }
7442 }
7443 }
7444}
7445
7446#endif
7447#ifdef VK_KHR_dynamic_rendering
7448void deepcopy_VkRenderingAttachmentInfoKHR(
7449 Allocator* alloc,
7450 VkStructureType rootType,
7451 const VkRenderingAttachmentInfoKHR* from,
7452 VkRenderingAttachmentInfoKHR* to)
7453{
7454 (void)alloc;
7455 (void)rootType;
7456 *to = *from;
7457 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7458 {
7459 rootType = from->sType;
7460 }
7461 const void* from_pNext = from;
7462 size_t pNext_size = 0u;
7463 while (!pNext_size && from_pNext)
7464 {
7465 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7466 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7467 }
7468 to->pNext = nullptr;
7469 if (pNext_size)
7470 {
7471 to->pNext = (void*)alloc->alloc(pNext_size);
7472 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7473 }
7474 deepcopy_VkClearValue(alloc, rootType, &from->clearValue, (VkClearValue*)(&to->clearValue));
7475}
7476
7477void deepcopy_VkRenderingInfoKHR(
7478 Allocator* alloc,
7479 VkStructureType rootType,
7480 const VkRenderingInfoKHR* from,
7481 VkRenderingInfoKHR* to)
7482{
7483 (void)alloc;
7484 (void)rootType;
7485 *to = *from;
7486 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7487 {
7488 rootType = from->sType;
7489 }
7490 const void* from_pNext = from;
7491 size_t pNext_size = 0u;
7492 while (!pNext_size && from_pNext)
7493 {
7494 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7495 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7496 }
7497 to->pNext = nullptr;
7498 if (pNext_size)
7499 {
7500 to->pNext = (void*)alloc->alloc(pNext_size);
7501 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7502 }
7503 deepcopy_VkRect2D(alloc, rootType, &from->renderArea, (VkRect2D*)(&to->renderArea));
7504 if (from)
7505 {
7506 to->pColorAttachments = nullptr;
7507 if (from->pColorAttachments)
7508 {
7509 to->pColorAttachments = (VkRenderingAttachmentInfoKHR*)alloc->alloc(from->colorAttachmentCount * sizeof(const VkRenderingAttachmentInfoKHR));
7510 to->colorAttachmentCount = from->colorAttachmentCount;
7511 for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
7512 {
7513 deepcopy_VkRenderingAttachmentInfoKHR(alloc, rootType, from->pColorAttachments + i, (VkRenderingAttachmentInfoKHR*)(to->pColorAttachments + i));
7514 }
7515 }
7516 }
7517 to->pDepthAttachment = nullptr;
7518 if (from->pDepthAttachment)
7519 {
7520 to->pDepthAttachment = (VkRenderingAttachmentInfoKHR*)alloc->alloc(sizeof(const VkRenderingAttachmentInfoKHR));
7521 deepcopy_VkRenderingAttachmentInfoKHR(alloc, rootType, from->pDepthAttachment, (VkRenderingAttachmentInfoKHR*)(to->pDepthAttachment));
7522 }
7523 to->pStencilAttachment = nullptr;
7524 if (from->pStencilAttachment)
7525 {
7526 to->pStencilAttachment = (VkRenderingAttachmentInfoKHR*)alloc->alloc(sizeof(const VkRenderingAttachmentInfoKHR));
7527 deepcopy_VkRenderingAttachmentInfoKHR(alloc, rootType, from->pStencilAttachment, (VkRenderingAttachmentInfoKHR*)(to->pStencilAttachment));
7528 }
7529}
7530
7531void deepcopy_VkPipelineRenderingCreateInfoKHR(
7532 Allocator* alloc,
7533 VkStructureType rootType,
7534 const VkPipelineRenderingCreateInfoKHR* from,
7535 VkPipelineRenderingCreateInfoKHR* to)
7536{
7537 (void)alloc;
7538 (void)rootType;
7539 *to = *from;
7540 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7541 {
7542 rootType = from->sType;
7543 }
7544 const void* from_pNext = from;
7545 size_t pNext_size = 0u;
7546 while (!pNext_size && from_pNext)
7547 {
7548 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7549 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7550 }
7551 to->pNext = nullptr;
7552 if (pNext_size)
7553 {
7554 to->pNext = (void*)alloc->alloc(pNext_size);
7555 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7556 }
7557 to->pColorAttachmentFormats = nullptr;
7558 if (from->pColorAttachmentFormats)
7559 {
7560 to->pColorAttachmentFormats = (VkFormat*)alloc->dupArray(from->pColorAttachmentFormats, from->colorAttachmentCount * sizeof(const VkFormat));
7561 }
7562}
7563
7564void deepcopy_VkPhysicalDeviceDynamicRenderingFeaturesKHR(
7565 Allocator* alloc,
7566 VkStructureType rootType,
7567 const VkPhysicalDeviceDynamicRenderingFeaturesKHR* from,
7568 VkPhysicalDeviceDynamicRenderingFeaturesKHR* to)
7569{
7570 (void)alloc;
7571 (void)rootType;
7572 *to = *from;
7573 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7574 {
7575 rootType = from->sType;
7576 }
7577 const void* from_pNext = from;
7578 size_t pNext_size = 0u;
7579 while (!pNext_size && from_pNext)
7580 {
7581 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7582 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7583 }
7584 to->pNext = nullptr;
7585 if (pNext_size)
7586 {
7587 to->pNext = (void*)alloc->alloc(pNext_size);
7588 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7589 }
7590}
7591
7592void deepcopy_VkCommandBufferInheritanceRenderingInfoKHR(
7593 Allocator* alloc,
7594 VkStructureType rootType,
7595 const VkCommandBufferInheritanceRenderingInfoKHR* from,
7596 VkCommandBufferInheritanceRenderingInfoKHR* to)
7597{
7598 (void)alloc;
7599 (void)rootType;
7600 *to = *from;
7601 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7602 {
7603 rootType = from->sType;
7604 }
7605 const void* from_pNext = from;
7606 size_t pNext_size = 0u;
7607 while (!pNext_size && from_pNext)
7608 {
7609 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7610 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7611 }
7612 to->pNext = nullptr;
7613 if (pNext_size)
7614 {
7615 to->pNext = (void*)alloc->alloc(pNext_size);
7616 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7617 }
7618 to->pColorAttachmentFormats = nullptr;
7619 if (from->pColorAttachmentFormats)
7620 {
7621 to->pColorAttachmentFormats = (VkFormat*)alloc->dupArray(from->pColorAttachmentFormats, from->colorAttachmentCount * sizeof(const VkFormat));
7622 }
7623}
7624
7625void deepcopy_VkRenderingFragmentShadingRateAttachmentInfoKHR(
7626 Allocator* alloc,
7627 VkStructureType rootType,
7628 const VkRenderingFragmentShadingRateAttachmentInfoKHR* from,
7629 VkRenderingFragmentShadingRateAttachmentInfoKHR* to)
7630{
7631 (void)alloc;
7632 (void)rootType;
7633 *to = *from;
7634 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7635 {
7636 rootType = from->sType;
7637 }
7638 const void* from_pNext = from;
7639 size_t pNext_size = 0u;
7640 while (!pNext_size && from_pNext)
7641 {
7642 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7643 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7644 }
7645 to->pNext = nullptr;
7646 if (pNext_size)
7647 {
7648 to->pNext = (void*)alloc->alloc(pNext_size);
7649 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7650 }
7651 deepcopy_VkExtent2D(alloc, rootType, &from->shadingRateAttachmentTexelSize, (VkExtent2D*)(&to->shadingRateAttachmentTexelSize));
7652}
7653
7654void deepcopy_VkRenderingFragmentDensityMapAttachmentInfoEXT(
7655 Allocator* alloc,
7656 VkStructureType rootType,
7657 const VkRenderingFragmentDensityMapAttachmentInfoEXT* from,
7658 VkRenderingFragmentDensityMapAttachmentInfoEXT* to)
7659{
7660 (void)alloc;
7661 (void)rootType;
7662 *to = *from;
7663 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7664 {
7665 rootType = from->sType;
7666 }
7667 const void* from_pNext = from;
7668 size_t pNext_size = 0u;
7669 while (!pNext_size && from_pNext)
7670 {
7671 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7672 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7673 }
7674 to->pNext = nullptr;
7675 if (pNext_size)
7676 {
7677 to->pNext = (void*)alloc->alloc(pNext_size);
7678 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7679 }
7680}
7681
7682void deepcopy_VkAttachmentSampleCountInfoAMD(
7683 Allocator* alloc,
7684 VkStructureType rootType,
7685 const VkAttachmentSampleCountInfoAMD* from,
7686 VkAttachmentSampleCountInfoAMD* to)
7687{
7688 (void)alloc;
7689 (void)rootType;
7690 *to = *from;
7691 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7692 {
7693 rootType = from->sType;
7694 }
7695 const void* from_pNext = from;
7696 size_t pNext_size = 0u;
7697 while (!pNext_size && from_pNext)
7698 {
7699 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7700 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7701 }
7702 to->pNext = nullptr;
7703 if (pNext_size)
7704 {
7705 to->pNext = (void*)alloc->alloc(pNext_size);
7706 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7707 }
7708 to->pColorAttachmentSamples = nullptr;
7709 if (from->pColorAttachmentSamples)
7710 {
7711 to->pColorAttachmentSamples = (VkSampleCountFlagBits*)alloc->dupArray(from->pColorAttachmentSamples, from->colorAttachmentCount * sizeof(const VkSampleCountFlagBits));
7712 }
7713}
7714
7715void deepcopy_VkMultiviewPerViewAttributesInfoNVX(
7716 Allocator* alloc,
7717 VkStructureType rootType,
7718 const VkMultiviewPerViewAttributesInfoNVX* from,
7719 VkMultiviewPerViewAttributesInfoNVX* to)
7720{
7721 (void)alloc;
7722 (void)rootType;
7723 *to = *from;
7724 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7725 {
7726 rootType = from->sType;
7727 }
7728 const void* from_pNext = from;
7729 size_t pNext_size = 0u;
7730 while (!pNext_size && from_pNext)
7731 {
7732 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
7733 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
7734 }
7735 to->pNext = nullptr;
7736 if (pNext_size)
7737 {
7738 to->pNext = (void*)alloc->alloc(pNext_size);
7739 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
7740 }
7741}
7742
7743#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007744#ifdef VK_KHR_multiview
7745#endif
7746#ifdef VK_KHR_get_physical_device_properties2
7747#endif
7748#ifdef VK_KHR_device_group
7749#endif
7750#ifdef VK_KHR_shader_draw_parameters
7751#endif
7752#ifdef VK_KHR_maintenance1
7753#endif
7754#ifdef VK_KHR_device_group_creation
7755#endif
7756#ifdef VK_KHR_external_memory_capabilities
7757#endif
7758#ifdef VK_KHR_external_memory
7759#endif
7760#ifdef VK_KHR_external_memory_win32
7761void deepcopy_VkImportMemoryWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007762 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007763 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007764 const VkImportMemoryWin32HandleInfoKHR* from,
7765 VkImportMemoryWin32HandleInfoKHR* to)
7766{
Yilong Li422b0582021-04-30 13:09:43 -07007767 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007768 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007769 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007770 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7771 {
7772 rootType = from->sType;
7773 }
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;
Yilong Li48081632021-04-13 22:38:10 -07007779 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007780 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007781 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007782 if (pNext_size)
7783 {
Yilong Li324fa652021-12-29 17:00:42 -08007784 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07007785 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007786 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007787}
7788
7789void deepcopy_VkExportMemoryWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007790 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007791 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007792 const VkExportMemoryWin32HandleInfoKHR* from,
7793 VkExportMemoryWin32HandleInfoKHR* to)
7794{
Yilong Li422b0582021-04-30 13:09:43 -07007795 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007796 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007797 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007798 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7799 {
7800 rootType = from->sType;
7801 }
Yilong Li04218f72021-02-19 01:31:17 -08007802 const void* from_pNext = from;
7803 size_t pNext_size = 0u;
7804 while (!pNext_size && from_pNext)
7805 {
7806 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007807 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007808 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007809 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007810 if (pNext_size)
7811 {
Yilong Li324fa652021-12-29 17:00:42 -08007812 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07007813 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007814 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007815 to->pAttributes = nullptr;
7816 if (from->pAttributes)
7817 {
Yilong Li422b0582021-04-30 13:09:43 -07007818 to->pAttributes = (SECURITY_ATTRIBUTES*)alloc->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007819 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007820}
7821
7822void deepcopy_VkMemoryWin32HandlePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007823 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007824 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007825 const VkMemoryWin32HandlePropertiesKHR* from,
7826 VkMemoryWin32HandlePropertiesKHR* to)
7827{
Yilong Li422b0582021-04-30 13:09:43 -07007828 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007829 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007830 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007831 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7832 {
7833 rootType = from->sType;
7834 }
Yilong Li04218f72021-02-19 01:31:17 -08007835 const void* from_pNext = from;
7836 size_t pNext_size = 0u;
7837 while (!pNext_size && from_pNext)
7838 {
7839 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007840 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007841 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007842 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007843 if (pNext_size)
7844 {
Yilong Li422b0582021-04-30 13:09:43 -07007845 to->pNext = (void*)alloc->alloc(pNext_size);
7846 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007847 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007848}
7849
7850void deepcopy_VkMemoryGetWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007851 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007852 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007853 const VkMemoryGetWin32HandleInfoKHR* from,
7854 VkMemoryGetWin32HandleInfoKHR* to)
7855{
Yilong Li422b0582021-04-30 13:09:43 -07007856 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007857 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007858 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007859 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7860 {
7861 rootType = from->sType;
7862 }
Yilong Li04218f72021-02-19 01:31:17 -08007863 const void* from_pNext = from;
7864 size_t pNext_size = 0u;
7865 while (!pNext_size && from_pNext)
7866 {
7867 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007868 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007869 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007870 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007871 if (pNext_size)
7872 {
Yilong Li324fa652021-12-29 17:00:42 -08007873 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07007874 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007875 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007876}
7877
7878#endif
7879#ifdef VK_KHR_external_memory_fd
7880void deepcopy_VkImportMemoryFdInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007881 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007882 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007883 const VkImportMemoryFdInfoKHR* from,
7884 VkImportMemoryFdInfoKHR* to)
7885{
Yilong Li422b0582021-04-30 13:09:43 -07007886 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007887 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007888 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007889 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7890 {
7891 rootType = from->sType;
7892 }
Yilong Li04218f72021-02-19 01:31:17 -08007893 const void* from_pNext = from;
7894 size_t pNext_size = 0u;
7895 while (!pNext_size && from_pNext)
7896 {
7897 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007898 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007899 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007900 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007901 if (pNext_size)
7902 {
Yilong Li324fa652021-12-29 17:00:42 -08007903 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07007904 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007905 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007906}
7907
7908void deepcopy_VkMemoryFdPropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007909 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007910 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007911 const VkMemoryFdPropertiesKHR* from,
7912 VkMemoryFdPropertiesKHR* to)
7913{
Yilong Li422b0582021-04-30 13:09:43 -07007914 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007915 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007916 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007917 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7918 {
7919 rootType = from->sType;
7920 }
Yilong Li04218f72021-02-19 01:31:17 -08007921 const void* from_pNext = from;
7922 size_t pNext_size = 0u;
7923 while (!pNext_size && from_pNext)
7924 {
7925 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007926 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007927 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007928 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007929 if (pNext_size)
7930 {
Yilong Li422b0582021-04-30 13:09:43 -07007931 to->pNext = (void*)alloc->alloc(pNext_size);
7932 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007933 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007934}
7935
7936void deepcopy_VkMemoryGetFdInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007937 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007938 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007939 const VkMemoryGetFdInfoKHR* from,
7940 VkMemoryGetFdInfoKHR* to)
7941{
Yilong Li422b0582021-04-30 13:09:43 -07007942 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007943 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007944 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007945 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7946 {
7947 rootType = from->sType;
7948 }
Yilong Li04218f72021-02-19 01:31:17 -08007949 const void* from_pNext = from;
7950 size_t pNext_size = 0u;
7951 while (!pNext_size && from_pNext)
7952 {
7953 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007954 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007955 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007956 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007957 if (pNext_size)
7958 {
Yilong Li324fa652021-12-29 17:00:42 -08007959 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07007960 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007961 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007962}
7963
7964#endif
7965#ifdef VK_KHR_win32_keyed_mutex
7966void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07007967 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07007968 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007969 const VkWin32KeyedMutexAcquireReleaseInfoKHR* from,
7970 VkWin32KeyedMutexAcquireReleaseInfoKHR* to)
7971{
Yilong Li422b0582021-04-30 13:09:43 -07007972 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07007973 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08007974 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07007975 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
7976 {
7977 rootType = from->sType;
7978 }
Yilong Li04218f72021-02-19 01:31:17 -08007979 const void* from_pNext = from;
7980 size_t pNext_size = 0u;
7981 while (!pNext_size && from_pNext)
7982 {
7983 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07007984 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08007985 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08007986 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08007987 if (pNext_size)
7988 {
Yilong Li324fa652021-12-29 17:00:42 -08007989 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07007990 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08007991 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007992 to->pAcquireSyncs = nullptr;
7993 if (from->pAcquireSyncs)
7994 {
Yilong Li422b0582021-04-30 13:09:43 -07007995 to->pAcquireSyncs = (VkDeviceMemory*)alloc->dupArray(from->pAcquireSyncs, from->acquireCount * sizeof(const VkDeviceMemory));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007996 }
7997 to->pAcquireKeys = nullptr;
7998 if (from->pAcquireKeys)
7999 {
Yilong Li422b0582021-04-30 13:09:43 -07008000 to->pAcquireKeys = (uint64_t*)alloc->dupArray(from->pAcquireKeys, from->acquireCount * sizeof(const uint64_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008001 }
8002 to->pAcquireTimeouts = nullptr;
8003 if (from->pAcquireTimeouts)
8004 {
Yilong Li422b0582021-04-30 13:09:43 -07008005 to->pAcquireTimeouts = (uint32_t*)alloc->dupArray(from->pAcquireTimeouts, from->acquireCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008006 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008007 to->pReleaseSyncs = nullptr;
8008 if (from->pReleaseSyncs)
8009 {
Yilong Li422b0582021-04-30 13:09:43 -07008010 to->pReleaseSyncs = (VkDeviceMemory*)alloc->dupArray(from->pReleaseSyncs, from->releaseCount * sizeof(const VkDeviceMemory));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008011 }
8012 to->pReleaseKeys = nullptr;
8013 if (from->pReleaseKeys)
8014 {
Yilong Li422b0582021-04-30 13:09:43 -07008015 to->pReleaseKeys = (uint64_t*)alloc->dupArray(from->pReleaseKeys, from->releaseCount * sizeof(const uint64_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008016 }
8017}
8018
8019#endif
8020#ifdef VK_KHR_external_semaphore_capabilities
8021#endif
8022#ifdef VK_KHR_external_semaphore
8023#endif
8024#ifdef VK_KHR_external_semaphore_win32
8025void deepcopy_VkImportSemaphoreWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008026 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008027 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008028 const VkImportSemaphoreWin32HandleInfoKHR* from,
8029 VkImportSemaphoreWin32HandleInfoKHR* to)
8030{
Yilong Li422b0582021-04-30 13:09:43 -07008031 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008032 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008033 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008034 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8035 {
8036 rootType = from->sType;
8037 }
Yilong Li04218f72021-02-19 01:31:17 -08008038 const void* from_pNext = from;
8039 size_t pNext_size = 0u;
8040 while (!pNext_size && from_pNext)
8041 {
8042 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008043 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008044 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008045 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008046 if (pNext_size)
8047 {
Yilong Li324fa652021-12-29 17:00:42 -08008048 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008049 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008050 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008051}
8052
8053void deepcopy_VkExportSemaphoreWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008054 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008055 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008056 const VkExportSemaphoreWin32HandleInfoKHR* from,
8057 VkExportSemaphoreWin32HandleInfoKHR* to)
8058{
Yilong Li422b0582021-04-30 13:09:43 -07008059 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008060 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008061 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008062 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8063 {
8064 rootType = from->sType;
8065 }
Yilong Li04218f72021-02-19 01:31:17 -08008066 const void* from_pNext = from;
8067 size_t pNext_size = 0u;
8068 while (!pNext_size && from_pNext)
8069 {
8070 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008071 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008072 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008073 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008074 if (pNext_size)
8075 {
Yilong Li324fa652021-12-29 17:00:42 -08008076 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008077 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008078 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008079 to->pAttributes = nullptr;
8080 if (from->pAttributes)
8081 {
Yilong Li422b0582021-04-30 13:09:43 -07008082 to->pAttributes = (SECURITY_ATTRIBUTES*)alloc->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008083 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008084}
8085
8086void deepcopy_VkD3D12FenceSubmitInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008087 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008088 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008089 const VkD3D12FenceSubmitInfoKHR* from,
8090 VkD3D12FenceSubmitInfoKHR* to)
8091{
Yilong Li422b0582021-04-30 13:09:43 -07008092 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008093 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008094 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008095 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8096 {
8097 rootType = from->sType;
8098 }
Yilong Li04218f72021-02-19 01:31:17 -08008099 const void* from_pNext = from;
8100 size_t pNext_size = 0u;
8101 while (!pNext_size && from_pNext)
8102 {
8103 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008104 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008105 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008106 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008107 if (pNext_size)
8108 {
Yilong Li324fa652021-12-29 17:00:42 -08008109 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008110 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008111 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008112 to->pWaitSemaphoreValues = nullptr;
8113 if (from->pWaitSemaphoreValues)
8114 {
Yilong Li422b0582021-04-30 13:09:43 -07008115 to->pWaitSemaphoreValues = (uint64_t*)alloc->dupArray(from->pWaitSemaphoreValues, from->waitSemaphoreValuesCount * sizeof(const uint64_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008116 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008117 to->pSignalSemaphoreValues = nullptr;
8118 if (from->pSignalSemaphoreValues)
8119 {
Yilong Li422b0582021-04-30 13:09:43 -07008120 to->pSignalSemaphoreValues = (uint64_t*)alloc->dupArray(from->pSignalSemaphoreValues, from->signalSemaphoreValuesCount * sizeof(const uint64_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008121 }
8122}
8123
8124void deepcopy_VkSemaphoreGetWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008125 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008126 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008127 const VkSemaphoreGetWin32HandleInfoKHR* from,
8128 VkSemaphoreGetWin32HandleInfoKHR* to)
8129{
Yilong Li422b0582021-04-30 13:09:43 -07008130 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008131 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008132 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008133 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8134 {
8135 rootType = from->sType;
8136 }
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;
Yilong Li48081632021-04-13 22:38:10 -07008142 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008143 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008144 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008145 if (pNext_size)
8146 {
Yilong Li324fa652021-12-29 17:00:42 -08008147 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008148 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008149 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008150}
8151
8152#endif
8153#ifdef VK_KHR_external_semaphore_fd
8154void deepcopy_VkImportSemaphoreFdInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008155 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008156 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008157 const VkImportSemaphoreFdInfoKHR* from,
8158 VkImportSemaphoreFdInfoKHR* to)
8159{
Yilong Li422b0582021-04-30 13:09:43 -07008160 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008161 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008162 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008163 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8164 {
8165 rootType = from->sType;
8166 }
Yilong Li04218f72021-02-19 01:31:17 -08008167 const void* from_pNext = from;
8168 size_t pNext_size = 0u;
8169 while (!pNext_size && from_pNext)
8170 {
8171 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008172 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008173 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008174 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008175 if (pNext_size)
8176 {
Yilong Li324fa652021-12-29 17:00:42 -08008177 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008178 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008179 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008180}
8181
8182void deepcopy_VkSemaphoreGetFdInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008183 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008184 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008185 const VkSemaphoreGetFdInfoKHR* from,
8186 VkSemaphoreGetFdInfoKHR* to)
8187{
Yilong Li422b0582021-04-30 13:09:43 -07008188 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008189 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008190 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008191 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8192 {
8193 rootType = from->sType;
8194 }
Yilong Li04218f72021-02-19 01:31:17 -08008195 const void* from_pNext = from;
8196 size_t pNext_size = 0u;
8197 while (!pNext_size && from_pNext)
8198 {
8199 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008200 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008201 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008202 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008203 if (pNext_size)
8204 {
Yilong Li324fa652021-12-29 17:00:42 -08008205 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008206 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008207 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008208}
8209
8210#endif
8211#ifdef VK_KHR_push_descriptor
8212void deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008213 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008214 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008215 const VkPhysicalDevicePushDescriptorPropertiesKHR* from,
8216 VkPhysicalDevicePushDescriptorPropertiesKHR* to)
8217{
Yilong Li422b0582021-04-30 13:09:43 -07008218 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008219 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008220 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008221 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8222 {
8223 rootType = from->sType;
8224 }
Yilong Li04218f72021-02-19 01:31:17 -08008225 const void* from_pNext = from;
8226 size_t pNext_size = 0u;
8227 while (!pNext_size && from_pNext)
8228 {
8229 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008230 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008231 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008232 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008233 if (pNext_size)
8234 {
Yilong Li422b0582021-04-30 13:09:43 -07008235 to->pNext = (void*)alloc->alloc(pNext_size);
8236 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008237 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008238}
8239
8240#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008241#ifdef VK_KHR_shader_float16_int8
8242#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008243#ifdef VK_KHR_16bit_storage
8244#endif
8245#ifdef VK_KHR_incremental_present
8246void deepcopy_VkRectLayerKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008247 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008248 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008249 const VkRectLayerKHR* from,
8250 VkRectLayerKHR* to)
8251{
Yilong Li422b0582021-04-30 13:09:43 -07008252 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008253 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008254 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -07008255 deepcopy_VkOffset2D(alloc, rootType, &from->offset, (VkOffset2D*)(&to->offset));
8256 deepcopy_VkExtent2D(alloc, rootType, &from->extent, (VkExtent2D*)(&to->extent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008257}
8258
8259void deepcopy_VkPresentRegionKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008260 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008261 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008262 const VkPresentRegionKHR* from,
8263 VkPresentRegionKHR* to)
8264{
Yilong Li422b0582021-04-30 13:09:43 -07008265 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008266 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008267 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -08008268 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008269 {
Yilong Libd10ec92021-02-10 13:24:27 -08008270 to->pRectangles = nullptr;
8271 if (from->pRectangles)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008272 {
Yilong Li422b0582021-04-30 13:09:43 -07008273 to->pRectangles = (VkRectLayerKHR*)alloc->alloc(from->rectangleCount * sizeof(const VkRectLayerKHR));
Yilong Libd10ec92021-02-10 13:24:27 -08008274 to->rectangleCount = from->rectangleCount;
8275 for (uint32_t i = 0; i < (uint32_t)from->rectangleCount; ++i)
8276 {
Yilong Li422b0582021-04-30 13:09:43 -07008277 deepcopy_VkRectLayerKHR(alloc, rootType, from->pRectangles + i, (VkRectLayerKHR*)(to->pRectangles + i));
Yilong Libd10ec92021-02-10 13:24:27 -08008278 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008279 }
8280 }
8281}
8282
8283void deepcopy_VkPresentRegionsKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008284 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008285 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008286 const VkPresentRegionsKHR* from,
8287 VkPresentRegionsKHR* to)
8288{
Yilong Li422b0582021-04-30 13:09:43 -07008289 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008290 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008291 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008292 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8293 {
8294 rootType = from->sType;
8295 }
Yilong Li04218f72021-02-19 01:31:17 -08008296 const void* from_pNext = from;
8297 size_t pNext_size = 0u;
8298 while (!pNext_size && from_pNext)
8299 {
8300 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008301 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008302 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008303 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008304 if (pNext_size)
8305 {
Yilong Li324fa652021-12-29 17:00:42 -08008306 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008307 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008308 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08008309 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008310 {
Yilong Libd10ec92021-02-10 13:24:27 -08008311 to->pRegions = nullptr;
8312 if (from->pRegions)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008313 {
Yilong Li422b0582021-04-30 13:09:43 -07008314 to->pRegions = (VkPresentRegionKHR*)alloc->alloc(from->swapchainCount * sizeof(const VkPresentRegionKHR));
Yilong Libd10ec92021-02-10 13:24:27 -08008315 to->swapchainCount = from->swapchainCount;
8316 for (uint32_t i = 0; i < (uint32_t)from->swapchainCount; ++i)
8317 {
Yilong Li422b0582021-04-30 13:09:43 -07008318 deepcopy_VkPresentRegionKHR(alloc, rootType, from->pRegions + i, (VkPresentRegionKHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -08008319 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008320 }
8321 }
8322}
8323
8324#endif
8325#ifdef VK_KHR_descriptor_update_template
8326#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008327#ifdef VK_KHR_imageless_framebuffer
8328#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008329#ifdef VK_KHR_create_renderpass2
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008330#endif
8331#ifdef VK_KHR_shared_presentable_image
8332void deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008333 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008334 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008335 const VkSharedPresentSurfaceCapabilitiesKHR* from,
8336 VkSharedPresentSurfaceCapabilitiesKHR* to)
8337{
Yilong Li422b0582021-04-30 13:09:43 -07008338 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008339 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008340 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008341 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8342 {
8343 rootType = from->sType;
8344 }
Yilong Li04218f72021-02-19 01:31:17 -08008345 const void* from_pNext = from;
8346 size_t pNext_size = 0u;
8347 while (!pNext_size && from_pNext)
8348 {
8349 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008350 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008351 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008352 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008353 if (pNext_size)
8354 {
Yilong Li422b0582021-04-30 13:09:43 -07008355 to->pNext = (void*)alloc->alloc(pNext_size);
8356 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008357 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008358}
8359
8360#endif
8361#ifdef VK_KHR_external_fence_capabilities
8362#endif
8363#ifdef VK_KHR_external_fence
8364#endif
8365#ifdef VK_KHR_external_fence_win32
8366void deepcopy_VkImportFenceWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008367 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008368 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008369 const VkImportFenceWin32HandleInfoKHR* from,
8370 VkImportFenceWin32HandleInfoKHR* to)
8371{
Yilong Li422b0582021-04-30 13:09:43 -07008372 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008373 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008374 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008375 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8376 {
8377 rootType = from->sType;
8378 }
Yilong Li04218f72021-02-19 01:31:17 -08008379 const void* from_pNext = from;
8380 size_t pNext_size = 0u;
8381 while (!pNext_size && from_pNext)
8382 {
8383 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008384 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008385 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008386 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008387 if (pNext_size)
8388 {
Yilong Li324fa652021-12-29 17:00:42 -08008389 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008390 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008391 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008392}
8393
8394void deepcopy_VkExportFenceWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008395 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008396 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008397 const VkExportFenceWin32HandleInfoKHR* from,
8398 VkExportFenceWin32HandleInfoKHR* to)
8399{
Yilong Li422b0582021-04-30 13:09:43 -07008400 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008401 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008402 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008403 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8404 {
8405 rootType = from->sType;
8406 }
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;
Yilong Li48081632021-04-13 22:38:10 -07008412 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008413 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008414 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008415 if (pNext_size)
8416 {
Yilong Li324fa652021-12-29 17:00:42 -08008417 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008418 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008420 to->pAttributes = nullptr;
8421 if (from->pAttributes)
8422 {
Yilong Li422b0582021-04-30 13:09:43 -07008423 to->pAttributes = (SECURITY_ATTRIBUTES*)alloc->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008424 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008425}
8426
8427void deepcopy_VkFenceGetWin32HandleInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008428 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008429 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008430 const VkFenceGetWin32HandleInfoKHR* from,
8431 VkFenceGetWin32HandleInfoKHR* to)
8432{
Yilong Li422b0582021-04-30 13:09:43 -07008433 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008434 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008435 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008436 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8437 {
8438 rootType = from->sType;
8439 }
Yilong Li04218f72021-02-19 01:31:17 -08008440 const void* from_pNext = from;
8441 size_t pNext_size = 0u;
8442 while (!pNext_size && from_pNext)
8443 {
8444 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008445 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008446 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008447 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008448 if (pNext_size)
8449 {
Yilong Li324fa652021-12-29 17:00:42 -08008450 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008451 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008452 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008453}
8454
8455#endif
8456#ifdef VK_KHR_external_fence_fd
8457void deepcopy_VkImportFenceFdInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008458 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008459 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008460 const VkImportFenceFdInfoKHR* from,
8461 VkImportFenceFdInfoKHR* to)
8462{
Yilong Li422b0582021-04-30 13:09:43 -07008463 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008464 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008465 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008466 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8467 {
8468 rootType = from->sType;
8469 }
Yilong Li04218f72021-02-19 01:31:17 -08008470 const void* from_pNext = from;
8471 size_t pNext_size = 0u;
8472 while (!pNext_size && from_pNext)
8473 {
8474 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008475 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008476 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008477 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008478 if (pNext_size)
8479 {
Yilong Li324fa652021-12-29 17:00:42 -08008480 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008481 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008482 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008483}
8484
8485void deepcopy_VkFenceGetFdInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008486 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008487 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008488 const VkFenceGetFdInfoKHR* from,
8489 VkFenceGetFdInfoKHR* to)
8490{
Yilong Li422b0582021-04-30 13:09:43 -07008491 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008492 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008493 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008494 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8495 {
8496 rootType = from->sType;
8497 }
Yilong Li04218f72021-02-19 01:31:17 -08008498 const void* from_pNext = from;
8499 size_t pNext_size = 0u;
8500 while (!pNext_size && from_pNext)
8501 {
8502 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008503 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008504 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008505 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008506 if (pNext_size)
8507 {
Yilong Li324fa652021-12-29 17:00:42 -08008508 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008509 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008510 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008511}
8512
8513#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008514#ifdef VK_KHR_performance_query
8515void deepcopy_VkPhysicalDevicePerformanceQueryFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008516 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008517 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008518 const VkPhysicalDevicePerformanceQueryFeaturesKHR* from,
8519 VkPhysicalDevicePerformanceQueryFeaturesKHR* to)
8520{
Yilong Li422b0582021-04-30 13:09:43 -07008521 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008522 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008523 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008524 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8525 {
8526 rootType = from->sType;
8527 }
Yilong Li04218f72021-02-19 01:31:17 -08008528 const void* from_pNext = from;
8529 size_t pNext_size = 0u;
8530 while (!pNext_size && from_pNext)
8531 {
8532 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008533 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008534 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008535 to->pNext = nullptr;
8536 if (pNext_size)
8537 {
Yilong Li422b0582021-04-30 13:09:43 -07008538 to->pNext = (void*)alloc->alloc(pNext_size);
8539 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008540 }
8541}
8542
8543void deepcopy_VkPhysicalDevicePerformanceQueryPropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008544 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008545 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008546 const VkPhysicalDevicePerformanceQueryPropertiesKHR* from,
8547 VkPhysicalDevicePerformanceQueryPropertiesKHR* to)
8548{
Yilong Li422b0582021-04-30 13:09:43 -07008549 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008550 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008551 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008552 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8553 {
8554 rootType = from->sType;
8555 }
Yilong Li04218f72021-02-19 01:31:17 -08008556 const void* from_pNext = from;
8557 size_t pNext_size = 0u;
8558 while (!pNext_size && from_pNext)
8559 {
8560 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008561 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008562 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008563 to->pNext = nullptr;
8564 if (pNext_size)
8565 {
Yilong Li422b0582021-04-30 13:09:43 -07008566 to->pNext = (void*)alloc->alloc(pNext_size);
8567 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008568 }
8569}
8570
8571void deepcopy_VkPerformanceCounterKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008572 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008573 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008574 const VkPerformanceCounterKHR* from,
8575 VkPerformanceCounterKHR* to)
8576{
Yilong Li422b0582021-04-30 13:09:43 -07008577 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008578 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008579 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008580 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8581 {
8582 rootType = from->sType;
8583 }
Yilong Li04218f72021-02-19 01:31:17 -08008584 const void* from_pNext = from;
8585 size_t pNext_size = 0u;
8586 while (!pNext_size && from_pNext)
8587 {
8588 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008589 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008590 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008591 to->pNext = nullptr;
8592 if (pNext_size)
8593 {
Yilong Li324fa652021-12-29 17:00:42 -08008594 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008595 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008596 }
8597 memcpy(to->uuid, from->uuid, VK_UUID_SIZE * sizeof(uint8_t));
8598}
8599
8600void deepcopy_VkPerformanceCounterDescriptionKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008601 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008602 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008603 const VkPerformanceCounterDescriptionKHR* from,
8604 VkPerformanceCounterDescriptionKHR* to)
8605{
Yilong Li422b0582021-04-30 13:09:43 -07008606 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008607 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008608 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008609 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8610 {
8611 rootType = from->sType;
8612 }
Yilong Li04218f72021-02-19 01:31:17 -08008613 const void* from_pNext = from;
8614 size_t pNext_size = 0u;
8615 while (!pNext_size && from_pNext)
8616 {
8617 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008618 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008619 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008620 to->pNext = nullptr;
8621 if (pNext_size)
8622 {
Yilong Li324fa652021-12-29 17:00:42 -08008623 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008624 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008625 }
8626 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
8627 memcpy(to->category, from->category, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
8628 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
8629}
8630
8631void deepcopy_VkQueryPoolPerformanceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008632 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008633 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008634 const VkQueryPoolPerformanceCreateInfoKHR* from,
8635 VkQueryPoolPerformanceCreateInfoKHR* to)
8636{
Yilong Li422b0582021-04-30 13:09:43 -07008637 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008638 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008639 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008640 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8641 {
8642 rootType = from->sType;
8643 }
Yilong Li04218f72021-02-19 01:31:17 -08008644 const void* from_pNext = from;
8645 size_t pNext_size = 0u;
8646 while (!pNext_size && from_pNext)
8647 {
8648 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008649 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008650 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008651 to->pNext = nullptr;
8652 if (pNext_size)
8653 {
Yilong Li324fa652021-12-29 17:00:42 -08008654 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008655 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008656 }
8657 to->pCounterIndices = nullptr;
8658 if (from->pCounterIndices)
8659 {
Yilong Li422b0582021-04-30 13:09:43 -07008660 to->pCounterIndices = (uint32_t*)alloc->dupArray(from->pCounterIndices, from->counterIndexCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08008661 }
8662}
8663
8664void deepcopy_VkPerformanceCounterResultKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008665 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008666 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008667 const VkPerformanceCounterResultKHR* from,
8668 VkPerformanceCounterResultKHR* to)
8669{
Yilong Li422b0582021-04-30 13:09:43 -07008670 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008671 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008672 *to = *from;
8673}
8674
8675void deepcopy_VkAcquireProfilingLockInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008676 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008677 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008678 const VkAcquireProfilingLockInfoKHR* from,
8679 VkAcquireProfilingLockInfoKHR* to)
8680{
Yilong Li422b0582021-04-30 13:09:43 -07008681 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008682 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008683 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008684 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8685 {
8686 rootType = from->sType;
8687 }
Yilong Li04218f72021-02-19 01:31:17 -08008688 const void* from_pNext = from;
8689 size_t pNext_size = 0u;
8690 while (!pNext_size && from_pNext)
8691 {
8692 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008693 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008694 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008695 to->pNext = nullptr;
8696 if (pNext_size)
8697 {
Yilong Li324fa652021-12-29 17:00:42 -08008698 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008699 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008700 }
8701}
8702
8703void deepcopy_VkPerformanceQuerySubmitInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008704 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008705 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008706 const VkPerformanceQuerySubmitInfoKHR* from,
8707 VkPerformanceQuerySubmitInfoKHR* to)
8708{
Yilong Li422b0582021-04-30 13:09:43 -07008709 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008710 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008711 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008712 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8713 {
8714 rootType = from->sType;
8715 }
Yilong Li04218f72021-02-19 01:31:17 -08008716 const void* from_pNext = from;
8717 size_t pNext_size = 0u;
8718 while (!pNext_size && from_pNext)
8719 {
8720 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008721 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008722 }
Yilong Lia8d45f12021-02-07 02:30:21 -08008723 to->pNext = nullptr;
8724 if (pNext_size)
8725 {
Yilong Li324fa652021-12-29 17:00:42 -08008726 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008727 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08008728 }
8729}
8730
8731#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008732#ifdef VK_KHR_maintenance2
8733#endif
8734#ifdef VK_KHR_get_surface_capabilities2
8735void deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008736 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008737 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008738 const VkPhysicalDeviceSurfaceInfo2KHR* from,
8739 VkPhysicalDeviceSurfaceInfo2KHR* to)
8740{
Yilong Li422b0582021-04-30 13:09:43 -07008741 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008742 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008743 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008744 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8745 {
8746 rootType = from->sType;
8747 }
Yilong Li04218f72021-02-19 01:31:17 -08008748 const void* from_pNext = from;
8749 size_t pNext_size = 0u;
8750 while (!pNext_size && from_pNext)
8751 {
8752 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008753 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008754 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008755 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008756 if (pNext_size)
8757 {
Yilong Li324fa652021-12-29 17:00:42 -08008758 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008759 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008760 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008761}
8762
8763void deepcopy_VkSurfaceCapabilities2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008764 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008765 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008766 const VkSurfaceCapabilities2KHR* from,
8767 VkSurfaceCapabilities2KHR* to)
8768{
Yilong Li422b0582021-04-30 13:09:43 -07008769 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008770 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008771 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008772 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8773 {
8774 rootType = from->sType;
8775 }
Yilong Li04218f72021-02-19 01:31:17 -08008776 const void* from_pNext = from;
8777 size_t pNext_size = 0u;
8778 while (!pNext_size && from_pNext)
8779 {
8780 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008781 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008782 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008783 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008784 if (pNext_size)
8785 {
Yilong Li422b0582021-04-30 13:09:43 -07008786 to->pNext = (void*)alloc->alloc(pNext_size);
8787 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008788 }
Yilong Li422b0582021-04-30 13:09:43 -07008789 deepcopy_VkSurfaceCapabilitiesKHR(alloc, rootType, &from->surfaceCapabilities, (VkSurfaceCapabilitiesKHR*)(&to->surfaceCapabilities));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008790}
8791
8792void deepcopy_VkSurfaceFormat2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008793 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008794 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008795 const VkSurfaceFormat2KHR* from,
8796 VkSurfaceFormat2KHR* to)
8797{
Yilong Li422b0582021-04-30 13:09:43 -07008798 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008799 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008800 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008801 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8802 {
8803 rootType = from->sType;
8804 }
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;
Yilong Li48081632021-04-13 22:38:10 -07008810 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008811 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008812 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008813 if (pNext_size)
8814 {
Yilong Li422b0582021-04-30 13:09:43 -07008815 to->pNext = (void*)alloc->alloc(pNext_size);
8816 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008817 }
Yilong Li422b0582021-04-30 13:09:43 -07008818 deepcopy_VkSurfaceFormatKHR(alloc, rootType, &from->surfaceFormat, (VkSurfaceFormatKHR*)(&to->surfaceFormat));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008819}
8820
8821#endif
8822#ifdef VK_KHR_variable_pointers
8823#endif
8824#ifdef VK_KHR_get_display_properties2
8825void deepcopy_VkDisplayProperties2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008826 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008827 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008828 const VkDisplayProperties2KHR* from,
8829 VkDisplayProperties2KHR* to)
8830{
Yilong Li422b0582021-04-30 13:09:43 -07008831 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008832 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008833 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008834 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8835 {
8836 rootType = from->sType;
8837 }
Yilong Li04218f72021-02-19 01:31:17 -08008838 const void* from_pNext = from;
8839 size_t pNext_size = 0u;
8840 while (!pNext_size && from_pNext)
8841 {
8842 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008843 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008844 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008845 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008846 if (pNext_size)
8847 {
Yilong Li422b0582021-04-30 13:09:43 -07008848 to->pNext = (void*)alloc->alloc(pNext_size);
8849 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008850 }
Yilong Li422b0582021-04-30 13:09:43 -07008851 deepcopy_VkDisplayPropertiesKHR(alloc, rootType, &from->displayProperties, (VkDisplayPropertiesKHR*)(&to->displayProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008852}
8853
8854void deepcopy_VkDisplayPlaneProperties2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008855 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008856 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008857 const VkDisplayPlaneProperties2KHR* from,
8858 VkDisplayPlaneProperties2KHR* to)
8859{
Yilong Li422b0582021-04-30 13:09:43 -07008860 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008861 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008862 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008863 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8864 {
8865 rootType = from->sType;
8866 }
Yilong Li04218f72021-02-19 01:31:17 -08008867 const void* from_pNext = from;
8868 size_t pNext_size = 0u;
8869 while (!pNext_size && from_pNext)
8870 {
8871 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008872 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008873 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008874 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008875 if (pNext_size)
8876 {
Yilong Li422b0582021-04-30 13:09:43 -07008877 to->pNext = (void*)alloc->alloc(pNext_size);
8878 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008879 }
Yilong Li422b0582021-04-30 13:09:43 -07008880 deepcopy_VkDisplayPlanePropertiesKHR(alloc, rootType, &from->displayPlaneProperties, (VkDisplayPlanePropertiesKHR*)(&to->displayPlaneProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008881}
8882
8883void deepcopy_VkDisplayModeProperties2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008884 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008885 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008886 const VkDisplayModeProperties2KHR* from,
8887 VkDisplayModeProperties2KHR* to)
8888{
Yilong Li422b0582021-04-30 13:09:43 -07008889 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008890 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008891 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008892 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8893 {
8894 rootType = from->sType;
8895 }
Yilong Li04218f72021-02-19 01:31:17 -08008896 const void* from_pNext = from;
8897 size_t pNext_size = 0u;
8898 while (!pNext_size && from_pNext)
8899 {
8900 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008901 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008902 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008903 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008904 if (pNext_size)
8905 {
Yilong Li422b0582021-04-30 13:09:43 -07008906 to->pNext = (void*)alloc->alloc(pNext_size);
8907 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008908 }
Yilong Li422b0582021-04-30 13:09:43 -07008909 deepcopy_VkDisplayModePropertiesKHR(alloc, rootType, &from->displayModeProperties, (VkDisplayModePropertiesKHR*)(&to->displayModeProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008910}
8911
8912void deepcopy_VkDisplayPlaneInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008913 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008914 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008915 const VkDisplayPlaneInfo2KHR* from,
8916 VkDisplayPlaneInfo2KHR* to)
8917{
Yilong Li422b0582021-04-30 13:09:43 -07008918 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008919 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008920 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008921 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8922 {
8923 rootType = from->sType;
8924 }
Yilong Li04218f72021-02-19 01:31:17 -08008925 const void* from_pNext = from;
8926 size_t pNext_size = 0u;
8927 while (!pNext_size && from_pNext)
8928 {
8929 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008930 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008931 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008932 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008933 if (pNext_size)
8934 {
Yilong Li324fa652021-12-29 17:00:42 -08008935 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07008936 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008937 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008938}
8939
8940void deepcopy_VkDisplayPlaneCapabilities2KHR(
Yilong Li422b0582021-04-30 13:09:43 -07008941 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008942 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008943 const VkDisplayPlaneCapabilities2KHR* from,
8944 VkDisplayPlaneCapabilities2KHR* to)
8945{
Yilong Li422b0582021-04-30 13:09:43 -07008946 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008947 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08008948 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008949 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8950 {
8951 rootType = from->sType;
8952 }
Yilong Li04218f72021-02-19 01:31:17 -08008953 const void* from_pNext = from;
8954 size_t pNext_size = 0u;
8955 while (!pNext_size && from_pNext)
8956 {
8957 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07008958 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08008959 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008960 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08008961 if (pNext_size)
8962 {
Yilong Li422b0582021-04-30 13:09:43 -07008963 to->pNext = (void*)alloc->alloc(pNext_size);
8964 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08008965 }
Yilong Li422b0582021-04-30 13:09:43 -07008966 deepcopy_VkDisplayPlaneCapabilitiesKHR(alloc, rootType, &from->capabilities, (VkDisplayPlaneCapabilitiesKHR*)(&to->capabilities));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008967}
8968
8969#endif
8970#ifdef VK_KHR_dedicated_allocation
8971#endif
8972#ifdef VK_KHR_storage_buffer_storage_class
8973#endif
8974#ifdef VK_KHR_relaxed_block_layout
8975#endif
8976#ifdef VK_KHR_get_memory_requirements2
8977#endif
8978#ifdef VK_KHR_image_format_list
Yilong Lia8d45f12021-02-07 02:30:21 -08008979#endif
8980#ifdef VK_KHR_sampler_ycbcr_conversion
8981#endif
8982#ifdef VK_KHR_bind_memory2
8983#endif
8984#ifdef VK_KHR_portability_subset
8985void deepcopy_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07008986 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07008987 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08008988 const VkPhysicalDevicePortabilitySubsetFeaturesKHR* from,
8989 VkPhysicalDevicePortabilitySubsetFeaturesKHR* to)
8990{
Yilong Li422b0582021-04-30 13:09:43 -07008991 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07008992 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08008993 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07008994 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
8995 {
8996 rootType = from->sType;
8997 }
Yilong Li04218f72021-02-19 01:31:17 -08008998 const void* from_pNext = from;
8999 size_t pNext_size = 0u;
9000 while (!pNext_size && from_pNext)
9001 {
9002 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009003 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009004 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009005 to->pNext = nullptr;
9006 if (pNext_size)
9007 {
Yilong Li422b0582021-04-30 13:09:43 -07009008 to->pNext = (void*)alloc->alloc(pNext_size);
9009 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009010 }
9011}
9012
9013void deepcopy_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009014 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009015 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009016 const VkPhysicalDevicePortabilitySubsetPropertiesKHR* from,
9017 VkPhysicalDevicePortabilitySubsetPropertiesKHR* to)
9018{
Yilong Li422b0582021-04-30 13:09:43 -07009019 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009020 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009021 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009022 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9023 {
9024 rootType = from->sType;
9025 }
Yilong Li04218f72021-02-19 01:31:17 -08009026 const void* from_pNext = from;
9027 size_t pNext_size = 0u;
9028 while (!pNext_size && from_pNext)
9029 {
9030 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009031 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009032 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009033 to->pNext = nullptr;
9034 if (pNext_size)
9035 {
Yilong Li422b0582021-04-30 13:09:43 -07009036 to->pNext = (void*)alloc->alloc(pNext_size);
9037 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009038 }
9039}
9040
9041#endif
9042#ifdef VK_KHR_maintenance3
9043#endif
9044#ifdef VK_KHR_draw_indirect_count
9045#endif
9046#ifdef VK_KHR_shader_subgroup_extended_types
9047#endif
9048#ifdef VK_KHR_8bit_storage
9049#endif
9050#ifdef VK_KHR_shader_atomic_int64
9051#endif
9052#ifdef VK_KHR_shader_clock
9053void deepcopy_VkPhysicalDeviceShaderClockFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009054 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009055 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009056 const VkPhysicalDeviceShaderClockFeaturesKHR* from,
9057 VkPhysicalDeviceShaderClockFeaturesKHR* to)
9058{
Yilong Li422b0582021-04-30 13:09:43 -07009059 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009060 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009061 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009062 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9063 {
9064 rootType = from->sType;
9065 }
Yilong Li04218f72021-02-19 01:31:17 -08009066 const void* from_pNext = from;
9067 size_t pNext_size = 0u;
9068 while (!pNext_size && from_pNext)
9069 {
9070 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009071 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009072 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009073 to->pNext = nullptr;
9074 if (pNext_size)
9075 {
Yilong Li422b0582021-04-30 13:09:43 -07009076 to->pNext = (void*)alloc->alloc(pNext_size);
9077 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009078 }
9079}
9080
9081#endif
9082#ifdef VK_KHR_driver_properties
9083#endif
9084#ifdef VK_KHR_shader_float_controls
9085#endif
9086#ifdef VK_KHR_depth_stencil_resolve
9087#endif
9088#ifdef VK_KHR_swapchain_mutable_format
9089#endif
9090#ifdef VK_KHR_timeline_semaphore
9091#endif
9092#ifdef VK_KHR_vulkan_memory_model
9093#endif
9094#ifdef VK_KHR_shader_terminate_invocation
9095void deepcopy_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009096 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009097 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009098 const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* from,
9099 VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* to)
9100{
Yilong Li422b0582021-04-30 13:09:43 -07009101 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009102 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009103 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009104 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9105 {
9106 rootType = from->sType;
9107 }
Yilong Li04218f72021-02-19 01:31:17 -08009108 const void* from_pNext = from;
9109 size_t pNext_size = 0u;
9110 while (!pNext_size && from_pNext)
9111 {
9112 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009113 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009114 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009115 to->pNext = nullptr;
9116 if (pNext_size)
9117 {
Yilong Li422b0582021-04-30 13:09:43 -07009118 to->pNext = (void*)alloc->alloc(pNext_size);
9119 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009120 }
9121}
9122
9123#endif
9124#ifdef VK_KHR_fragment_shading_rate
9125void deepcopy_VkFragmentShadingRateAttachmentInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009126 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009127 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009128 const VkFragmentShadingRateAttachmentInfoKHR* from,
9129 VkFragmentShadingRateAttachmentInfoKHR* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009130{
Yilong Li422b0582021-04-30 13:09:43 -07009131 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009132 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009133 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009134 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9135 {
9136 rootType = from->sType;
9137 }
Yilong Li04218f72021-02-19 01:31:17 -08009138 const void* from_pNext = from;
9139 size_t pNext_size = 0u;
9140 while (!pNext_size && from_pNext)
9141 {
9142 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009143 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009144 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009145 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009146 if (pNext_size)
9147 {
Yilong Li324fa652021-12-29 17:00:42 -08009148 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07009149 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009150 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009151 to->pFragmentShadingRateAttachment = nullptr;
9152 if (from->pFragmentShadingRateAttachment)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009153 {
Yilong Li422b0582021-04-30 13:09:43 -07009154 to->pFragmentShadingRateAttachment = (VkAttachmentReference2*)alloc->alloc(sizeof(const VkAttachmentReference2));
9155 deepcopy_VkAttachmentReference2(alloc, rootType, from->pFragmentShadingRateAttachment, (VkAttachmentReference2*)(to->pFragmentShadingRateAttachment));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009156 }
Yilong Li422b0582021-04-30 13:09:43 -07009157 deepcopy_VkExtent2D(alloc, rootType, &from->shadingRateAttachmentTexelSize, (VkExtent2D*)(&to->shadingRateAttachmentTexelSize));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009158}
9159
Yilong Lia8d45f12021-02-07 02:30:21 -08009160void deepcopy_VkPipelineFragmentShadingRateStateCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009161 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009162 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009163 const VkPipelineFragmentShadingRateStateCreateInfoKHR* from,
9164 VkPipelineFragmentShadingRateStateCreateInfoKHR* to)
9165{
Yilong Li422b0582021-04-30 13:09:43 -07009166 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009167 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009168 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009169 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9170 {
9171 rootType = from->sType;
9172 }
Yilong Li04218f72021-02-19 01:31:17 -08009173 const void* from_pNext = from;
9174 size_t pNext_size = 0u;
9175 while (!pNext_size && from_pNext)
9176 {
9177 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009178 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009179 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009180 to->pNext = nullptr;
9181 if (pNext_size)
9182 {
Yilong Li324fa652021-12-29 17:00:42 -08009183 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07009184 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009185 }
Yilong Li422b0582021-04-30 13:09:43 -07009186 deepcopy_VkExtent2D(alloc, rootType, &from->fragmentSize, (VkExtent2D*)(&to->fragmentSize));
Yilong Lia8d45f12021-02-07 02:30:21 -08009187 memcpy(to->combinerOps, from->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR));
9188}
9189
9190void deepcopy_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009191 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009192 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009193 const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* from,
9194 VkPhysicalDeviceFragmentShadingRateFeaturesKHR* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009195{
Yilong Li422b0582021-04-30 13:09:43 -07009196 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009197 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -08009198 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009199 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9200 {
9201 rootType = from->sType;
9202 }
Yilong Li04218f72021-02-19 01:31:17 -08009203 const void* from_pNext = from;
9204 size_t pNext_size = 0u;
9205 while (!pNext_size && from_pNext)
9206 {
9207 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009208 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009209 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009210 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -08009211 if (pNext_size)
9212 {
Yilong Li422b0582021-04-30 13:09:43 -07009213 to->pNext = (void*)alloc->alloc(pNext_size);
9214 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -08009215 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009216}
9217
Yilong Lia8d45f12021-02-07 02:30:21 -08009218void deepcopy_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009219 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009220 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009221 const VkPhysicalDeviceFragmentShadingRatePropertiesKHR* from,
9222 VkPhysicalDeviceFragmentShadingRatePropertiesKHR* to)
Lingfeng Yang4c056b22020-07-02 11:43:57 -07009223{
Yilong Li422b0582021-04-30 13:09:43 -07009224 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009225 (void)rootType;
Lingfeng Yang4c056b22020-07-02 11:43:57 -07009226 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009227 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9228 {
9229 rootType = from->sType;
9230 }
Yilong Li04218f72021-02-19 01:31:17 -08009231 const void* from_pNext = from;
9232 size_t pNext_size = 0u;
9233 while (!pNext_size && from_pNext)
9234 {
9235 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009236 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009237 }
Lingfeng Yang4c056b22020-07-02 11:43:57 -07009238 to->pNext = nullptr;
9239 if (pNext_size)
9240 {
Yilong Li422b0582021-04-30 13:09:43 -07009241 to->pNext = (void*)alloc->alloc(pNext_size);
9242 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang4c056b22020-07-02 11:43:57 -07009243 }
Yilong Li422b0582021-04-30 13:09:43 -07009244 deepcopy_VkExtent2D(alloc, rootType, &from->minFragmentShadingRateAttachmentTexelSize, (VkExtent2D*)(&to->minFragmentShadingRateAttachmentTexelSize));
9245 deepcopy_VkExtent2D(alloc, rootType, &from->maxFragmentShadingRateAttachmentTexelSize, (VkExtent2D*)(&to->maxFragmentShadingRateAttachmentTexelSize));
9246 deepcopy_VkExtent2D(alloc, rootType, &from->maxFragmentSize, (VkExtent2D*)(&to->maxFragmentSize));
Yilong Lia8d45f12021-02-07 02:30:21 -08009247}
9248
9249void deepcopy_VkPhysicalDeviceFragmentShadingRateKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009250 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009251 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009252 const VkPhysicalDeviceFragmentShadingRateKHR* from,
9253 VkPhysicalDeviceFragmentShadingRateKHR* to)
9254{
Yilong Li422b0582021-04-30 13:09:43 -07009255 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009256 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009257 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009258 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9259 {
9260 rootType = from->sType;
9261 }
Yilong Li04218f72021-02-19 01:31:17 -08009262 const void* from_pNext = from;
9263 size_t pNext_size = 0u;
9264 while (!pNext_size && from_pNext)
9265 {
9266 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009267 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009268 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009269 to->pNext = nullptr;
9270 if (pNext_size)
9271 {
Yilong Li422b0582021-04-30 13:09:43 -07009272 to->pNext = (void*)alloc->alloc(pNext_size);
9273 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009274 }
Yilong Li422b0582021-04-30 13:09:43 -07009275 deepcopy_VkExtent2D(alloc, rootType, &from->fragmentSize, (VkExtent2D*)(&to->fragmentSize));
Yilong Lia8d45f12021-02-07 02:30:21 -08009276}
9277
9278#endif
9279#ifdef VK_KHR_spirv_1_4
9280#endif
9281#ifdef VK_KHR_surface_protected_capabilities
9282void deepcopy_VkSurfaceProtectedCapabilitiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009283 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009284 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009285 const VkSurfaceProtectedCapabilitiesKHR* from,
9286 VkSurfaceProtectedCapabilitiesKHR* to)
9287{
Yilong Li422b0582021-04-30 13:09:43 -07009288 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009289 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009290 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009291 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9292 {
9293 rootType = from->sType;
9294 }
Yilong Li04218f72021-02-19 01:31:17 -08009295 const void* from_pNext = from;
9296 size_t pNext_size = 0u;
9297 while (!pNext_size && from_pNext)
9298 {
9299 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009300 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009301 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009302 to->pNext = nullptr;
9303 if (pNext_size)
9304 {
Yilong Li324fa652021-12-29 17:00:42 -08009305 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07009306 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009307 }
9308}
9309
9310#endif
9311#ifdef VK_KHR_separate_depth_stencil_layouts
9312#endif
Yilong Li353409a2022-01-04 02:37:56 -08009313#ifdef VK_KHR_present_wait
9314void deepcopy_VkPhysicalDevicePresentWaitFeaturesKHR(
9315 Allocator* alloc,
9316 VkStructureType rootType,
9317 const VkPhysicalDevicePresentWaitFeaturesKHR* from,
9318 VkPhysicalDevicePresentWaitFeaturesKHR* to)
9319{
9320 (void)alloc;
9321 (void)rootType;
9322 *to = *from;
9323 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9324 {
9325 rootType = from->sType;
9326 }
9327 const void* from_pNext = from;
9328 size_t pNext_size = 0u;
9329 while (!pNext_size && from_pNext)
9330 {
9331 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9332 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9333 }
9334 to->pNext = nullptr;
9335 if (pNext_size)
9336 {
9337 to->pNext = (void*)alloc->alloc(pNext_size);
9338 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9339 }
9340}
9341
9342#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009343#ifdef VK_KHR_uniform_buffer_standard_layout
9344#endif
9345#ifdef VK_KHR_buffer_device_address
9346#endif
9347#ifdef VK_KHR_deferred_host_operations
9348#endif
9349#ifdef VK_KHR_pipeline_executable_properties
9350void deepcopy_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009351 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009352 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009353 const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* from,
9354 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* to)
9355{
Yilong Li422b0582021-04-30 13:09:43 -07009356 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009357 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009358 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009359 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9360 {
9361 rootType = from->sType;
9362 }
Yilong Li04218f72021-02-19 01:31:17 -08009363 const void* from_pNext = from;
9364 size_t pNext_size = 0u;
9365 while (!pNext_size && from_pNext)
9366 {
9367 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009368 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009369 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009370 to->pNext = nullptr;
9371 if (pNext_size)
9372 {
Yilong Li422b0582021-04-30 13:09:43 -07009373 to->pNext = (void*)alloc->alloc(pNext_size);
9374 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009375 }
9376}
9377
9378void deepcopy_VkPipelineInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009379 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009380 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009381 const VkPipelineInfoKHR* from,
9382 VkPipelineInfoKHR* to)
9383{
Yilong Li422b0582021-04-30 13:09:43 -07009384 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009385 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009386 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009387 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9388 {
9389 rootType = from->sType;
9390 }
Yilong Li04218f72021-02-19 01:31:17 -08009391 const void* from_pNext = from;
9392 size_t pNext_size = 0u;
9393 while (!pNext_size && from_pNext)
9394 {
9395 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009396 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009397 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009398 to->pNext = nullptr;
9399 if (pNext_size)
9400 {
Yilong Li324fa652021-12-29 17:00:42 -08009401 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07009402 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009403 }
9404}
9405
9406void deepcopy_VkPipelineExecutablePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009407 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009408 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009409 const VkPipelineExecutablePropertiesKHR* from,
9410 VkPipelineExecutablePropertiesKHR* to)
9411{
Yilong Li422b0582021-04-30 13:09:43 -07009412 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009413 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009414 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009415 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9416 {
9417 rootType = from->sType;
9418 }
Yilong Li04218f72021-02-19 01:31:17 -08009419 const void* from_pNext = from;
9420 size_t pNext_size = 0u;
9421 while (!pNext_size && from_pNext)
9422 {
9423 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009424 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009425 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009426 to->pNext = nullptr;
9427 if (pNext_size)
9428 {
Yilong Li422b0582021-04-30 13:09:43 -07009429 to->pNext = (void*)alloc->alloc(pNext_size);
9430 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009431 }
9432 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
9433 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
9434}
9435
9436void deepcopy_VkPipelineExecutableInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009437 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009438 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009439 const VkPipelineExecutableInfoKHR* from,
9440 VkPipelineExecutableInfoKHR* to)
9441{
Yilong Li422b0582021-04-30 13:09:43 -07009442 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009443 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009444 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009445 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9446 {
9447 rootType = from->sType;
9448 }
Yilong Li04218f72021-02-19 01:31:17 -08009449 const void* from_pNext = from;
9450 size_t pNext_size = 0u;
9451 while (!pNext_size && from_pNext)
9452 {
9453 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009454 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009455 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009456 to->pNext = nullptr;
9457 if (pNext_size)
9458 {
Yilong Li324fa652021-12-29 17:00:42 -08009459 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07009460 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009461 }
9462}
9463
9464void deepcopy_VkPipelineExecutableStatisticValueKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009465 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009466 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009467 const VkPipelineExecutableStatisticValueKHR* from,
9468 VkPipelineExecutableStatisticValueKHR* to)
9469{
Yilong Li422b0582021-04-30 13:09:43 -07009470 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009471 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009472 *to = *from;
9473}
9474
9475void deepcopy_VkPipelineExecutableStatisticKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009476 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009477 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009478 const VkPipelineExecutableStatisticKHR* from,
9479 VkPipelineExecutableStatisticKHR* to)
9480{
Yilong Li422b0582021-04-30 13:09:43 -07009481 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009482 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009483 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009484 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9485 {
9486 rootType = from->sType;
9487 }
Yilong Li04218f72021-02-19 01:31:17 -08009488 const void* from_pNext = from;
9489 size_t pNext_size = 0u;
9490 while (!pNext_size && from_pNext)
9491 {
9492 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009493 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009494 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009495 to->pNext = nullptr;
9496 if (pNext_size)
9497 {
Yilong Li422b0582021-04-30 13:09:43 -07009498 to->pNext = (void*)alloc->alloc(pNext_size);
9499 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009500 }
9501 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
9502 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
Yilong Li422b0582021-04-30 13:09:43 -07009503 deepcopy_VkPipelineExecutableStatisticValueKHR(alloc, rootType, &from->value, (VkPipelineExecutableStatisticValueKHR*)(&to->value));
Yilong Lia8d45f12021-02-07 02:30:21 -08009504}
9505
9506void deepcopy_VkPipelineExecutableInternalRepresentationKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009507 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009508 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009509 const VkPipelineExecutableInternalRepresentationKHR* from,
9510 VkPipelineExecutableInternalRepresentationKHR* to)
9511{
Yilong Li422b0582021-04-30 13:09:43 -07009512 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009513 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009514 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009515 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9516 {
9517 rootType = from->sType;
9518 }
Yilong Li04218f72021-02-19 01:31:17 -08009519 const void* from_pNext = from;
9520 size_t pNext_size = 0u;
9521 while (!pNext_size && from_pNext)
9522 {
9523 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009524 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009525 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009526 to->pNext = nullptr;
9527 if (pNext_size)
9528 {
Yilong Li422b0582021-04-30 13:09:43 -07009529 to->pNext = (void*)alloc->alloc(pNext_size);
9530 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009531 }
9532 memcpy(to->name, from->name, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
9533 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
9534 to->pData = nullptr;
9535 if (from->pData)
9536 {
Yilong Li422b0582021-04-30 13:09:43 -07009537 to->pData = (void*)alloc->dupArray(from->pData, from->dataSize * sizeof(uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -08009538 }
9539}
9540
9541#endif
Yilong Li353409a2022-01-04 02:37:56 -08009542#ifdef VK_KHR_shader_integer_dot_product
9543void deepcopy_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(
9544 Allocator* alloc,
9545 VkStructureType rootType,
9546 const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* from,
9547 VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* to)
9548{
9549 (void)alloc;
9550 (void)rootType;
9551 *to = *from;
9552 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9553 {
9554 rootType = from->sType;
9555 }
9556 const void* from_pNext = from;
9557 size_t pNext_size = 0u;
9558 while (!pNext_size && from_pNext)
9559 {
9560 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9561 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9562 }
9563 to->pNext = nullptr;
9564 if (pNext_size)
9565 {
9566 to->pNext = (void*)alloc->alloc(pNext_size);
9567 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9568 }
9569}
9570
9571void deepcopy_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(
9572 Allocator* alloc,
9573 VkStructureType rootType,
9574 const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* from,
9575 VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* to)
9576{
9577 (void)alloc;
9578 (void)rootType;
9579 *to = *from;
9580 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9581 {
9582 rootType = from->sType;
9583 }
9584 const void* from_pNext = from;
9585 size_t pNext_size = 0u;
9586 while (!pNext_size && from_pNext)
9587 {
9588 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9589 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9590 }
9591 to->pNext = nullptr;
9592 if (pNext_size)
9593 {
9594 to->pNext = (void*)alloc->alloc(pNext_size);
9595 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9596 }
9597}
9598
9599#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009600#ifdef VK_KHR_pipeline_library
9601void deepcopy_VkPipelineLibraryCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -07009602 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -07009603 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -08009604 const VkPipelineLibraryCreateInfoKHR* from,
9605 VkPipelineLibraryCreateInfoKHR* to)
9606{
Yilong Li422b0582021-04-30 13:09:43 -07009607 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -07009608 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -08009609 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -07009610 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9611 {
9612 rootType = from->sType;
9613 }
Yilong Li04218f72021-02-19 01:31:17 -08009614 const void* from_pNext = from;
9615 size_t pNext_size = 0u;
9616 while (!pNext_size && from_pNext)
9617 {
9618 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -07009619 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -08009620 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009621 to->pNext = nullptr;
9622 if (pNext_size)
9623 {
Yilong Li324fa652021-12-29 17:00:42 -08009624 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -07009625 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -08009626 }
9627 to->pLibraries = nullptr;
9628 if (from->pLibraries)
9629 {
Yilong Li422b0582021-04-30 13:09:43 -07009630 to->pLibraries = (VkPipeline*)alloc->dupArray(from->pLibraries, from->libraryCount * sizeof(const VkPipeline));
Yilong Lia8d45f12021-02-07 02:30:21 -08009631 }
9632}
9633
9634#endif
9635#ifdef VK_KHR_shader_non_semantic_info
9636#endif
Yilong Li353409a2022-01-04 02:37:56 -08009637#ifdef VK_KHR_present_id
9638void deepcopy_VkPresentIdKHR(
9639 Allocator* alloc,
9640 VkStructureType rootType,
9641 const VkPresentIdKHR* from,
9642 VkPresentIdKHR* to)
9643{
9644 (void)alloc;
9645 (void)rootType;
9646 *to = *from;
9647 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9648 {
9649 rootType = from->sType;
9650 }
9651 const void* from_pNext = from;
9652 size_t pNext_size = 0u;
9653 while (!pNext_size && from_pNext)
9654 {
9655 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9656 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9657 }
9658 to->pNext = nullptr;
9659 if (pNext_size)
9660 {
9661 to->pNext = (void*)alloc->alloc(pNext_size);
9662 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9663 }
9664 to->pPresentIds = nullptr;
9665 if (from->pPresentIds)
9666 {
9667 to->pPresentIds = (uint64_t*)alloc->dupArray(from->pPresentIds, from->swapchainCount * sizeof(const uint64_t));
9668 }
9669}
9670
9671void deepcopy_VkPhysicalDevicePresentIdFeaturesKHR(
9672 Allocator* alloc,
9673 VkStructureType rootType,
9674 const VkPhysicalDevicePresentIdFeaturesKHR* from,
9675 VkPhysicalDevicePresentIdFeaturesKHR* to)
9676{
9677 (void)alloc;
9678 (void)rootType;
9679 *to = *from;
9680 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9681 {
9682 rootType = from->sType;
9683 }
9684 const void* from_pNext = from;
9685 size_t pNext_size = 0u;
9686 while (!pNext_size && from_pNext)
9687 {
9688 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9689 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9690 }
9691 to->pNext = nullptr;
9692 if (pNext_size)
9693 {
9694 to->pNext = (void*)alloc->alloc(pNext_size);
9695 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9696 }
9697}
9698
9699#endif
9700#ifdef VK_KHR_video_encode_queue
9701void deepcopy_VkVideoEncodeInfoKHR(
9702 Allocator* alloc,
9703 VkStructureType rootType,
9704 const VkVideoEncodeInfoKHR* from,
9705 VkVideoEncodeInfoKHR* to)
9706{
9707 (void)alloc;
9708 (void)rootType;
9709 *to = *from;
9710 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9711 {
9712 rootType = from->sType;
9713 }
9714 const void* from_pNext = from;
9715 size_t pNext_size = 0u;
9716 while (!pNext_size && from_pNext)
9717 {
9718 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9719 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9720 }
9721 to->pNext = nullptr;
9722 if (pNext_size)
9723 {
9724 to->pNext = (void*)alloc->alloc(pNext_size);
9725 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9726 }
9727 deepcopy_VkExtent2D(alloc, rootType, &from->codedExtent, (VkExtent2D*)(&to->codedExtent));
9728 deepcopy_VkVideoPictureResourceKHR(alloc, rootType, &from->srcPictureResource, (VkVideoPictureResourceKHR*)(&to->srcPictureResource));
9729 to->pSetupReferenceSlot = nullptr;
9730 if (from->pSetupReferenceSlot)
9731 {
9732 to->pSetupReferenceSlot = (VkVideoReferenceSlotKHR*)alloc->alloc(sizeof(const VkVideoReferenceSlotKHR));
9733 deepcopy_VkVideoReferenceSlotKHR(alloc, rootType, from->pSetupReferenceSlot, (VkVideoReferenceSlotKHR*)(to->pSetupReferenceSlot));
9734 }
9735 if (from)
9736 {
9737 to->pReferenceSlots = nullptr;
9738 if (from->pReferenceSlots)
9739 {
9740 to->pReferenceSlots = (VkVideoReferenceSlotKHR*)alloc->alloc(from->referenceSlotCount * sizeof(const VkVideoReferenceSlotKHR));
9741 to->referenceSlotCount = from->referenceSlotCount;
9742 for (uint32_t i = 0; i < (uint32_t)from->referenceSlotCount; ++i)
9743 {
9744 deepcopy_VkVideoReferenceSlotKHR(alloc, rootType, from->pReferenceSlots + i, (VkVideoReferenceSlotKHR*)(to->pReferenceSlots + i));
9745 }
9746 }
9747 }
9748}
9749
9750void deepcopy_VkVideoEncodeRateControlInfoKHR(
9751 Allocator* alloc,
9752 VkStructureType rootType,
9753 const VkVideoEncodeRateControlInfoKHR* from,
9754 VkVideoEncodeRateControlInfoKHR* to)
9755{
9756 (void)alloc;
9757 (void)rootType;
9758 *to = *from;
9759 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9760 {
9761 rootType = from->sType;
9762 }
9763 const void* from_pNext = from;
9764 size_t pNext_size = 0u;
9765 while (!pNext_size && from_pNext)
9766 {
9767 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9768 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9769 }
9770 to->pNext = nullptr;
9771 if (pNext_size)
9772 {
9773 to->pNext = (void*)alloc->alloc(pNext_size);
9774 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9775 }
9776}
9777
9778#endif
9779#ifdef VK_KHR_synchronization2
9780void deepcopy_VkMemoryBarrier2KHR(
9781 Allocator* alloc,
9782 VkStructureType rootType,
9783 const VkMemoryBarrier2KHR* from,
9784 VkMemoryBarrier2KHR* to)
9785{
9786 (void)alloc;
9787 (void)rootType;
9788 *to = *from;
9789 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9790 {
9791 rootType = from->sType;
9792 }
9793 const void* from_pNext = from;
9794 size_t pNext_size = 0u;
9795 while (!pNext_size && from_pNext)
9796 {
9797 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9798 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9799 }
9800 to->pNext = nullptr;
9801 if (pNext_size)
9802 {
9803 to->pNext = (void*)alloc->alloc(pNext_size);
9804 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9805 }
9806}
9807
9808void deepcopy_VkBufferMemoryBarrier2KHR(
9809 Allocator* alloc,
9810 VkStructureType rootType,
9811 const VkBufferMemoryBarrier2KHR* from,
9812 VkBufferMemoryBarrier2KHR* to)
9813{
9814 (void)alloc;
9815 (void)rootType;
9816 *to = *from;
9817 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9818 {
9819 rootType = from->sType;
9820 }
9821 const void* from_pNext = from;
9822 size_t pNext_size = 0u;
9823 while (!pNext_size && from_pNext)
9824 {
9825 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9826 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9827 }
9828 to->pNext = nullptr;
9829 if (pNext_size)
9830 {
9831 to->pNext = (void*)alloc->alloc(pNext_size);
9832 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9833 }
9834}
9835
9836void deepcopy_VkImageMemoryBarrier2KHR(
9837 Allocator* alloc,
9838 VkStructureType rootType,
9839 const VkImageMemoryBarrier2KHR* from,
9840 VkImageMemoryBarrier2KHR* to)
9841{
9842 (void)alloc;
9843 (void)rootType;
9844 *to = *from;
9845 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9846 {
9847 rootType = from->sType;
9848 }
9849 const void* from_pNext = from;
9850 size_t pNext_size = 0u;
9851 while (!pNext_size && from_pNext)
9852 {
9853 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9854 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9855 }
9856 to->pNext = nullptr;
9857 if (pNext_size)
9858 {
9859 to->pNext = (void*)alloc->alloc(pNext_size);
9860 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9861 }
9862 deepcopy_VkImageSubresourceRange(alloc, rootType, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
9863}
9864
9865void deepcopy_VkDependencyInfoKHR(
9866 Allocator* alloc,
9867 VkStructureType rootType,
9868 const VkDependencyInfoKHR* from,
9869 VkDependencyInfoKHR* to)
9870{
9871 (void)alloc;
9872 (void)rootType;
9873 *to = *from;
9874 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9875 {
9876 rootType = from->sType;
9877 }
9878 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(rootType, from_pNext);
9884 }
9885 to->pNext = nullptr;
9886 if (pNext_size)
9887 {
9888 to->pNext = (void*)alloc->alloc(pNext_size);
9889 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9890 }
9891 if (from)
9892 {
9893 to->pMemoryBarriers = nullptr;
9894 if (from->pMemoryBarriers)
9895 {
9896 to->pMemoryBarriers = (VkMemoryBarrier2KHR*)alloc->alloc(from->memoryBarrierCount * sizeof(const VkMemoryBarrier2KHR));
9897 to->memoryBarrierCount = from->memoryBarrierCount;
9898 for (uint32_t i = 0; i < (uint32_t)from->memoryBarrierCount; ++i)
9899 {
9900 deepcopy_VkMemoryBarrier2KHR(alloc, rootType, from->pMemoryBarriers + i, (VkMemoryBarrier2KHR*)(to->pMemoryBarriers + i));
9901 }
9902 }
9903 }
9904 if (from)
9905 {
9906 to->pBufferMemoryBarriers = nullptr;
9907 if (from->pBufferMemoryBarriers)
9908 {
9909 to->pBufferMemoryBarriers = (VkBufferMemoryBarrier2KHR*)alloc->alloc(from->bufferMemoryBarrierCount * sizeof(const VkBufferMemoryBarrier2KHR));
9910 to->bufferMemoryBarrierCount = from->bufferMemoryBarrierCount;
9911 for (uint32_t i = 0; i < (uint32_t)from->bufferMemoryBarrierCount; ++i)
9912 {
9913 deepcopy_VkBufferMemoryBarrier2KHR(alloc, rootType, from->pBufferMemoryBarriers + i, (VkBufferMemoryBarrier2KHR*)(to->pBufferMemoryBarriers + i));
9914 }
9915 }
9916 }
9917 if (from)
9918 {
9919 to->pImageMemoryBarriers = nullptr;
9920 if (from->pImageMemoryBarriers)
9921 {
9922 to->pImageMemoryBarriers = (VkImageMemoryBarrier2KHR*)alloc->alloc(from->imageMemoryBarrierCount * sizeof(const VkImageMemoryBarrier2KHR));
9923 to->imageMemoryBarrierCount = from->imageMemoryBarrierCount;
9924 for (uint32_t i = 0; i < (uint32_t)from->imageMemoryBarrierCount; ++i)
9925 {
9926 deepcopy_VkImageMemoryBarrier2KHR(alloc, rootType, from->pImageMemoryBarriers + i, (VkImageMemoryBarrier2KHR*)(to->pImageMemoryBarriers + i));
9927 }
9928 }
9929 }
9930}
9931
9932void deepcopy_VkSemaphoreSubmitInfoKHR(
9933 Allocator* alloc,
9934 VkStructureType rootType,
9935 const VkSemaphoreSubmitInfoKHR* from,
9936 VkSemaphoreSubmitInfoKHR* to)
9937{
9938 (void)alloc;
9939 (void)rootType;
9940 *to = *from;
9941 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9942 {
9943 rootType = from->sType;
9944 }
9945 const void* from_pNext = from;
9946 size_t pNext_size = 0u;
9947 while (!pNext_size && from_pNext)
9948 {
9949 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9950 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9951 }
9952 to->pNext = nullptr;
9953 if (pNext_size)
9954 {
9955 to->pNext = (void*)alloc->alloc(pNext_size);
9956 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9957 }
9958}
9959
9960void deepcopy_VkCommandBufferSubmitInfoKHR(
9961 Allocator* alloc,
9962 VkStructureType rootType,
9963 const VkCommandBufferSubmitInfoKHR* from,
9964 VkCommandBufferSubmitInfoKHR* to)
9965{
9966 (void)alloc;
9967 (void)rootType;
9968 *to = *from;
9969 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9970 {
9971 rootType = from->sType;
9972 }
9973 const void* from_pNext = from;
9974 size_t pNext_size = 0u;
9975 while (!pNext_size && from_pNext)
9976 {
9977 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
9978 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
9979 }
9980 to->pNext = nullptr;
9981 if (pNext_size)
9982 {
9983 to->pNext = (void*)alloc->alloc(pNext_size);
9984 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
9985 }
9986}
9987
9988void deepcopy_VkSubmitInfo2KHR(
9989 Allocator* alloc,
9990 VkStructureType rootType,
9991 const VkSubmitInfo2KHR* from,
9992 VkSubmitInfo2KHR* to)
9993{
9994 (void)alloc;
9995 (void)rootType;
9996 *to = *from;
9997 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
9998 {
9999 rootType = from->sType;
10000 }
10001 const void* from_pNext = from;
10002 size_t pNext_size = 0u;
10003 while (!pNext_size && from_pNext)
10004 {
10005 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10006 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10007 }
10008 to->pNext = nullptr;
10009 if (pNext_size)
10010 {
10011 to->pNext = (void*)alloc->alloc(pNext_size);
10012 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10013 }
10014 if (from)
10015 {
10016 to->pWaitSemaphoreInfos = nullptr;
10017 if (from->pWaitSemaphoreInfos)
10018 {
10019 to->pWaitSemaphoreInfos = (VkSemaphoreSubmitInfoKHR*)alloc->alloc(from->waitSemaphoreInfoCount * sizeof(const VkSemaphoreSubmitInfoKHR));
10020 to->waitSemaphoreInfoCount = from->waitSemaphoreInfoCount;
10021 for (uint32_t i = 0; i < (uint32_t)from->waitSemaphoreInfoCount; ++i)
10022 {
10023 deepcopy_VkSemaphoreSubmitInfoKHR(alloc, rootType, from->pWaitSemaphoreInfos + i, (VkSemaphoreSubmitInfoKHR*)(to->pWaitSemaphoreInfos + i));
10024 }
10025 }
10026 }
10027 if (from)
10028 {
10029 to->pCommandBufferInfos = nullptr;
10030 if (from->pCommandBufferInfos)
10031 {
10032 to->pCommandBufferInfos = (VkCommandBufferSubmitInfoKHR*)alloc->alloc(from->commandBufferInfoCount * sizeof(const VkCommandBufferSubmitInfoKHR));
10033 to->commandBufferInfoCount = from->commandBufferInfoCount;
10034 for (uint32_t i = 0; i < (uint32_t)from->commandBufferInfoCount; ++i)
10035 {
10036 deepcopy_VkCommandBufferSubmitInfoKHR(alloc, rootType, from->pCommandBufferInfos + i, (VkCommandBufferSubmitInfoKHR*)(to->pCommandBufferInfos + i));
10037 }
10038 }
10039 }
10040 if (from)
10041 {
10042 to->pSignalSemaphoreInfos = nullptr;
10043 if (from->pSignalSemaphoreInfos)
10044 {
10045 to->pSignalSemaphoreInfos = (VkSemaphoreSubmitInfoKHR*)alloc->alloc(from->signalSemaphoreInfoCount * sizeof(const VkSemaphoreSubmitInfoKHR));
10046 to->signalSemaphoreInfoCount = from->signalSemaphoreInfoCount;
10047 for (uint32_t i = 0; i < (uint32_t)from->signalSemaphoreInfoCount; ++i)
10048 {
10049 deepcopy_VkSemaphoreSubmitInfoKHR(alloc, rootType, from->pSignalSemaphoreInfos + i, (VkSemaphoreSubmitInfoKHR*)(to->pSignalSemaphoreInfos + i));
10050 }
10051 }
10052 }
10053}
10054
10055void deepcopy_VkPhysicalDeviceSynchronization2FeaturesKHR(
10056 Allocator* alloc,
10057 VkStructureType rootType,
10058 const VkPhysicalDeviceSynchronization2FeaturesKHR* from,
10059 VkPhysicalDeviceSynchronization2FeaturesKHR* to)
10060{
10061 (void)alloc;
10062 (void)rootType;
10063 *to = *from;
10064 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10065 {
10066 rootType = from->sType;
10067 }
10068 const void* from_pNext = from;
10069 size_t pNext_size = 0u;
10070 while (!pNext_size && from_pNext)
10071 {
10072 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10073 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10074 }
10075 to->pNext = nullptr;
10076 if (pNext_size)
10077 {
10078 to->pNext = (void*)alloc->alloc(pNext_size);
10079 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10080 }
10081}
10082
10083void deepcopy_VkQueueFamilyCheckpointProperties2NV(
10084 Allocator* alloc,
10085 VkStructureType rootType,
10086 const VkQueueFamilyCheckpointProperties2NV* from,
10087 VkQueueFamilyCheckpointProperties2NV* to)
10088{
10089 (void)alloc;
10090 (void)rootType;
10091 *to = *from;
10092 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10093 {
10094 rootType = from->sType;
10095 }
10096 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(rootType, from_pNext);
10102 }
10103 to->pNext = nullptr;
10104 if (pNext_size)
10105 {
10106 to->pNext = (void*)alloc->alloc(pNext_size);
10107 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10108 }
10109}
10110
10111void deepcopy_VkCheckpointData2NV(
10112 Allocator* alloc,
10113 VkStructureType rootType,
10114 const VkCheckpointData2NV* from,
10115 VkCheckpointData2NV* to)
10116{
10117 (void)alloc;
10118 (void)rootType;
10119 *to = *from;
10120 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10121 {
10122 rootType = from->sType;
10123 }
10124 const void* from_pNext = from;
10125 size_t pNext_size = 0u;
10126 while (!pNext_size && from_pNext)
10127 {
10128 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10129 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10130 }
10131 to->pNext = nullptr;
10132 if (pNext_size)
10133 {
10134 to->pNext = (void*)alloc->alloc(pNext_size);
10135 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10136 }
10137 to->pCheckpointMarker = nullptr;
10138 if (from->pCheckpointMarker)
10139 {
10140 to->pCheckpointMarker = (void*)alloc->dupArray(from->pCheckpointMarker, sizeof(uint8_t));
10141 }
10142}
10143
10144#endif
10145#ifdef VK_KHR_shader_subgroup_uniform_control_flow
10146void deepcopy_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
10147 Allocator* alloc,
10148 VkStructureType rootType,
10149 const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* from,
10150 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* to)
10151{
10152 (void)alloc;
10153 (void)rootType;
10154 *to = *from;
10155 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10156 {
10157 rootType = from->sType;
10158 }
10159 const void* from_pNext = from;
10160 size_t pNext_size = 0u;
10161 while (!pNext_size && from_pNext)
10162 {
10163 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10164 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10165 }
10166 to->pNext = nullptr;
10167 if (pNext_size)
10168 {
10169 to->pNext = (void*)alloc->alloc(pNext_size);
10170 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10171 }
10172}
10173
10174#endif
10175#ifdef VK_KHR_zero_initialize_workgroup_memory
10176void deepcopy_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
10177 Allocator* alloc,
10178 VkStructureType rootType,
10179 const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* from,
10180 VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* to)
10181{
10182 (void)alloc;
10183 (void)rootType;
10184 *to = *from;
10185 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10186 {
10187 rootType = from->sType;
10188 }
10189 const void* from_pNext = from;
10190 size_t pNext_size = 0u;
10191 while (!pNext_size && from_pNext)
10192 {
10193 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10194 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10195 }
10196 to->pNext = nullptr;
10197 if (pNext_size)
10198 {
10199 to->pNext = (void*)alloc->alloc(pNext_size);
10200 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10201 }
10202}
10203
10204#endif
10205#ifdef VK_KHR_workgroup_memory_explicit_layout
10206void deepcopy_VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
10207 Allocator* alloc,
10208 VkStructureType rootType,
10209 const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* from,
10210 VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* to)
10211{
10212 (void)alloc;
10213 (void)rootType;
10214 *to = *from;
10215 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10216 {
10217 rootType = from->sType;
10218 }
10219 const void* from_pNext = from;
10220 size_t pNext_size = 0u;
10221 while (!pNext_size && from_pNext)
10222 {
10223 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10224 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10225 }
10226 to->pNext = nullptr;
10227 if (pNext_size)
10228 {
10229 to->pNext = (void*)alloc->alloc(pNext_size);
10230 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10231 }
10232}
10233
10234#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010235#ifdef VK_KHR_copy_commands2
10236void deepcopy_VkBufferCopy2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010237 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010238 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010239 const VkBufferCopy2KHR* from,
10240 VkBufferCopy2KHR* to)
10241{
Yilong Li422b0582021-04-30 13:09:43 -070010242 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010243 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010244 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010245 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10246 {
10247 rootType = from->sType;
10248 }
Yilong Li04218f72021-02-19 01:31:17 -080010249 const void* from_pNext = from;
10250 size_t pNext_size = 0u;
10251 while (!pNext_size && from_pNext)
10252 {
10253 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010254 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010255 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010256 to->pNext = nullptr;
10257 if (pNext_size)
10258 {
Yilong Li324fa652021-12-29 17:00:42 -080010259 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010260 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010261 }
10262}
10263
10264void deepcopy_VkCopyBufferInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010265 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010266 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010267 const VkCopyBufferInfo2KHR* from,
10268 VkCopyBufferInfo2KHR* to)
10269{
Yilong Li422b0582021-04-30 13:09:43 -070010270 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010271 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010272 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010273 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10274 {
10275 rootType = from->sType;
10276 }
Yilong Li04218f72021-02-19 01:31:17 -080010277 const void* from_pNext = from;
10278 size_t pNext_size = 0u;
10279 while (!pNext_size && from_pNext)
10280 {
10281 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010282 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010283 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010284 to->pNext = nullptr;
10285 if (pNext_size)
10286 {
Yilong Li324fa652021-12-29 17:00:42 -080010287 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010288 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010289 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010290 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010291 {
Yilong Libd10ec92021-02-10 13:24:27 -080010292 to->pRegions = nullptr;
10293 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -080010294 {
Yilong Li422b0582021-04-30 13:09:43 -070010295 to->pRegions = (VkBufferCopy2KHR*)alloc->alloc(from->regionCount * sizeof(const VkBufferCopy2KHR));
Yilong Libd10ec92021-02-10 13:24:27 -080010296 to->regionCount = from->regionCount;
10297 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
10298 {
Yilong Li422b0582021-04-30 13:09:43 -070010299 deepcopy_VkBufferCopy2KHR(alloc, rootType, from->pRegions + i, (VkBufferCopy2KHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -080010300 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010301 }
10302 }
10303}
10304
10305void deepcopy_VkImageCopy2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010306 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010307 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010308 const VkImageCopy2KHR* from,
10309 VkImageCopy2KHR* to)
10310{
Yilong Li422b0582021-04-30 13:09:43 -070010311 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010312 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010313 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010314 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10315 {
10316 rootType = from->sType;
10317 }
Yilong Li04218f72021-02-19 01:31:17 -080010318 const void* from_pNext = from;
10319 size_t pNext_size = 0u;
10320 while (!pNext_size && from_pNext)
10321 {
10322 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010323 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010324 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010325 to->pNext = nullptr;
10326 if (pNext_size)
10327 {
Yilong Li324fa652021-12-29 17:00:42 -080010328 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010329 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010330 }
Yilong Li422b0582021-04-30 13:09:43 -070010331 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
10332 deepcopy_VkOffset3D(alloc, rootType, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
10333 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
10334 deepcopy_VkOffset3D(alloc, rootType, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
10335 deepcopy_VkExtent3D(alloc, rootType, &from->extent, (VkExtent3D*)(&to->extent));
Yilong Lia8d45f12021-02-07 02:30:21 -080010336}
10337
10338void deepcopy_VkCopyImageInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010339 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010340 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010341 const VkCopyImageInfo2KHR* from,
10342 VkCopyImageInfo2KHR* to)
10343{
Yilong Li422b0582021-04-30 13:09:43 -070010344 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010345 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010346 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010347 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10348 {
10349 rootType = from->sType;
10350 }
Yilong Li04218f72021-02-19 01:31:17 -080010351 const void* from_pNext = from;
10352 size_t pNext_size = 0u;
10353 while (!pNext_size && from_pNext)
10354 {
10355 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010356 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010357 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010358 to->pNext = nullptr;
10359 if (pNext_size)
10360 {
Yilong Li324fa652021-12-29 17:00:42 -080010361 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010362 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010363 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010364 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010365 {
Yilong Libd10ec92021-02-10 13:24:27 -080010366 to->pRegions = nullptr;
10367 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -080010368 {
Yilong Li422b0582021-04-30 13:09:43 -070010369 to->pRegions = (VkImageCopy2KHR*)alloc->alloc(from->regionCount * sizeof(const VkImageCopy2KHR));
Yilong Libd10ec92021-02-10 13:24:27 -080010370 to->regionCount = from->regionCount;
10371 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
10372 {
Yilong Li422b0582021-04-30 13:09:43 -070010373 deepcopy_VkImageCopy2KHR(alloc, rootType, from->pRegions + i, (VkImageCopy2KHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -080010374 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010375 }
10376 }
10377}
10378
10379void deepcopy_VkBufferImageCopy2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010380 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010381 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010382 const VkBufferImageCopy2KHR* from,
10383 VkBufferImageCopy2KHR* to)
10384{
Yilong Li422b0582021-04-30 13:09:43 -070010385 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010386 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010387 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010388 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10389 {
10390 rootType = from->sType;
10391 }
Yilong Li04218f72021-02-19 01:31:17 -080010392 const void* from_pNext = from;
10393 size_t pNext_size = 0u;
10394 while (!pNext_size && from_pNext)
10395 {
10396 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010397 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010398 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010399 to->pNext = nullptr;
10400 if (pNext_size)
10401 {
Yilong Li324fa652021-12-29 17:00:42 -080010402 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010403 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010404 }
Yilong Li422b0582021-04-30 13:09:43 -070010405 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->imageSubresource, (VkImageSubresourceLayers*)(&to->imageSubresource));
10406 deepcopy_VkOffset3D(alloc, rootType, &from->imageOffset, (VkOffset3D*)(&to->imageOffset));
10407 deepcopy_VkExtent3D(alloc, rootType, &from->imageExtent, (VkExtent3D*)(&to->imageExtent));
Yilong Lia8d45f12021-02-07 02:30:21 -080010408}
10409
10410void deepcopy_VkCopyBufferToImageInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010411 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010412 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010413 const VkCopyBufferToImageInfo2KHR* from,
10414 VkCopyBufferToImageInfo2KHR* to)
10415{
Yilong Li422b0582021-04-30 13:09:43 -070010416 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010417 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010418 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010419 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10420 {
10421 rootType = from->sType;
10422 }
Yilong Li04218f72021-02-19 01:31:17 -080010423 const void* from_pNext = from;
10424 size_t pNext_size = 0u;
10425 while (!pNext_size && from_pNext)
10426 {
10427 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010428 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010429 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010430 to->pNext = nullptr;
10431 if (pNext_size)
10432 {
Yilong Li324fa652021-12-29 17:00:42 -080010433 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010434 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010435 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010436 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010437 {
Yilong Libd10ec92021-02-10 13:24:27 -080010438 to->pRegions = nullptr;
10439 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -080010440 {
Yilong Li422b0582021-04-30 13:09:43 -070010441 to->pRegions = (VkBufferImageCopy2KHR*)alloc->alloc(from->regionCount * sizeof(const VkBufferImageCopy2KHR));
Yilong Libd10ec92021-02-10 13:24:27 -080010442 to->regionCount = from->regionCount;
10443 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
10444 {
Yilong Li422b0582021-04-30 13:09:43 -070010445 deepcopy_VkBufferImageCopy2KHR(alloc, rootType, from->pRegions + i, (VkBufferImageCopy2KHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -080010446 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010447 }
10448 }
10449}
10450
10451void deepcopy_VkCopyImageToBufferInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010452 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010453 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010454 const VkCopyImageToBufferInfo2KHR* from,
10455 VkCopyImageToBufferInfo2KHR* to)
10456{
Yilong Li422b0582021-04-30 13:09:43 -070010457 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010458 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010459 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010460 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10461 {
10462 rootType = from->sType;
10463 }
Yilong Li04218f72021-02-19 01:31:17 -080010464 const void* from_pNext = from;
10465 size_t pNext_size = 0u;
10466 while (!pNext_size && from_pNext)
10467 {
10468 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010469 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010470 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010471 to->pNext = nullptr;
10472 if (pNext_size)
10473 {
Yilong Li324fa652021-12-29 17:00:42 -080010474 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010475 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010476 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010477 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010478 {
Yilong Libd10ec92021-02-10 13:24:27 -080010479 to->pRegions = nullptr;
10480 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -080010481 {
Yilong Li422b0582021-04-30 13:09:43 -070010482 to->pRegions = (VkBufferImageCopy2KHR*)alloc->alloc(from->regionCount * sizeof(const VkBufferImageCopy2KHR));
Yilong Libd10ec92021-02-10 13:24:27 -080010483 to->regionCount = from->regionCount;
10484 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
10485 {
Yilong Li422b0582021-04-30 13:09:43 -070010486 deepcopy_VkBufferImageCopy2KHR(alloc, rootType, from->pRegions + i, (VkBufferImageCopy2KHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -080010487 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010488 }
10489 }
10490}
10491
10492void deepcopy_VkImageBlit2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010493 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010494 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010495 const VkImageBlit2KHR* from,
10496 VkImageBlit2KHR* to)
10497{
Yilong Li422b0582021-04-30 13:09:43 -070010498 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010499 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010500 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010501 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10502 {
10503 rootType = from->sType;
10504 }
Yilong Li04218f72021-02-19 01:31:17 -080010505 const void* from_pNext = from;
10506 size_t pNext_size = 0u;
10507 while (!pNext_size && from_pNext)
10508 {
10509 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010510 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010511 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010512 to->pNext = nullptr;
10513 if (pNext_size)
10514 {
Yilong Li324fa652021-12-29 17:00:42 -080010515 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010516 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010517 }
Yilong Li422b0582021-04-30 13:09:43 -070010518 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
Yilong Lia8d45f12021-02-07 02:30:21 -080010519 for (uint32_t i = 0; i < (uint32_t)2; ++i)
10520 {
Yilong Li422b0582021-04-30 13:09:43 -070010521 deepcopy_VkOffset3D(alloc, rootType, from->srcOffsets + i, (VkOffset3D*)(to->srcOffsets + i));
Yilong Lia8d45f12021-02-07 02:30:21 -080010522 }
Yilong Li422b0582021-04-30 13:09:43 -070010523 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
Yilong Lia8d45f12021-02-07 02:30:21 -080010524 for (uint32_t i = 0; i < (uint32_t)2; ++i)
10525 {
Yilong Li422b0582021-04-30 13:09:43 -070010526 deepcopy_VkOffset3D(alloc, rootType, from->dstOffsets + i, (VkOffset3D*)(to->dstOffsets + i));
Yilong Lia8d45f12021-02-07 02:30:21 -080010527 }
10528}
10529
10530void deepcopy_VkBlitImageInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010531 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010532 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010533 const VkBlitImageInfo2KHR* from,
10534 VkBlitImageInfo2KHR* to)
10535{
Yilong Li422b0582021-04-30 13:09:43 -070010536 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010537 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010538 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010539 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10540 {
10541 rootType = from->sType;
10542 }
Yilong Li04218f72021-02-19 01:31:17 -080010543 const void* from_pNext = from;
10544 size_t pNext_size = 0u;
10545 while (!pNext_size && from_pNext)
10546 {
10547 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010548 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010549 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010550 to->pNext = nullptr;
10551 if (pNext_size)
10552 {
Yilong Li324fa652021-12-29 17:00:42 -080010553 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010554 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010555 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010556 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010557 {
Yilong Libd10ec92021-02-10 13:24:27 -080010558 to->pRegions = nullptr;
10559 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -080010560 {
Yilong Li422b0582021-04-30 13:09:43 -070010561 to->pRegions = (VkImageBlit2KHR*)alloc->alloc(from->regionCount * sizeof(const VkImageBlit2KHR));
Yilong Libd10ec92021-02-10 13:24:27 -080010562 to->regionCount = from->regionCount;
10563 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
10564 {
Yilong Li422b0582021-04-30 13:09:43 -070010565 deepcopy_VkImageBlit2KHR(alloc, rootType, from->pRegions + i, (VkImageBlit2KHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -080010566 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010567 }
10568 }
10569}
10570
10571void deepcopy_VkImageResolve2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010572 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010573 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010574 const VkImageResolve2KHR* from,
10575 VkImageResolve2KHR* to)
10576{
Yilong Li422b0582021-04-30 13:09:43 -070010577 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010578 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010579 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010580 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10581 {
10582 rootType = from->sType;
10583 }
Yilong Li04218f72021-02-19 01:31:17 -080010584 const void* from_pNext = from;
10585 size_t pNext_size = 0u;
10586 while (!pNext_size && from_pNext)
10587 {
10588 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010589 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010590 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010591 to->pNext = nullptr;
10592 if (pNext_size)
10593 {
Yilong Li324fa652021-12-29 17:00:42 -080010594 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010595 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010596 }
Yilong Li422b0582021-04-30 13:09:43 -070010597 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
10598 deepcopy_VkOffset3D(alloc, rootType, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
10599 deepcopy_VkImageSubresourceLayers(alloc, rootType, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
10600 deepcopy_VkOffset3D(alloc, rootType, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
10601 deepcopy_VkExtent3D(alloc, rootType, &from->extent, (VkExtent3D*)(&to->extent));
Yilong Lia8d45f12021-02-07 02:30:21 -080010602}
10603
10604void deepcopy_VkResolveImageInfo2KHR(
Yilong Li422b0582021-04-30 13:09:43 -070010605 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010606 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080010607 const VkResolveImageInfo2KHR* from,
10608 VkResolveImageInfo2KHR* to)
10609{
Yilong Li422b0582021-04-30 13:09:43 -070010610 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010611 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080010612 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010613 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10614 {
10615 rootType = from->sType;
10616 }
Yilong Li04218f72021-02-19 01:31:17 -080010617 const void* from_pNext = from;
10618 size_t pNext_size = 0u;
10619 while (!pNext_size && from_pNext)
10620 {
10621 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010622 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010623 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010624 to->pNext = nullptr;
10625 if (pNext_size)
10626 {
Yilong Li324fa652021-12-29 17:00:42 -080010627 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010628 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080010629 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080010630 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080010631 {
Yilong Libd10ec92021-02-10 13:24:27 -080010632 to->pRegions = nullptr;
10633 if (from->pRegions)
Yilong Lia8d45f12021-02-07 02:30:21 -080010634 {
Yilong Li422b0582021-04-30 13:09:43 -070010635 to->pRegions = (VkImageResolve2KHR*)alloc->alloc(from->regionCount * sizeof(const VkImageResolve2KHR));
Yilong Libd10ec92021-02-10 13:24:27 -080010636 to->regionCount = from->regionCount;
10637 for (uint32_t i = 0; i < (uint32_t)from->regionCount; ++i)
10638 {
Yilong Li422b0582021-04-30 13:09:43 -070010639 deepcopy_VkImageResolve2KHR(alloc, rootType, from->pRegions + i, (VkImageResolve2KHR*)(to->pRegions + i));
Yilong Libd10ec92021-02-10 13:24:27 -080010640 }
Yilong Lia8d45f12021-02-07 02:30:21 -080010641 }
10642 }
Lingfeng Yang4c056b22020-07-02 11:43:57 -070010643}
10644
10645#endif
Yilong Li353409a2022-01-04 02:37:56 -080010646#ifdef VK_KHR_format_feature_flags2
10647void deepcopy_VkFormatProperties3KHR(
10648 Allocator* alloc,
10649 VkStructureType rootType,
10650 const VkFormatProperties3KHR* from,
10651 VkFormatProperties3KHR* to)
10652{
10653 (void)alloc;
10654 (void)rootType;
10655 *to = *from;
10656 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10657 {
10658 rootType = from->sType;
10659 }
10660 const void* from_pNext = from;
10661 size_t pNext_size = 0u;
10662 while (!pNext_size && from_pNext)
10663 {
10664 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10665 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10666 }
10667 to->pNext = nullptr;
10668 if (pNext_size)
10669 {
10670 to->pNext = (void*)alloc->alloc(pNext_size);
10671 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10672 }
10673}
10674
10675#endif
10676#ifdef VK_KHR_maintenance4
10677void deepcopy_VkPhysicalDeviceMaintenance4FeaturesKHR(
10678 Allocator* alloc,
10679 VkStructureType rootType,
10680 const VkPhysicalDeviceMaintenance4FeaturesKHR* from,
10681 VkPhysicalDeviceMaintenance4FeaturesKHR* to)
10682{
10683 (void)alloc;
10684 (void)rootType;
10685 *to = *from;
10686 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10687 {
10688 rootType = from->sType;
10689 }
10690 const void* from_pNext = from;
10691 size_t pNext_size = 0u;
10692 while (!pNext_size && from_pNext)
10693 {
10694 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10695 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10696 }
10697 to->pNext = nullptr;
10698 if (pNext_size)
10699 {
10700 to->pNext = (void*)alloc->alloc(pNext_size);
10701 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10702 }
10703}
10704
10705void deepcopy_VkPhysicalDeviceMaintenance4PropertiesKHR(
10706 Allocator* alloc,
10707 VkStructureType rootType,
10708 const VkPhysicalDeviceMaintenance4PropertiesKHR* from,
10709 VkPhysicalDeviceMaintenance4PropertiesKHR* to)
10710{
10711 (void)alloc;
10712 (void)rootType;
10713 *to = *from;
10714 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10715 {
10716 rootType = from->sType;
10717 }
10718 const void* from_pNext = from;
10719 size_t pNext_size = 0u;
10720 while (!pNext_size && from_pNext)
10721 {
10722 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10723 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10724 }
10725 to->pNext = nullptr;
10726 if (pNext_size)
10727 {
10728 to->pNext = (void*)alloc->alloc(pNext_size);
10729 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10730 }
10731}
10732
10733void deepcopy_VkDeviceBufferMemoryRequirementsKHR(
10734 Allocator* alloc,
10735 VkStructureType rootType,
10736 const VkDeviceBufferMemoryRequirementsKHR* from,
10737 VkDeviceBufferMemoryRequirementsKHR* to)
10738{
10739 (void)alloc;
10740 (void)rootType;
10741 *to = *from;
10742 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10743 {
10744 rootType = from->sType;
10745 }
10746 const void* from_pNext = from;
10747 size_t pNext_size = 0u;
10748 while (!pNext_size && from_pNext)
10749 {
10750 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10751 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10752 }
10753 to->pNext = nullptr;
10754 if (pNext_size)
10755 {
10756 to->pNext = (void*)alloc->alloc(pNext_size);
10757 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10758 }
10759 to->pCreateInfo = nullptr;
10760 if (from->pCreateInfo)
10761 {
10762 to->pCreateInfo = (VkBufferCreateInfo*)alloc->alloc(sizeof(const VkBufferCreateInfo));
10763 deepcopy_VkBufferCreateInfo(alloc, rootType, from->pCreateInfo, (VkBufferCreateInfo*)(to->pCreateInfo));
10764 }
10765}
10766
10767void deepcopy_VkDeviceImageMemoryRequirementsKHR(
10768 Allocator* alloc,
10769 VkStructureType rootType,
10770 const VkDeviceImageMemoryRequirementsKHR* from,
10771 VkDeviceImageMemoryRequirementsKHR* to)
10772{
10773 (void)alloc;
10774 (void)rootType;
10775 *to = *from;
10776 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10777 {
10778 rootType = from->sType;
10779 }
10780 const void* from_pNext = from;
10781 size_t pNext_size = 0u;
10782 while (!pNext_size && from_pNext)
10783 {
10784 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
10785 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
10786 }
10787 to->pNext = nullptr;
10788 if (pNext_size)
10789 {
10790 to->pNext = (void*)alloc->alloc(pNext_size);
10791 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
10792 }
10793 to->pCreateInfo = nullptr;
10794 if (from->pCreateInfo)
10795 {
10796 to->pCreateInfo = (VkImageCreateInfo*)alloc->alloc(sizeof(const VkImageCreateInfo));
10797 deepcopy_VkImageCreateInfo(alloc, rootType, from->pCreateInfo, (VkImageCreateInfo*)(to->pCreateInfo));
10798 }
10799}
10800
10801#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080010802#ifdef VK_ANDROID_native_buffer
10803void deepcopy_VkNativeBufferANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070010804 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010805 VkStructureType rootType,
Lingfeng Yang808a6312018-11-13 21:06:15 -080010806 const VkNativeBufferANDROID* from,
10807 VkNativeBufferANDROID* to)
10808{
Yilong Li422b0582021-04-30 13:09:43 -070010809 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010810 (void)rootType;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010811 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010812 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10813 {
10814 rootType = from->sType;
10815 }
Yilong Li04218f72021-02-19 01:31:17 -080010816 const void* from_pNext = from;
10817 size_t pNext_size = 0u;
10818 while (!pNext_size && from_pNext)
10819 {
10820 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010821 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010822 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080010823 to->pNext = nullptr;
10824 if (pNext_size)
10825 {
Yilong Li324fa652021-12-29 17:00:42 -080010826 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010827 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang808a6312018-11-13 21:06:15 -080010828 }
10829 to->handle = nullptr;
10830 if (from->handle)
10831 {
Yilong Li422b0582021-04-30 13:09:43 -070010832 to->handle = (uint32_t*)alloc->dupArray(from->handle, sizeof(const uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080010833 }
10834}
10835
10836#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010837#ifdef VK_EXT_debug_report
10838void deepcopy_VkDebugReportCallbackCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070010839 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010840 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010841 const VkDebugReportCallbackCreateInfoEXT* from,
10842 VkDebugReportCallbackCreateInfoEXT* to)
10843{
Yilong Li422b0582021-04-30 13:09:43 -070010844 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010845 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010846 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010847 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10848 {
10849 rootType = from->sType;
10850 }
Yilong Li04218f72021-02-19 01:31:17 -080010851 const void* from_pNext = from;
10852 size_t pNext_size = 0u;
10853 while (!pNext_size && from_pNext)
10854 {
10855 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010856 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010857 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010858 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010859 if (pNext_size)
10860 {
Yilong Li324fa652021-12-29 17:00:42 -080010861 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010862 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010863 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010864 to->pUserData = nullptr;
10865 if (from->pUserData)
10866 {
Yilong Li422b0582021-04-30 13:09:43 -070010867 to->pUserData = (void*)alloc->dupArray(from->pUserData, sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010868 }
10869}
10870
10871#endif
10872#ifdef VK_NV_glsl_shader
10873#endif
10874#ifdef VK_EXT_depth_range_unrestricted
10875#endif
10876#ifdef VK_IMG_filter_cubic
10877#endif
10878#ifdef VK_AMD_rasterization_order
10879void deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(
Yilong Li422b0582021-04-30 13:09:43 -070010880 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010881 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010882 const VkPipelineRasterizationStateRasterizationOrderAMD* from,
10883 VkPipelineRasterizationStateRasterizationOrderAMD* to)
10884{
Yilong Li422b0582021-04-30 13:09:43 -070010885 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010886 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010887 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010888 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10889 {
10890 rootType = from->sType;
10891 }
Yilong Li04218f72021-02-19 01:31:17 -080010892 const void* from_pNext = from;
10893 size_t pNext_size = 0u;
10894 while (!pNext_size && from_pNext)
10895 {
10896 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010897 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010898 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010899 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010900 if (pNext_size)
10901 {
Yilong Li324fa652021-12-29 17:00:42 -080010902 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010903 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010904 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010905}
10906
10907#endif
10908#ifdef VK_AMD_shader_trinary_minmax
10909#endif
10910#ifdef VK_AMD_shader_explicit_vertex_parameter
10911#endif
10912#ifdef VK_EXT_debug_marker
10913void deepcopy_VkDebugMarkerObjectNameInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070010914 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010915 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010916 const VkDebugMarkerObjectNameInfoEXT* from,
10917 VkDebugMarkerObjectNameInfoEXT* to)
10918{
Yilong Li422b0582021-04-30 13:09:43 -070010919 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010920 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010921 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010922 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10923 {
10924 rootType = from->sType;
10925 }
Yilong Li04218f72021-02-19 01:31:17 -080010926 const void* from_pNext = from;
10927 size_t pNext_size = 0u;
10928 while (!pNext_size && from_pNext)
10929 {
10930 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010931 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010932 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010933 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010934 if (pNext_size)
10935 {
Yilong Li324fa652021-12-29 17:00:42 -080010936 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010937 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010938 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010939 to->pObjectName = nullptr;
10940 if (from->pObjectName)
10941 {
Yilong Li422b0582021-04-30 13:09:43 -070010942 to->pObjectName = alloc->strDup(from->pObjectName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010943 }
10944}
10945
10946void deepcopy_VkDebugMarkerObjectTagInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070010947 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010948 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010949 const VkDebugMarkerObjectTagInfoEXT* from,
10950 VkDebugMarkerObjectTagInfoEXT* to)
10951{
Yilong Li422b0582021-04-30 13:09:43 -070010952 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010953 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010954 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010955 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10956 {
10957 rootType = from->sType;
10958 }
Yilong Li04218f72021-02-19 01:31:17 -080010959 const void* from_pNext = from;
10960 size_t pNext_size = 0u;
10961 while (!pNext_size && from_pNext)
10962 {
10963 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010964 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010965 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010966 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080010967 if (pNext_size)
10968 {
Yilong Li324fa652021-12-29 17:00:42 -080010969 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070010970 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080010971 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010972 to->pTag = nullptr;
10973 if (from->pTag)
10974 {
Yilong Li422b0582021-04-30 13:09:43 -070010975 to->pTag = (void*)alloc->dupArray(from->pTag, from->tagSize * sizeof(const uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010976 }
10977}
10978
10979void deepcopy_VkDebugMarkerMarkerInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070010980 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070010981 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010982 const VkDebugMarkerMarkerInfoEXT* from,
10983 VkDebugMarkerMarkerInfoEXT* to)
10984{
Yilong Li422b0582021-04-30 13:09:43 -070010985 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070010986 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080010987 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070010988 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
10989 {
10990 rootType = from->sType;
10991 }
Yilong Li04218f72021-02-19 01:31:17 -080010992 const void* from_pNext = from;
10993 size_t pNext_size = 0u;
10994 while (!pNext_size && from_pNext)
10995 {
10996 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070010997 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080010998 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010999 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080011000 if (pNext_size)
11001 {
Yilong Li324fa652021-12-29 17:00:42 -080011002 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070011003 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080011004 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011005 to->pMarkerName = nullptr;
11006 if (from->pMarkerName)
11007 {
Yilong Li422b0582021-04-30 13:09:43 -070011008 to->pMarkerName = alloc->strDup(from->pMarkerName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011009 }
11010 memcpy(to->color, from->color, 4 * sizeof(float));
11011}
11012
11013#endif
11014#ifdef VK_AMD_gcn_shader
11015#endif
11016#ifdef VK_NV_dedicated_allocation
11017void deepcopy_VkDedicatedAllocationImageCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070011018 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011019 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011020 const VkDedicatedAllocationImageCreateInfoNV* from,
11021 VkDedicatedAllocationImageCreateInfoNV* to)
11022{
Yilong Li422b0582021-04-30 13:09:43 -070011023 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011024 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080011025 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011026 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11027 {
11028 rootType = from->sType;
11029 }
Yilong Li04218f72021-02-19 01:31:17 -080011030 const void* from_pNext = from;
11031 size_t pNext_size = 0u;
11032 while (!pNext_size && from_pNext)
11033 {
11034 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011035 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011036 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011037 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080011038 if (pNext_size)
11039 {
Yilong Li324fa652021-12-29 17:00:42 -080011040 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070011041 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080011042 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011043}
11044
11045void deepcopy_VkDedicatedAllocationBufferCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070011046 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011047 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011048 const VkDedicatedAllocationBufferCreateInfoNV* from,
11049 VkDedicatedAllocationBufferCreateInfoNV* to)
11050{
Yilong Li422b0582021-04-30 13:09:43 -070011051 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011052 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080011053 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011054 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11055 {
11056 rootType = from->sType;
11057 }
Yilong Li04218f72021-02-19 01:31:17 -080011058 const void* from_pNext = from;
11059 size_t pNext_size = 0u;
11060 while (!pNext_size && from_pNext)
11061 {
11062 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011063 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011064 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011065 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080011066 if (pNext_size)
11067 {
Yilong Li324fa652021-12-29 17:00:42 -080011068 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070011069 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080011070 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011071}
11072
11073void deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070011074 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011075 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011076 const VkDedicatedAllocationMemoryAllocateInfoNV* from,
11077 VkDedicatedAllocationMemoryAllocateInfoNV* to)
11078{
Yilong Li422b0582021-04-30 13:09:43 -070011079 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011080 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080011081 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011082 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11083 {
11084 rootType = from->sType;
11085 }
Yilong Li04218f72021-02-19 01:31:17 -080011086 const void* from_pNext = from;
11087 size_t pNext_size = 0u;
11088 while (!pNext_size && from_pNext)
11089 {
11090 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011091 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011092 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011093 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080011094 if (pNext_size)
11095 {
Yilong Li324fa652021-12-29 17:00:42 -080011096 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070011097 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080011098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011099}
11100
11101#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011102#ifdef VK_EXT_transform_feedback
11103void deepcopy_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070011104 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011105 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080011106 const VkPhysicalDeviceTransformFeedbackFeaturesEXT* from,
11107 VkPhysicalDeviceTransformFeedbackFeaturesEXT* to)
11108{
Yilong Li422b0582021-04-30 13:09:43 -070011109 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011110 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080011111 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011112 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11113 {
11114 rootType = from->sType;
11115 }
Yilong Li04218f72021-02-19 01:31:17 -080011116 const void* from_pNext = from;
11117 size_t pNext_size = 0u;
11118 while (!pNext_size && from_pNext)
11119 {
11120 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011121 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011122 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011123 to->pNext = nullptr;
11124 if (pNext_size)
11125 {
Yilong Li422b0582021-04-30 13:09:43 -070011126 to->pNext = (void*)alloc->alloc(pNext_size);
11127 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011128 }
11129}
11130
11131void deepcopy_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070011132 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011133 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080011134 const VkPhysicalDeviceTransformFeedbackPropertiesEXT* from,
11135 VkPhysicalDeviceTransformFeedbackPropertiesEXT* to)
11136{
Yilong Li422b0582021-04-30 13:09:43 -070011137 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011138 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080011139 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011140 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11141 {
11142 rootType = from->sType;
11143 }
Yilong Li04218f72021-02-19 01:31:17 -080011144 const void* from_pNext = from;
11145 size_t pNext_size = 0u;
11146 while (!pNext_size && from_pNext)
11147 {
11148 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011149 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011150 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011151 to->pNext = nullptr;
11152 if (pNext_size)
11153 {
Yilong Li422b0582021-04-30 13:09:43 -070011154 to->pNext = (void*)alloc->alloc(pNext_size);
11155 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011156 }
11157}
11158
11159void deepcopy_VkPipelineRasterizationStateStreamCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070011160 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011161 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080011162 const VkPipelineRasterizationStateStreamCreateInfoEXT* from,
11163 VkPipelineRasterizationStateStreamCreateInfoEXT* to)
11164{
Yilong Li422b0582021-04-30 13:09:43 -070011165 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011166 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080011167 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011168 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11169 {
11170 rootType = from->sType;
11171 }
Yilong Li04218f72021-02-19 01:31:17 -080011172 const void* from_pNext = from;
11173 size_t pNext_size = 0u;
11174 while (!pNext_size && from_pNext)
11175 {
11176 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011177 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011178 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011179 to->pNext = nullptr;
11180 if (pNext_size)
11181 {
Yilong Li324fa652021-12-29 17:00:42 -080011182 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070011183 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011184 }
11185}
11186
11187#endif
Yilong Li353409a2022-01-04 02:37:56 -080011188#ifdef VK_NVX_binary_import
11189void deepcopy_VkCuModuleCreateInfoNVX(
11190 Allocator* alloc,
11191 VkStructureType rootType,
11192 const VkCuModuleCreateInfoNVX* from,
11193 VkCuModuleCreateInfoNVX* to)
11194{
11195 (void)alloc;
11196 (void)rootType;
11197 *to = *from;
11198 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11199 {
11200 rootType = from->sType;
11201 }
11202 const void* from_pNext = from;
11203 size_t pNext_size = 0u;
11204 while (!pNext_size && from_pNext)
11205 {
11206 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11207 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11208 }
11209 to->pNext = nullptr;
11210 if (pNext_size)
11211 {
11212 to->pNext = (void*)alloc->alloc(pNext_size);
11213 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11214 }
11215 to->pData = nullptr;
11216 if (from->pData)
11217 {
11218 to->pData = (void*)alloc->dupArray(from->pData, from->dataSize * sizeof(const uint8_t));
11219 }
11220}
11221
11222void deepcopy_VkCuFunctionCreateInfoNVX(
11223 Allocator* alloc,
11224 VkStructureType rootType,
11225 const VkCuFunctionCreateInfoNVX* from,
11226 VkCuFunctionCreateInfoNVX* to)
11227{
11228 (void)alloc;
11229 (void)rootType;
11230 *to = *from;
11231 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11232 {
11233 rootType = from->sType;
11234 }
11235 const void* from_pNext = from;
11236 size_t pNext_size = 0u;
11237 while (!pNext_size && from_pNext)
11238 {
11239 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11240 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11241 }
11242 to->pNext = nullptr;
11243 if (pNext_size)
11244 {
11245 to->pNext = (void*)alloc->alloc(pNext_size);
11246 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11247 }
11248 to->pName = nullptr;
11249 if (from->pName)
11250 {
11251 to->pName = alloc->strDup(from->pName);
11252 }
11253}
11254
11255void deepcopy_VkCuLaunchInfoNVX(
11256 Allocator* alloc,
11257 VkStructureType rootType,
11258 const VkCuLaunchInfoNVX* from,
11259 VkCuLaunchInfoNVX* to)
11260{
11261 (void)alloc;
11262 (void)rootType;
11263 *to = *from;
11264 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11265 {
11266 rootType = from->sType;
11267 }
11268 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(rootType, from_pNext);
11274 }
11275 to->pNext = nullptr;
11276 if (pNext_size)
11277 {
11278 to->pNext = (void*)alloc->alloc(pNext_size);
11279 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11280 }
11281}
11282
11283#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011284#ifdef VK_NVX_image_view_handle
11285void deepcopy_VkImageViewHandleInfoNVX(
Yilong Li422b0582021-04-30 13:09:43 -070011286 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011287 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080011288 const VkImageViewHandleInfoNVX* from,
11289 VkImageViewHandleInfoNVX* to)
11290{
Yilong Li422b0582021-04-30 13:09:43 -070011291 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011292 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080011293 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011294 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11295 {
11296 rootType = from->sType;
11297 }
Yilong Li04218f72021-02-19 01:31:17 -080011298 const void* from_pNext = from;
11299 size_t pNext_size = 0u;
11300 while (!pNext_size && from_pNext)
11301 {
11302 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011303 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011304 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011305 to->pNext = nullptr;
11306 if (pNext_size)
11307 {
Yilong Li324fa652021-12-29 17:00:42 -080011308 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070011309 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011310 }
11311}
11312
11313void deepcopy_VkImageViewAddressPropertiesNVX(
Yilong Li422b0582021-04-30 13:09:43 -070011314 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070011315 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080011316 const VkImageViewAddressPropertiesNVX* from,
11317 VkImageViewAddressPropertiesNVX* to)
11318{
Yilong Li422b0582021-04-30 13:09:43 -070011319 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070011320 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080011321 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070011322 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11323 {
11324 rootType = from->sType;
11325 }
Yilong Li04218f72021-02-19 01:31:17 -080011326 const void* from_pNext = from;
11327 size_t pNext_size = 0u;
11328 while (!pNext_size && from_pNext)
11329 {
11330 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070011331 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080011332 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011333 to->pNext = nullptr;
11334 if (pNext_size)
11335 {
Yilong Li422b0582021-04-30 13:09:43 -070011336 to->pNext = (void*)alloc->alloc(pNext_size);
11337 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080011338 }
11339}
11340
11341#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011342#ifdef VK_AMD_draw_indirect_count
11343#endif
11344#ifdef VK_AMD_negative_viewport_height
11345#endif
11346#ifdef VK_AMD_gpu_shader_half_float
11347#endif
11348#ifdef VK_AMD_shader_ballot
11349#endif
Yilong Li353409a2022-01-04 02:37:56 -080011350#ifdef VK_EXT_video_encode_h264
11351void deepcopy_VkVideoEncodeH264CapabilitiesEXT(
11352 Allocator* alloc,
11353 VkStructureType rootType,
11354 const VkVideoEncodeH264CapabilitiesEXT* from,
11355 VkVideoEncodeH264CapabilitiesEXT* to)
11356{
11357 (void)alloc;
11358 (void)rootType;
11359 *to = *from;
11360 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11361 {
11362 rootType = from->sType;
11363 }
11364 const void* from_pNext = from;
11365 size_t pNext_size = 0u;
11366 while (!pNext_size && from_pNext)
11367 {
11368 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11369 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11370 }
11371 to->pNext = nullptr;
11372 if (pNext_size)
11373 {
11374 to->pNext = (void*)alloc->alloc(pNext_size);
11375 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11376 }
11377 deepcopy_VkExtent2D(alloc, rootType, &from->minPictureSizeInMbs, (VkExtent2D*)(&to->minPictureSizeInMbs));
11378 deepcopy_VkExtent2D(alloc, rootType, &from->maxPictureSizeInMbs, (VkExtent2D*)(&to->maxPictureSizeInMbs));
11379 deepcopy_VkExtent2D(alloc, rootType, &from->inputImageDataAlignment, (VkExtent2D*)(&to->inputImageDataAlignment));
11380 deepcopy_VkExtensionProperties(alloc, rootType, &from->stdExtensionVersion, (VkExtensionProperties*)(&to->stdExtensionVersion));
11381}
11382
11383void deepcopy_VkVideoEncodeH264SessionCreateInfoEXT(
11384 Allocator* alloc,
11385 VkStructureType rootType,
11386 const VkVideoEncodeH264SessionCreateInfoEXT* from,
11387 VkVideoEncodeH264SessionCreateInfoEXT* to)
11388{
11389 (void)alloc;
11390 (void)rootType;
11391 *to = *from;
11392 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11393 {
11394 rootType = from->sType;
11395 }
11396 const void* from_pNext = from;
11397 size_t pNext_size = 0u;
11398 while (!pNext_size && from_pNext)
11399 {
11400 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11401 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11402 }
11403 to->pNext = nullptr;
11404 if (pNext_size)
11405 {
11406 to->pNext = (void*)alloc->alloc(pNext_size);
11407 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11408 }
11409 deepcopy_VkExtent2D(alloc, rootType, &from->maxPictureSizeInMbs, (VkExtent2D*)(&to->maxPictureSizeInMbs));
11410 to->pStdExtensionVersion = nullptr;
11411 if (from->pStdExtensionVersion)
11412 {
11413 to->pStdExtensionVersion = (VkExtensionProperties*)alloc->alloc(sizeof(const VkExtensionProperties));
11414 deepcopy_VkExtensionProperties(alloc, rootType, from->pStdExtensionVersion, (VkExtensionProperties*)(to->pStdExtensionVersion));
11415 }
11416}
11417
11418void deepcopy_VkVideoEncodeH264SessionParametersAddInfoEXT(
11419 Allocator* alloc,
11420 VkStructureType rootType,
11421 const VkVideoEncodeH264SessionParametersAddInfoEXT* from,
11422 VkVideoEncodeH264SessionParametersAddInfoEXT* to)
11423{
11424 (void)alloc;
11425 (void)rootType;
11426 *to = *from;
11427 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11428 {
11429 rootType = from->sType;
11430 }
11431 const void* from_pNext = from;
11432 size_t pNext_size = 0u;
11433 while (!pNext_size && from_pNext)
11434 {
11435 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11436 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11437 }
11438 to->pNext = nullptr;
11439 if (pNext_size)
11440 {
11441 to->pNext = (void*)alloc->alloc(pNext_size);
11442 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11443 }
11444 to->pSpsStd = nullptr;
11445 if (from->pSpsStd)
11446 {
11447 to->pSpsStd = (StdVideoH264SequenceParameterSet*)alloc->dupArray(from->pSpsStd, from->spsStdCount * sizeof(const StdVideoH264SequenceParameterSet));
11448 }
11449 to->pPpsStd = nullptr;
11450 if (from->pPpsStd)
11451 {
11452 to->pPpsStd = (StdVideoH264PictureParameterSet*)alloc->dupArray(from->pPpsStd, from->ppsStdCount * sizeof(const StdVideoH264PictureParameterSet));
11453 }
11454}
11455
11456void deepcopy_VkVideoEncodeH264SessionParametersCreateInfoEXT(
11457 Allocator* alloc,
11458 VkStructureType rootType,
11459 const VkVideoEncodeH264SessionParametersCreateInfoEXT* from,
11460 VkVideoEncodeH264SessionParametersCreateInfoEXT* to)
11461{
11462 (void)alloc;
11463 (void)rootType;
11464 *to = *from;
11465 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11466 {
11467 rootType = from->sType;
11468 }
11469 const void* from_pNext = from;
11470 size_t pNext_size = 0u;
11471 while (!pNext_size && from_pNext)
11472 {
11473 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11474 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11475 }
11476 to->pNext = nullptr;
11477 if (pNext_size)
11478 {
11479 to->pNext = (void*)alloc->alloc(pNext_size);
11480 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11481 }
11482 to->pParametersAddInfo = nullptr;
11483 if (from->pParametersAddInfo)
11484 {
11485 to->pParametersAddInfo = (VkVideoEncodeH264SessionParametersAddInfoEXT*)alloc->alloc(sizeof(const VkVideoEncodeH264SessionParametersAddInfoEXT));
11486 deepcopy_VkVideoEncodeH264SessionParametersAddInfoEXT(alloc, rootType, from->pParametersAddInfo, (VkVideoEncodeH264SessionParametersAddInfoEXT*)(to->pParametersAddInfo));
11487 }
11488}
11489
11490void deepcopy_VkVideoEncodeH264DpbSlotInfoEXT(
11491 Allocator* alloc,
11492 VkStructureType rootType,
11493 const VkVideoEncodeH264DpbSlotInfoEXT* from,
11494 VkVideoEncodeH264DpbSlotInfoEXT* to)
11495{
11496 (void)alloc;
11497 (void)rootType;
11498 *to = *from;
11499 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11500 {
11501 rootType = from->sType;
11502 }
11503 const void* from_pNext = from;
11504 size_t pNext_size = 0u;
11505 while (!pNext_size && from_pNext)
11506 {
11507 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11508 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11509 }
11510 to->pNext = nullptr;
11511 if (pNext_size)
11512 {
11513 to->pNext = (void*)alloc->alloc(pNext_size);
11514 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11515 }
11516 to->pStdPictureInfo = nullptr;
11517 if (from->pStdPictureInfo)
11518 {
11519 to->pStdPictureInfo = (StdVideoEncodeH264PictureInfo*)alloc->dupArray(from->pStdPictureInfo, sizeof(const StdVideoEncodeH264PictureInfo));
11520 }
11521}
11522
11523void deepcopy_VkVideoEncodeH264NaluSliceEXT(
11524 Allocator* alloc,
11525 VkStructureType rootType,
11526 const VkVideoEncodeH264NaluSliceEXT* from,
11527 VkVideoEncodeH264NaluSliceEXT* to)
11528{
11529 (void)alloc;
11530 (void)rootType;
11531 *to = *from;
11532 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11533 {
11534 rootType = from->sType;
11535 }
11536 const void* from_pNext = from;
11537 size_t pNext_size = 0u;
11538 while (!pNext_size && from_pNext)
11539 {
11540 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11541 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11542 }
11543 to->pNext = nullptr;
11544 if (pNext_size)
11545 {
11546 to->pNext = (void*)alloc->alloc(pNext_size);
11547 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11548 }
11549 to->pSliceHeaderStd = nullptr;
11550 if (from->pSliceHeaderStd)
11551 {
11552 to->pSliceHeaderStd = (StdVideoEncodeH264SliceHeader*)alloc->dupArray(from->pSliceHeaderStd, sizeof(const StdVideoEncodeH264SliceHeader));
11553 }
11554 if (from)
11555 {
11556 to->pRefFinalList0Entries = nullptr;
11557 if (from->pRefFinalList0Entries)
11558 {
11559 to->pRefFinalList0Entries = (VkVideoEncodeH264DpbSlotInfoEXT*)alloc->alloc(from->refFinalList0EntryCount * sizeof(const VkVideoEncodeH264DpbSlotInfoEXT));
11560 to->refFinalList0EntryCount = from->refFinalList0EntryCount;
11561 for (uint32_t i = 0; i < (uint32_t)from->refFinalList0EntryCount; ++i)
11562 {
11563 deepcopy_VkVideoEncodeH264DpbSlotInfoEXT(alloc, rootType, from->pRefFinalList0Entries + i, (VkVideoEncodeH264DpbSlotInfoEXT*)(to->pRefFinalList0Entries + i));
11564 }
11565 }
11566 }
11567 if (from)
11568 {
11569 to->pRefFinalList1Entries = nullptr;
11570 if (from->pRefFinalList1Entries)
11571 {
11572 to->pRefFinalList1Entries = (VkVideoEncodeH264DpbSlotInfoEXT*)alloc->alloc(from->refFinalList1EntryCount * sizeof(const VkVideoEncodeH264DpbSlotInfoEXT));
11573 to->refFinalList1EntryCount = from->refFinalList1EntryCount;
11574 for (uint32_t i = 0; i < (uint32_t)from->refFinalList1EntryCount; ++i)
11575 {
11576 deepcopy_VkVideoEncodeH264DpbSlotInfoEXT(alloc, rootType, from->pRefFinalList1Entries + i, (VkVideoEncodeH264DpbSlotInfoEXT*)(to->pRefFinalList1Entries + i));
11577 }
11578 }
11579 }
11580}
11581
11582void deepcopy_VkVideoEncodeH264VclFrameInfoEXT(
11583 Allocator* alloc,
11584 VkStructureType rootType,
11585 const VkVideoEncodeH264VclFrameInfoEXT* from,
11586 VkVideoEncodeH264VclFrameInfoEXT* to)
11587{
11588 (void)alloc;
11589 (void)rootType;
11590 *to = *from;
11591 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11592 {
11593 rootType = from->sType;
11594 }
11595 const void* from_pNext = from;
11596 size_t pNext_size = 0u;
11597 while (!pNext_size && from_pNext)
11598 {
11599 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11600 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11601 }
11602 to->pNext = nullptr;
11603 if (pNext_size)
11604 {
11605 to->pNext = (void*)alloc->alloc(pNext_size);
11606 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11607 }
11608 if (from)
11609 {
11610 to->pRefDefaultFinalList0Entries = nullptr;
11611 if (from->pRefDefaultFinalList0Entries)
11612 {
11613 to->pRefDefaultFinalList0Entries = (VkVideoEncodeH264DpbSlotInfoEXT*)alloc->alloc(from->refDefaultFinalList0EntryCount * sizeof(const VkVideoEncodeH264DpbSlotInfoEXT));
11614 to->refDefaultFinalList0EntryCount = from->refDefaultFinalList0EntryCount;
11615 for (uint32_t i = 0; i < (uint32_t)from->refDefaultFinalList0EntryCount; ++i)
11616 {
11617 deepcopy_VkVideoEncodeH264DpbSlotInfoEXT(alloc, rootType, from->pRefDefaultFinalList0Entries + i, (VkVideoEncodeH264DpbSlotInfoEXT*)(to->pRefDefaultFinalList0Entries + i));
11618 }
11619 }
11620 }
11621 if (from)
11622 {
11623 to->pRefDefaultFinalList1Entries = nullptr;
11624 if (from->pRefDefaultFinalList1Entries)
11625 {
11626 to->pRefDefaultFinalList1Entries = (VkVideoEncodeH264DpbSlotInfoEXT*)alloc->alloc(from->refDefaultFinalList1EntryCount * sizeof(const VkVideoEncodeH264DpbSlotInfoEXT));
11627 to->refDefaultFinalList1EntryCount = from->refDefaultFinalList1EntryCount;
11628 for (uint32_t i = 0; i < (uint32_t)from->refDefaultFinalList1EntryCount; ++i)
11629 {
11630 deepcopy_VkVideoEncodeH264DpbSlotInfoEXT(alloc, rootType, from->pRefDefaultFinalList1Entries + i, (VkVideoEncodeH264DpbSlotInfoEXT*)(to->pRefDefaultFinalList1Entries + i));
11631 }
11632 }
11633 }
11634 if (from)
11635 {
11636 to->pNaluSliceEntries = nullptr;
11637 if (from->pNaluSliceEntries)
11638 {
11639 to->pNaluSliceEntries = (VkVideoEncodeH264NaluSliceEXT*)alloc->alloc(from->naluSliceEntryCount * sizeof(const VkVideoEncodeH264NaluSliceEXT));
11640 to->naluSliceEntryCount = from->naluSliceEntryCount;
11641 for (uint32_t i = 0; i < (uint32_t)from->naluSliceEntryCount; ++i)
11642 {
11643 deepcopy_VkVideoEncodeH264NaluSliceEXT(alloc, rootType, from->pNaluSliceEntries + i, (VkVideoEncodeH264NaluSliceEXT*)(to->pNaluSliceEntries + i));
11644 }
11645 }
11646 }
11647 to->pCurrentPictureInfo = nullptr;
11648 if (from->pCurrentPictureInfo)
11649 {
11650 to->pCurrentPictureInfo = (VkVideoEncodeH264DpbSlotInfoEXT*)alloc->alloc(sizeof(const VkVideoEncodeH264DpbSlotInfoEXT));
11651 deepcopy_VkVideoEncodeH264DpbSlotInfoEXT(alloc, rootType, from->pCurrentPictureInfo, (VkVideoEncodeH264DpbSlotInfoEXT*)(to->pCurrentPictureInfo));
11652 }
11653}
11654
11655void deepcopy_VkVideoEncodeH264EmitPictureParametersEXT(
11656 Allocator* alloc,
11657 VkStructureType rootType,
11658 const VkVideoEncodeH264EmitPictureParametersEXT* from,
11659 VkVideoEncodeH264EmitPictureParametersEXT* to)
11660{
11661 (void)alloc;
11662 (void)rootType;
11663 *to = *from;
11664 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11665 {
11666 rootType = from->sType;
11667 }
11668 const void* from_pNext = from;
11669 size_t pNext_size = 0u;
11670 while (!pNext_size && from_pNext)
11671 {
11672 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11673 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11674 }
11675 to->pNext = nullptr;
11676 if (pNext_size)
11677 {
11678 to->pNext = (void*)alloc->alloc(pNext_size);
11679 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11680 }
11681 to->ppsIdEntries = nullptr;
11682 if (from->ppsIdEntries)
11683 {
11684 to->ppsIdEntries = (uint8_t*)alloc->dupArray(from->ppsIdEntries, from->ppsIdEntryCount * sizeof(const uint8_t));
11685 }
11686}
11687
11688void deepcopy_VkVideoEncodeH264ProfileEXT(
11689 Allocator* alloc,
11690 VkStructureType rootType,
11691 const VkVideoEncodeH264ProfileEXT* from,
11692 VkVideoEncodeH264ProfileEXT* to)
11693{
11694 (void)alloc;
11695 (void)rootType;
11696 *to = *from;
11697 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11698 {
11699 rootType = from->sType;
11700 }
11701 const void* from_pNext = from;
11702 size_t pNext_size = 0u;
11703 while (!pNext_size && from_pNext)
11704 {
11705 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11706 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11707 }
11708 to->pNext = nullptr;
11709 if (pNext_size)
11710 {
11711 to->pNext = (void*)alloc->alloc(pNext_size);
11712 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11713 }
11714}
11715
11716#endif
11717#ifdef VK_EXT_video_encode_h265
11718void deepcopy_VkVideoEncodeH265CapabilitiesEXT(
11719 Allocator* alloc,
11720 VkStructureType rootType,
11721 const VkVideoEncodeH265CapabilitiesEXT* from,
11722 VkVideoEncodeH265CapabilitiesEXT* to)
11723{
11724 (void)alloc;
11725 (void)rootType;
11726 *to = *from;
11727 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11728 {
11729 rootType = from->sType;
11730 }
11731 const void* from_pNext = from;
11732 size_t pNext_size = 0u;
11733 while (!pNext_size && from_pNext)
11734 {
11735 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11736 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11737 }
11738 to->pNext = nullptr;
11739 if (pNext_size)
11740 {
11741 to->pNext = (void*)alloc->alloc(pNext_size);
11742 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11743 }
11744 deepcopy_VkExtent2D(alloc, rootType, &from->inputImageDataAlignment, (VkExtent2D*)(&to->inputImageDataAlignment));
11745 deepcopy_VkExtensionProperties(alloc, rootType, &from->stdExtensionVersion, (VkExtensionProperties*)(&to->stdExtensionVersion));
11746}
11747
11748void deepcopy_VkVideoEncodeH265SessionCreateInfoEXT(
11749 Allocator* alloc,
11750 VkStructureType rootType,
11751 const VkVideoEncodeH265SessionCreateInfoEXT* from,
11752 VkVideoEncodeH265SessionCreateInfoEXT* to)
11753{
11754 (void)alloc;
11755 (void)rootType;
11756 *to = *from;
11757 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11758 {
11759 rootType = from->sType;
11760 }
11761 const void* from_pNext = from;
11762 size_t pNext_size = 0u;
11763 while (!pNext_size && from_pNext)
11764 {
11765 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11766 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11767 }
11768 to->pNext = nullptr;
11769 if (pNext_size)
11770 {
11771 to->pNext = (void*)alloc->alloc(pNext_size);
11772 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11773 }
11774 to->pStdExtensionVersion = nullptr;
11775 if (from->pStdExtensionVersion)
11776 {
11777 to->pStdExtensionVersion = (VkExtensionProperties*)alloc->alloc(sizeof(const VkExtensionProperties));
11778 deepcopy_VkExtensionProperties(alloc, rootType, from->pStdExtensionVersion, (VkExtensionProperties*)(to->pStdExtensionVersion));
11779 }
11780}
11781
11782void deepcopy_VkVideoEncodeH265SessionParametersAddInfoEXT(
11783 Allocator* alloc,
11784 VkStructureType rootType,
11785 const VkVideoEncodeH265SessionParametersAddInfoEXT* from,
11786 VkVideoEncodeH265SessionParametersAddInfoEXT* to)
11787{
11788 (void)alloc;
11789 (void)rootType;
11790 *to = *from;
11791 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11792 {
11793 rootType = from->sType;
11794 }
11795 const void* from_pNext = from;
11796 size_t pNext_size = 0u;
11797 while (!pNext_size && from_pNext)
11798 {
11799 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11800 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11801 }
11802 to->pNext = nullptr;
11803 if (pNext_size)
11804 {
11805 to->pNext = (void*)alloc->alloc(pNext_size);
11806 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11807 }
11808 to->pVpsStd = nullptr;
11809 if (from->pVpsStd)
11810 {
11811 to->pVpsStd = (StdVideoH265VideoParameterSet*)alloc->dupArray(from->pVpsStd, from->vpsStdCount * sizeof(const StdVideoH265VideoParameterSet));
11812 }
11813 to->pSpsStd = nullptr;
11814 if (from->pSpsStd)
11815 {
11816 to->pSpsStd = (StdVideoH265SequenceParameterSet*)alloc->dupArray(from->pSpsStd, from->spsStdCount * sizeof(const StdVideoH265SequenceParameterSet));
11817 }
11818 to->pPpsStd = nullptr;
11819 if (from->pPpsStd)
11820 {
11821 to->pPpsStd = (StdVideoH265PictureParameterSet*)alloc->dupArray(from->pPpsStd, from->ppsStdCount * sizeof(const StdVideoH265PictureParameterSet));
11822 }
11823}
11824
11825void deepcopy_VkVideoEncodeH265SessionParametersCreateInfoEXT(
11826 Allocator* alloc,
11827 VkStructureType rootType,
11828 const VkVideoEncodeH265SessionParametersCreateInfoEXT* from,
11829 VkVideoEncodeH265SessionParametersCreateInfoEXT* to)
11830{
11831 (void)alloc;
11832 (void)rootType;
11833 *to = *from;
11834 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11835 {
11836 rootType = from->sType;
11837 }
11838 const void* from_pNext = from;
11839 size_t pNext_size = 0u;
11840 while (!pNext_size && from_pNext)
11841 {
11842 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11843 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11844 }
11845 to->pNext = nullptr;
11846 if (pNext_size)
11847 {
11848 to->pNext = (void*)alloc->alloc(pNext_size);
11849 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11850 }
11851 to->pParametersAddInfo = nullptr;
11852 if (from->pParametersAddInfo)
11853 {
11854 to->pParametersAddInfo = (VkVideoEncodeH265SessionParametersAddInfoEXT*)alloc->alloc(sizeof(const VkVideoEncodeH265SessionParametersAddInfoEXT));
11855 deepcopy_VkVideoEncodeH265SessionParametersAddInfoEXT(alloc, rootType, from->pParametersAddInfo, (VkVideoEncodeH265SessionParametersAddInfoEXT*)(to->pParametersAddInfo));
11856 }
11857}
11858
11859void deepcopy_VkVideoEncodeH265DpbSlotInfoEXT(
11860 Allocator* alloc,
11861 VkStructureType rootType,
11862 const VkVideoEncodeH265DpbSlotInfoEXT* from,
11863 VkVideoEncodeH265DpbSlotInfoEXT* to)
11864{
11865 (void)alloc;
11866 (void)rootType;
11867 *to = *from;
11868 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11869 {
11870 rootType = from->sType;
11871 }
11872 const void* from_pNext = from;
11873 size_t pNext_size = 0u;
11874 while (!pNext_size && from_pNext)
11875 {
11876 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11877 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11878 }
11879 to->pNext = nullptr;
11880 if (pNext_size)
11881 {
11882 to->pNext = (void*)alloc->alloc(pNext_size);
11883 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11884 }
11885 to->pStdReferenceInfo = nullptr;
11886 if (from->pStdReferenceInfo)
11887 {
11888 to->pStdReferenceInfo = (StdVideoEncodeH265ReferenceInfo*)alloc->dupArray(from->pStdReferenceInfo, sizeof(const StdVideoEncodeH265ReferenceInfo));
11889 }
11890}
11891
11892void deepcopy_VkVideoEncodeH265ReferenceListsEXT(
11893 Allocator* alloc,
11894 VkStructureType rootType,
11895 const VkVideoEncodeH265ReferenceListsEXT* from,
11896 VkVideoEncodeH265ReferenceListsEXT* to)
11897{
11898 (void)alloc;
11899 (void)rootType;
11900 *to = *from;
11901 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11902 {
11903 rootType = from->sType;
11904 }
11905 const void* from_pNext = from;
11906 size_t pNext_size = 0u;
11907 while (!pNext_size && from_pNext)
11908 {
11909 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11910 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11911 }
11912 to->pNext = nullptr;
11913 if (pNext_size)
11914 {
11915 to->pNext = (void*)alloc->alloc(pNext_size);
11916 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11917 }
11918 if (from)
11919 {
11920 to->pReferenceList0Entries = nullptr;
11921 if (from->pReferenceList0Entries)
11922 {
11923 to->pReferenceList0Entries = (VkVideoEncodeH265DpbSlotInfoEXT*)alloc->alloc(from->referenceList0EntryCount * sizeof(const VkVideoEncodeH265DpbSlotInfoEXT));
11924 to->referenceList0EntryCount = from->referenceList0EntryCount;
11925 for (uint32_t i = 0; i < (uint32_t)from->referenceList0EntryCount; ++i)
11926 {
11927 deepcopy_VkVideoEncodeH265DpbSlotInfoEXT(alloc, rootType, from->pReferenceList0Entries + i, (VkVideoEncodeH265DpbSlotInfoEXT*)(to->pReferenceList0Entries + i));
11928 }
11929 }
11930 }
11931 if (from)
11932 {
11933 to->pReferenceList1Entries = nullptr;
11934 if (from->pReferenceList1Entries)
11935 {
11936 to->pReferenceList1Entries = (VkVideoEncodeH265DpbSlotInfoEXT*)alloc->alloc(from->referenceList1EntryCount * sizeof(const VkVideoEncodeH265DpbSlotInfoEXT));
11937 to->referenceList1EntryCount = from->referenceList1EntryCount;
11938 for (uint32_t i = 0; i < (uint32_t)from->referenceList1EntryCount; ++i)
11939 {
11940 deepcopy_VkVideoEncodeH265DpbSlotInfoEXT(alloc, rootType, from->pReferenceList1Entries + i, (VkVideoEncodeH265DpbSlotInfoEXT*)(to->pReferenceList1Entries + i));
11941 }
11942 }
11943 }
11944 to->pReferenceModifications = nullptr;
11945 if (from->pReferenceModifications)
11946 {
11947 to->pReferenceModifications = (StdVideoEncodeH265ReferenceModifications*)alloc->dupArray(from->pReferenceModifications, sizeof(const StdVideoEncodeH265ReferenceModifications));
11948 }
11949}
11950
11951void deepcopy_VkVideoEncodeH265NaluSliceEXT(
11952 Allocator* alloc,
11953 VkStructureType rootType,
11954 const VkVideoEncodeH265NaluSliceEXT* from,
11955 VkVideoEncodeH265NaluSliceEXT* to)
11956{
11957 (void)alloc;
11958 (void)rootType;
11959 *to = *from;
11960 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
11961 {
11962 rootType = from->sType;
11963 }
11964 const void* from_pNext = from;
11965 size_t pNext_size = 0u;
11966 while (!pNext_size && from_pNext)
11967 {
11968 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
11969 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
11970 }
11971 to->pNext = nullptr;
11972 if (pNext_size)
11973 {
11974 to->pNext = (void*)alloc->alloc(pNext_size);
11975 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
11976 }
11977 to->pReferenceFinalLists = nullptr;
11978 if (from->pReferenceFinalLists)
11979 {
11980 to->pReferenceFinalLists = (VkVideoEncodeH265ReferenceListsEXT*)alloc->alloc(sizeof(const VkVideoEncodeH265ReferenceListsEXT));
11981 deepcopy_VkVideoEncodeH265ReferenceListsEXT(alloc, rootType, from->pReferenceFinalLists, (VkVideoEncodeH265ReferenceListsEXT*)(to->pReferenceFinalLists));
11982 }
11983 to->pSliceHeaderStd = nullptr;
11984 if (from->pSliceHeaderStd)
11985 {
11986 to->pSliceHeaderStd = (StdVideoEncodeH265SliceHeader*)alloc->dupArray(from->pSliceHeaderStd, sizeof(const StdVideoEncodeH265SliceHeader));
11987 }
11988}
11989
11990void deepcopy_VkVideoEncodeH265VclFrameInfoEXT(
11991 Allocator* alloc,
11992 VkStructureType rootType,
11993 const VkVideoEncodeH265VclFrameInfoEXT* from,
11994 VkVideoEncodeH265VclFrameInfoEXT* to)
11995{
11996 (void)alloc;
11997 (void)rootType;
11998 *to = *from;
11999 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12000 {
12001 rootType = from->sType;
12002 }
12003 const void* from_pNext = from;
12004 size_t pNext_size = 0u;
12005 while (!pNext_size && from_pNext)
12006 {
12007 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12008 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12009 }
12010 to->pNext = nullptr;
12011 if (pNext_size)
12012 {
12013 to->pNext = (void*)alloc->alloc(pNext_size);
12014 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12015 }
12016 to->pReferenceFinalLists = nullptr;
12017 if (from->pReferenceFinalLists)
12018 {
12019 to->pReferenceFinalLists = (VkVideoEncodeH265ReferenceListsEXT*)alloc->alloc(sizeof(const VkVideoEncodeH265ReferenceListsEXT));
12020 deepcopy_VkVideoEncodeH265ReferenceListsEXT(alloc, rootType, from->pReferenceFinalLists, (VkVideoEncodeH265ReferenceListsEXT*)(to->pReferenceFinalLists));
12021 }
12022 if (from)
12023 {
12024 to->pNaluSliceEntries = nullptr;
12025 if (from->pNaluSliceEntries)
12026 {
12027 to->pNaluSliceEntries = (VkVideoEncodeH265NaluSliceEXT*)alloc->alloc(from->naluSliceEntryCount * sizeof(const VkVideoEncodeH265NaluSliceEXT));
12028 to->naluSliceEntryCount = from->naluSliceEntryCount;
12029 for (uint32_t i = 0; i < (uint32_t)from->naluSliceEntryCount; ++i)
12030 {
12031 deepcopy_VkVideoEncodeH265NaluSliceEXT(alloc, rootType, from->pNaluSliceEntries + i, (VkVideoEncodeH265NaluSliceEXT*)(to->pNaluSliceEntries + i));
12032 }
12033 }
12034 }
12035 to->pCurrentPictureInfo = nullptr;
12036 if (from->pCurrentPictureInfo)
12037 {
12038 to->pCurrentPictureInfo = (StdVideoEncodeH265PictureInfo*)alloc->dupArray(from->pCurrentPictureInfo, sizeof(const StdVideoEncodeH265PictureInfo));
12039 }
12040}
12041
12042void deepcopy_VkVideoEncodeH265EmitPictureParametersEXT(
12043 Allocator* alloc,
12044 VkStructureType rootType,
12045 const VkVideoEncodeH265EmitPictureParametersEXT* from,
12046 VkVideoEncodeH265EmitPictureParametersEXT* to)
12047{
12048 (void)alloc;
12049 (void)rootType;
12050 *to = *from;
12051 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12052 {
12053 rootType = from->sType;
12054 }
12055 const void* from_pNext = from;
12056 size_t pNext_size = 0u;
12057 while (!pNext_size && from_pNext)
12058 {
12059 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12060 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12061 }
12062 to->pNext = nullptr;
12063 if (pNext_size)
12064 {
12065 to->pNext = (void*)alloc->alloc(pNext_size);
12066 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12067 }
12068 to->ppsIdEntries = nullptr;
12069 if (from->ppsIdEntries)
12070 {
12071 to->ppsIdEntries = (uint8_t*)alloc->dupArray(from->ppsIdEntries, from->ppsIdEntryCount * sizeof(const uint8_t));
12072 }
12073}
12074
12075void deepcopy_VkVideoEncodeH265ProfileEXT(
12076 Allocator* alloc,
12077 VkStructureType rootType,
12078 const VkVideoEncodeH265ProfileEXT* from,
12079 VkVideoEncodeH265ProfileEXT* to)
12080{
12081 (void)alloc;
12082 (void)rootType;
12083 *to = *from;
12084 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12085 {
12086 rootType = from->sType;
12087 }
12088 const void* from_pNext = from;
12089 size_t pNext_size = 0u;
12090 while (!pNext_size && from_pNext)
12091 {
12092 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12093 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12094 }
12095 to->pNext = nullptr;
12096 if (pNext_size)
12097 {
12098 to->pNext = (void*)alloc->alloc(pNext_size);
12099 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12100 }
12101}
12102
12103#endif
12104#ifdef VK_EXT_video_decode_h264
12105void deepcopy_VkVideoDecodeH264ProfileEXT(
12106 Allocator* alloc,
12107 VkStructureType rootType,
12108 const VkVideoDecodeH264ProfileEXT* from,
12109 VkVideoDecodeH264ProfileEXT* to)
12110{
12111 (void)alloc;
12112 (void)rootType;
12113 *to = *from;
12114 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12115 {
12116 rootType = from->sType;
12117 }
12118 const void* from_pNext = from;
12119 size_t pNext_size = 0u;
12120 while (!pNext_size && from_pNext)
12121 {
12122 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12123 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12124 }
12125 to->pNext = nullptr;
12126 if (pNext_size)
12127 {
12128 to->pNext = (void*)alloc->alloc(pNext_size);
12129 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12130 }
12131}
12132
12133void deepcopy_VkVideoDecodeH264CapabilitiesEXT(
12134 Allocator* alloc,
12135 VkStructureType rootType,
12136 const VkVideoDecodeH264CapabilitiesEXT* from,
12137 VkVideoDecodeH264CapabilitiesEXT* to)
12138{
12139 (void)alloc;
12140 (void)rootType;
12141 *to = *from;
12142 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12143 {
12144 rootType = from->sType;
12145 }
12146 const void* from_pNext = from;
12147 size_t pNext_size = 0u;
12148 while (!pNext_size && from_pNext)
12149 {
12150 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12151 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12152 }
12153 to->pNext = nullptr;
12154 if (pNext_size)
12155 {
12156 to->pNext = (void*)alloc->alloc(pNext_size);
12157 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12158 }
12159 deepcopy_VkOffset2D(alloc, rootType, &from->fieldOffsetGranularity, (VkOffset2D*)(&to->fieldOffsetGranularity));
12160 deepcopy_VkExtensionProperties(alloc, rootType, &from->stdExtensionVersion, (VkExtensionProperties*)(&to->stdExtensionVersion));
12161}
12162
12163void deepcopy_VkVideoDecodeH264SessionCreateInfoEXT(
12164 Allocator* alloc,
12165 VkStructureType rootType,
12166 const VkVideoDecodeH264SessionCreateInfoEXT* from,
12167 VkVideoDecodeH264SessionCreateInfoEXT* to)
12168{
12169 (void)alloc;
12170 (void)rootType;
12171 *to = *from;
12172 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12173 {
12174 rootType = from->sType;
12175 }
12176 const void* from_pNext = from;
12177 size_t pNext_size = 0u;
12178 while (!pNext_size && from_pNext)
12179 {
12180 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12181 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12182 }
12183 to->pNext = nullptr;
12184 if (pNext_size)
12185 {
12186 to->pNext = (void*)alloc->alloc(pNext_size);
12187 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12188 }
12189 to->pStdExtensionVersion = nullptr;
12190 if (from->pStdExtensionVersion)
12191 {
12192 to->pStdExtensionVersion = (VkExtensionProperties*)alloc->alloc(sizeof(const VkExtensionProperties));
12193 deepcopy_VkExtensionProperties(alloc, rootType, from->pStdExtensionVersion, (VkExtensionProperties*)(to->pStdExtensionVersion));
12194 }
12195}
12196
12197void deepcopy_VkVideoDecodeH264SessionParametersAddInfoEXT(
12198 Allocator* alloc,
12199 VkStructureType rootType,
12200 const VkVideoDecodeH264SessionParametersAddInfoEXT* from,
12201 VkVideoDecodeH264SessionParametersAddInfoEXT* to)
12202{
12203 (void)alloc;
12204 (void)rootType;
12205 *to = *from;
12206 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12207 {
12208 rootType = from->sType;
12209 }
12210 const void* from_pNext = from;
12211 size_t pNext_size = 0u;
12212 while (!pNext_size && from_pNext)
12213 {
12214 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12215 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12216 }
12217 to->pNext = nullptr;
12218 if (pNext_size)
12219 {
12220 to->pNext = (void*)alloc->alloc(pNext_size);
12221 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12222 }
12223 to->pSpsStd = nullptr;
12224 if (from->pSpsStd)
12225 {
12226 to->pSpsStd = (StdVideoH264SequenceParameterSet*)alloc->dupArray(from->pSpsStd, from->spsStdCount * sizeof(const StdVideoH264SequenceParameterSet));
12227 }
12228 to->pPpsStd = nullptr;
12229 if (from->pPpsStd)
12230 {
12231 to->pPpsStd = (StdVideoH264PictureParameterSet*)alloc->dupArray(from->pPpsStd, from->ppsStdCount * sizeof(const StdVideoH264PictureParameterSet));
12232 }
12233}
12234
12235void deepcopy_VkVideoDecodeH264SessionParametersCreateInfoEXT(
12236 Allocator* alloc,
12237 VkStructureType rootType,
12238 const VkVideoDecodeH264SessionParametersCreateInfoEXT* from,
12239 VkVideoDecodeH264SessionParametersCreateInfoEXT* to)
12240{
12241 (void)alloc;
12242 (void)rootType;
12243 *to = *from;
12244 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12245 {
12246 rootType = from->sType;
12247 }
12248 const void* from_pNext = from;
12249 size_t pNext_size = 0u;
12250 while (!pNext_size && from_pNext)
12251 {
12252 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12253 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12254 }
12255 to->pNext = nullptr;
12256 if (pNext_size)
12257 {
12258 to->pNext = (void*)alloc->alloc(pNext_size);
12259 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12260 }
12261 to->pParametersAddInfo = nullptr;
12262 if (from->pParametersAddInfo)
12263 {
12264 to->pParametersAddInfo = (VkVideoDecodeH264SessionParametersAddInfoEXT*)alloc->alloc(sizeof(const VkVideoDecodeH264SessionParametersAddInfoEXT));
12265 deepcopy_VkVideoDecodeH264SessionParametersAddInfoEXT(alloc, rootType, from->pParametersAddInfo, (VkVideoDecodeH264SessionParametersAddInfoEXT*)(to->pParametersAddInfo));
12266 }
12267}
12268
12269void deepcopy_VkVideoDecodeH264PictureInfoEXT(
12270 Allocator* alloc,
12271 VkStructureType rootType,
12272 const VkVideoDecodeH264PictureInfoEXT* from,
12273 VkVideoDecodeH264PictureInfoEXT* to)
12274{
12275 (void)alloc;
12276 (void)rootType;
12277 *to = *from;
12278 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12279 {
12280 rootType = from->sType;
12281 }
12282 const void* from_pNext = from;
12283 size_t pNext_size = 0u;
12284 while (!pNext_size && from_pNext)
12285 {
12286 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12287 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12288 }
12289 to->pNext = nullptr;
12290 if (pNext_size)
12291 {
12292 to->pNext = (void*)alloc->alloc(pNext_size);
12293 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12294 }
12295 to->pStdPictureInfo = nullptr;
12296 if (from->pStdPictureInfo)
12297 {
12298 to->pStdPictureInfo = (StdVideoDecodeH264PictureInfo*)alloc->dupArray(from->pStdPictureInfo, sizeof(const StdVideoDecodeH264PictureInfo));
12299 }
12300 to->pSlicesDataOffsets = nullptr;
12301 if (from->pSlicesDataOffsets)
12302 {
12303 to->pSlicesDataOffsets = (uint32_t*)alloc->dupArray(from->pSlicesDataOffsets, from->slicesCount * sizeof(const uint32_t));
12304 }
12305}
12306
12307void deepcopy_VkVideoDecodeH264MvcEXT(
12308 Allocator* alloc,
12309 VkStructureType rootType,
12310 const VkVideoDecodeH264MvcEXT* from,
12311 VkVideoDecodeH264MvcEXT* to)
12312{
12313 (void)alloc;
12314 (void)rootType;
12315 *to = *from;
12316 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12317 {
12318 rootType = from->sType;
12319 }
12320 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(rootType, from_pNext);
12326 }
12327 to->pNext = nullptr;
12328 if (pNext_size)
12329 {
12330 to->pNext = (void*)alloc->alloc(pNext_size);
12331 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12332 }
12333 to->pStdMvc = nullptr;
12334 if (from->pStdMvc)
12335 {
12336 to->pStdMvc = (StdVideoDecodeH264Mvc*)alloc->dupArray(from->pStdMvc, sizeof(const StdVideoDecodeH264Mvc));
12337 }
12338}
12339
12340void deepcopy_VkVideoDecodeH264DpbSlotInfoEXT(
12341 Allocator* alloc,
12342 VkStructureType rootType,
12343 const VkVideoDecodeH264DpbSlotInfoEXT* from,
12344 VkVideoDecodeH264DpbSlotInfoEXT* to)
12345{
12346 (void)alloc;
12347 (void)rootType;
12348 *to = *from;
12349 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12350 {
12351 rootType = from->sType;
12352 }
12353 const void* from_pNext = from;
12354 size_t pNext_size = 0u;
12355 while (!pNext_size && from_pNext)
12356 {
12357 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
12358 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
12359 }
12360 to->pNext = nullptr;
12361 if (pNext_size)
12362 {
12363 to->pNext = (void*)alloc->alloc(pNext_size);
12364 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
12365 }
12366 to->pStdReferenceInfo = nullptr;
12367 if (from->pStdReferenceInfo)
12368 {
12369 to->pStdReferenceInfo = (StdVideoDecodeH264ReferenceInfo*)alloc->dupArray(from->pStdReferenceInfo, sizeof(const StdVideoDecodeH264ReferenceInfo));
12370 }
12371}
12372
12373#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012374#ifdef VK_AMD_texture_gather_bias_lod
12375void deepcopy_VkTextureLODGatherFormatPropertiesAMD(
Yilong Li422b0582021-04-30 13:09:43 -070012376 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012377 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012378 const VkTextureLODGatherFormatPropertiesAMD* from,
12379 VkTextureLODGatherFormatPropertiesAMD* to)
12380{
Yilong Li422b0582021-04-30 13:09:43 -070012381 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012382 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012383 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012384 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12385 {
12386 rootType = from->sType;
12387 }
Yilong Li04218f72021-02-19 01:31:17 -080012388 const void* from_pNext = from;
12389 size_t pNext_size = 0u;
12390 while (!pNext_size && from_pNext)
12391 {
12392 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012393 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012394 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012395 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012396 if (pNext_size)
12397 {
Yilong Li422b0582021-04-30 13:09:43 -070012398 to->pNext = (void*)alloc->alloc(pNext_size);
12399 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012401}
12402
12403#endif
12404#ifdef VK_AMD_shader_info
12405void deepcopy_VkShaderResourceUsageAMD(
Yilong Li422b0582021-04-30 13:09:43 -070012406 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012407 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012408 const VkShaderResourceUsageAMD* from,
12409 VkShaderResourceUsageAMD* to)
12410{
Yilong Li422b0582021-04-30 13:09:43 -070012411 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012412 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012413 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012414}
12415
12416void deepcopy_VkShaderStatisticsInfoAMD(
Yilong Li422b0582021-04-30 13:09:43 -070012417 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012418 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012419 const VkShaderStatisticsInfoAMD* from,
12420 VkShaderStatisticsInfoAMD* to)
12421{
Yilong Li422b0582021-04-30 13:09:43 -070012422 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012423 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012424 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070012425 deepcopy_VkShaderResourceUsageAMD(alloc, rootType, &from->resourceUsage, (VkShaderResourceUsageAMD*)(&to->resourceUsage));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012426 memcpy(to->computeWorkGroupSize, from->computeWorkGroupSize, 3 * sizeof(uint32_t));
12427}
12428
12429#endif
12430#ifdef VK_AMD_shader_image_load_store_lod
12431#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012432#ifdef VK_GGP_stream_descriptor_surface
12433void deepcopy_VkStreamDescriptorSurfaceCreateInfoGGP(
Yilong Li422b0582021-04-30 13:09:43 -070012434 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012435 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080012436 const VkStreamDescriptorSurfaceCreateInfoGGP* from,
12437 VkStreamDescriptorSurfaceCreateInfoGGP* to)
12438{
Yilong Li422b0582021-04-30 13:09:43 -070012439 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012440 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080012441 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012442 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12443 {
12444 rootType = from->sType;
12445 }
Yilong Li04218f72021-02-19 01:31:17 -080012446 const void* from_pNext = from;
12447 size_t pNext_size = 0u;
12448 while (!pNext_size && from_pNext)
12449 {
12450 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012451 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012452 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012453 to->pNext = nullptr;
12454 if (pNext_size)
12455 {
Yilong Li324fa652021-12-29 17:00:42 -080012456 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012457 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012458 }
12459}
12460
12461#endif
12462#ifdef VK_NV_corner_sampled_image
12463void deepcopy_VkPhysicalDeviceCornerSampledImageFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070012464 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012465 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080012466 const VkPhysicalDeviceCornerSampledImageFeaturesNV* from,
12467 VkPhysicalDeviceCornerSampledImageFeaturesNV* to)
12468{
Yilong Li422b0582021-04-30 13:09:43 -070012469 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012470 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080012471 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012472 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12473 {
12474 rootType = from->sType;
12475 }
Yilong Li04218f72021-02-19 01:31:17 -080012476 const void* from_pNext = from;
12477 size_t pNext_size = 0u;
12478 while (!pNext_size && from_pNext)
12479 {
12480 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012481 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012482 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012483 to->pNext = nullptr;
12484 if (pNext_size)
12485 {
Yilong Li422b0582021-04-30 13:09:43 -070012486 to->pNext = (void*)alloc->alloc(pNext_size);
12487 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012488 }
12489}
12490
12491#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012492#ifdef VK_IMG_format_pvrtc
12493#endif
12494#ifdef VK_NV_external_memory_capabilities
12495void deepcopy_VkExternalImageFormatPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070012496 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012497 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012498 const VkExternalImageFormatPropertiesNV* from,
12499 VkExternalImageFormatPropertiesNV* to)
12500{
Yilong Li422b0582021-04-30 13:09:43 -070012501 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012502 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012503 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070012504 deepcopy_VkImageFormatProperties(alloc, rootType, &from->imageFormatProperties, (VkImageFormatProperties*)(&to->imageFormatProperties));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012505}
12506
12507#endif
12508#ifdef VK_NV_external_memory
12509void deepcopy_VkExternalMemoryImageCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070012510 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012511 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012512 const VkExternalMemoryImageCreateInfoNV* from,
12513 VkExternalMemoryImageCreateInfoNV* to)
12514{
Yilong Li422b0582021-04-30 13:09:43 -070012515 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012516 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012517 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012518 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12519 {
12520 rootType = from->sType;
12521 }
Yilong Li04218f72021-02-19 01:31:17 -080012522 const void* from_pNext = from;
12523 size_t pNext_size = 0u;
12524 while (!pNext_size && from_pNext)
12525 {
12526 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012527 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012528 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012529 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012530 if (pNext_size)
12531 {
Yilong Li324fa652021-12-29 17:00:42 -080012532 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012533 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012535}
12536
12537void deepcopy_VkExportMemoryAllocateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070012538 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012539 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012540 const VkExportMemoryAllocateInfoNV* from,
12541 VkExportMemoryAllocateInfoNV* to)
12542{
Yilong Li422b0582021-04-30 13:09:43 -070012543 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012544 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012545 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012546 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12547 {
12548 rootType = from->sType;
12549 }
Yilong Li04218f72021-02-19 01:31:17 -080012550 const void* from_pNext = from;
12551 size_t pNext_size = 0u;
12552 while (!pNext_size && from_pNext)
12553 {
12554 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012555 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012556 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012557 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012558 if (pNext_size)
12559 {
Yilong Li324fa652021-12-29 17:00:42 -080012560 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012561 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012562 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012563}
12564
12565#endif
12566#ifdef VK_NV_external_memory_win32
12567void deepcopy_VkImportMemoryWin32HandleInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070012568 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012569 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012570 const VkImportMemoryWin32HandleInfoNV* from,
12571 VkImportMemoryWin32HandleInfoNV* to)
12572{
Yilong Li422b0582021-04-30 13:09:43 -070012573 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012574 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012575 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012576 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12577 {
12578 rootType = from->sType;
12579 }
Yilong Li04218f72021-02-19 01:31:17 -080012580 const void* from_pNext = from;
12581 size_t pNext_size = 0u;
12582 while (!pNext_size && from_pNext)
12583 {
12584 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012585 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012586 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012587 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012588 if (pNext_size)
12589 {
Yilong Li324fa652021-12-29 17:00:42 -080012590 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012591 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012592 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012593}
12594
12595void deepcopy_VkExportMemoryWin32HandleInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070012596 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012597 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012598 const VkExportMemoryWin32HandleInfoNV* from,
12599 VkExportMemoryWin32HandleInfoNV* to)
12600{
Yilong Li422b0582021-04-30 13:09:43 -070012601 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012602 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012603 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012604 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12605 {
12606 rootType = from->sType;
12607 }
Yilong Li04218f72021-02-19 01:31:17 -080012608 const void* from_pNext = from;
12609 size_t pNext_size = 0u;
12610 while (!pNext_size && from_pNext)
12611 {
12612 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012613 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012614 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012615 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012616 if (pNext_size)
12617 {
Yilong Li324fa652021-12-29 17:00:42 -080012618 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012619 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012620 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012621 to->pAttributes = nullptr;
12622 if (from->pAttributes)
12623 {
Yilong Li422b0582021-04-30 13:09:43 -070012624 to->pAttributes = (SECURITY_ATTRIBUTES*)alloc->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012625 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012626}
12627
12628#endif
12629#ifdef VK_NV_win32_keyed_mutex
12630void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070012631 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012632 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012633 const VkWin32KeyedMutexAcquireReleaseInfoNV* from,
12634 VkWin32KeyedMutexAcquireReleaseInfoNV* to)
12635{
Yilong Li422b0582021-04-30 13:09:43 -070012636 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012637 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012638 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012639 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12640 {
12641 rootType = from->sType;
12642 }
Yilong Li04218f72021-02-19 01:31:17 -080012643 const void* from_pNext = from;
12644 size_t pNext_size = 0u;
12645 while (!pNext_size && from_pNext)
12646 {
12647 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012648 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012649 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012650 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012651 if (pNext_size)
12652 {
Yilong Li324fa652021-12-29 17:00:42 -080012653 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012654 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012655 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012656 to->pAcquireSyncs = nullptr;
12657 if (from->pAcquireSyncs)
12658 {
Yilong Li422b0582021-04-30 13:09:43 -070012659 to->pAcquireSyncs = (VkDeviceMemory*)alloc->dupArray(from->pAcquireSyncs, from->acquireCount * sizeof(const VkDeviceMemory));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012660 }
12661 to->pAcquireKeys = nullptr;
12662 if (from->pAcquireKeys)
12663 {
Yilong Li422b0582021-04-30 13:09:43 -070012664 to->pAcquireKeys = (uint64_t*)alloc->dupArray(from->pAcquireKeys, from->acquireCount * sizeof(const uint64_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012665 }
12666 to->pAcquireTimeoutMilliseconds = nullptr;
12667 if (from->pAcquireTimeoutMilliseconds)
12668 {
Yilong Li422b0582021-04-30 13:09:43 -070012669 to->pAcquireTimeoutMilliseconds = (uint32_t*)alloc->dupArray(from->pAcquireTimeoutMilliseconds, from->acquireCount * sizeof(const uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012670 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012671 to->pReleaseSyncs = nullptr;
12672 if (from->pReleaseSyncs)
12673 {
Yilong Li422b0582021-04-30 13:09:43 -070012674 to->pReleaseSyncs = (VkDeviceMemory*)alloc->dupArray(from->pReleaseSyncs, from->releaseCount * sizeof(const VkDeviceMemory));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012675 }
12676 to->pReleaseKeys = nullptr;
12677 if (from->pReleaseKeys)
12678 {
Yilong Li422b0582021-04-30 13:09:43 -070012679 to->pReleaseKeys = (uint64_t*)alloc->dupArray(from->pReleaseKeys, from->releaseCount * sizeof(const uint64_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012680 }
12681}
12682
12683#endif
12684#ifdef VK_EXT_validation_flags
12685void deepcopy_VkValidationFlagsEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012686 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012687 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012688 const VkValidationFlagsEXT* from,
12689 VkValidationFlagsEXT* to)
12690{
Yilong Li422b0582021-04-30 13:09:43 -070012691 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012692 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012693 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012694 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12695 {
12696 rootType = from->sType;
12697 }
Yilong Li04218f72021-02-19 01:31:17 -080012698 const void* from_pNext = from;
12699 size_t pNext_size = 0u;
12700 while (!pNext_size && from_pNext)
12701 {
12702 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012703 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012704 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012705 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012706 if (pNext_size)
12707 {
Yilong Li324fa652021-12-29 17:00:42 -080012708 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012709 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012710 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012711 to->pDisabledValidationChecks = nullptr;
12712 if (from->pDisabledValidationChecks)
12713 {
Yilong Li422b0582021-04-30 13:09:43 -070012714 to->pDisabledValidationChecks = (VkValidationCheckEXT*)alloc->dupArray(from->pDisabledValidationChecks, from->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012715 }
12716}
12717
12718#endif
12719#ifdef VK_NN_vi_surface
12720void deepcopy_VkViSurfaceCreateInfoNN(
Yilong Li422b0582021-04-30 13:09:43 -070012721 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012722 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012723 const VkViSurfaceCreateInfoNN* from,
12724 VkViSurfaceCreateInfoNN* to)
12725{
Yilong Li422b0582021-04-30 13:09:43 -070012726 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012727 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012728 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012729 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12730 {
12731 rootType = from->sType;
12732 }
Yilong Li04218f72021-02-19 01:31:17 -080012733 const void* from_pNext = from;
12734 size_t pNext_size = 0u;
12735 while (!pNext_size && from_pNext)
12736 {
12737 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012738 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012739 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012740 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012741 if (pNext_size)
12742 {
Yilong Li324fa652021-12-29 17:00:42 -080012743 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012744 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012745 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012746 to->window = nullptr;
12747 if (from->window)
12748 {
Yilong Li422b0582021-04-30 13:09:43 -070012749 to->window = (void*)alloc->dupArray(from->window, sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012750 }
12751}
12752
12753#endif
12754#ifdef VK_EXT_shader_subgroup_ballot
12755#endif
12756#ifdef VK_EXT_shader_subgroup_vote
12757#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012758#ifdef VK_EXT_texture_compression_astc_hdr
12759void deepcopy_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012760 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012761 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080012762 const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* from,
12763 VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* to)
12764{
Yilong Li422b0582021-04-30 13:09:43 -070012765 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012766 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080012767 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012768 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12769 {
12770 rootType = from->sType;
12771 }
Yilong Li04218f72021-02-19 01:31:17 -080012772 const void* from_pNext = from;
12773 size_t pNext_size = 0u;
12774 while (!pNext_size && from_pNext)
12775 {
12776 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012777 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012778 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012779 to->pNext = nullptr;
12780 if (pNext_size)
12781 {
Yilong Li422b0582021-04-30 13:09:43 -070012782 to->pNext = (void*)alloc->alloc(pNext_size);
12783 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012784 }
12785}
12786
12787#endif
12788#ifdef VK_EXT_astc_decode_mode
12789void deepcopy_VkImageViewASTCDecodeModeEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012790 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012791 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080012792 const VkImageViewASTCDecodeModeEXT* from,
12793 VkImageViewASTCDecodeModeEXT* to)
12794{
Yilong Li422b0582021-04-30 13:09:43 -070012795 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012796 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080012797 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012798 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12799 {
12800 rootType = from->sType;
12801 }
Yilong Li04218f72021-02-19 01:31:17 -080012802 const void* from_pNext = from;
12803 size_t pNext_size = 0u;
12804 while (!pNext_size && from_pNext)
12805 {
12806 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012807 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012808 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012809 to->pNext = nullptr;
12810 if (pNext_size)
12811 {
Yilong Li324fa652021-12-29 17:00:42 -080012812 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012813 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012814 }
12815}
12816
12817void deepcopy_VkPhysicalDeviceASTCDecodeFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012818 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012819 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080012820 const VkPhysicalDeviceASTCDecodeFeaturesEXT* from,
12821 VkPhysicalDeviceASTCDecodeFeaturesEXT* to)
12822{
Yilong Li422b0582021-04-30 13:09:43 -070012823 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012824 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080012825 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012826 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12827 {
12828 rootType = from->sType;
12829 }
Yilong Li04218f72021-02-19 01:31:17 -080012830 const void* from_pNext = from;
12831 size_t pNext_size = 0u;
12832 while (!pNext_size && from_pNext)
12833 {
12834 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012835 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012836 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012837 to->pNext = nullptr;
12838 if (pNext_size)
12839 {
Yilong Li422b0582021-04-30 13:09:43 -070012840 to->pNext = (void*)alloc->alloc(pNext_size);
12841 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080012842 }
12843}
12844
12845#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012846#ifdef VK_EXT_conditional_rendering
12847void deepcopy_VkConditionalRenderingBeginInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012848 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012849 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012850 const VkConditionalRenderingBeginInfoEXT* from,
12851 VkConditionalRenderingBeginInfoEXT* to)
12852{
Yilong Li422b0582021-04-30 13:09:43 -070012853 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012854 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012855 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012856 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12857 {
12858 rootType = from->sType;
12859 }
Yilong Li04218f72021-02-19 01:31:17 -080012860 const void* from_pNext = from;
12861 size_t pNext_size = 0u;
12862 while (!pNext_size && from_pNext)
12863 {
12864 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012865 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012866 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012867 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012868 if (pNext_size)
12869 {
Yilong Li324fa652021-12-29 17:00:42 -080012870 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012871 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012872 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012873}
12874
12875void deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012876 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012877 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012878 const VkPhysicalDeviceConditionalRenderingFeaturesEXT* from,
12879 VkPhysicalDeviceConditionalRenderingFeaturesEXT* to)
12880{
Yilong Li422b0582021-04-30 13:09:43 -070012881 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012882 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012883 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012884 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12885 {
12886 rootType = from->sType;
12887 }
Yilong Li04218f72021-02-19 01:31:17 -080012888 const void* from_pNext = from;
12889 size_t pNext_size = 0u;
12890 while (!pNext_size && from_pNext)
12891 {
12892 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012893 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012894 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012895 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012896 if (pNext_size)
12897 {
Yilong Li422b0582021-04-30 13:09:43 -070012898 to->pNext = (void*)alloc->alloc(pNext_size);
12899 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012900 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012901}
12902
12903void deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070012904 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012905 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012906 const VkCommandBufferInheritanceConditionalRenderingInfoEXT* from,
12907 VkCommandBufferInheritanceConditionalRenderingInfoEXT* to)
12908{
Yilong Li422b0582021-04-30 13:09:43 -070012909 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012910 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012911 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012912 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12913 {
12914 rootType = from->sType;
12915 }
Yilong Li04218f72021-02-19 01:31:17 -080012916 const void* from_pNext = from;
12917 size_t pNext_size = 0u;
12918 while (!pNext_size && from_pNext)
12919 {
12920 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012921 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012922 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012923 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012924 if (pNext_size)
12925 {
Yilong Li324fa652021-12-29 17:00:42 -080012926 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012927 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012928 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012929}
12930
12931#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012932#ifdef VK_NV_clip_space_w_scaling
12933void deepcopy_VkViewportWScalingNV(
Yilong Li422b0582021-04-30 13:09:43 -070012934 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012935 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012936 const VkViewportWScalingNV* from,
12937 VkViewportWScalingNV* to)
12938{
Yilong Li422b0582021-04-30 13:09:43 -070012939 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012940 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012941 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012942}
12943
12944void deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070012945 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012946 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012947 const VkPipelineViewportWScalingStateCreateInfoNV* from,
12948 VkPipelineViewportWScalingStateCreateInfoNV* to)
12949{
Yilong Li422b0582021-04-30 13:09:43 -070012950 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012951 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012952 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070012953 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
12954 {
12955 rootType = from->sType;
12956 }
Yilong Li04218f72021-02-19 01:31:17 -080012957 const void* from_pNext = from;
12958 size_t pNext_size = 0u;
12959 while (!pNext_size && from_pNext)
12960 {
12961 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070012962 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080012963 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012964 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080012965 if (pNext_size)
12966 {
Yilong Li324fa652021-12-29 17:00:42 -080012967 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070012968 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080012969 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012970 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012971 {
Yilong Libd10ec92021-02-10 13:24:27 -080012972 to->pViewportWScalings = nullptr;
12973 if (from->pViewportWScalings)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012974 {
Yilong Li422b0582021-04-30 13:09:43 -070012975 to->pViewportWScalings = (VkViewportWScalingNV*)alloc->alloc(from->viewportCount * sizeof(const VkViewportWScalingNV));
Yilong Libd10ec92021-02-10 13:24:27 -080012976 to->viewportCount = from->viewportCount;
12977 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
12978 {
Yilong Li422b0582021-04-30 13:09:43 -070012979 deepcopy_VkViewportWScalingNV(alloc, rootType, from->pViewportWScalings + i, (VkViewportWScalingNV*)(to->pViewportWScalings + i));
Yilong Libd10ec92021-02-10 13:24:27 -080012980 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012981 }
12982 }
12983}
12984
12985#endif
12986#ifdef VK_EXT_direct_mode_display
12987#endif
12988#ifdef VK_EXT_acquire_xlib_display
12989#endif
12990#ifdef VK_EXT_display_surface_counter
12991void deepcopy_VkSurfaceCapabilities2EXT(
Yilong Li422b0582021-04-30 13:09:43 -070012992 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070012993 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012994 const VkSurfaceCapabilities2EXT* from,
12995 VkSurfaceCapabilities2EXT* to)
12996{
Yilong Li422b0582021-04-30 13:09:43 -070012997 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070012998 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080012999 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013000 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13001 {
13002 rootType = from->sType;
13003 }
Yilong Li04218f72021-02-19 01:31:17 -080013004 const void* from_pNext = from;
13005 size_t pNext_size = 0u;
13006 while (!pNext_size && from_pNext)
13007 {
13008 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013009 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013010 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013011 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013012 if (pNext_size)
13013 {
Yilong Li422b0582021-04-30 13:09:43 -070013014 to->pNext = (void*)alloc->alloc(pNext_size);
13015 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013016 }
Yilong Li422b0582021-04-30 13:09:43 -070013017 deepcopy_VkExtent2D(alloc, rootType, &from->currentExtent, (VkExtent2D*)(&to->currentExtent));
13018 deepcopy_VkExtent2D(alloc, rootType, &from->minImageExtent, (VkExtent2D*)(&to->minImageExtent));
13019 deepcopy_VkExtent2D(alloc, rootType, &from->maxImageExtent, (VkExtent2D*)(&to->maxImageExtent));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013020}
13021
13022#endif
13023#ifdef VK_EXT_display_control
13024void deepcopy_VkDisplayPowerInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013025 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013026 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013027 const VkDisplayPowerInfoEXT* from,
13028 VkDisplayPowerInfoEXT* to)
13029{
Yilong Li422b0582021-04-30 13:09:43 -070013030 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013031 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013032 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013033 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13034 {
13035 rootType = from->sType;
13036 }
Yilong Li04218f72021-02-19 01:31:17 -080013037 const void* from_pNext = from;
13038 size_t pNext_size = 0u;
13039 while (!pNext_size && from_pNext)
13040 {
13041 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013042 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013043 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013044 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013045 if (pNext_size)
13046 {
Yilong Li324fa652021-12-29 17:00:42 -080013047 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013048 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013049 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013050}
13051
13052void deepcopy_VkDeviceEventInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013053 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013054 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013055 const VkDeviceEventInfoEXT* from,
13056 VkDeviceEventInfoEXT* to)
13057{
Yilong Li422b0582021-04-30 13:09:43 -070013058 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013059 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013060 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013061 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13062 {
13063 rootType = from->sType;
13064 }
Yilong Li04218f72021-02-19 01:31:17 -080013065 const void* from_pNext = from;
13066 size_t pNext_size = 0u;
13067 while (!pNext_size && from_pNext)
13068 {
13069 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013070 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013071 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013072 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013073 if (pNext_size)
13074 {
Yilong Li324fa652021-12-29 17:00:42 -080013075 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013076 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013077 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013078}
13079
13080void deepcopy_VkDisplayEventInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013081 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013082 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013083 const VkDisplayEventInfoEXT* from,
13084 VkDisplayEventInfoEXT* to)
13085{
Yilong Li422b0582021-04-30 13:09:43 -070013086 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013087 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013088 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013089 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13090 {
13091 rootType = from->sType;
13092 }
Yilong Li04218f72021-02-19 01:31:17 -080013093 const void* from_pNext = from;
13094 size_t pNext_size = 0u;
13095 while (!pNext_size && from_pNext)
13096 {
13097 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013098 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013099 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013100 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013101 if (pNext_size)
13102 {
Yilong Li324fa652021-12-29 17:00:42 -080013103 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013104 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013105 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013106}
13107
13108void deepcopy_VkSwapchainCounterCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013109 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013110 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013111 const VkSwapchainCounterCreateInfoEXT* from,
13112 VkSwapchainCounterCreateInfoEXT* to)
13113{
Yilong Li422b0582021-04-30 13:09:43 -070013114 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013115 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013116 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013117 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13118 {
13119 rootType = from->sType;
13120 }
Yilong Li04218f72021-02-19 01:31:17 -080013121 const void* from_pNext = from;
13122 size_t pNext_size = 0u;
13123 while (!pNext_size && from_pNext)
13124 {
13125 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013126 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013127 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013128 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013129 if (pNext_size)
13130 {
Yilong Li324fa652021-12-29 17:00:42 -080013131 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013132 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013133 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013134}
13135
13136#endif
13137#ifdef VK_GOOGLE_display_timing
13138void deepcopy_VkRefreshCycleDurationGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070013139 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013140 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013141 const VkRefreshCycleDurationGOOGLE* from,
13142 VkRefreshCycleDurationGOOGLE* to)
13143{
Yilong Li422b0582021-04-30 13:09:43 -070013144 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013145 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013146 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013147}
13148
13149void deepcopy_VkPastPresentationTimingGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070013150 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013151 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013152 const VkPastPresentationTimingGOOGLE* from,
13153 VkPastPresentationTimingGOOGLE* to)
13154{
Yilong Li422b0582021-04-30 13:09:43 -070013155 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013156 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013157 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013158}
13159
13160void deepcopy_VkPresentTimeGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070013161 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013162 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013163 const VkPresentTimeGOOGLE* from,
13164 VkPresentTimeGOOGLE* to)
13165{
Yilong Li422b0582021-04-30 13:09:43 -070013166 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013167 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013168 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013169}
13170
13171void deepcopy_VkPresentTimesInfoGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070013172 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013173 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013174 const VkPresentTimesInfoGOOGLE* from,
13175 VkPresentTimesInfoGOOGLE* to)
13176{
Yilong Li422b0582021-04-30 13:09:43 -070013177 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013178 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013179 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013180 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13181 {
13182 rootType = from->sType;
13183 }
Yilong Li04218f72021-02-19 01:31:17 -080013184 const void* from_pNext = from;
13185 size_t pNext_size = 0u;
13186 while (!pNext_size && from_pNext)
13187 {
13188 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013189 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013190 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013191 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013192 if (pNext_size)
13193 {
Yilong Li324fa652021-12-29 17:00:42 -080013194 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013195 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013196 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013197 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013198 {
Yilong Libd10ec92021-02-10 13:24:27 -080013199 to->pTimes = nullptr;
13200 if (from->pTimes)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013201 {
Yilong Li422b0582021-04-30 13:09:43 -070013202 to->pTimes = (VkPresentTimeGOOGLE*)alloc->alloc(from->swapchainCount * sizeof(const VkPresentTimeGOOGLE));
Yilong Libd10ec92021-02-10 13:24:27 -080013203 to->swapchainCount = from->swapchainCount;
13204 for (uint32_t i = 0; i < (uint32_t)from->swapchainCount; ++i)
13205 {
Yilong Li422b0582021-04-30 13:09:43 -070013206 deepcopy_VkPresentTimeGOOGLE(alloc, rootType, from->pTimes + i, (VkPresentTimeGOOGLE*)(to->pTimes + i));
Yilong Libd10ec92021-02-10 13:24:27 -080013207 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013208 }
13209 }
13210}
13211
13212#endif
13213#ifdef VK_NV_sample_mask_override_coverage
13214#endif
13215#ifdef VK_NV_geometry_shader_passthrough
13216#endif
13217#ifdef VK_NV_viewport_array2
13218#endif
13219#ifdef VK_NVX_multiview_per_view_attributes
13220void deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
Yilong Li422b0582021-04-30 13:09:43 -070013221 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013222 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013223 const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* from,
13224 VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* to)
13225{
Yilong Li422b0582021-04-30 13:09:43 -070013226 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013227 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013228 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013229 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13230 {
13231 rootType = from->sType;
13232 }
Yilong Li04218f72021-02-19 01:31:17 -080013233 const void* from_pNext = from;
13234 size_t pNext_size = 0u;
13235 while (!pNext_size && from_pNext)
13236 {
13237 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013238 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013239 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013240 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013241 if (pNext_size)
13242 {
Yilong Li422b0582021-04-30 13:09:43 -070013243 to->pNext = (void*)alloc->alloc(pNext_size);
13244 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013245 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013246}
13247
13248#endif
13249#ifdef VK_NV_viewport_swizzle
13250void deepcopy_VkViewportSwizzleNV(
Yilong Li422b0582021-04-30 13:09:43 -070013251 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013252 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013253 const VkViewportSwizzleNV* from,
13254 VkViewportSwizzleNV* to)
13255{
Yilong Li422b0582021-04-30 13:09:43 -070013256 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013257 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013258 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013259}
13260
13261void deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070013262 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013263 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013264 const VkPipelineViewportSwizzleStateCreateInfoNV* from,
13265 VkPipelineViewportSwizzleStateCreateInfoNV* to)
13266{
Yilong Li422b0582021-04-30 13:09:43 -070013267 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013268 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013269 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013270 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13271 {
13272 rootType = from->sType;
13273 }
Yilong Li04218f72021-02-19 01:31:17 -080013274 const void* from_pNext = from;
13275 size_t pNext_size = 0u;
13276 while (!pNext_size && from_pNext)
13277 {
13278 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013279 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013280 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013281 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013282 if (pNext_size)
13283 {
Yilong Li324fa652021-12-29 17:00:42 -080013284 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013285 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013286 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013287 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013288 {
Yilong Libd10ec92021-02-10 13:24:27 -080013289 to->pViewportSwizzles = nullptr;
13290 if (from->pViewportSwizzles)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013291 {
Yilong Li422b0582021-04-30 13:09:43 -070013292 to->pViewportSwizzles = (VkViewportSwizzleNV*)alloc->alloc(from->viewportCount * sizeof(const VkViewportSwizzleNV));
Yilong Libd10ec92021-02-10 13:24:27 -080013293 to->viewportCount = from->viewportCount;
13294 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
13295 {
Yilong Li422b0582021-04-30 13:09:43 -070013296 deepcopy_VkViewportSwizzleNV(alloc, rootType, from->pViewportSwizzles + i, (VkViewportSwizzleNV*)(to->pViewportSwizzles + i));
Yilong Libd10ec92021-02-10 13:24:27 -080013297 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013298 }
13299 }
13300}
13301
13302#endif
13303#ifdef VK_EXT_discard_rectangles
13304void deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013305 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013306 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013307 const VkPhysicalDeviceDiscardRectanglePropertiesEXT* from,
13308 VkPhysicalDeviceDiscardRectanglePropertiesEXT* to)
13309{
Yilong Li422b0582021-04-30 13:09:43 -070013310 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013311 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013312 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013313 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13314 {
13315 rootType = from->sType;
13316 }
Yilong Li04218f72021-02-19 01:31:17 -080013317 const void* from_pNext = from;
13318 size_t pNext_size = 0u;
13319 while (!pNext_size && from_pNext)
13320 {
13321 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013322 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013323 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013324 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013325 if (pNext_size)
13326 {
Yilong Li422b0582021-04-30 13:09:43 -070013327 to->pNext = (void*)alloc->alloc(pNext_size);
13328 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013330}
13331
13332void deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013333 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013334 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013335 const VkPipelineDiscardRectangleStateCreateInfoEXT* from,
13336 VkPipelineDiscardRectangleStateCreateInfoEXT* to)
13337{
Yilong Li422b0582021-04-30 13:09:43 -070013338 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013339 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013340 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013341 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13342 {
13343 rootType = from->sType;
13344 }
Yilong Li04218f72021-02-19 01:31:17 -080013345 const void* from_pNext = from;
13346 size_t pNext_size = 0u;
13347 while (!pNext_size && from_pNext)
13348 {
13349 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013350 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013351 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013352 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013353 if (pNext_size)
13354 {
Yilong Li324fa652021-12-29 17:00:42 -080013355 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013356 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013357 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013358 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013359 {
Yilong Libd10ec92021-02-10 13:24:27 -080013360 to->pDiscardRectangles = nullptr;
13361 if (from->pDiscardRectangles)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013362 {
Yilong Li422b0582021-04-30 13:09:43 -070013363 to->pDiscardRectangles = (VkRect2D*)alloc->alloc(from->discardRectangleCount * sizeof(const VkRect2D));
Yilong Libd10ec92021-02-10 13:24:27 -080013364 to->discardRectangleCount = from->discardRectangleCount;
13365 for (uint32_t i = 0; i < (uint32_t)from->discardRectangleCount; ++i)
13366 {
Yilong Li422b0582021-04-30 13:09:43 -070013367 deepcopy_VkRect2D(alloc, rootType, from->pDiscardRectangles + i, (VkRect2D*)(to->pDiscardRectangles + i));
Yilong Libd10ec92021-02-10 13:24:27 -080013368 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013369 }
13370 }
13371}
13372
13373#endif
13374#ifdef VK_EXT_conservative_rasterization
13375void deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013376 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013377 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013378 const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* from,
13379 VkPhysicalDeviceConservativeRasterizationPropertiesEXT* to)
13380{
Yilong Li422b0582021-04-30 13:09:43 -070013381 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013382 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013383 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013384 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13385 {
13386 rootType = from->sType;
13387 }
Yilong Li04218f72021-02-19 01:31:17 -080013388 const void* from_pNext = from;
13389 size_t pNext_size = 0u;
13390 while (!pNext_size && from_pNext)
13391 {
13392 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013393 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013394 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013395 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013396 if (pNext_size)
13397 {
Yilong Li422b0582021-04-30 13:09:43 -070013398 to->pNext = (void*)alloc->alloc(pNext_size);
13399 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013401}
13402
13403void deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013404 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013405 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013406 const VkPipelineRasterizationConservativeStateCreateInfoEXT* from,
13407 VkPipelineRasterizationConservativeStateCreateInfoEXT* to)
13408{
Yilong Li422b0582021-04-30 13:09:43 -070013409 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013410 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013411 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013412 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13413 {
13414 rootType = from->sType;
13415 }
Yilong Li04218f72021-02-19 01:31:17 -080013416 const void* from_pNext = from;
13417 size_t pNext_size = 0u;
13418 while (!pNext_size && from_pNext)
13419 {
13420 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013421 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013422 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013423 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013424 if (pNext_size)
13425 {
Yilong Li324fa652021-12-29 17:00:42 -080013426 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013427 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013428 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013429}
13430
13431#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013432#ifdef VK_EXT_depth_clip_enable
13433void deepcopy_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013434 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013435 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080013436 const VkPhysicalDeviceDepthClipEnableFeaturesEXT* from,
13437 VkPhysicalDeviceDepthClipEnableFeaturesEXT* to)
13438{
Yilong Li422b0582021-04-30 13:09:43 -070013439 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013440 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080013441 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013442 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13443 {
13444 rootType = from->sType;
13445 }
Yilong Li04218f72021-02-19 01:31:17 -080013446 const void* from_pNext = from;
13447 size_t pNext_size = 0u;
13448 while (!pNext_size && from_pNext)
13449 {
13450 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013451 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013452 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013453 to->pNext = nullptr;
13454 if (pNext_size)
13455 {
Yilong Li422b0582021-04-30 13:09:43 -070013456 to->pNext = (void*)alloc->alloc(pNext_size);
13457 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013458 }
13459}
13460
13461void deepcopy_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013462 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013463 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080013464 const VkPipelineRasterizationDepthClipStateCreateInfoEXT* from,
13465 VkPipelineRasterizationDepthClipStateCreateInfoEXT* to)
13466{
Yilong Li422b0582021-04-30 13:09:43 -070013467 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013468 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080013469 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013470 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13471 {
13472 rootType = from->sType;
13473 }
Yilong Li04218f72021-02-19 01:31:17 -080013474 const void* from_pNext = from;
13475 size_t pNext_size = 0u;
13476 while (!pNext_size && from_pNext)
13477 {
13478 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013479 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013480 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013481 to->pNext = nullptr;
13482 if (pNext_size)
13483 {
Yilong Li324fa652021-12-29 17:00:42 -080013484 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013485 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013486 }
13487}
13488
13489#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013490#ifdef VK_EXT_swapchain_colorspace
13491#endif
13492#ifdef VK_EXT_hdr_metadata
13493void deepcopy_VkXYColorEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013494 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013495 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013496 const VkXYColorEXT* from,
13497 VkXYColorEXT* to)
13498{
Yilong Li422b0582021-04-30 13:09:43 -070013499 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013500 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013501 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013502}
13503
13504void deepcopy_VkHdrMetadataEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013505 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013506 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013507 const VkHdrMetadataEXT* from,
13508 VkHdrMetadataEXT* to)
13509{
Yilong Li422b0582021-04-30 13:09:43 -070013510 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013511 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013512 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013513 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13514 {
13515 rootType = from->sType;
13516 }
Yilong Li04218f72021-02-19 01:31:17 -080013517 const void* from_pNext = from;
13518 size_t pNext_size = 0u;
13519 while (!pNext_size && from_pNext)
13520 {
13521 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013522 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013523 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013524 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013525 if (pNext_size)
13526 {
Yilong Li324fa652021-12-29 17:00:42 -080013527 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013528 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013529 }
Yilong Li422b0582021-04-30 13:09:43 -070013530 deepcopy_VkXYColorEXT(alloc, rootType, &from->displayPrimaryRed, (VkXYColorEXT*)(&to->displayPrimaryRed));
13531 deepcopy_VkXYColorEXT(alloc, rootType, &from->displayPrimaryGreen, (VkXYColorEXT*)(&to->displayPrimaryGreen));
13532 deepcopy_VkXYColorEXT(alloc, rootType, &from->displayPrimaryBlue, (VkXYColorEXT*)(&to->displayPrimaryBlue));
13533 deepcopy_VkXYColorEXT(alloc, rootType, &from->whitePoint, (VkXYColorEXT*)(&to->whitePoint));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013534}
13535
13536#endif
13537#ifdef VK_MVK_ios_surface
13538void deepcopy_VkIOSSurfaceCreateInfoMVK(
Yilong Li422b0582021-04-30 13:09:43 -070013539 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013540 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013541 const VkIOSSurfaceCreateInfoMVK* from,
13542 VkIOSSurfaceCreateInfoMVK* to)
13543{
Yilong Li422b0582021-04-30 13:09:43 -070013544 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013545 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013546 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013547 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13548 {
13549 rootType = from->sType;
13550 }
Yilong Li04218f72021-02-19 01:31:17 -080013551 const void* from_pNext = from;
13552 size_t pNext_size = 0u;
13553 while (!pNext_size && from_pNext)
13554 {
13555 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013556 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013557 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013558 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013559 if (pNext_size)
13560 {
Yilong Li324fa652021-12-29 17:00:42 -080013561 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013562 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013563 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013564 to->pView = nullptr;
13565 if (from->pView)
13566 {
Yilong Li422b0582021-04-30 13:09:43 -070013567 to->pView = (void*)alloc->dupArray(from->pView, sizeof(const uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013568 }
13569}
13570
13571#endif
13572#ifdef VK_MVK_macos_surface
13573void deepcopy_VkMacOSSurfaceCreateInfoMVK(
Yilong Li422b0582021-04-30 13:09:43 -070013574 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013575 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013576 const VkMacOSSurfaceCreateInfoMVK* from,
13577 VkMacOSSurfaceCreateInfoMVK* to)
13578{
Yilong Li422b0582021-04-30 13:09:43 -070013579 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013580 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013581 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013582 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13583 {
13584 rootType = from->sType;
13585 }
Yilong Li04218f72021-02-19 01:31:17 -080013586 const void* from_pNext = from;
13587 size_t pNext_size = 0u;
13588 while (!pNext_size && from_pNext)
13589 {
13590 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013591 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013592 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013593 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013594 if (pNext_size)
13595 {
Yilong Li324fa652021-12-29 17:00:42 -080013596 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013597 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013598 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013599 to->pView = nullptr;
13600 if (from->pView)
13601 {
Yilong Li422b0582021-04-30 13:09:43 -070013602 to->pView = (void*)alloc->dupArray(from->pView, sizeof(const uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013603 }
13604}
13605
13606#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013607#ifdef VK_MVK_moltenvk
13608#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013609#ifdef VK_EXT_external_memory_dma_buf
13610#endif
13611#ifdef VK_EXT_queue_family_foreign
13612#endif
13613#ifdef VK_EXT_debug_utils
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013614void deepcopy_VkDebugUtilsLabelEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013615 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013616 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013617 const VkDebugUtilsLabelEXT* from,
13618 VkDebugUtilsLabelEXT* to)
13619{
Yilong Li422b0582021-04-30 13:09:43 -070013620 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013621 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013622 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013623 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13624 {
13625 rootType = from->sType;
13626 }
Yilong Li04218f72021-02-19 01:31:17 -080013627 const void* from_pNext = from;
13628 size_t pNext_size = 0u;
13629 while (!pNext_size && from_pNext)
13630 {
13631 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013632 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013633 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013634 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013635 if (pNext_size)
13636 {
Yilong Li324fa652021-12-29 17:00:42 -080013637 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013638 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013639 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013640 to->pLabelName = nullptr;
13641 if (from->pLabelName)
13642 {
Yilong Li422b0582021-04-30 13:09:43 -070013643 to->pLabelName = alloc->strDup(from->pLabelName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013644 }
13645 memcpy(to->color, from->color, 4 * sizeof(float));
13646}
13647
Yilong Lia8d45f12021-02-07 02:30:21 -080013648void deepcopy_VkDebugUtilsObjectNameInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013649 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013650 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080013651 const VkDebugUtilsObjectNameInfoEXT* from,
13652 VkDebugUtilsObjectNameInfoEXT* to)
13653{
Yilong Li422b0582021-04-30 13:09:43 -070013654 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013655 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080013656 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013657 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13658 {
13659 rootType = from->sType;
13660 }
Yilong Li04218f72021-02-19 01:31:17 -080013661 const void* from_pNext = from;
13662 size_t pNext_size = 0u;
13663 while (!pNext_size && from_pNext)
13664 {
13665 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013666 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013667 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013668 to->pNext = nullptr;
13669 if (pNext_size)
13670 {
Yilong Li324fa652021-12-29 17:00:42 -080013671 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013672 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013673 }
13674 to->pObjectName = nullptr;
13675 if (from->pObjectName)
13676 {
Yilong Li422b0582021-04-30 13:09:43 -070013677 to->pObjectName = alloc->strDup(from->pObjectName);
Yilong Lia8d45f12021-02-07 02:30:21 -080013678 }
13679}
13680
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013681void deepcopy_VkDebugUtilsMessengerCallbackDataEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013682 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013683 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013684 const VkDebugUtilsMessengerCallbackDataEXT* from,
13685 VkDebugUtilsMessengerCallbackDataEXT* to)
13686{
Yilong Li422b0582021-04-30 13:09:43 -070013687 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013688 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013689 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013690 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13691 {
13692 rootType = from->sType;
13693 }
Yilong Li04218f72021-02-19 01:31:17 -080013694 const void* from_pNext = from;
13695 size_t pNext_size = 0u;
13696 while (!pNext_size && from_pNext)
13697 {
13698 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013699 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013700 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013701 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013702 if (pNext_size)
13703 {
Yilong Li324fa652021-12-29 17:00:42 -080013704 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013705 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013706 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013707 to->pMessageIdName = nullptr;
13708 if (from->pMessageIdName)
13709 {
Yilong Li422b0582021-04-30 13:09:43 -070013710 to->pMessageIdName = alloc->strDup(from->pMessageIdName);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013711 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013712 to->pMessage = nullptr;
13713 if (from->pMessage)
13714 {
Yilong Li422b0582021-04-30 13:09:43 -070013715 to->pMessage = alloc->strDup(from->pMessage);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013716 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013717 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013718 {
Yilong Libd10ec92021-02-10 13:24:27 -080013719 to->pQueueLabels = nullptr;
13720 if (from->pQueueLabels)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013721 {
Yilong Li422b0582021-04-30 13:09:43 -070013722 to->pQueueLabels = (VkDebugUtilsLabelEXT*)alloc->alloc(from->queueLabelCount * sizeof(VkDebugUtilsLabelEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080013723 to->queueLabelCount = from->queueLabelCount;
13724 for (uint32_t i = 0; i < (uint32_t)from->queueLabelCount; ++i)
13725 {
Yilong Li422b0582021-04-30 13:09:43 -070013726 deepcopy_VkDebugUtilsLabelEXT(alloc, rootType, from->pQueueLabels + i, (VkDebugUtilsLabelEXT*)(to->pQueueLabels + i));
Yilong Libd10ec92021-02-10 13:24:27 -080013727 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013728 }
13729 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013730 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013731 {
Yilong Libd10ec92021-02-10 13:24:27 -080013732 to->pCmdBufLabels = nullptr;
13733 if (from->pCmdBufLabels)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013734 {
Yilong Li422b0582021-04-30 13:09:43 -070013735 to->pCmdBufLabels = (VkDebugUtilsLabelEXT*)alloc->alloc(from->cmdBufLabelCount * sizeof(VkDebugUtilsLabelEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080013736 to->cmdBufLabelCount = from->cmdBufLabelCount;
13737 for (uint32_t i = 0; i < (uint32_t)from->cmdBufLabelCount; ++i)
13738 {
Yilong Li422b0582021-04-30 13:09:43 -070013739 deepcopy_VkDebugUtilsLabelEXT(alloc, rootType, from->pCmdBufLabels + i, (VkDebugUtilsLabelEXT*)(to->pCmdBufLabels + i));
Yilong Libd10ec92021-02-10 13:24:27 -080013740 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013741 }
13742 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013743 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013744 {
Yilong Libd10ec92021-02-10 13:24:27 -080013745 to->pObjects = nullptr;
13746 if (from->pObjects)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013747 {
Yilong Li422b0582021-04-30 13:09:43 -070013748 to->pObjects = (VkDebugUtilsObjectNameInfoEXT*)alloc->alloc(from->objectCount * sizeof(VkDebugUtilsObjectNameInfoEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080013749 to->objectCount = from->objectCount;
13750 for (uint32_t i = 0; i < (uint32_t)from->objectCount; ++i)
13751 {
Yilong Li422b0582021-04-30 13:09:43 -070013752 deepcopy_VkDebugUtilsObjectNameInfoEXT(alloc, rootType, from->pObjects + i, (VkDebugUtilsObjectNameInfoEXT*)(to->pObjects + i));
Yilong Libd10ec92021-02-10 13:24:27 -080013753 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013754 }
13755 }
13756}
13757
13758void deepcopy_VkDebugUtilsMessengerCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013759 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013760 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013761 const VkDebugUtilsMessengerCreateInfoEXT* from,
13762 VkDebugUtilsMessengerCreateInfoEXT* to)
13763{
Yilong Li422b0582021-04-30 13:09:43 -070013764 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013765 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013766 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013767 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13768 {
13769 rootType = from->sType;
13770 }
Yilong Li04218f72021-02-19 01:31:17 -080013771 const void* from_pNext = from;
13772 size_t pNext_size = 0u;
13773 while (!pNext_size && from_pNext)
13774 {
13775 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013776 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013777 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013778 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013779 if (pNext_size)
13780 {
Yilong Li324fa652021-12-29 17:00:42 -080013781 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013782 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013783 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013784 to->pUserData = nullptr;
13785 if (from->pUserData)
13786 {
Yilong Li422b0582021-04-30 13:09:43 -070013787 to->pUserData = (void*)alloc->dupArray(from->pUserData, sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013788 }
13789}
13790
Yilong Lia8d45f12021-02-07 02:30:21 -080013791void deepcopy_VkDebugUtilsObjectTagInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070013792 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013793 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080013794 const VkDebugUtilsObjectTagInfoEXT* from,
13795 VkDebugUtilsObjectTagInfoEXT* to)
13796{
Yilong Li422b0582021-04-30 13:09:43 -070013797 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013798 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080013799 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013800 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13801 {
13802 rootType = from->sType;
13803 }
Yilong Li04218f72021-02-19 01:31:17 -080013804 const void* from_pNext = from;
13805 size_t pNext_size = 0u;
13806 while (!pNext_size && from_pNext)
13807 {
13808 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013809 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013810 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013811 to->pNext = nullptr;
13812 if (pNext_size)
13813 {
Yilong Li324fa652021-12-29 17:00:42 -080013814 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013815 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080013816 }
13817 to->pTag = nullptr;
13818 if (from->pTag)
13819 {
Yilong Li422b0582021-04-30 13:09:43 -070013820 to->pTag = (void*)alloc->dupArray(from->pTag, from->tagSize * sizeof(const uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080013821 }
13822}
13823
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013824#endif
13825#ifdef VK_ANDROID_external_memory_android_hardware_buffer
13826void deepcopy_VkAndroidHardwareBufferUsageANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070013827 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013828 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013829 const VkAndroidHardwareBufferUsageANDROID* from,
13830 VkAndroidHardwareBufferUsageANDROID* to)
13831{
Yilong Li422b0582021-04-30 13:09:43 -070013832 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013833 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013834 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013835 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13836 {
13837 rootType = from->sType;
13838 }
Yilong Li04218f72021-02-19 01:31:17 -080013839 const void* from_pNext = from;
13840 size_t pNext_size = 0u;
13841 while (!pNext_size && from_pNext)
13842 {
13843 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013844 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013845 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013846 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013847 if (pNext_size)
13848 {
Yilong Li422b0582021-04-30 13:09:43 -070013849 to->pNext = (void*)alloc->alloc(pNext_size);
13850 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013851 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013852}
13853
13854void deepcopy_VkAndroidHardwareBufferPropertiesANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070013855 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013856 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013857 const VkAndroidHardwareBufferPropertiesANDROID* from,
13858 VkAndroidHardwareBufferPropertiesANDROID* to)
13859{
Yilong Li422b0582021-04-30 13:09:43 -070013860 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013861 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013862 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013863 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13864 {
13865 rootType = from->sType;
13866 }
Yilong Li04218f72021-02-19 01:31:17 -080013867 const void* from_pNext = from;
13868 size_t pNext_size = 0u;
13869 while (!pNext_size && from_pNext)
13870 {
13871 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013872 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013873 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013874 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013875 if (pNext_size)
13876 {
Yilong Li422b0582021-04-30 13:09:43 -070013877 to->pNext = (void*)alloc->alloc(pNext_size);
13878 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013879 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880}
13881
13882void deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070013883 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013884 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013885 const VkAndroidHardwareBufferFormatPropertiesANDROID* from,
13886 VkAndroidHardwareBufferFormatPropertiesANDROID* to)
13887{
Yilong Li422b0582021-04-30 13:09:43 -070013888 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013889 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013890 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013891 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13892 {
13893 rootType = from->sType;
13894 }
Yilong Li04218f72021-02-19 01:31:17 -080013895 const void* from_pNext = from;
13896 size_t pNext_size = 0u;
13897 while (!pNext_size && from_pNext)
13898 {
13899 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013900 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013901 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013902 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013903 if (pNext_size)
13904 {
Yilong Li422b0582021-04-30 13:09:43 -070013905 to->pNext = (void*)alloc->alloc(pNext_size);
13906 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013907 }
Yilong Li422b0582021-04-30 13:09:43 -070013908 deepcopy_VkComponentMapping(alloc, rootType, &from->samplerYcbcrConversionComponents, (VkComponentMapping*)(&to->samplerYcbcrConversionComponents));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013909}
13910
13911void deepcopy_VkImportAndroidHardwareBufferInfoANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070013912 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013913 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013914 const VkImportAndroidHardwareBufferInfoANDROID* from,
13915 VkImportAndroidHardwareBufferInfoANDROID* to)
13916{
Yilong Li422b0582021-04-30 13:09:43 -070013917 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013918 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013919 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013920 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13921 {
13922 rootType = from->sType;
13923 }
Yilong Li04218f72021-02-19 01:31:17 -080013924 const void* from_pNext = from;
13925 size_t pNext_size = 0u;
13926 while (!pNext_size && from_pNext)
13927 {
13928 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013929 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013930 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013931 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013932 if (pNext_size)
13933 {
Yilong Li324fa652021-12-29 17:00:42 -080013934 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013935 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013936 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013937 to->buffer = nullptr;
13938 if (from->buffer)
13939 {
Yilong Li422b0582021-04-30 13:09:43 -070013940 to->buffer = (AHardwareBuffer*)alloc->dupArray(from->buffer, sizeof(AHardwareBuffer));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013941 }
13942}
13943
13944void deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070013945 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013946 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013947 const VkMemoryGetAndroidHardwareBufferInfoANDROID* from,
13948 VkMemoryGetAndroidHardwareBufferInfoANDROID* to)
13949{
Yilong Li422b0582021-04-30 13:09:43 -070013950 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013951 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013952 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013953 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13954 {
13955 rootType = from->sType;
13956 }
Yilong Li04218f72021-02-19 01:31:17 -080013957 const void* from_pNext = from;
13958 size_t pNext_size = 0u;
13959 while (!pNext_size && from_pNext)
13960 {
13961 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013962 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013963 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013964 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013965 if (pNext_size)
13966 {
Yilong Li324fa652021-12-29 17:00:42 -080013967 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070013968 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013969 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013970}
13971
13972void deepcopy_VkExternalFormatANDROID(
Yilong Li422b0582021-04-30 13:09:43 -070013973 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070013974 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013975 const VkExternalFormatANDROID* from,
13976 VkExternalFormatANDROID* to)
13977{
Yilong Li422b0582021-04-30 13:09:43 -070013978 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070013979 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080013980 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070013981 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
13982 {
13983 rootType = from->sType;
13984 }
Yilong Li04218f72021-02-19 01:31:17 -080013985 const void* from_pNext = from;
13986 size_t pNext_size = 0u;
13987 while (!pNext_size && from_pNext)
13988 {
13989 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070013990 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080013991 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013992 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080013993 if (pNext_size)
13994 {
Yilong Li422b0582021-04-30 13:09:43 -070013995 to->pNext = (void*)alloc->alloc(pNext_size);
13996 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080013997 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013998}
13999
Yilong Li353409a2022-01-04 02:37:56 -080014000void deepcopy_VkAndroidHardwareBufferFormatProperties2ANDROID(
14001 Allocator* alloc,
14002 VkStructureType rootType,
14003 const VkAndroidHardwareBufferFormatProperties2ANDROID* from,
14004 VkAndroidHardwareBufferFormatProperties2ANDROID* to)
14005{
14006 (void)alloc;
14007 (void)rootType;
14008 *to = *from;
14009 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14010 {
14011 rootType = from->sType;
14012 }
14013 const void* from_pNext = from;
14014 size_t pNext_size = 0u;
14015 while (!pNext_size && from_pNext)
14016 {
14017 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
14018 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
14019 }
14020 to->pNext = nullptr;
14021 if (pNext_size)
14022 {
14023 to->pNext = (void*)alloc->alloc(pNext_size);
14024 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
14025 }
14026 deepcopy_VkComponentMapping(alloc, rootType, &from->samplerYcbcrConversionComponents, (VkComponentMapping*)(&to->samplerYcbcrConversionComponents));
14027}
14028
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014029#endif
14030#ifdef VK_EXT_sampler_filter_minmax
Yilong Lia8d45f12021-02-07 02:30:21 -080014031#endif
14032#ifdef VK_AMD_gpu_shader_int16
14033#endif
14034#ifdef VK_AMD_mixed_attachment_samples
14035#endif
14036#ifdef VK_AMD_shader_fragment_mask
14037#endif
14038#ifdef VK_EXT_inline_uniform_block
14039void deepcopy_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014040 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014041 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014042 const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* from,
14043 VkPhysicalDeviceInlineUniformBlockFeaturesEXT* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014044{
Yilong Li422b0582021-04-30 13:09:43 -070014045 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014046 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014047 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014048 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14049 {
14050 rootType = from->sType;
14051 }
Yilong Li04218f72021-02-19 01:31:17 -080014052 const void* from_pNext = from;
14053 size_t pNext_size = 0u;
14054 while (!pNext_size && from_pNext)
14055 {
14056 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014057 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014058 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014059 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014060 if (pNext_size)
14061 {
Yilong Li422b0582021-04-30 13:09:43 -070014062 to->pNext = (void*)alloc->alloc(pNext_size);
14063 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014064 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014065}
14066
Yilong Lia8d45f12021-02-07 02:30:21 -080014067void deepcopy_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014068 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014069 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014070 const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* from,
14071 VkPhysicalDeviceInlineUniformBlockPropertiesEXT* to)
14072{
Yilong Li422b0582021-04-30 13:09:43 -070014073 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014074 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014075 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014076 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14077 {
14078 rootType = from->sType;
14079 }
Yilong Li04218f72021-02-19 01:31:17 -080014080 const void* from_pNext = from;
14081 size_t pNext_size = 0u;
14082 while (!pNext_size && from_pNext)
14083 {
14084 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014085 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014086 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014087 to->pNext = nullptr;
14088 if (pNext_size)
14089 {
Yilong Li422b0582021-04-30 13:09:43 -070014090 to->pNext = (void*)alloc->alloc(pNext_size);
14091 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014092 }
14093}
14094
14095void deepcopy_VkWriteDescriptorSetInlineUniformBlockEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014096 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014097 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014098 const VkWriteDescriptorSetInlineUniformBlockEXT* from,
14099 VkWriteDescriptorSetInlineUniformBlockEXT* to)
14100{
Yilong Li422b0582021-04-30 13:09:43 -070014101 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014102 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014103 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014104 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14105 {
14106 rootType = from->sType;
14107 }
Yilong Li04218f72021-02-19 01:31:17 -080014108 const void* from_pNext = from;
14109 size_t pNext_size = 0u;
14110 while (!pNext_size && from_pNext)
14111 {
14112 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014113 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014114 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014115 to->pNext = nullptr;
14116 if (pNext_size)
14117 {
Yilong Li324fa652021-12-29 17:00:42 -080014118 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014119 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014120 }
14121 to->pData = nullptr;
14122 if (from->pData)
14123 {
Yilong Li422b0582021-04-30 13:09:43 -070014124 to->pData = (void*)alloc->dupArray(from->pData, from->dataSize * sizeof(const uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080014125 }
14126}
14127
14128void deepcopy_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014129 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014130 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014131 const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* from,
14132 VkDescriptorPoolInlineUniformBlockCreateInfoEXT* to)
14133{
Yilong Li422b0582021-04-30 13:09:43 -070014134 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014135 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014136 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014137 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14138 {
14139 rootType = from->sType;
14140 }
Yilong Li04218f72021-02-19 01:31:17 -080014141 const void* from_pNext = from;
14142 size_t pNext_size = 0u;
14143 while (!pNext_size && from_pNext)
14144 {
14145 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014146 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014147 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014148 to->pNext = nullptr;
14149 if (pNext_size)
14150 {
Yilong Li324fa652021-12-29 17:00:42 -080014151 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014152 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014153 }
14154}
14155
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014156#endif
14157#ifdef VK_EXT_shader_stencil_export
14158#endif
14159#ifdef VK_EXT_sample_locations
14160void deepcopy_VkSampleLocationEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014161 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014162 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014163 const VkSampleLocationEXT* from,
14164 VkSampleLocationEXT* to)
14165{
Yilong Li422b0582021-04-30 13:09:43 -070014166 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014167 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014168 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014169}
14170
14171void deepcopy_VkSampleLocationsInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014172 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014173 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014174 const VkSampleLocationsInfoEXT* from,
14175 VkSampleLocationsInfoEXT* to)
14176{
Yilong Li422b0582021-04-30 13:09:43 -070014177 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014178 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014179 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014180 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14181 {
14182 rootType = from->sType;
14183 }
Yilong Li04218f72021-02-19 01:31:17 -080014184 const void* from_pNext = from;
14185 size_t pNext_size = 0u;
14186 while (!pNext_size && from_pNext)
14187 {
14188 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014189 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014190 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014191 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014192 if (pNext_size)
14193 {
Yilong Li324fa652021-12-29 17:00:42 -080014194 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014195 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014196 }
Yilong Li422b0582021-04-30 13:09:43 -070014197 deepcopy_VkExtent2D(alloc, rootType, &from->sampleLocationGridSize, (VkExtent2D*)(&to->sampleLocationGridSize));
Lingfeng Yang55676e02021-02-08 08:39:45 -080014198 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014199 {
Yilong Libd10ec92021-02-10 13:24:27 -080014200 to->pSampleLocations = nullptr;
14201 if (from->pSampleLocations)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014202 {
Yilong Li422b0582021-04-30 13:09:43 -070014203 to->pSampleLocations = (VkSampleLocationEXT*)alloc->alloc(from->sampleLocationsCount * sizeof(const VkSampleLocationEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080014204 to->sampleLocationsCount = from->sampleLocationsCount;
14205 for (uint32_t i = 0; i < (uint32_t)from->sampleLocationsCount; ++i)
14206 {
Yilong Li422b0582021-04-30 13:09:43 -070014207 deepcopy_VkSampleLocationEXT(alloc, rootType, from->pSampleLocations + i, (VkSampleLocationEXT*)(to->pSampleLocations + i));
Yilong Libd10ec92021-02-10 13:24:27 -080014208 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014209 }
14210 }
14211}
14212
14213void deepcopy_VkAttachmentSampleLocationsEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014214 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014215 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014216 const VkAttachmentSampleLocationsEXT* from,
14217 VkAttachmentSampleLocationsEXT* to)
14218{
Yilong Li422b0582021-04-30 13:09:43 -070014219 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014220 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014221 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070014222 deepcopy_VkSampleLocationsInfoEXT(alloc, rootType, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014223}
14224
14225void deepcopy_VkSubpassSampleLocationsEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014226 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014227 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014228 const VkSubpassSampleLocationsEXT* from,
14229 VkSubpassSampleLocationsEXT* to)
14230{
Yilong Li422b0582021-04-30 13:09:43 -070014231 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014232 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014233 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070014234 deepcopy_VkSampleLocationsInfoEXT(alloc, rootType, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014235}
14236
14237void deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014238 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014239 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014240 const VkRenderPassSampleLocationsBeginInfoEXT* from,
14241 VkRenderPassSampleLocationsBeginInfoEXT* to)
14242{
Yilong Li422b0582021-04-30 13:09:43 -070014243 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014244 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014245 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014246 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14247 {
14248 rootType = from->sType;
14249 }
Yilong Li04218f72021-02-19 01:31:17 -080014250 const void* from_pNext = from;
14251 size_t pNext_size = 0u;
14252 while (!pNext_size && from_pNext)
14253 {
14254 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014255 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014256 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014257 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014258 if (pNext_size)
14259 {
Yilong Li324fa652021-12-29 17:00:42 -080014260 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014261 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014262 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014263 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014264 {
Yilong Libd10ec92021-02-10 13:24:27 -080014265 to->pAttachmentInitialSampleLocations = nullptr;
14266 if (from->pAttachmentInitialSampleLocations)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014267 {
Yilong Li422b0582021-04-30 13:09:43 -070014268 to->pAttachmentInitialSampleLocations = (VkAttachmentSampleLocationsEXT*)alloc->alloc(from->attachmentInitialSampleLocationsCount * sizeof(const VkAttachmentSampleLocationsEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080014269 to->attachmentInitialSampleLocationsCount = from->attachmentInitialSampleLocationsCount;
14270 for (uint32_t i = 0; i < (uint32_t)from->attachmentInitialSampleLocationsCount; ++i)
14271 {
Yilong Li422b0582021-04-30 13:09:43 -070014272 deepcopy_VkAttachmentSampleLocationsEXT(alloc, rootType, from->pAttachmentInitialSampleLocations + i, (VkAttachmentSampleLocationsEXT*)(to->pAttachmentInitialSampleLocations + i));
Yilong Libd10ec92021-02-10 13:24:27 -080014273 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014274 }
14275 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014276 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014277 {
Yilong Libd10ec92021-02-10 13:24:27 -080014278 to->pPostSubpassSampleLocations = nullptr;
14279 if (from->pPostSubpassSampleLocations)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014280 {
Yilong Li422b0582021-04-30 13:09:43 -070014281 to->pPostSubpassSampleLocations = (VkSubpassSampleLocationsEXT*)alloc->alloc(from->postSubpassSampleLocationsCount * sizeof(const VkSubpassSampleLocationsEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080014282 to->postSubpassSampleLocationsCount = from->postSubpassSampleLocationsCount;
14283 for (uint32_t i = 0; i < (uint32_t)from->postSubpassSampleLocationsCount; ++i)
14284 {
Yilong Li422b0582021-04-30 13:09:43 -070014285 deepcopy_VkSubpassSampleLocationsEXT(alloc, rootType, from->pPostSubpassSampleLocations + i, (VkSubpassSampleLocationsEXT*)(to->pPostSubpassSampleLocations + i));
Yilong Libd10ec92021-02-10 13:24:27 -080014286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014287 }
14288 }
14289}
14290
14291void deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014292 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014293 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014294 const VkPipelineSampleLocationsStateCreateInfoEXT* from,
14295 VkPipelineSampleLocationsStateCreateInfoEXT* to)
14296{
Yilong Li422b0582021-04-30 13:09:43 -070014297 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014298 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014299 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014300 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14301 {
14302 rootType = from->sType;
14303 }
Yilong Li04218f72021-02-19 01:31:17 -080014304 const void* from_pNext = from;
14305 size_t pNext_size = 0u;
14306 while (!pNext_size && from_pNext)
14307 {
14308 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014309 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014310 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014311 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014312 if (pNext_size)
14313 {
Yilong Li324fa652021-12-29 17:00:42 -080014314 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014315 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014316 }
Yilong Li422b0582021-04-30 13:09:43 -070014317 deepcopy_VkSampleLocationsInfoEXT(alloc, rootType, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014318}
14319
14320void deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014321 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014322 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014323 const VkPhysicalDeviceSampleLocationsPropertiesEXT* from,
14324 VkPhysicalDeviceSampleLocationsPropertiesEXT* to)
14325{
Yilong Li422b0582021-04-30 13:09:43 -070014326 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014327 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014328 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014329 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14330 {
14331 rootType = from->sType;
14332 }
Yilong Li04218f72021-02-19 01:31:17 -080014333 const void* from_pNext = from;
14334 size_t pNext_size = 0u;
14335 while (!pNext_size && from_pNext)
14336 {
14337 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014338 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014339 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014340 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014341 if (pNext_size)
14342 {
Yilong Li422b0582021-04-30 13:09:43 -070014343 to->pNext = (void*)alloc->alloc(pNext_size);
14344 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014345 }
Yilong Li422b0582021-04-30 13:09:43 -070014346 deepcopy_VkExtent2D(alloc, rootType, &from->maxSampleLocationGridSize, (VkExtent2D*)(&to->maxSampleLocationGridSize));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014347 memcpy(to->sampleLocationCoordinateRange, from->sampleLocationCoordinateRange, 2 * sizeof(float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014348}
14349
14350void deepcopy_VkMultisamplePropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014351 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014352 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014353 const VkMultisamplePropertiesEXT* from,
14354 VkMultisamplePropertiesEXT* to)
14355{
Yilong Li422b0582021-04-30 13:09:43 -070014356 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014357 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014358 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014359 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14360 {
14361 rootType = from->sType;
14362 }
Yilong Li04218f72021-02-19 01:31:17 -080014363 const void* from_pNext = from;
14364 size_t pNext_size = 0u;
14365 while (!pNext_size && from_pNext)
14366 {
14367 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014368 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014369 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014370 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014371 if (pNext_size)
14372 {
Yilong Li422b0582021-04-30 13:09:43 -070014373 to->pNext = (void*)alloc->alloc(pNext_size);
14374 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014375 }
Yilong Li422b0582021-04-30 13:09:43 -070014376 deepcopy_VkExtent2D(alloc, rootType, &from->maxSampleLocationGridSize, (VkExtent2D*)(&to->maxSampleLocationGridSize));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014377}
14378
14379#endif
14380#ifdef VK_EXT_blend_operation_advanced
14381void deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014382 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014383 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014384 const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* from,
14385 VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* to)
14386{
Yilong Li422b0582021-04-30 13:09:43 -070014387 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014388 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014389 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014390 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14391 {
14392 rootType = from->sType;
14393 }
Yilong Li04218f72021-02-19 01:31:17 -080014394 const void* from_pNext = from;
14395 size_t pNext_size = 0u;
14396 while (!pNext_size && from_pNext)
14397 {
14398 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014399 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014400 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014401 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014402 if (pNext_size)
14403 {
Yilong Li422b0582021-04-30 13:09:43 -070014404 to->pNext = (void*)alloc->alloc(pNext_size);
14405 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014406 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014407}
14408
14409void deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014410 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014411 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014412 const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* from,
14413 VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* to)
14414{
Yilong Li422b0582021-04-30 13:09:43 -070014415 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014416 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014417 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014418 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14419 {
14420 rootType = from->sType;
14421 }
Yilong Li04218f72021-02-19 01:31:17 -080014422 const void* from_pNext = from;
14423 size_t pNext_size = 0u;
14424 while (!pNext_size && from_pNext)
14425 {
14426 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014427 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014428 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014429 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014430 if (pNext_size)
14431 {
Yilong Li422b0582021-04-30 13:09:43 -070014432 to->pNext = (void*)alloc->alloc(pNext_size);
14433 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014434 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014435}
14436
14437void deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014438 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014439 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014440 const VkPipelineColorBlendAdvancedStateCreateInfoEXT* from,
14441 VkPipelineColorBlendAdvancedStateCreateInfoEXT* to)
14442{
Yilong Li422b0582021-04-30 13:09:43 -070014443 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014444 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014445 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014446 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14447 {
14448 rootType = from->sType;
14449 }
Yilong Li04218f72021-02-19 01:31:17 -080014450 const void* from_pNext = from;
14451 size_t pNext_size = 0u;
14452 while (!pNext_size && from_pNext)
14453 {
14454 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014455 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014456 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014457 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014458 if (pNext_size)
14459 {
Yilong Li324fa652021-12-29 17:00:42 -080014460 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014461 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014462 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014463}
14464
14465#endif
14466#ifdef VK_NV_fragment_coverage_to_color
14467void deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070014468 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014469 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014470 const VkPipelineCoverageToColorStateCreateInfoNV* from,
14471 VkPipelineCoverageToColorStateCreateInfoNV* to)
14472{
Yilong Li422b0582021-04-30 13:09:43 -070014473 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014474 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014475 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014476 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14477 {
14478 rootType = from->sType;
14479 }
Yilong Li04218f72021-02-19 01:31:17 -080014480 const void* from_pNext = from;
14481 size_t pNext_size = 0u;
14482 while (!pNext_size && from_pNext)
14483 {
14484 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014485 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014486 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014487 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014488 if (pNext_size)
14489 {
Yilong Li324fa652021-12-29 17:00:42 -080014490 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014491 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014492 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014493}
14494
14495#endif
14496#ifdef VK_NV_framebuffer_mixed_samples
14497void deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070014498 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014499 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014500 const VkPipelineCoverageModulationStateCreateInfoNV* from,
14501 VkPipelineCoverageModulationStateCreateInfoNV* to)
14502{
Yilong Li422b0582021-04-30 13:09:43 -070014503 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014504 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014505 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014506 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14507 {
14508 rootType = from->sType;
14509 }
Yilong Li04218f72021-02-19 01:31:17 -080014510 const void* from_pNext = from;
14511 size_t pNext_size = 0u;
14512 while (!pNext_size && from_pNext)
14513 {
14514 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014515 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014516 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014517 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014518 if (pNext_size)
14519 {
Yilong Li324fa652021-12-29 17:00:42 -080014520 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014521 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014522 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014523 to->pCoverageModulationTable = nullptr;
14524 if (from->pCoverageModulationTable)
14525 {
Yilong Li422b0582021-04-30 13:09:43 -070014526 to->pCoverageModulationTable = (float*)alloc->dupArray(from->pCoverageModulationTable, from->coverageModulationTableCount * sizeof(const float));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014527 }
14528}
14529
14530#endif
14531#ifdef VK_NV_fill_rectangle
14532#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014533#ifdef VK_NV_shader_sm_builtins
14534void deepcopy_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070014535 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014536 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014537 const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* from,
14538 VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* to)
14539{
Yilong Li422b0582021-04-30 13:09:43 -070014540 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014541 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014542 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014543 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14544 {
14545 rootType = from->sType;
14546 }
Yilong Li04218f72021-02-19 01:31:17 -080014547 const void* from_pNext = from;
14548 size_t pNext_size = 0u;
14549 while (!pNext_size && from_pNext)
14550 {
14551 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014552 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014553 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014554 to->pNext = nullptr;
14555 if (pNext_size)
14556 {
Yilong Li422b0582021-04-30 13:09:43 -070014557 to->pNext = (void*)alloc->alloc(pNext_size);
14558 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014559 }
14560}
14561
14562void deepcopy_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070014563 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014564 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014565 const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* from,
14566 VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* to)
14567{
Yilong Li422b0582021-04-30 13:09:43 -070014568 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014569 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014570 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014571 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14572 {
14573 rootType = from->sType;
14574 }
Yilong Li04218f72021-02-19 01:31:17 -080014575 const void* from_pNext = from;
14576 size_t pNext_size = 0u;
14577 while (!pNext_size && from_pNext)
14578 {
14579 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014580 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014581 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014582 to->pNext = nullptr;
14583 if (pNext_size)
14584 {
Yilong Li422b0582021-04-30 13:09:43 -070014585 to->pNext = (void*)alloc->alloc(pNext_size);
14586 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014587 }
14588}
14589
14590#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014591#ifdef VK_EXT_post_depth_coverage
14592#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014593#ifdef VK_EXT_image_drm_format_modifier
14594void deepcopy_VkDrmFormatModifierPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014595 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014596 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014597 const VkDrmFormatModifierPropertiesEXT* from,
14598 VkDrmFormatModifierPropertiesEXT* to)
14599{
Yilong Li422b0582021-04-30 13:09:43 -070014600 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014601 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014602 *to = *from;
14603}
14604
14605void deepcopy_VkDrmFormatModifierPropertiesListEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014606 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014607 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014608 const VkDrmFormatModifierPropertiesListEXT* from,
14609 VkDrmFormatModifierPropertiesListEXT* to)
14610{
Yilong Li422b0582021-04-30 13:09:43 -070014611 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014612 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014613 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014614 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14615 {
14616 rootType = from->sType;
14617 }
Yilong Li04218f72021-02-19 01:31:17 -080014618 const void* from_pNext = from;
14619 size_t pNext_size = 0u;
14620 while (!pNext_size && from_pNext)
14621 {
14622 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014623 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014624 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014625 to->pNext = nullptr;
14626 if (pNext_size)
14627 {
Yilong Li422b0582021-04-30 13:09:43 -070014628 to->pNext = (void*)alloc->alloc(pNext_size);
14629 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014630 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014631 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080014632 {
Yilong Libd10ec92021-02-10 13:24:27 -080014633 to->pDrmFormatModifierProperties = nullptr;
14634 if (from->pDrmFormatModifierProperties)
Yilong Lia8d45f12021-02-07 02:30:21 -080014635 {
Yilong Li422b0582021-04-30 13:09:43 -070014636 to->pDrmFormatModifierProperties = (VkDrmFormatModifierPropertiesEXT*)alloc->alloc(from->drmFormatModifierCount * sizeof(VkDrmFormatModifierPropertiesEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080014637 to->drmFormatModifierCount = from->drmFormatModifierCount;
14638 for (uint32_t i = 0; i < (uint32_t)from->drmFormatModifierCount; ++i)
14639 {
Yilong Li422b0582021-04-30 13:09:43 -070014640 deepcopy_VkDrmFormatModifierPropertiesEXT(alloc, rootType, from->pDrmFormatModifierProperties + i, (VkDrmFormatModifierPropertiesEXT*)(to->pDrmFormatModifierProperties + i));
Yilong Libd10ec92021-02-10 13:24:27 -080014641 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014642 }
14643 }
14644}
14645
14646void deepcopy_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014647 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014648 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014649 const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* from,
14650 VkPhysicalDeviceImageDrmFormatModifierInfoEXT* to)
14651{
Yilong Li422b0582021-04-30 13:09:43 -070014652 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014653 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014654 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014655 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14656 {
14657 rootType = from->sType;
14658 }
Yilong Li04218f72021-02-19 01:31:17 -080014659 const void* from_pNext = from;
14660 size_t pNext_size = 0u;
14661 while (!pNext_size && from_pNext)
14662 {
14663 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014664 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014665 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014666 to->pNext = nullptr;
14667 if (pNext_size)
14668 {
Yilong Li324fa652021-12-29 17:00:42 -080014669 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014670 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014671 }
14672 to->pQueueFamilyIndices = nullptr;
14673 if (from->pQueueFamilyIndices)
14674 {
Yilong Li422b0582021-04-30 13:09:43 -070014675 to->pQueueFamilyIndices = (uint32_t*)alloc->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080014676 }
14677}
14678
14679void deepcopy_VkImageDrmFormatModifierListCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014680 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014681 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014682 const VkImageDrmFormatModifierListCreateInfoEXT* from,
14683 VkImageDrmFormatModifierListCreateInfoEXT* to)
14684{
Yilong Li422b0582021-04-30 13:09:43 -070014685 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014686 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014687 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014688 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14689 {
14690 rootType = from->sType;
14691 }
Yilong Li04218f72021-02-19 01:31:17 -080014692 const void* from_pNext = from;
14693 size_t pNext_size = 0u;
14694 while (!pNext_size && from_pNext)
14695 {
14696 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014697 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014698 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014699 to->pNext = nullptr;
14700 if (pNext_size)
14701 {
Yilong Li324fa652021-12-29 17:00:42 -080014702 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014703 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014704 }
14705 to->pDrmFormatModifiers = nullptr;
14706 if (from->pDrmFormatModifiers)
14707 {
Yilong Li422b0582021-04-30 13:09:43 -070014708 to->pDrmFormatModifiers = (uint64_t*)alloc->dupArray(from->pDrmFormatModifiers, from->drmFormatModifierCount * sizeof(const uint64_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080014709 }
14710}
14711
14712void deepcopy_VkImageDrmFormatModifierExplicitCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014713 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014714 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014715 const VkImageDrmFormatModifierExplicitCreateInfoEXT* from,
14716 VkImageDrmFormatModifierExplicitCreateInfoEXT* to)
14717{
Yilong Li422b0582021-04-30 13:09:43 -070014718 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014719 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014720 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014721 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14722 {
14723 rootType = from->sType;
14724 }
Yilong Li04218f72021-02-19 01:31:17 -080014725 const void* from_pNext = from;
14726 size_t pNext_size = 0u;
14727 while (!pNext_size && from_pNext)
14728 {
14729 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014730 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014731 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014732 to->pNext = nullptr;
14733 if (pNext_size)
14734 {
Yilong Li324fa652021-12-29 17:00:42 -080014735 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014736 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014737 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014738 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080014739 {
Yilong Libd10ec92021-02-10 13:24:27 -080014740 to->pPlaneLayouts = nullptr;
14741 if (from->pPlaneLayouts)
Yilong Lia8d45f12021-02-07 02:30:21 -080014742 {
Yilong Li422b0582021-04-30 13:09:43 -070014743 to->pPlaneLayouts = (VkSubresourceLayout*)alloc->alloc(from->drmFormatModifierPlaneCount * sizeof(const VkSubresourceLayout));
Yilong Libd10ec92021-02-10 13:24:27 -080014744 to->drmFormatModifierPlaneCount = from->drmFormatModifierPlaneCount;
14745 for (uint32_t i = 0; i < (uint32_t)from->drmFormatModifierPlaneCount; ++i)
14746 {
Yilong Li422b0582021-04-30 13:09:43 -070014747 deepcopy_VkSubresourceLayout(alloc, rootType, from->pPlaneLayouts + i, (VkSubresourceLayout*)(to->pPlaneLayouts + i));
Yilong Libd10ec92021-02-10 13:24:27 -080014748 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014749 }
14750 }
14751}
14752
14753void deepcopy_VkImageDrmFormatModifierPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014754 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014755 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014756 const VkImageDrmFormatModifierPropertiesEXT* from,
14757 VkImageDrmFormatModifierPropertiesEXT* to)
14758{
Yilong Li422b0582021-04-30 13:09:43 -070014759 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014760 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014761 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014762 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14763 {
14764 rootType = from->sType;
14765 }
Yilong Li04218f72021-02-19 01:31:17 -080014766 const void* from_pNext = from;
14767 size_t pNext_size = 0u;
14768 while (!pNext_size && from_pNext)
14769 {
14770 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014771 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014772 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014773 to->pNext = nullptr;
14774 if (pNext_size)
14775 {
Yilong Li422b0582021-04-30 13:09:43 -070014776 to->pNext = (void*)alloc->alloc(pNext_size);
14777 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080014778 }
14779}
14780
Yilong Li353409a2022-01-04 02:37:56 -080014781void deepcopy_VkDrmFormatModifierProperties2EXT(
14782 Allocator* alloc,
14783 VkStructureType rootType,
14784 const VkDrmFormatModifierProperties2EXT* from,
14785 VkDrmFormatModifierProperties2EXT* to)
14786{
14787 (void)alloc;
14788 (void)rootType;
14789 *to = *from;
14790}
14791
14792void deepcopy_VkDrmFormatModifierPropertiesList2EXT(
14793 Allocator* alloc,
14794 VkStructureType rootType,
14795 const VkDrmFormatModifierPropertiesList2EXT* from,
14796 VkDrmFormatModifierPropertiesList2EXT* to)
14797{
14798 (void)alloc;
14799 (void)rootType;
14800 *to = *from;
14801 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14802 {
14803 rootType = from->sType;
14804 }
14805 const void* from_pNext = from;
14806 size_t pNext_size = 0u;
14807 while (!pNext_size && from_pNext)
14808 {
14809 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
14810 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
14811 }
14812 to->pNext = nullptr;
14813 if (pNext_size)
14814 {
14815 to->pNext = (void*)alloc->alloc(pNext_size);
14816 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
14817 }
14818 if (from)
14819 {
14820 to->pDrmFormatModifierProperties = nullptr;
14821 if (from->pDrmFormatModifierProperties)
14822 {
14823 to->pDrmFormatModifierProperties = (VkDrmFormatModifierProperties2EXT*)alloc->alloc(from->drmFormatModifierCount * sizeof(VkDrmFormatModifierProperties2EXT));
14824 to->drmFormatModifierCount = from->drmFormatModifierCount;
14825 for (uint32_t i = 0; i < (uint32_t)from->drmFormatModifierCount; ++i)
14826 {
14827 deepcopy_VkDrmFormatModifierProperties2EXT(alloc, rootType, from->pDrmFormatModifierProperties + i, (VkDrmFormatModifierProperties2EXT*)(to->pDrmFormatModifierProperties + i));
14828 }
14829 }
14830 }
14831}
14832
Yilong Lia8d45f12021-02-07 02:30:21 -080014833#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014834#ifdef VK_EXT_validation_cache
14835void deepcopy_VkValidationCacheCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014836 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014837 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014838 const VkValidationCacheCreateInfoEXT* from,
14839 VkValidationCacheCreateInfoEXT* to)
14840{
Yilong Li422b0582021-04-30 13:09:43 -070014841 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014842 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014843 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014844 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14845 {
14846 rootType = from->sType;
14847 }
Yilong Li04218f72021-02-19 01:31:17 -080014848 const void* from_pNext = from;
14849 size_t pNext_size = 0u;
14850 while (!pNext_size && from_pNext)
14851 {
14852 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014853 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014854 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014855 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014856 if (pNext_size)
14857 {
Yilong Li324fa652021-12-29 17:00:42 -080014858 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014859 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014860 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014861 to->pInitialData = nullptr;
14862 if (from->pInitialData)
14863 {
Yilong Li422b0582021-04-30 13:09:43 -070014864 to->pInitialData = (void*)alloc->dupArray(from->pInitialData, from->initialDataSize * sizeof(const uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014865 }
14866}
14867
14868void deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070014869 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014870 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014871 const VkShaderModuleValidationCacheCreateInfoEXT* from,
14872 VkShaderModuleValidationCacheCreateInfoEXT* to)
14873{
Yilong Li422b0582021-04-30 13:09:43 -070014874 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014875 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014876 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014877 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14878 {
14879 rootType = from->sType;
14880 }
Yilong Li04218f72021-02-19 01:31:17 -080014881 const void* from_pNext = from;
14882 size_t pNext_size = 0u;
14883 while (!pNext_size && from_pNext)
14884 {
14885 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014886 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014887 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014888 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014889 if (pNext_size)
14890 {
Yilong Li324fa652021-12-29 17:00:42 -080014891 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014892 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014893 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014894}
14895
14896#endif
14897#ifdef VK_EXT_descriptor_indexing
Yilong Lia8d45f12021-02-07 02:30:21 -080014898#endif
14899#ifdef VK_EXT_shader_viewport_index_layer
14900#endif
14901#ifdef VK_NV_shading_rate_image
14902void deepcopy_VkShadingRatePaletteNV(
Yilong Li422b0582021-04-30 13:09:43 -070014903 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014904 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014905 const VkShadingRatePaletteNV* from,
14906 VkShadingRatePaletteNV* to)
14907{
Yilong Li422b0582021-04-30 13:09:43 -070014908 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014909 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014910 *to = *from;
14911 to->pShadingRatePaletteEntries = nullptr;
14912 if (from->pShadingRatePaletteEntries)
14913 {
Yilong Li422b0582021-04-30 13:09:43 -070014914 to->pShadingRatePaletteEntries = (VkShadingRatePaletteEntryNV*)alloc->dupArray(from->pShadingRatePaletteEntries, from->shadingRatePaletteEntryCount * sizeof(const VkShadingRatePaletteEntryNV));
Yilong Lia8d45f12021-02-07 02:30:21 -080014915 }
14916}
14917
14918void deepcopy_VkPipelineViewportShadingRateImageStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070014919 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014920 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014921 const VkPipelineViewportShadingRateImageStateCreateInfoNV* from,
14922 VkPipelineViewportShadingRateImageStateCreateInfoNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014923{
Yilong Li422b0582021-04-30 13:09:43 -070014924 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014925 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014926 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014927 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14928 {
14929 rootType = from->sType;
14930 }
Yilong Li04218f72021-02-19 01:31:17 -080014931 const void* from_pNext = from;
14932 size_t pNext_size = 0u;
14933 while (!pNext_size && from_pNext)
14934 {
14935 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014936 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014937 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014938 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014939 if (pNext_size)
14940 {
Yilong Li324fa652021-12-29 17:00:42 -080014941 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070014942 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014943 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014944 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014945 {
Yilong Libd10ec92021-02-10 13:24:27 -080014946 to->pShadingRatePalettes = nullptr;
14947 if (from->pShadingRatePalettes)
Yilong Lia8d45f12021-02-07 02:30:21 -080014948 {
Yilong Li422b0582021-04-30 13:09:43 -070014949 to->pShadingRatePalettes = (VkShadingRatePaletteNV*)alloc->alloc(from->viewportCount * sizeof(const VkShadingRatePaletteNV));
Yilong Libd10ec92021-02-10 13:24:27 -080014950 to->viewportCount = from->viewportCount;
14951 for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
14952 {
Yilong Li422b0582021-04-30 13:09:43 -070014953 deepcopy_VkShadingRatePaletteNV(alloc, rootType, from->pShadingRatePalettes + i, (VkShadingRatePaletteNV*)(to->pShadingRatePalettes + i));
Yilong Libd10ec92021-02-10 13:24:27 -080014954 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014955 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014956 }
14957}
14958
Yilong Lia8d45f12021-02-07 02:30:21 -080014959void deepcopy_VkPhysicalDeviceShadingRateImageFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070014960 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014961 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014962 const VkPhysicalDeviceShadingRateImageFeaturesNV* from,
14963 VkPhysicalDeviceShadingRateImageFeaturesNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014964{
Yilong Li422b0582021-04-30 13:09:43 -070014965 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014966 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080014967 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014968 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14969 {
14970 rootType = from->sType;
14971 }
Yilong Li04218f72021-02-19 01:31:17 -080014972 const void* from_pNext = from;
14973 size_t pNext_size = 0u;
14974 while (!pNext_size && from_pNext)
14975 {
14976 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070014977 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080014978 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014979 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080014980 if (pNext_size)
14981 {
Yilong Li422b0582021-04-30 13:09:43 -070014982 to->pNext = (void*)alloc->alloc(pNext_size);
14983 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080014984 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014985}
14986
Yilong Lia8d45f12021-02-07 02:30:21 -080014987void deepcopy_VkPhysicalDeviceShadingRateImagePropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070014988 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070014989 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080014990 const VkPhysicalDeviceShadingRateImagePropertiesNV* from,
14991 VkPhysicalDeviceShadingRateImagePropertiesNV* to)
14992{
Yilong Li422b0582021-04-30 13:09:43 -070014993 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070014994 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080014995 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070014996 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
14997 {
14998 rootType = from->sType;
14999 }
Yilong Li04218f72021-02-19 01:31:17 -080015000 const void* from_pNext = from;
15001 size_t pNext_size = 0u;
15002 while (!pNext_size && from_pNext)
15003 {
15004 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015005 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015006 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015007 to->pNext = nullptr;
15008 if (pNext_size)
15009 {
Yilong Li422b0582021-04-30 13:09:43 -070015010 to->pNext = (void*)alloc->alloc(pNext_size);
15011 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015012 }
Yilong Li422b0582021-04-30 13:09:43 -070015013 deepcopy_VkExtent2D(alloc, rootType, &from->shadingRateTexelSize, (VkExtent2D*)(&to->shadingRateTexelSize));
Yilong Lia8d45f12021-02-07 02:30:21 -080015014}
15015
15016void deepcopy_VkCoarseSampleLocationNV(
Yilong Li422b0582021-04-30 13:09:43 -070015017 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015018 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015019 const VkCoarseSampleLocationNV* from,
15020 VkCoarseSampleLocationNV* to)
15021{
Yilong Li422b0582021-04-30 13:09:43 -070015022 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015023 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015024 *to = *from;
15025}
15026
15027void deepcopy_VkCoarseSampleOrderCustomNV(
Yilong Li422b0582021-04-30 13:09:43 -070015028 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015029 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015030 const VkCoarseSampleOrderCustomNV* from,
15031 VkCoarseSampleOrderCustomNV* to)
15032{
Yilong Li422b0582021-04-30 13:09:43 -070015033 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015034 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015035 *to = *from;
Lingfeng Yang55676e02021-02-08 08:39:45 -080015036 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080015037 {
Yilong Libd10ec92021-02-10 13:24:27 -080015038 to->pSampleLocations = nullptr;
15039 if (from->pSampleLocations)
Yilong Lia8d45f12021-02-07 02:30:21 -080015040 {
Yilong Li422b0582021-04-30 13:09:43 -070015041 to->pSampleLocations = (VkCoarseSampleLocationNV*)alloc->alloc(from->sampleLocationCount * sizeof(const VkCoarseSampleLocationNV));
Yilong Libd10ec92021-02-10 13:24:27 -080015042 to->sampleLocationCount = from->sampleLocationCount;
15043 for (uint32_t i = 0; i < (uint32_t)from->sampleLocationCount; ++i)
15044 {
Yilong Li422b0582021-04-30 13:09:43 -070015045 deepcopy_VkCoarseSampleLocationNV(alloc, rootType, from->pSampleLocations + i, (VkCoarseSampleLocationNV*)(to->pSampleLocations + i));
Yilong Libd10ec92021-02-10 13:24:27 -080015046 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015047 }
15048 }
15049}
15050
15051void deepcopy_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015052 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015053 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015054 const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* from,
15055 VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* to)
15056{
Yilong Li422b0582021-04-30 13:09:43 -070015057 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015058 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015059 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015060 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15061 {
15062 rootType = from->sType;
15063 }
Yilong Li04218f72021-02-19 01:31:17 -080015064 const void* from_pNext = from;
15065 size_t pNext_size = 0u;
15066 while (!pNext_size && from_pNext)
15067 {
15068 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015069 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015070 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015071 to->pNext = nullptr;
15072 if (pNext_size)
15073 {
Yilong Li324fa652021-12-29 17:00:42 -080015074 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015075 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015076 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080015077 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080015078 {
Yilong Libd10ec92021-02-10 13:24:27 -080015079 to->pCustomSampleOrders = nullptr;
15080 if (from->pCustomSampleOrders)
Yilong Lia8d45f12021-02-07 02:30:21 -080015081 {
Yilong Li422b0582021-04-30 13:09:43 -070015082 to->pCustomSampleOrders = (VkCoarseSampleOrderCustomNV*)alloc->alloc(from->customSampleOrderCount * sizeof(const VkCoarseSampleOrderCustomNV));
Yilong Libd10ec92021-02-10 13:24:27 -080015083 to->customSampleOrderCount = from->customSampleOrderCount;
15084 for (uint32_t i = 0; i < (uint32_t)from->customSampleOrderCount; ++i)
15085 {
Yilong Li422b0582021-04-30 13:09:43 -070015086 deepcopy_VkCoarseSampleOrderCustomNV(alloc, rootType, from->pCustomSampleOrders + i, (VkCoarseSampleOrderCustomNV*)(to->pCustomSampleOrders + i));
Yilong Libd10ec92021-02-10 13:24:27 -080015087 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015088 }
15089 }
15090}
15091
15092#endif
15093#ifdef VK_NV_ray_tracing
15094void deepcopy_VkRayTracingShaderGroupCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015095 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015096 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015097 const VkRayTracingShaderGroupCreateInfoNV* from,
15098 VkRayTracingShaderGroupCreateInfoNV* to)
15099{
Yilong Li422b0582021-04-30 13:09:43 -070015100 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015101 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015102 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015103 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15104 {
15105 rootType = from->sType;
15106 }
Yilong Li04218f72021-02-19 01:31:17 -080015107 const void* from_pNext = from;
15108 size_t pNext_size = 0u;
15109 while (!pNext_size && from_pNext)
15110 {
15111 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015112 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015113 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015114 to->pNext = nullptr;
15115 if (pNext_size)
15116 {
Yilong Li324fa652021-12-29 17:00:42 -080015117 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015118 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015119 }
15120}
15121
15122void deepcopy_VkRayTracingPipelineCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015123 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015124 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015125 const VkRayTracingPipelineCreateInfoNV* from,
15126 VkRayTracingPipelineCreateInfoNV* to)
15127{
Yilong Li422b0582021-04-30 13:09:43 -070015128 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015129 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015130 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015131 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15132 {
15133 rootType = from->sType;
15134 }
Yilong Li04218f72021-02-19 01:31:17 -080015135 const void* from_pNext = from;
15136 size_t pNext_size = 0u;
15137 while (!pNext_size && from_pNext)
15138 {
15139 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015140 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015141 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015142 to->pNext = nullptr;
15143 if (pNext_size)
15144 {
Yilong Li324fa652021-12-29 17:00:42 -080015145 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015146 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015147 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080015148 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080015149 {
Yilong Libd10ec92021-02-10 13:24:27 -080015150 to->pStages = nullptr;
15151 if (from->pStages)
Yilong Lia8d45f12021-02-07 02:30:21 -080015152 {
Yilong Li422b0582021-04-30 13:09:43 -070015153 to->pStages = (VkPipelineShaderStageCreateInfo*)alloc->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
Yilong Libd10ec92021-02-10 13:24:27 -080015154 to->stageCount = from->stageCount;
15155 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
15156 {
Yilong Li422b0582021-04-30 13:09:43 -070015157 deepcopy_VkPipelineShaderStageCreateInfo(alloc, rootType, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
Yilong Libd10ec92021-02-10 13:24:27 -080015158 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015159 }
15160 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080015161 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080015162 {
Yilong Libd10ec92021-02-10 13:24:27 -080015163 to->pGroups = nullptr;
15164 if (from->pGroups)
Yilong Lia8d45f12021-02-07 02:30:21 -080015165 {
Yilong Li422b0582021-04-30 13:09:43 -070015166 to->pGroups = (VkRayTracingShaderGroupCreateInfoNV*)alloc->alloc(from->groupCount * sizeof(const VkRayTracingShaderGroupCreateInfoNV));
Yilong Libd10ec92021-02-10 13:24:27 -080015167 to->groupCount = from->groupCount;
15168 for (uint32_t i = 0; i < (uint32_t)from->groupCount; ++i)
15169 {
Yilong Li422b0582021-04-30 13:09:43 -070015170 deepcopy_VkRayTracingShaderGroupCreateInfoNV(alloc, rootType, from->pGroups + i, (VkRayTracingShaderGroupCreateInfoNV*)(to->pGroups + i));
Yilong Libd10ec92021-02-10 13:24:27 -080015171 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015172 }
15173 }
15174}
15175
15176void deepcopy_VkGeometryTrianglesNV(
Yilong Li422b0582021-04-30 13:09:43 -070015177 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015178 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015179 const VkGeometryTrianglesNV* from,
15180 VkGeometryTrianglesNV* to)
15181{
Yilong Li422b0582021-04-30 13:09:43 -070015182 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015183 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015184 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015185 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15186 {
15187 rootType = from->sType;
15188 }
Yilong Li04218f72021-02-19 01:31:17 -080015189 const void* from_pNext = from;
15190 size_t pNext_size = 0u;
15191 while (!pNext_size && from_pNext)
15192 {
15193 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015194 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015195 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015196 to->pNext = nullptr;
15197 if (pNext_size)
15198 {
Yilong Li324fa652021-12-29 17:00:42 -080015199 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015200 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015201 }
15202}
15203
15204void deepcopy_VkGeometryAABBNV(
Yilong Li422b0582021-04-30 13:09:43 -070015205 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015206 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015207 const VkGeometryAABBNV* from,
15208 VkGeometryAABBNV* to)
15209{
Yilong Li422b0582021-04-30 13:09:43 -070015210 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015211 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015212 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015213 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15214 {
15215 rootType = from->sType;
15216 }
Yilong Li04218f72021-02-19 01:31:17 -080015217 const void* from_pNext = from;
15218 size_t pNext_size = 0u;
15219 while (!pNext_size && from_pNext)
15220 {
15221 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015222 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015223 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015224 to->pNext = nullptr;
15225 if (pNext_size)
15226 {
Yilong Li324fa652021-12-29 17:00:42 -080015227 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015228 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015229 }
15230}
15231
15232void deepcopy_VkGeometryDataNV(
Yilong Li422b0582021-04-30 13:09:43 -070015233 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015234 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015235 const VkGeometryDataNV* from,
15236 VkGeometryDataNV* to)
15237{
Yilong Li422b0582021-04-30 13:09:43 -070015238 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015239 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015240 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070015241 deepcopy_VkGeometryTrianglesNV(alloc, rootType, &from->triangles, (VkGeometryTrianglesNV*)(&to->triangles));
15242 deepcopy_VkGeometryAABBNV(alloc, rootType, &from->aabbs, (VkGeometryAABBNV*)(&to->aabbs));
Yilong Lia8d45f12021-02-07 02:30:21 -080015243}
15244
15245void deepcopy_VkGeometryNV(
Yilong Li422b0582021-04-30 13:09:43 -070015246 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015247 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015248 const VkGeometryNV* from,
15249 VkGeometryNV* to)
15250{
Yilong Li422b0582021-04-30 13:09:43 -070015251 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015252 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015253 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015254 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15255 {
15256 rootType = from->sType;
15257 }
Yilong Li04218f72021-02-19 01:31:17 -080015258 const void* from_pNext = from;
15259 size_t pNext_size = 0u;
15260 while (!pNext_size && from_pNext)
15261 {
15262 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015263 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015264 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015265 to->pNext = nullptr;
15266 if (pNext_size)
15267 {
Yilong Li324fa652021-12-29 17:00:42 -080015268 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015269 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015270 }
Yilong Li422b0582021-04-30 13:09:43 -070015271 deepcopy_VkGeometryDataNV(alloc, rootType, &from->geometry, (VkGeometryDataNV*)(&to->geometry));
Yilong Lia8d45f12021-02-07 02:30:21 -080015272}
15273
15274void deepcopy_VkAccelerationStructureInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015275 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015276 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015277 const VkAccelerationStructureInfoNV* from,
15278 VkAccelerationStructureInfoNV* to)
15279{
Yilong Li422b0582021-04-30 13:09:43 -070015280 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015281 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015282 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015283 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15284 {
15285 rootType = from->sType;
15286 }
Yilong Li04218f72021-02-19 01:31:17 -080015287 const void* from_pNext = from;
15288 size_t pNext_size = 0u;
15289 while (!pNext_size && from_pNext)
15290 {
15291 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015292 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015293 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015294 to->pNext = nullptr;
15295 if (pNext_size)
15296 {
Yilong Li324fa652021-12-29 17:00:42 -080015297 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015298 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015299 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080015300 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080015301 {
Yilong Libd10ec92021-02-10 13:24:27 -080015302 to->pGeometries = nullptr;
15303 if (from->pGeometries)
Yilong Lia8d45f12021-02-07 02:30:21 -080015304 {
Yilong Li422b0582021-04-30 13:09:43 -070015305 to->pGeometries = (VkGeometryNV*)alloc->alloc(from->geometryCount * sizeof(const VkGeometryNV));
Yilong Libd10ec92021-02-10 13:24:27 -080015306 to->geometryCount = from->geometryCount;
15307 for (uint32_t i = 0; i < (uint32_t)from->geometryCount; ++i)
15308 {
Yilong Li422b0582021-04-30 13:09:43 -070015309 deepcopy_VkGeometryNV(alloc, rootType, from->pGeometries + i, (VkGeometryNV*)(to->pGeometries + i));
Yilong Libd10ec92021-02-10 13:24:27 -080015310 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015311 }
15312 }
15313}
15314
15315void deepcopy_VkAccelerationStructureCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015316 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015317 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015318 const VkAccelerationStructureCreateInfoNV* from,
15319 VkAccelerationStructureCreateInfoNV* to)
15320{
Yilong Li422b0582021-04-30 13:09:43 -070015321 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015322 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015323 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015324 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15325 {
15326 rootType = from->sType;
15327 }
Yilong Li04218f72021-02-19 01:31:17 -080015328 const void* from_pNext = from;
15329 size_t pNext_size = 0u;
15330 while (!pNext_size && from_pNext)
15331 {
15332 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015333 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015334 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015335 to->pNext = nullptr;
15336 if (pNext_size)
15337 {
Yilong Li324fa652021-12-29 17:00:42 -080015338 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015339 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015340 }
Yilong Li422b0582021-04-30 13:09:43 -070015341 deepcopy_VkAccelerationStructureInfoNV(alloc, rootType, &from->info, (VkAccelerationStructureInfoNV*)(&to->info));
Yilong Lia8d45f12021-02-07 02:30:21 -080015342}
15343
15344void deepcopy_VkBindAccelerationStructureMemoryInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015345 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015346 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015347 const VkBindAccelerationStructureMemoryInfoNV* from,
15348 VkBindAccelerationStructureMemoryInfoNV* to)
15349{
Yilong Li422b0582021-04-30 13:09:43 -070015350 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015351 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015352 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015353 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15354 {
15355 rootType = from->sType;
15356 }
Yilong Li04218f72021-02-19 01:31:17 -080015357 const void* from_pNext = from;
15358 size_t pNext_size = 0u;
15359 while (!pNext_size && from_pNext)
15360 {
15361 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015362 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015363 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015364 to->pNext = nullptr;
15365 if (pNext_size)
15366 {
Yilong Li324fa652021-12-29 17:00:42 -080015367 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015368 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015369 }
15370 to->pDeviceIndices = nullptr;
15371 if (from->pDeviceIndices)
15372 {
Yilong Li422b0582021-04-30 13:09:43 -070015373 to->pDeviceIndices = (uint32_t*)alloc->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080015374 }
15375}
15376
15377void deepcopy_VkWriteDescriptorSetAccelerationStructureNV(
Yilong Li422b0582021-04-30 13:09:43 -070015378 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015379 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015380 const VkWriteDescriptorSetAccelerationStructureNV* from,
15381 VkWriteDescriptorSetAccelerationStructureNV* to)
15382{
Yilong Li422b0582021-04-30 13:09:43 -070015383 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015384 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015385 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015386 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15387 {
15388 rootType = from->sType;
15389 }
Yilong Li04218f72021-02-19 01:31:17 -080015390 const void* from_pNext = from;
15391 size_t pNext_size = 0u;
15392 while (!pNext_size && from_pNext)
15393 {
15394 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015395 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015396 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015397 to->pNext = nullptr;
15398 if (pNext_size)
15399 {
Yilong Li324fa652021-12-29 17:00:42 -080015400 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015401 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015402 }
15403 to->pAccelerationStructures = nullptr;
15404 if (from->pAccelerationStructures)
15405 {
Yilong Li422b0582021-04-30 13:09:43 -070015406 to->pAccelerationStructures = (VkAccelerationStructureNV*)alloc->dupArray(from->pAccelerationStructures, from->accelerationStructureCount * sizeof(const VkAccelerationStructureNV));
Yilong Lia8d45f12021-02-07 02:30:21 -080015407 }
15408}
15409
15410void deepcopy_VkAccelerationStructureMemoryRequirementsInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015411 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015412 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015413 const VkAccelerationStructureMemoryRequirementsInfoNV* from,
15414 VkAccelerationStructureMemoryRequirementsInfoNV* to)
15415{
Yilong Li422b0582021-04-30 13:09:43 -070015416 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015417 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015418 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015419 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15420 {
15421 rootType = from->sType;
15422 }
Yilong Li04218f72021-02-19 01:31:17 -080015423 const void* from_pNext = from;
15424 size_t pNext_size = 0u;
15425 while (!pNext_size && from_pNext)
15426 {
15427 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015428 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015429 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015430 to->pNext = nullptr;
15431 if (pNext_size)
15432 {
Yilong Li324fa652021-12-29 17:00:42 -080015433 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015434 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015435 }
15436}
15437
15438void deepcopy_VkPhysicalDeviceRayTracingPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070015439 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015440 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015441 const VkPhysicalDeviceRayTracingPropertiesNV* from,
15442 VkPhysicalDeviceRayTracingPropertiesNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015443{
Yilong Li422b0582021-04-30 13:09:43 -070015444 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015445 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015446 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015447 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15448 {
15449 rootType = from->sType;
15450 }
Yilong Li04218f72021-02-19 01:31:17 -080015451 const void* from_pNext = from;
15452 size_t pNext_size = 0u;
15453 while (!pNext_size && from_pNext)
15454 {
15455 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015456 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015457 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015458 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015459 if (pNext_size)
15460 {
Yilong Li422b0582021-04-30 13:09:43 -070015461 to->pNext = (void*)alloc->alloc(pNext_size);
15462 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015463 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015464}
15465
Yilong Lia8d45f12021-02-07 02:30:21 -080015466void deepcopy_VkTransformMatrixKHR(
Yilong Li422b0582021-04-30 13:09:43 -070015467 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015468 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015469 const VkTransformMatrixKHR* from,
15470 VkTransformMatrixKHR* to)
15471{
Yilong Li422b0582021-04-30 13:09:43 -070015472 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015473 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015474 *to = *from;
15475 memcpy(to->matrix, from->matrix, ((3)*(4)) * sizeof(float));
15476}
15477
15478void deepcopy_VkAabbPositionsKHR(
Yilong Li422b0582021-04-30 13:09:43 -070015479 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015480 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015481 const VkAabbPositionsKHR* from,
15482 VkAabbPositionsKHR* to)
15483{
Yilong Li422b0582021-04-30 13:09:43 -070015484 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015485 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015486 *to = *from;
15487}
15488
15489void deepcopy_VkAccelerationStructureInstanceKHR(
Yilong Li422b0582021-04-30 13:09:43 -070015490 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015491 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015492 const VkAccelerationStructureInstanceKHR* from,
15493 VkAccelerationStructureInstanceKHR* to)
15494{
Yilong Li422b0582021-04-30 13:09:43 -070015495 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015496 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015497 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070015498 deepcopy_VkTransformMatrixKHR(alloc, rootType, &from->transform, (VkTransformMatrixKHR*)(&to->transform));
Yilong Lia8d45f12021-02-07 02:30:21 -080015499}
15500
15501#endif
15502#ifdef VK_NV_representative_fragment_test
15503void deepcopy_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070015504 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015505 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015506 const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* from,
15507 VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* to)
15508{
Yilong Li422b0582021-04-30 13:09:43 -070015509 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015510 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015511 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015512 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15513 {
15514 rootType = from->sType;
15515 }
Yilong Li04218f72021-02-19 01:31:17 -080015516 const void* from_pNext = from;
15517 size_t pNext_size = 0u;
15518 while (!pNext_size && from_pNext)
15519 {
15520 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015521 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015522 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015523 to->pNext = nullptr;
15524 if (pNext_size)
15525 {
Yilong Li422b0582021-04-30 13:09:43 -070015526 to->pNext = (void*)alloc->alloc(pNext_size);
15527 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015528 }
15529}
15530
15531void deepcopy_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070015532 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015533 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015534 const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* from,
15535 VkPipelineRepresentativeFragmentTestStateCreateInfoNV* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015536{
Yilong Li422b0582021-04-30 13:09:43 -070015537 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015538 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015539 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015540 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15541 {
15542 rootType = from->sType;
15543 }
Yilong Li04218f72021-02-19 01:31:17 -080015544 const void* from_pNext = from;
15545 size_t pNext_size = 0u;
15546 while (!pNext_size && from_pNext)
15547 {
15548 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015549 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015550 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015551 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015552 if (pNext_size)
15553 {
Yilong Li324fa652021-12-29 17:00:42 -080015554 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015555 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015556 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015557}
15558
15559#endif
15560#ifdef VK_EXT_filter_cubic
15561void deepcopy_VkPhysicalDeviceImageViewImageFormatInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015562 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015563 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015564 const VkPhysicalDeviceImageViewImageFormatInfoEXT* from,
15565 VkPhysicalDeviceImageViewImageFormatInfoEXT* to)
15566{
Yilong Li422b0582021-04-30 13:09:43 -070015567 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015568 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015569 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015570 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15571 {
15572 rootType = from->sType;
15573 }
Yilong Li04218f72021-02-19 01:31:17 -080015574 const void* from_pNext = from;
15575 size_t pNext_size = 0u;
15576 while (!pNext_size && from_pNext)
15577 {
15578 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015579 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015580 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015581 to->pNext = nullptr;
15582 if (pNext_size)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015583 {
Yilong Li422b0582021-04-30 13:09:43 -070015584 to->pNext = (void*)alloc->alloc(pNext_size);
15585 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015586 }
15587}
15588
Yilong Lia8d45f12021-02-07 02:30:21 -080015589void deepcopy_VkFilterCubicImageViewImageFormatPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015590 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015591 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015592 const VkFilterCubicImageViewImageFormatPropertiesEXT* from,
15593 VkFilterCubicImageViewImageFormatPropertiesEXT* to)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015594{
Yilong Li422b0582021-04-30 13:09:43 -070015595 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015596 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015597 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015598 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15599 {
15600 rootType = from->sType;
15601 }
Yilong Li04218f72021-02-19 01:31:17 -080015602 const void* from_pNext = from;
15603 size_t pNext_size = 0u;
15604 while (!pNext_size && from_pNext)
15605 {
15606 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015607 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015608 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015609 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015610 if (pNext_size)
15611 {
Yilong Li422b0582021-04-30 13:09:43 -070015612 to->pNext = (void*)alloc->alloc(pNext_size);
15613 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015614 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015615}
15616
15617#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015618#ifdef VK_QCOM_render_pass_shader_resolve
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015619#endif
15620#ifdef VK_EXT_global_priority
15621void deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015622 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015623 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015624 const VkDeviceQueueGlobalPriorityCreateInfoEXT* from,
15625 VkDeviceQueueGlobalPriorityCreateInfoEXT* to)
15626{
Yilong Li422b0582021-04-30 13:09:43 -070015627 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015628 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015629 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015630 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15631 {
15632 rootType = from->sType;
15633 }
Yilong Li04218f72021-02-19 01:31:17 -080015634 const void* from_pNext = from;
15635 size_t pNext_size = 0u;
15636 while (!pNext_size && from_pNext)
15637 {
15638 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015639 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015640 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015641 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015642 if (pNext_size)
15643 {
Yilong Li324fa652021-12-29 17:00:42 -080015644 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015645 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015646 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015647}
15648
15649#endif
15650#ifdef VK_EXT_external_memory_host
15651void deepcopy_VkImportMemoryHostPointerInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015652 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015653 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015654 const VkImportMemoryHostPointerInfoEXT* from,
15655 VkImportMemoryHostPointerInfoEXT* to)
15656{
Yilong Li422b0582021-04-30 13:09:43 -070015657 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015658 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015659 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015660 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15661 {
15662 rootType = from->sType;
15663 }
Yilong Li04218f72021-02-19 01:31:17 -080015664 const void* from_pNext = from;
15665 size_t pNext_size = 0u;
15666 while (!pNext_size && from_pNext)
15667 {
15668 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015669 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015670 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015671 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015672 if (pNext_size)
15673 {
Yilong Li324fa652021-12-29 17:00:42 -080015674 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015675 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015676 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015677 to->pHostPointer = nullptr;
15678 if (from->pHostPointer)
15679 {
Yilong Li422b0582021-04-30 13:09:43 -070015680 to->pHostPointer = (void*)alloc->dupArray(from->pHostPointer, sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015681 }
15682}
15683
15684void deepcopy_VkMemoryHostPointerPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015685 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015686 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015687 const VkMemoryHostPointerPropertiesEXT* from,
15688 VkMemoryHostPointerPropertiesEXT* to)
15689{
Yilong Li422b0582021-04-30 13:09:43 -070015690 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015691 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015692 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015693 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15694 {
15695 rootType = from->sType;
15696 }
Yilong Li04218f72021-02-19 01:31:17 -080015697 const void* from_pNext = from;
15698 size_t pNext_size = 0u;
15699 while (!pNext_size && from_pNext)
15700 {
15701 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015702 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015703 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015704 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015705 if (pNext_size)
15706 {
Yilong Li422b0582021-04-30 13:09:43 -070015707 to->pNext = (void*)alloc->alloc(pNext_size);
15708 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015709 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015710}
15711
15712void deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015713 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015714 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015715 const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* from,
15716 VkPhysicalDeviceExternalMemoryHostPropertiesEXT* to)
15717{
Yilong Li422b0582021-04-30 13:09:43 -070015718 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015719 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015720 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015721 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15722 {
15723 rootType = from->sType;
15724 }
Yilong Li04218f72021-02-19 01:31:17 -080015725 const void* from_pNext = from;
15726 size_t pNext_size = 0u;
15727 while (!pNext_size && from_pNext)
15728 {
15729 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015730 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015731 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015732 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015733 if (pNext_size)
15734 {
Yilong Li422b0582021-04-30 13:09:43 -070015735 to->pNext = (void*)alloc->alloc(pNext_size);
15736 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015737 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015738}
15739
15740#endif
15741#ifdef VK_AMD_buffer_marker
15742#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015743#ifdef VK_AMD_pipeline_compiler_control
15744void deepcopy_VkPipelineCompilerControlCreateInfoAMD(
Yilong Li422b0582021-04-30 13:09:43 -070015745 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015746 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015747 const VkPipelineCompilerControlCreateInfoAMD* from,
15748 VkPipelineCompilerControlCreateInfoAMD* to)
15749{
Yilong Li422b0582021-04-30 13:09:43 -070015750 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015751 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015752 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015753 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15754 {
15755 rootType = from->sType;
15756 }
Yilong Li04218f72021-02-19 01:31:17 -080015757 const void* from_pNext = from;
15758 size_t pNext_size = 0u;
15759 while (!pNext_size && from_pNext)
15760 {
15761 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015762 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015763 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015764 to->pNext = nullptr;
15765 if (pNext_size)
15766 {
Yilong Li324fa652021-12-29 17:00:42 -080015767 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015768 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015769 }
15770}
15771
15772#endif
15773#ifdef VK_EXT_calibrated_timestamps
15774void deepcopy_VkCalibratedTimestampInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070015775 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015776 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080015777 const VkCalibratedTimestampInfoEXT* from,
15778 VkCalibratedTimestampInfoEXT* to)
15779{
Yilong Li422b0582021-04-30 13:09:43 -070015780 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015781 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080015782 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015783 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15784 {
15785 rootType = from->sType;
15786 }
Yilong Li04218f72021-02-19 01:31:17 -080015787 const void* from_pNext = from;
15788 size_t pNext_size = 0u;
15789 while (!pNext_size && from_pNext)
15790 {
15791 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015792 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015793 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015794 to->pNext = nullptr;
15795 if (pNext_size)
15796 {
Yilong Li324fa652021-12-29 17:00:42 -080015797 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070015798 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080015799 }
15800}
15801
15802#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015803#ifdef VK_AMD_shader_core_properties
15804void deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(
Yilong Li422b0582021-04-30 13:09:43 -070015805 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070015806 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015807 const VkPhysicalDeviceShaderCorePropertiesAMD* from,
15808 VkPhysicalDeviceShaderCorePropertiesAMD* to)
15809{
Yilong Li422b0582021-04-30 13:09:43 -070015810 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070015811 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080015812 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070015813 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15814 {
15815 rootType = from->sType;
15816 }
Yilong Li04218f72021-02-19 01:31:17 -080015817 const void* from_pNext = from;
15818 size_t pNext_size = 0u;
15819 while (!pNext_size && from_pNext)
15820 {
15821 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070015822 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080015823 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015824 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080015825 if (pNext_size)
15826 {
Yilong Li422b0582021-04-30 13:09:43 -070015827 to->pNext = (void*)alloc->alloc(pNext_size);
15828 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080015829 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015830}
15831
15832#endif
Yilong Li353409a2022-01-04 02:37:56 -080015833#ifdef VK_EXT_video_decode_h265
15834void deepcopy_VkVideoDecodeH265ProfileEXT(
15835 Allocator* alloc,
15836 VkStructureType rootType,
15837 const VkVideoDecodeH265ProfileEXT* from,
15838 VkVideoDecodeH265ProfileEXT* to)
15839{
15840 (void)alloc;
15841 (void)rootType;
15842 *to = *from;
15843 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15844 {
15845 rootType = from->sType;
15846 }
15847 const void* from_pNext = from;
15848 size_t pNext_size = 0u;
15849 while (!pNext_size && from_pNext)
15850 {
15851 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
15852 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
15853 }
15854 to->pNext = nullptr;
15855 if (pNext_size)
15856 {
15857 to->pNext = (void*)alloc->alloc(pNext_size);
15858 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
15859 }
15860}
15861
15862void deepcopy_VkVideoDecodeH265CapabilitiesEXT(
15863 Allocator* alloc,
15864 VkStructureType rootType,
15865 const VkVideoDecodeH265CapabilitiesEXT* from,
15866 VkVideoDecodeH265CapabilitiesEXT* to)
15867{
15868 (void)alloc;
15869 (void)rootType;
15870 *to = *from;
15871 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15872 {
15873 rootType = from->sType;
15874 }
15875 const void* from_pNext = from;
15876 size_t pNext_size = 0u;
15877 while (!pNext_size && from_pNext)
15878 {
15879 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
15880 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
15881 }
15882 to->pNext = nullptr;
15883 if (pNext_size)
15884 {
15885 to->pNext = (void*)alloc->alloc(pNext_size);
15886 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
15887 }
15888 deepcopy_VkExtensionProperties(alloc, rootType, &from->stdExtensionVersion, (VkExtensionProperties*)(&to->stdExtensionVersion));
15889}
15890
15891void deepcopy_VkVideoDecodeH265SessionCreateInfoEXT(
15892 Allocator* alloc,
15893 VkStructureType rootType,
15894 const VkVideoDecodeH265SessionCreateInfoEXT* from,
15895 VkVideoDecodeH265SessionCreateInfoEXT* to)
15896{
15897 (void)alloc;
15898 (void)rootType;
15899 *to = *from;
15900 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15901 {
15902 rootType = from->sType;
15903 }
15904 const void* from_pNext = from;
15905 size_t pNext_size = 0u;
15906 while (!pNext_size && from_pNext)
15907 {
15908 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
15909 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
15910 }
15911 to->pNext = nullptr;
15912 if (pNext_size)
15913 {
15914 to->pNext = (void*)alloc->alloc(pNext_size);
15915 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
15916 }
15917 to->pStdExtensionVersion = nullptr;
15918 if (from->pStdExtensionVersion)
15919 {
15920 to->pStdExtensionVersion = (VkExtensionProperties*)alloc->alloc(sizeof(const VkExtensionProperties));
15921 deepcopy_VkExtensionProperties(alloc, rootType, from->pStdExtensionVersion, (VkExtensionProperties*)(to->pStdExtensionVersion));
15922 }
15923}
15924
15925void deepcopy_VkVideoDecodeH265SessionParametersAddInfoEXT(
15926 Allocator* alloc,
15927 VkStructureType rootType,
15928 const VkVideoDecodeH265SessionParametersAddInfoEXT* from,
15929 VkVideoDecodeH265SessionParametersAddInfoEXT* to)
15930{
15931 (void)alloc;
15932 (void)rootType;
15933 *to = *from;
15934 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15935 {
15936 rootType = from->sType;
15937 }
15938 const void* from_pNext = from;
15939 size_t pNext_size = 0u;
15940 while (!pNext_size && from_pNext)
15941 {
15942 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
15943 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
15944 }
15945 to->pNext = nullptr;
15946 if (pNext_size)
15947 {
15948 to->pNext = (void*)alloc->alloc(pNext_size);
15949 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
15950 }
15951 to->pSpsStd = nullptr;
15952 if (from->pSpsStd)
15953 {
15954 to->pSpsStd = (StdVideoH265SequenceParameterSet*)alloc->dupArray(from->pSpsStd, from->spsStdCount * sizeof(const StdVideoH265SequenceParameterSet));
15955 }
15956 to->pPpsStd = nullptr;
15957 if (from->pPpsStd)
15958 {
15959 to->pPpsStd = (StdVideoH265PictureParameterSet*)alloc->dupArray(from->pPpsStd, from->ppsStdCount * sizeof(const StdVideoH265PictureParameterSet));
15960 }
15961}
15962
15963void deepcopy_VkVideoDecodeH265SessionParametersCreateInfoEXT(
15964 Allocator* alloc,
15965 VkStructureType rootType,
15966 const VkVideoDecodeH265SessionParametersCreateInfoEXT* from,
15967 VkVideoDecodeH265SessionParametersCreateInfoEXT* to)
15968{
15969 (void)alloc;
15970 (void)rootType;
15971 *to = *from;
15972 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
15973 {
15974 rootType = from->sType;
15975 }
15976 const void* from_pNext = from;
15977 size_t pNext_size = 0u;
15978 while (!pNext_size && from_pNext)
15979 {
15980 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
15981 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
15982 }
15983 to->pNext = nullptr;
15984 if (pNext_size)
15985 {
15986 to->pNext = (void*)alloc->alloc(pNext_size);
15987 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
15988 }
15989 to->pParametersAddInfo = nullptr;
15990 if (from->pParametersAddInfo)
15991 {
15992 to->pParametersAddInfo = (VkVideoDecodeH265SessionParametersAddInfoEXT*)alloc->alloc(sizeof(const VkVideoDecodeH265SessionParametersAddInfoEXT));
15993 deepcopy_VkVideoDecodeH265SessionParametersAddInfoEXT(alloc, rootType, from->pParametersAddInfo, (VkVideoDecodeH265SessionParametersAddInfoEXT*)(to->pParametersAddInfo));
15994 }
15995}
15996
15997void deepcopy_VkVideoDecodeH265PictureInfoEXT(
15998 Allocator* alloc,
15999 VkStructureType rootType,
16000 const VkVideoDecodeH265PictureInfoEXT* from,
16001 VkVideoDecodeH265PictureInfoEXT* to)
16002{
16003 (void)alloc;
16004 (void)rootType;
16005 *to = *from;
16006 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16007 {
16008 rootType = from->sType;
16009 }
16010 const void* from_pNext = from;
16011 size_t pNext_size = 0u;
16012 while (!pNext_size && from_pNext)
16013 {
16014 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
16015 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
16016 }
16017 to->pNext = nullptr;
16018 if (pNext_size)
16019 {
16020 to->pNext = (void*)alloc->alloc(pNext_size);
16021 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
16022 }
16023 to->pStdPictureInfo = nullptr;
16024 if (from->pStdPictureInfo)
16025 {
16026 to->pStdPictureInfo = (StdVideoDecodeH265PictureInfo*)alloc->dupArray(from->pStdPictureInfo, sizeof(StdVideoDecodeH265PictureInfo));
16027 }
16028 to->pSlicesDataOffsets = nullptr;
16029 if (from->pSlicesDataOffsets)
16030 {
16031 to->pSlicesDataOffsets = (uint32_t*)alloc->dupArray(from->pSlicesDataOffsets, from->slicesCount * sizeof(const uint32_t));
16032 }
16033}
16034
16035void deepcopy_VkVideoDecodeH265DpbSlotInfoEXT(
16036 Allocator* alloc,
16037 VkStructureType rootType,
16038 const VkVideoDecodeH265DpbSlotInfoEXT* from,
16039 VkVideoDecodeH265DpbSlotInfoEXT* to)
16040{
16041 (void)alloc;
16042 (void)rootType;
16043 *to = *from;
16044 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16045 {
16046 rootType = from->sType;
16047 }
16048 const void* from_pNext = from;
16049 size_t pNext_size = 0u;
16050 while (!pNext_size && from_pNext)
16051 {
16052 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
16053 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
16054 }
16055 to->pNext = nullptr;
16056 if (pNext_size)
16057 {
16058 to->pNext = (void*)alloc->alloc(pNext_size);
16059 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
16060 }
16061 to->pStdReferenceInfo = nullptr;
16062 if (from->pStdReferenceInfo)
16063 {
16064 to->pStdReferenceInfo = (StdVideoDecodeH265ReferenceInfo*)alloc->dupArray(from->pStdReferenceInfo, sizeof(const StdVideoDecodeH265ReferenceInfo));
16065 }
16066}
16067
16068#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016069#ifdef VK_AMD_memory_overallocation_behavior
16070void deepcopy_VkDeviceMemoryOverallocationCreateInfoAMD(
Yilong Li422b0582021-04-30 13:09:43 -070016071 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016072 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016073 const VkDeviceMemoryOverallocationCreateInfoAMD* from,
16074 VkDeviceMemoryOverallocationCreateInfoAMD* to)
16075{
Yilong Li422b0582021-04-30 13:09:43 -070016076 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016077 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016078 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016079 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16080 {
16081 rootType = from->sType;
16082 }
Yilong Li04218f72021-02-19 01:31:17 -080016083 const void* from_pNext = from;
16084 size_t pNext_size = 0u;
16085 while (!pNext_size && from_pNext)
16086 {
16087 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016088 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016089 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016090 to->pNext = nullptr;
16091 if (pNext_size)
16092 {
Yilong Li324fa652021-12-29 17:00:42 -080016093 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016094 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016095 }
16096}
16097
16098#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016099#ifdef VK_EXT_vertex_attribute_divisor
16100void deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016101 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016102 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016103 const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* from,
16104 VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* to)
16105{
Yilong Li422b0582021-04-30 13:09:43 -070016106 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016107 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080016108 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016109 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16110 {
16111 rootType = from->sType;
16112 }
Yilong Li04218f72021-02-19 01:31:17 -080016113 const void* from_pNext = from;
16114 size_t pNext_size = 0u;
16115 while (!pNext_size && from_pNext)
16116 {
16117 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016118 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016119 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016120 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080016121 if (pNext_size)
16122 {
Yilong Li422b0582021-04-30 13:09:43 -070016123 to->pNext = (void*)alloc->alloc(pNext_size);
16124 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080016125 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016126}
16127
16128void deepcopy_VkVertexInputBindingDivisorDescriptionEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016129 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016130 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016131 const VkVertexInputBindingDivisorDescriptionEXT* from,
16132 VkVertexInputBindingDivisorDescriptionEXT* to)
16133{
Yilong Li422b0582021-04-30 13:09:43 -070016134 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016135 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080016136 *to = *from;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016137}
16138
16139void deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016140 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016141 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016142 const VkPipelineVertexInputDivisorStateCreateInfoEXT* from,
16143 VkPipelineVertexInputDivisorStateCreateInfoEXT* to)
16144{
Yilong Li422b0582021-04-30 13:09:43 -070016145 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016146 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080016147 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016148 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16149 {
16150 rootType = from->sType;
16151 }
Yilong Li04218f72021-02-19 01:31:17 -080016152 const void* from_pNext = from;
16153 size_t pNext_size = 0u;
16154 while (!pNext_size && from_pNext)
16155 {
16156 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016157 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016158 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016159 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080016160 if (pNext_size)
16161 {
Yilong Li324fa652021-12-29 17:00:42 -080016162 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016163 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080016164 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080016165 if (from)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016166 {
Yilong Libd10ec92021-02-10 13:24:27 -080016167 to->pVertexBindingDivisors = nullptr;
16168 if (from->pVertexBindingDivisors)
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016169 {
Yilong Li422b0582021-04-30 13:09:43 -070016170 to->pVertexBindingDivisors = (VkVertexInputBindingDivisorDescriptionEXT*)alloc->alloc(from->vertexBindingDivisorCount * sizeof(const VkVertexInputBindingDivisorDescriptionEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080016171 to->vertexBindingDivisorCount = from->vertexBindingDivisorCount;
16172 for (uint32_t i = 0; i < (uint32_t)from->vertexBindingDivisorCount; ++i)
16173 {
Yilong Li422b0582021-04-30 13:09:43 -070016174 deepcopy_VkVertexInputBindingDivisorDescriptionEXT(alloc, rootType, from->pVertexBindingDivisors + i, (VkVertexInputBindingDivisorDescriptionEXT*)(to->pVertexBindingDivisors + i));
Yilong Libd10ec92021-02-10 13:24:27 -080016175 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016176 }
16177 }
16178}
16179
Yilong Lia8d45f12021-02-07 02:30:21 -080016180void deepcopy_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016181 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016182 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016183 const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* from,
16184 VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* to)
16185{
Yilong Li422b0582021-04-30 13:09:43 -070016186 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016187 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016188 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016189 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16190 {
16191 rootType = from->sType;
16192 }
Yilong Li04218f72021-02-19 01:31:17 -080016193 const void* from_pNext = from;
16194 size_t pNext_size = 0u;
16195 while (!pNext_size && from_pNext)
16196 {
16197 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016198 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016199 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016200 to->pNext = nullptr;
16201 if (pNext_size)
16202 {
Yilong Li422b0582021-04-30 13:09:43 -070016203 to->pNext = (void*)alloc->alloc(pNext_size);
16204 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016205 }
16206}
16207
16208#endif
16209#ifdef VK_GGP_frame_token
16210void deepcopy_VkPresentFrameTokenGGP(
Yilong Li422b0582021-04-30 13:09:43 -070016211 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016212 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016213 const VkPresentFrameTokenGGP* from,
16214 VkPresentFrameTokenGGP* to)
16215{
Yilong Li422b0582021-04-30 13:09:43 -070016216 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016217 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016218 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016219 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16220 {
16221 rootType = from->sType;
16222 }
Yilong Li04218f72021-02-19 01:31:17 -080016223 const void* from_pNext = from;
16224 size_t pNext_size = 0u;
16225 while (!pNext_size && from_pNext)
16226 {
16227 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016228 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016229 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016230 to->pNext = nullptr;
16231 if (pNext_size)
16232 {
Yilong Li324fa652021-12-29 17:00:42 -080016233 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016234 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016235 }
16236}
16237
16238#endif
16239#ifdef VK_EXT_pipeline_creation_feedback
16240void deepcopy_VkPipelineCreationFeedbackEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016241 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016242 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016243 const VkPipelineCreationFeedbackEXT* from,
16244 VkPipelineCreationFeedbackEXT* to)
16245{
Yilong Li422b0582021-04-30 13:09:43 -070016246 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016247 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016248 *to = *from;
16249}
16250
16251void deepcopy_VkPipelineCreationFeedbackCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016252 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016253 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016254 const VkPipelineCreationFeedbackCreateInfoEXT* from,
16255 VkPipelineCreationFeedbackCreateInfoEXT* to)
16256{
Yilong Li422b0582021-04-30 13:09:43 -070016257 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016258 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016259 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016260 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16261 {
16262 rootType = from->sType;
16263 }
Yilong Li04218f72021-02-19 01:31:17 -080016264 const void* from_pNext = from;
16265 size_t pNext_size = 0u;
16266 while (!pNext_size && from_pNext)
16267 {
16268 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016269 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016270 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016271 to->pNext = nullptr;
16272 if (pNext_size)
16273 {
Yilong Li324fa652021-12-29 17:00:42 -080016274 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016275 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016276 }
16277 to->pPipelineCreationFeedback = nullptr;
16278 if (from->pPipelineCreationFeedback)
16279 {
Yilong Li422b0582021-04-30 13:09:43 -070016280 to->pPipelineCreationFeedback = (VkPipelineCreationFeedbackEXT*)alloc->alloc(sizeof(VkPipelineCreationFeedbackEXT));
16281 deepcopy_VkPipelineCreationFeedbackEXT(alloc, rootType, from->pPipelineCreationFeedback, (VkPipelineCreationFeedbackEXT*)(to->pPipelineCreationFeedback));
Yilong Lia8d45f12021-02-07 02:30:21 -080016282 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080016283 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080016284 {
Yilong Libd10ec92021-02-10 13:24:27 -080016285 to->pPipelineStageCreationFeedbacks = nullptr;
16286 if (from->pPipelineStageCreationFeedbacks)
Yilong Lia8d45f12021-02-07 02:30:21 -080016287 {
Yilong Li422b0582021-04-30 13:09:43 -070016288 to->pPipelineStageCreationFeedbacks = (VkPipelineCreationFeedbackEXT*)alloc->alloc(from->pipelineStageCreationFeedbackCount * sizeof(VkPipelineCreationFeedbackEXT));
Yilong Libd10ec92021-02-10 13:24:27 -080016289 to->pipelineStageCreationFeedbackCount = from->pipelineStageCreationFeedbackCount;
16290 for (uint32_t i = 0; i < (uint32_t)from->pipelineStageCreationFeedbackCount; ++i)
16291 {
Yilong Li422b0582021-04-30 13:09:43 -070016292 deepcopy_VkPipelineCreationFeedbackEXT(alloc, rootType, from->pPipelineStageCreationFeedbacks + i, (VkPipelineCreationFeedbackEXT*)(to->pPipelineStageCreationFeedbacks + i));
Yilong Libd10ec92021-02-10 13:24:27 -080016293 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016294 }
16295 }
16296}
16297
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016298#endif
16299#ifdef VK_NV_shader_subgroup_partitioned
16300#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016301#ifdef VK_NV_compute_shader_derivatives
16302void deepcopy_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016303 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016304 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016305 const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* from,
16306 VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* to)
16307{
Yilong Li422b0582021-04-30 13:09:43 -070016308 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016309 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016310 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016311 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16312 {
16313 rootType = from->sType;
16314 }
Yilong Li04218f72021-02-19 01:31:17 -080016315 const void* from_pNext = from;
16316 size_t pNext_size = 0u;
16317 while (!pNext_size && from_pNext)
16318 {
16319 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016320 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016321 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016322 to->pNext = nullptr;
16323 if (pNext_size)
16324 {
Yilong Li422b0582021-04-30 13:09:43 -070016325 to->pNext = (void*)alloc->alloc(pNext_size);
16326 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016327 }
16328}
16329
16330#endif
16331#ifdef VK_NV_mesh_shader
16332void deepcopy_VkPhysicalDeviceMeshShaderFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016333 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016334 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016335 const VkPhysicalDeviceMeshShaderFeaturesNV* from,
16336 VkPhysicalDeviceMeshShaderFeaturesNV* to)
16337{
Yilong Li422b0582021-04-30 13:09:43 -070016338 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016339 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016340 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016341 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16342 {
16343 rootType = from->sType;
16344 }
Yilong Li04218f72021-02-19 01:31:17 -080016345 const void* from_pNext = from;
16346 size_t pNext_size = 0u;
16347 while (!pNext_size && from_pNext)
16348 {
16349 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016350 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016351 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016352 to->pNext = nullptr;
16353 if (pNext_size)
16354 {
Yilong Li422b0582021-04-30 13:09:43 -070016355 to->pNext = (void*)alloc->alloc(pNext_size);
16356 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016357 }
16358}
16359
16360void deepcopy_VkPhysicalDeviceMeshShaderPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016361 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016362 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016363 const VkPhysicalDeviceMeshShaderPropertiesNV* from,
16364 VkPhysicalDeviceMeshShaderPropertiesNV* to)
16365{
Yilong Li422b0582021-04-30 13:09:43 -070016366 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016367 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016368 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016369 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16370 {
16371 rootType = from->sType;
16372 }
Yilong Li04218f72021-02-19 01:31:17 -080016373 const void* from_pNext = from;
16374 size_t pNext_size = 0u;
16375 while (!pNext_size && from_pNext)
16376 {
16377 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016378 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016379 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016380 to->pNext = nullptr;
16381 if (pNext_size)
16382 {
Yilong Li422b0582021-04-30 13:09:43 -070016383 to->pNext = (void*)alloc->alloc(pNext_size);
16384 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016385 }
16386 memcpy(to->maxTaskWorkGroupSize, from->maxTaskWorkGroupSize, 3 * sizeof(uint32_t));
16387 memcpy(to->maxMeshWorkGroupSize, from->maxMeshWorkGroupSize, 3 * sizeof(uint32_t));
16388}
16389
16390void deepcopy_VkDrawMeshTasksIndirectCommandNV(
Yilong Li422b0582021-04-30 13:09:43 -070016391 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016392 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016393 const VkDrawMeshTasksIndirectCommandNV* from,
16394 VkDrawMeshTasksIndirectCommandNV* to)
16395{
Yilong Li422b0582021-04-30 13:09:43 -070016396 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016397 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016398 *to = *from;
16399}
16400
16401#endif
16402#ifdef VK_NV_fragment_shader_barycentric
16403void deepcopy_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016404 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016405 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016406 const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* from,
16407 VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* to)
16408{
Yilong Li422b0582021-04-30 13:09:43 -070016409 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016410 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016411 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016412 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16413 {
16414 rootType = from->sType;
16415 }
Yilong Li04218f72021-02-19 01:31:17 -080016416 const void* from_pNext = from;
16417 size_t pNext_size = 0u;
16418 while (!pNext_size && from_pNext)
16419 {
16420 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016421 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016422 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016423 to->pNext = nullptr;
16424 if (pNext_size)
16425 {
Yilong Li422b0582021-04-30 13:09:43 -070016426 to->pNext = (void*)alloc->alloc(pNext_size);
16427 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016428 }
16429}
16430
16431#endif
16432#ifdef VK_NV_shader_image_footprint
16433void deepcopy_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016434 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016435 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016436 const VkPhysicalDeviceShaderImageFootprintFeaturesNV* from,
16437 VkPhysicalDeviceShaderImageFootprintFeaturesNV* to)
16438{
Yilong Li422b0582021-04-30 13:09:43 -070016439 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016440 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016441 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016442 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16443 {
16444 rootType = from->sType;
16445 }
Yilong Li04218f72021-02-19 01:31:17 -080016446 const void* from_pNext = from;
16447 size_t pNext_size = 0u;
16448 while (!pNext_size && from_pNext)
16449 {
16450 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016451 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016452 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016453 to->pNext = nullptr;
16454 if (pNext_size)
16455 {
Yilong Li422b0582021-04-30 13:09:43 -070016456 to->pNext = (void*)alloc->alloc(pNext_size);
16457 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016458 }
16459}
16460
16461#endif
16462#ifdef VK_NV_scissor_exclusive
16463void deepcopy_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070016464 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016465 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016466 const VkPipelineViewportExclusiveScissorStateCreateInfoNV* from,
16467 VkPipelineViewportExclusiveScissorStateCreateInfoNV* to)
16468{
Yilong Li422b0582021-04-30 13:09:43 -070016469 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016470 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016471 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016472 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16473 {
16474 rootType = from->sType;
16475 }
Yilong Li04218f72021-02-19 01:31:17 -080016476 const void* from_pNext = from;
16477 size_t pNext_size = 0u;
16478 while (!pNext_size && from_pNext)
16479 {
16480 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016481 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016482 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016483 to->pNext = nullptr;
16484 if (pNext_size)
16485 {
Yilong Li324fa652021-12-29 17:00:42 -080016486 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016487 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016488 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080016489 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080016490 {
Yilong Libd10ec92021-02-10 13:24:27 -080016491 to->pExclusiveScissors = nullptr;
16492 if (from->pExclusiveScissors)
Yilong Lia8d45f12021-02-07 02:30:21 -080016493 {
Yilong Li422b0582021-04-30 13:09:43 -070016494 to->pExclusiveScissors = (VkRect2D*)alloc->alloc(from->exclusiveScissorCount * sizeof(const VkRect2D));
Yilong Libd10ec92021-02-10 13:24:27 -080016495 to->exclusiveScissorCount = from->exclusiveScissorCount;
16496 for (uint32_t i = 0; i < (uint32_t)from->exclusiveScissorCount; ++i)
16497 {
Yilong Li422b0582021-04-30 13:09:43 -070016498 deepcopy_VkRect2D(alloc, rootType, from->pExclusiveScissors + i, (VkRect2D*)(to->pExclusiveScissors + i));
Yilong Libd10ec92021-02-10 13:24:27 -080016499 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016500 }
16501 }
16502}
16503
16504void deepcopy_VkPhysicalDeviceExclusiveScissorFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016505 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016506 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016507 const VkPhysicalDeviceExclusiveScissorFeaturesNV* from,
16508 VkPhysicalDeviceExclusiveScissorFeaturesNV* to)
16509{
Yilong Li422b0582021-04-30 13:09:43 -070016510 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016511 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016512 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016513 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16514 {
16515 rootType = from->sType;
16516 }
Yilong Li04218f72021-02-19 01:31:17 -080016517 const void* from_pNext = from;
16518 size_t pNext_size = 0u;
16519 while (!pNext_size && from_pNext)
16520 {
16521 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016522 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016523 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016524 to->pNext = nullptr;
16525 if (pNext_size)
16526 {
Yilong Li422b0582021-04-30 13:09:43 -070016527 to->pNext = (void*)alloc->alloc(pNext_size);
16528 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016529 }
16530}
16531
16532#endif
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016533#ifdef VK_NV_device_diagnostic_checkpoints
16534void deepcopy_VkQueueFamilyCheckpointPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070016535 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016536 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016537 const VkQueueFamilyCheckpointPropertiesNV* from,
16538 VkQueueFamilyCheckpointPropertiesNV* to)
16539{
Yilong Li422b0582021-04-30 13:09:43 -070016540 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016541 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080016542 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016543 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16544 {
16545 rootType = from->sType;
16546 }
Yilong Li04218f72021-02-19 01:31:17 -080016547 const void* from_pNext = from;
16548 size_t pNext_size = 0u;
16549 while (!pNext_size && from_pNext)
16550 {
16551 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016552 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016553 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016554 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080016555 if (pNext_size)
16556 {
Yilong Li422b0582021-04-30 13:09:43 -070016557 to->pNext = (void*)alloc->alloc(pNext_size);
16558 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080016559 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016560}
16561
16562void deepcopy_VkCheckpointDataNV(
Yilong Li422b0582021-04-30 13:09:43 -070016563 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016564 VkStructureType rootType,
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016565 const VkCheckpointDataNV* from,
16566 VkCheckpointDataNV* to)
16567{
Yilong Li422b0582021-04-30 13:09:43 -070016568 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016569 (void)rootType;
Lingfeng Yang25baf112018-11-08 17:19:52 -080016570 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016571 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16572 {
16573 rootType = from->sType;
16574 }
Yilong Li04218f72021-02-19 01:31:17 -080016575 const void* from_pNext = from;
16576 size_t pNext_size = 0u;
16577 while (!pNext_size && from_pNext)
16578 {
16579 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016580 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016581 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016582 to->pNext = nullptr;
Lingfeng Yang750c5642018-11-13 17:03:11 -080016583 if (pNext_size)
16584 {
Yilong Li422b0582021-04-30 13:09:43 -070016585 to->pNext = (void*)alloc->alloc(pNext_size);
16586 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang750c5642018-11-13 17:03:11 -080016587 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016588 to->pCheckpointMarker = nullptr;
16589 if (from->pCheckpointMarker)
16590 {
Yilong Li422b0582021-04-30 13:09:43 -070016591 to->pCheckpointMarker = (void*)alloc->dupArray(from->pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016592 }
16593}
16594
16595#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016596#ifdef VK_INTEL_shader_integer_functions2
16597void deepcopy_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016598 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016599 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016600 const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* from,
16601 VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* to)
16602{
Yilong Li422b0582021-04-30 13:09:43 -070016603 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016604 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016605 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016606 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16607 {
16608 rootType = from->sType;
16609 }
Yilong Li04218f72021-02-19 01:31:17 -080016610 const void* from_pNext = from;
16611 size_t pNext_size = 0u;
16612 while (!pNext_size && from_pNext)
16613 {
16614 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016615 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016616 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016617 to->pNext = nullptr;
16618 if (pNext_size)
16619 {
Yilong Li422b0582021-04-30 13:09:43 -070016620 to->pNext = (void*)alloc->alloc(pNext_size);
16621 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016622 }
16623}
16624
16625#endif
16626#ifdef VK_INTEL_performance_query
16627void deepcopy_VkPerformanceValueDataINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016628 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016629 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016630 const VkPerformanceValueDataINTEL* from,
16631 VkPerformanceValueDataINTEL* to)
16632{
Yilong Li422b0582021-04-30 13:09:43 -070016633 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016634 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016635 *to = *from;
16636 to->valueString = nullptr;
16637 if (from->valueString)
16638 {
Yilong Li422b0582021-04-30 13:09:43 -070016639 to->valueString = alloc->strDup(from->valueString);
Yilong Lia8d45f12021-02-07 02:30:21 -080016640 }
16641}
16642
16643void deepcopy_VkPerformanceValueINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016644 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016645 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016646 const VkPerformanceValueINTEL* from,
16647 VkPerformanceValueINTEL* to)
16648{
Yilong Li422b0582021-04-30 13:09:43 -070016649 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016650 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016651 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070016652 deepcopy_VkPerformanceValueDataINTEL(alloc, rootType, &from->data, (VkPerformanceValueDataINTEL*)(&to->data));
Yilong Lia8d45f12021-02-07 02:30:21 -080016653}
16654
16655void deepcopy_VkInitializePerformanceApiInfoINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016656 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016657 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016658 const VkInitializePerformanceApiInfoINTEL* from,
16659 VkInitializePerformanceApiInfoINTEL* to)
16660{
Yilong Li422b0582021-04-30 13:09:43 -070016661 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016662 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016663 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016664 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16665 {
16666 rootType = from->sType;
16667 }
Yilong Li04218f72021-02-19 01:31:17 -080016668 const void* from_pNext = from;
16669 size_t pNext_size = 0u;
16670 while (!pNext_size && from_pNext)
16671 {
16672 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016673 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016674 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016675 to->pNext = nullptr;
16676 if (pNext_size)
16677 {
Yilong Li324fa652021-12-29 17:00:42 -080016678 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016679 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016680 }
16681 to->pUserData = nullptr;
16682 if (from->pUserData)
16683 {
Yilong Li422b0582021-04-30 13:09:43 -070016684 to->pUserData = (void*)alloc->dupArray(from->pUserData, sizeof(uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080016685 }
16686}
16687
16688void deepcopy_VkQueryPoolPerformanceQueryCreateInfoINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016689 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016690 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016691 const VkQueryPoolPerformanceQueryCreateInfoINTEL* from,
16692 VkQueryPoolPerformanceQueryCreateInfoINTEL* to)
16693{
Yilong Li422b0582021-04-30 13:09:43 -070016694 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016695 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016696 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016697 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16698 {
16699 rootType = from->sType;
16700 }
Yilong Li04218f72021-02-19 01:31:17 -080016701 const void* from_pNext = from;
16702 size_t pNext_size = 0u;
16703 while (!pNext_size && from_pNext)
16704 {
16705 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016706 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016707 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016708 to->pNext = nullptr;
16709 if (pNext_size)
16710 {
Yilong Li324fa652021-12-29 17:00:42 -080016711 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016712 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016713 }
16714}
16715
16716void deepcopy_VkPerformanceMarkerInfoINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016717 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016718 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016719 const VkPerformanceMarkerInfoINTEL* from,
16720 VkPerformanceMarkerInfoINTEL* to)
16721{
Yilong Li422b0582021-04-30 13:09:43 -070016722 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016723 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016724 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016725 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16726 {
16727 rootType = from->sType;
16728 }
Yilong Li04218f72021-02-19 01:31:17 -080016729 const void* from_pNext = from;
16730 size_t pNext_size = 0u;
16731 while (!pNext_size && from_pNext)
16732 {
16733 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016734 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016735 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016736 to->pNext = nullptr;
16737 if (pNext_size)
16738 {
Yilong Li324fa652021-12-29 17:00:42 -080016739 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016740 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016741 }
16742}
16743
16744void deepcopy_VkPerformanceStreamMarkerInfoINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016745 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016746 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016747 const VkPerformanceStreamMarkerInfoINTEL* from,
16748 VkPerformanceStreamMarkerInfoINTEL* to)
16749{
Yilong Li422b0582021-04-30 13:09:43 -070016750 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016751 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016752 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016753 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16754 {
16755 rootType = from->sType;
16756 }
Yilong Li04218f72021-02-19 01:31:17 -080016757 const void* from_pNext = from;
16758 size_t pNext_size = 0u;
16759 while (!pNext_size && from_pNext)
16760 {
16761 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016762 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016763 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016764 to->pNext = nullptr;
16765 if (pNext_size)
16766 {
Yilong Li324fa652021-12-29 17:00:42 -080016767 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016768 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016769 }
16770}
16771
16772void deepcopy_VkPerformanceOverrideInfoINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016773 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016774 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016775 const VkPerformanceOverrideInfoINTEL* from,
16776 VkPerformanceOverrideInfoINTEL* to)
16777{
Yilong Li422b0582021-04-30 13:09:43 -070016778 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016779 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016780 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016781 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16782 {
16783 rootType = from->sType;
16784 }
Yilong Li04218f72021-02-19 01:31:17 -080016785 const void* from_pNext = from;
16786 size_t pNext_size = 0u;
16787 while (!pNext_size && from_pNext)
16788 {
16789 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016790 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016791 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016792 to->pNext = nullptr;
16793 if (pNext_size)
16794 {
Yilong Li324fa652021-12-29 17:00:42 -080016795 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016796 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016797 }
16798}
16799
16800void deepcopy_VkPerformanceConfigurationAcquireInfoINTEL(
Yilong Li422b0582021-04-30 13:09:43 -070016801 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016802 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016803 const VkPerformanceConfigurationAcquireInfoINTEL* from,
16804 VkPerformanceConfigurationAcquireInfoINTEL* to)
16805{
Yilong Li422b0582021-04-30 13:09:43 -070016806 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016807 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016808 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016809 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16810 {
16811 rootType = from->sType;
16812 }
Yilong Li04218f72021-02-19 01:31:17 -080016813 const void* from_pNext = from;
16814 size_t pNext_size = 0u;
16815 while (!pNext_size && from_pNext)
16816 {
16817 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016818 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016819 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016820 to->pNext = nullptr;
16821 if (pNext_size)
16822 {
Yilong Li324fa652021-12-29 17:00:42 -080016823 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016824 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016825 }
16826}
16827
16828#endif
16829#ifdef VK_EXT_pci_bus_info
16830void deepcopy_VkPhysicalDevicePCIBusInfoPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016831 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016832 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016833 const VkPhysicalDevicePCIBusInfoPropertiesEXT* from,
16834 VkPhysicalDevicePCIBusInfoPropertiesEXT* to)
16835{
Yilong Li422b0582021-04-30 13:09:43 -070016836 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016837 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016838 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016839 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16840 {
16841 rootType = from->sType;
16842 }
Yilong Li04218f72021-02-19 01:31:17 -080016843 const void* from_pNext = from;
16844 size_t pNext_size = 0u;
16845 while (!pNext_size && from_pNext)
16846 {
16847 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016848 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016849 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016850 to->pNext = nullptr;
16851 if (pNext_size)
16852 {
Yilong Li422b0582021-04-30 13:09:43 -070016853 to->pNext = (void*)alloc->alloc(pNext_size);
16854 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016855 }
16856}
16857
16858#endif
16859#ifdef VK_AMD_display_native_hdr
16860void deepcopy_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
Yilong Li422b0582021-04-30 13:09:43 -070016861 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016862 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016863 const VkDisplayNativeHdrSurfaceCapabilitiesAMD* from,
16864 VkDisplayNativeHdrSurfaceCapabilitiesAMD* to)
16865{
Yilong Li422b0582021-04-30 13:09:43 -070016866 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016867 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016868 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016869 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16870 {
16871 rootType = from->sType;
16872 }
Yilong Li04218f72021-02-19 01:31:17 -080016873 const void* from_pNext = from;
16874 size_t pNext_size = 0u;
16875 while (!pNext_size && from_pNext)
16876 {
16877 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016878 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016879 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016880 to->pNext = nullptr;
16881 if (pNext_size)
16882 {
Yilong Li422b0582021-04-30 13:09:43 -070016883 to->pNext = (void*)alloc->alloc(pNext_size);
16884 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016885 }
16886}
16887
16888void deepcopy_VkSwapchainDisplayNativeHdrCreateInfoAMD(
Yilong Li422b0582021-04-30 13:09:43 -070016889 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016890 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016891 const VkSwapchainDisplayNativeHdrCreateInfoAMD* from,
16892 VkSwapchainDisplayNativeHdrCreateInfoAMD* to)
16893{
Yilong Li422b0582021-04-30 13:09:43 -070016894 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016895 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016896 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016897 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16898 {
16899 rootType = from->sType;
16900 }
Yilong Li04218f72021-02-19 01:31:17 -080016901 const void* from_pNext = from;
16902 size_t pNext_size = 0u;
16903 while (!pNext_size && from_pNext)
16904 {
16905 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016906 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016907 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016908 to->pNext = nullptr;
16909 if (pNext_size)
16910 {
Yilong Li324fa652021-12-29 17:00:42 -080016911 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016912 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016913 }
16914}
16915
16916#endif
16917#ifdef VK_FUCHSIA_imagepipe_surface
16918void deepcopy_VkImagePipeSurfaceCreateInfoFUCHSIA(
Yilong Li422b0582021-04-30 13:09:43 -070016919 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016920 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016921 const VkImagePipeSurfaceCreateInfoFUCHSIA* from,
16922 VkImagePipeSurfaceCreateInfoFUCHSIA* to)
16923{
Yilong Li422b0582021-04-30 13:09:43 -070016924 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016925 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016926 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016927 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16928 {
16929 rootType = from->sType;
16930 }
Yilong Li04218f72021-02-19 01:31:17 -080016931 const void* from_pNext = from;
16932 size_t pNext_size = 0u;
16933 while (!pNext_size && from_pNext)
16934 {
16935 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016936 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016937 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016938 to->pNext = nullptr;
16939 if (pNext_size)
16940 {
Yilong Li324fa652021-12-29 17:00:42 -080016941 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016942 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016943 }
16944}
16945
16946#endif
16947#ifdef VK_EXT_metal_surface
16948void deepcopy_VkMetalSurfaceCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016949 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016950 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080016951 const VkMetalSurfaceCreateInfoEXT* from,
16952 VkMetalSurfaceCreateInfoEXT* to)
16953{
Yilong Li422b0582021-04-30 13:09:43 -070016954 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016955 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080016956 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016957 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16958 {
16959 rootType = from->sType;
16960 }
Yilong Li04218f72021-02-19 01:31:17 -080016961 const void* from_pNext = from;
16962 size_t pNext_size = 0u;
16963 while (!pNext_size && from_pNext)
16964 {
16965 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070016966 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080016967 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016968 to->pNext = nullptr;
16969 if (pNext_size)
16970 {
Yilong Li324fa652021-12-29 17:00:42 -080016971 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070016972 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080016973 }
16974 to->pLayer = nullptr;
16975 if (from->pLayer)
16976 {
Yilong Li422b0582021-04-30 13:09:43 -070016977 to->pLayer = (CAMetalLayer*)alloc->dupArray(from->pLayer, sizeof(const CAMetalLayer));
Yilong Lia8d45f12021-02-07 02:30:21 -080016978 }
16979}
16980
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080016981#endif
Yilong Li48081632021-04-13 22:38:10 -070016982#ifdef VK_EXT_fragment_density_map
16983void deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070016984 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070016985 VkStructureType rootType,
16986 const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* from,
16987 VkPhysicalDeviceFragmentDensityMapFeaturesEXT* to)
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080016988{
Yilong Li422b0582021-04-30 13:09:43 -070016989 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070016990 (void)rootType;
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080016991 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070016992 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
16993 {
16994 rootType = from->sType;
16995 }
Yilong Li04218f72021-02-19 01:31:17 -080016996 const void* from_pNext = from;
16997 size_t pNext_size = 0u;
16998 while (!pNext_size && from_pNext)
16999 {
17000 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017001 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017002 }
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017003 to->pNext = nullptr;
17004 if (pNext_size)
17005 {
Yilong Li422b0582021-04-30 13:09:43 -070017006 to->pNext = (void*)alloc->alloc(pNext_size);
17007 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017008 }
17009}
17010
Yilong Li48081632021-04-13 22:38:10 -070017011void deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017012 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017013 VkStructureType rootType,
17014 const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* from,
17015 VkPhysicalDeviceFragmentDensityMapPropertiesEXT* to)
Yilong Lif21226b2020-07-01 14:47:57 -070017016{
Yilong Li422b0582021-04-30 13:09:43 -070017017 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017018 (void)rootType;
Yilong Lif21226b2020-07-01 14:47:57 -070017019 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017020 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17021 {
17022 rootType = from->sType;
17023 }
Yilong Li04218f72021-02-19 01:31:17 -080017024 const void* from_pNext = from;
17025 size_t pNext_size = 0u;
17026 while (!pNext_size && from_pNext)
17027 {
17028 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017029 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017030 }
Yilong Lif21226b2020-07-01 14:47:57 -070017031 to->pNext = nullptr;
17032 if (pNext_size)
17033 {
Yilong Li422b0582021-04-30 13:09:43 -070017034 to->pNext = (void*)alloc->alloc(pNext_size);
17035 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lif21226b2020-07-01 14:47:57 -070017036 }
Yilong Li422b0582021-04-30 13:09:43 -070017037 deepcopy_VkExtent2D(alloc, rootType, &from->minFragmentDensityTexelSize, (VkExtent2D*)(&to->minFragmentDensityTexelSize));
17038 deepcopy_VkExtent2D(alloc, rootType, &from->maxFragmentDensityTexelSize, (VkExtent2D*)(&to->maxFragmentDensityTexelSize));
Yilong Lif21226b2020-07-01 14:47:57 -070017039}
17040
Yilong Li48081632021-04-13 22:38:10 -070017041void deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017042 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017043 VkStructureType rootType,
17044 const VkRenderPassFragmentDensityMapCreateInfoEXT* from,
17045 VkRenderPassFragmentDensityMapCreateInfoEXT* to)
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017046{
Yilong Li422b0582021-04-30 13:09:43 -070017047 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017048 (void)rootType;
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017049 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017050 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17051 {
17052 rootType = from->sType;
17053 }
Yilong Li04218f72021-02-19 01:31:17 -080017054 const void* from_pNext = from;
17055 size_t pNext_size = 0u;
17056 while (!pNext_size && from_pNext)
17057 {
17058 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017059 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017060 }
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017061 to->pNext = nullptr;
17062 if (pNext_size)
17063 {
Yilong Li324fa652021-12-29 17:00:42 -080017064 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017065 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017066 }
Yilong Li422b0582021-04-30 13:09:43 -070017067 deepcopy_VkAttachmentReference(alloc, rootType, &from->fragmentDensityMapAttachment, (VkAttachmentReference*)(&to->fragmentDensityMapAttachment));
Lingfeng Yang7be62ce2019-02-20 09:05:28 -080017068}
17069
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080017070#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017071#ifdef VK_EXT_scalar_block_layout
17072#endif
17073#ifdef VK_GOOGLE_hlsl_functionality1
17074#endif
17075#ifdef VK_GOOGLE_decorate_string
17076#endif
17077#ifdef VK_EXT_subgroup_size_control
17078void deepcopy_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017079 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017080 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017081 const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* from,
17082 VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* to)
17083{
Yilong Li422b0582021-04-30 13:09:43 -070017084 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017085 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017086 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017087 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17088 {
17089 rootType = from->sType;
17090 }
Yilong Li04218f72021-02-19 01:31:17 -080017091 const void* from_pNext = from;
17092 size_t pNext_size = 0u;
17093 while (!pNext_size && from_pNext)
17094 {
17095 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017096 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017097 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017098 to->pNext = nullptr;
17099 if (pNext_size)
17100 {
Yilong Li422b0582021-04-30 13:09:43 -070017101 to->pNext = (void*)alloc->alloc(pNext_size);
17102 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017103 }
17104}
17105
17106void deepcopy_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017107 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017108 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017109 const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* from,
17110 VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* to)
17111{
Yilong Li422b0582021-04-30 13:09:43 -070017112 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017113 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017114 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017115 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17116 {
17117 rootType = from->sType;
17118 }
Yilong Li04218f72021-02-19 01:31:17 -080017119 const void* from_pNext = from;
17120 size_t pNext_size = 0u;
17121 while (!pNext_size && from_pNext)
17122 {
17123 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017124 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017125 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017126 to->pNext = nullptr;
17127 if (pNext_size)
17128 {
Yilong Li422b0582021-04-30 13:09:43 -070017129 to->pNext = (void*)alloc->alloc(pNext_size);
17130 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017131 }
17132}
17133
17134void deepcopy_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017135 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017136 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017137 const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* from,
17138 VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* to)
17139{
Yilong Li422b0582021-04-30 13:09:43 -070017140 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017141 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017142 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017143 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17144 {
17145 rootType = from->sType;
17146 }
Yilong Li04218f72021-02-19 01:31:17 -080017147 const void* from_pNext = from;
17148 size_t pNext_size = 0u;
17149 while (!pNext_size && from_pNext)
17150 {
17151 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017152 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017153 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017154 to->pNext = nullptr;
17155 if (pNext_size)
17156 {
Yilong Li422b0582021-04-30 13:09:43 -070017157 to->pNext = (void*)alloc->alloc(pNext_size);
17158 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017159 }
17160}
17161
17162#endif
17163#ifdef VK_AMD_shader_core_properties2
17164void deepcopy_VkPhysicalDeviceShaderCoreProperties2AMD(
Yilong Li422b0582021-04-30 13:09:43 -070017165 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017166 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017167 const VkPhysicalDeviceShaderCoreProperties2AMD* from,
17168 VkPhysicalDeviceShaderCoreProperties2AMD* to)
17169{
Yilong Li422b0582021-04-30 13:09:43 -070017170 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017171 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017172 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017173 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17174 {
17175 rootType = from->sType;
17176 }
Yilong Li04218f72021-02-19 01:31:17 -080017177 const void* from_pNext = from;
17178 size_t pNext_size = 0u;
17179 while (!pNext_size && from_pNext)
17180 {
17181 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017182 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017183 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017184 to->pNext = nullptr;
17185 if (pNext_size)
17186 {
Yilong Li422b0582021-04-30 13:09:43 -070017187 to->pNext = (void*)alloc->alloc(pNext_size);
17188 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017189 }
17190}
17191
17192#endif
17193#ifdef VK_AMD_device_coherent_memory
17194void deepcopy_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
Yilong Li422b0582021-04-30 13:09:43 -070017195 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017196 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017197 const VkPhysicalDeviceCoherentMemoryFeaturesAMD* from,
17198 VkPhysicalDeviceCoherentMemoryFeaturesAMD* to)
17199{
Yilong Li422b0582021-04-30 13:09:43 -070017200 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017201 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017202 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017203 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17204 {
17205 rootType = from->sType;
17206 }
Yilong Li04218f72021-02-19 01:31:17 -080017207 const void* from_pNext = from;
17208 size_t pNext_size = 0u;
17209 while (!pNext_size && from_pNext)
17210 {
17211 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017212 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017213 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017214 to->pNext = nullptr;
17215 if (pNext_size)
17216 {
Yilong Li422b0582021-04-30 13:09:43 -070017217 to->pNext = (void*)alloc->alloc(pNext_size);
17218 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017219 }
17220}
17221
17222#endif
17223#ifdef VK_EXT_shader_image_atomic_int64
17224void deepcopy_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017225 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017226 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017227 const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* from,
17228 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* to)
17229{
Yilong Li422b0582021-04-30 13:09:43 -070017230 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017231 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017232 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017233 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17234 {
17235 rootType = from->sType;
17236 }
Yilong Li04218f72021-02-19 01:31:17 -080017237 const void* from_pNext = from;
17238 size_t pNext_size = 0u;
17239 while (!pNext_size && from_pNext)
17240 {
17241 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017242 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017243 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017244 to->pNext = nullptr;
17245 if (pNext_size)
17246 {
Yilong Li422b0582021-04-30 13:09:43 -070017247 to->pNext = (void*)alloc->alloc(pNext_size);
17248 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017249 }
17250}
17251
17252#endif
17253#ifdef VK_EXT_memory_budget
17254void deepcopy_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017255 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017256 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017257 const VkPhysicalDeviceMemoryBudgetPropertiesEXT* from,
17258 VkPhysicalDeviceMemoryBudgetPropertiesEXT* to)
17259{
Yilong Li422b0582021-04-30 13:09:43 -070017260 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017261 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017262 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017263 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17264 {
17265 rootType = from->sType;
17266 }
Yilong Li04218f72021-02-19 01:31:17 -080017267 const void* from_pNext = from;
17268 size_t pNext_size = 0u;
17269 while (!pNext_size && from_pNext)
17270 {
17271 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017272 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017273 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017274 to->pNext = nullptr;
17275 if (pNext_size)
17276 {
Yilong Li422b0582021-04-30 13:09:43 -070017277 to->pNext = (void*)alloc->alloc(pNext_size);
17278 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017279 }
17280 memcpy(to->heapBudget, from->heapBudget, VK_MAX_MEMORY_HEAPS * sizeof(VkDeviceSize));
17281 memcpy(to->heapUsage, from->heapUsage, VK_MAX_MEMORY_HEAPS * sizeof(VkDeviceSize));
17282}
17283
17284#endif
17285#ifdef VK_EXT_memory_priority
17286void deepcopy_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017287 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017288 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017289 const VkPhysicalDeviceMemoryPriorityFeaturesEXT* from,
17290 VkPhysicalDeviceMemoryPriorityFeaturesEXT* to)
17291{
Yilong Li422b0582021-04-30 13:09:43 -070017292 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017293 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017294 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017295 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17296 {
17297 rootType = from->sType;
17298 }
Yilong Li04218f72021-02-19 01:31:17 -080017299 const void* from_pNext = from;
17300 size_t pNext_size = 0u;
17301 while (!pNext_size && from_pNext)
17302 {
17303 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017304 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017305 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017306 to->pNext = nullptr;
17307 if (pNext_size)
17308 {
Yilong Li422b0582021-04-30 13:09:43 -070017309 to->pNext = (void*)alloc->alloc(pNext_size);
17310 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017311 }
17312}
17313
17314void deepcopy_VkMemoryPriorityAllocateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017315 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017316 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017317 const VkMemoryPriorityAllocateInfoEXT* from,
17318 VkMemoryPriorityAllocateInfoEXT* to)
17319{
Yilong Li422b0582021-04-30 13:09:43 -070017320 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017321 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017322 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017323 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17324 {
17325 rootType = from->sType;
17326 }
Yilong Li04218f72021-02-19 01:31:17 -080017327 const void* from_pNext = from;
17328 size_t pNext_size = 0u;
17329 while (!pNext_size && from_pNext)
17330 {
17331 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017332 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017333 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017334 to->pNext = nullptr;
17335 if (pNext_size)
17336 {
Yilong Li324fa652021-12-29 17:00:42 -080017337 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017338 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017339 }
17340}
17341
17342#endif
17343#ifdef VK_NV_dedicated_allocation_image_aliasing
17344void deepcopy_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070017345 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017346 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017347 const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* from,
17348 VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* to)
17349{
Yilong Li422b0582021-04-30 13:09:43 -070017350 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017351 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017352 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017353 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17354 {
17355 rootType = from->sType;
17356 }
Yilong Li04218f72021-02-19 01:31:17 -080017357 const void* from_pNext = from;
17358 size_t pNext_size = 0u;
17359 while (!pNext_size && from_pNext)
17360 {
17361 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017362 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017363 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017364 to->pNext = nullptr;
17365 if (pNext_size)
17366 {
Yilong Li422b0582021-04-30 13:09:43 -070017367 to->pNext = (void*)alloc->alloc(pNext_size);
17368 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017369 }
17370}
17371
17372#endif
17373#ifdef VK_EXT_buffer_device_address
17374void deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017375 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017376 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017377 const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* from,
17378 VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* to)
17379{
Yilong Li422b0582021-04-30 13:09:43 -070017380 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017381 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017382 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017383 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17384 {
17385 rootType = from->sType;
17386 }
Yilong Li04218f72021-02-19 01:31:17 -080017387 const void* from_pNext = from;
17388 size_t pNext_size = 0u;
17389 while (!pNext_size && from_pNext)
17390 {
17391 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017392 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017393 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017394 to->pNext = nullptr;
17395 if (pNext_size)
17396 {
Yilong Li422b0582021-04-30 13:09:43 -070017397 to->pNext = (void*)alloc->alloc(pNext_size);
17398 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017399 }
17400}
17401
17402void deepcopy_VkBufferDeviceAddressCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017403 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017404 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017405 const VkBufferDeviceAddressCreateInfoEXT* from,
17406 VkBufferDeviceAddressCreateInfoEXT* to)
17407{
Yilong Li422b0582021-04-30 13:09:43 -070017408 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017409 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017410 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017411 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17412 {
17413 rootType = from->sType;
17414 }
Yilong Li04218f72021-02-19 01:31:17 -080017415 const void* from_pNext = from;
17416 size_t pNext_size = 0u;
17417 while (!pNext_size && from_pNext)
17418 {
17419 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017420 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017421 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017422 to->pNext = nullptr;
17423 if (pNext_size)
17424 {
Yilong Li324fa652021-12-29 17:00:42 -080017425 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017426 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017427 }
17428}
17429
17430#endif
17431#ifdef VK_EXT_tooling_info
17432void deepcopy_VkPhysicalDeviceToolPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017433 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017434 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017435 const VkPhysicalDeviceToolPropertiesEXT* from,
17436 VkPhysicalDeviceToolPropertiesEXT* to)
17437{
Yilong Li422b0582021-04-30 13:09:43 -070017438 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017439 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017440 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017441 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17442 {
17443 rootType = from->sType;
17444 }
Yilong Li04218f72021-02-19 01:31:17 -080017445 const void* from_pNext = from;
17446 size_t pNext_size = 0u;
17447 while (!pNext_size && from_pNext)
17448 {
17449 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017450 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017451 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017452 to->pNext = nullptr;
17453 if (pNext_size)
17454 {
Yilong Li422b0582021-04-30 13:09:43 -070017455 to->pNext = (void*)alloc->alloc(pNext_size);
17456 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017457 }
17458 memcpy(to->name, from->name, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
17459 memcpy(to->version, from->version, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
17460 memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
17461 memcpy(to->layer, from->layer, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
17462}
17463
17464#endif
17465#ifdef VK_EXT_separate_stencil_usage
17466#endif
17467#ifdef VK_EXT_validation_features
17468void deepcopy_VkValidationFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017469 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017470 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017471 const VkValidationFeaturesEXT* from,
17472 VkValidationFeaturesEXT* to)
17473{
Yilong Li422b0582021-04-30 13:09:43 -070017474 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017475 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017476 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017477 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17478 {
17479 rootType = from->sType;
17480 }
Yilong Li04218f72021-02-19 01:31:17 -080017481 const void* from_pNext = from;
17482 size_t pNext_size = 0u;
17483 while (!pNext_size && from_pNext)
17484 {
17485 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017486 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017487 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017488 to->pNext = nullptr;
17489 if (pNext_size)
17490 {
Yilong Li324fa652021-12-29 17:00:42 -080017491 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017492 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017493 }
17494 to->pEnabledValidationFeatures = nullptr;
17495 if (from->pEnabledValidationFeatures)
17496 {
Yilong Li422b0582021-04-30 13:09:43 -070017497 to->pEnabledValidationFeatures = (VkValidationFeatureEnableEXT*)alloc->dupArray(from->pEnabledValidationFeatures, from->enabledValidationFeatureCount * sizeof(const VkValidationFeatureEnableEXT));
Yilong Lia8d45f12021-02-07 02:30:21 -080017498 }
17499 to->pDisabledValidationFeatures = nullptr;
17500 if (from->pDisabledValidationFeatures)
17501 {
Yilong Li422b0582021-04-30 13:09:43 -070017502 to->pDisabledValidationFeatures = (VkValidationFeatureDisableEXT*)alloc->dupArray(from->pDisabledValidationFeatures, from->disabledValidationFeatureCount * sizeof(const VkValidationFeatureDisableEXT));
Yilong Lia8d45f12021-02-07 02:30:21 -080017503 }
17504}
17505
17506#endif
17507#ifdef VK_NV_cooperative_matrix
17508void deepcopy_VkCooperativeMatrixPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070017509 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017510 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017511 const VkCooperativeMatrixPropertiesNV* from,
17512 VkCooperativeMatrixPropertiesNV* to)
17513{
Yilong Li422b0582021-04-30 13:09:43 -070017514 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017515 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017516 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017517 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17518 {
17519 rootType = from->sType;
17520 }
Yilong Li04218f72021-02-19 01:31:17 -080017521 const void* from_pNext = from;
17522 size_t pNext_size = 0u;
17523 while (!pNext_size && from_pNext)
17524 {
17525 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017526 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017527 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017528 to->pNext = nullptr;
17529 if (pNext_size)
17530 {
Yilong Li422b0582021-04-30 13:09:43 -070017531 to->pNext = (void*)alloc->alloc(pNext_size);
17532 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017533 }
17534}
17535
17536void deepcopy_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070017537 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017538 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017539 const VkPhysicalDeviceCooperativeMatrixFeaturesNV* from,
17540 VkPhysicalDeviceCooperativeMatrixFeaturesNV* to)
17541{
Yilong Li422b0582021-04-30 13:09:43 -070017542 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017543 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017544 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017545 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17546 {
17547 rootType = from->sType;
17548 }
Yilong Li04218f72021-02-19 01:31:17 -080017549 const void* from_pNext = from;
17550 size_t pNext_size = 0u;
17551 while (!pNext_size && from_pNext)
17552 {
17553 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017554 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017555 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017556 to->pNext = nullptr;
17557 if (pNext_size)
17558 {
Yilong Li422b0582021-04-30 13:09:43 -070017559 to->pNext = (void*)alloc->alloc(pNext_size);
17560 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017561 }
17562}
17563
17564void deepcopy_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070017565 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017566 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017567 const VkPhysicalDeviceCooperativeMatrixPropertiesNV* from,
17568 VkPhysicalDeviceCooperativeMatrixPropertiesNV* to)
17569{
Yilong Li422b0582021-04-30 13:09:43 -070017570 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017571 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017572 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017573 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17574 {
17575 rootType = from->sType;
17576 }
Yilong Li04218f72021-02-19 01:31:17 -080017577 const void* from_pNext = from;
17578 size_t pNext_size = 0u;
17579 while (!pNext_size && from_pNext)
17580 {
17581 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017582 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017583 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017584 to->pNext = nullptr;
17585 if (pNext_size)
17586 {
Yilong Li422b0582021-04-30 13:09:43 -070017587 to->pNext = (void*)alloc->alloc(pNext_size);
17588 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017589 }
17590}
17591
17592#endif
17593#ifdef VK_NV_coverage_reduction_mode
17594void deepcopy_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070017595 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017596 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017597 const VkPhysicalDeviceCoverageReductionModeFeaturesNV* from,
17598 VkPhysicalDeviceCoverageReductionModeFeaturesNV* to)
17599{
Yilong Li422b0582021-04-30 13:09:43 -070017600 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017601 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017602 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017603 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17604 {
17605 rootType = from->sType;
17606 }
Yilong Li04218f72021-02-19 01:31:17 -080017607 const void* from_pNext = from;
17608 size_t pNext_size = 0u;
17609 while (!pNext_size && from_pNext)
17610 {
17611 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017612 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017613 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017614 to->pNext = nullptr;
17615 if (pNext_size)
17616 {
Yilong Li422b0582021-04-30 13:09:43 -070017617 to->pNext = (void*)alloc->alloc(pNext_size);
17618 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017619 }
17620}
17621
17622void deepcopy_VkPipelineCoverageReductionStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070017623 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017624 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017625 const VkPipelineCoverageReductionStateCreateInfoNV* from,
17626 VkPipelineCoverageReductionStateCreateInfoNV* to)
17627{
Yilong Li422b0582021-04-30 13:09:43 -070017628 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017629 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017630 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017631 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17632 {
17633 rootType = from->sType;
17634 }
Yilong Li04218f72021-02-19 01:31:17 -080017635 const void* from_pNext = from;
17636 size_t pNext_size = 0u;
17637 while (!pNext_size && from_pNext)
17638 {
17639 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017640 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017641 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017642 to->pNext = nullptr;
17643 if (pNext_size)
17644 {
Yilong Li324fa652021-12-29 17:00:42 -080017645 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017646 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017647 }
17648}
17649
17650void deepcopy_VkFramebufferMixedSamplesCombinationNV(
Yilong Li422b0582021-04-30 13:09:43 -070017651 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017652 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017653 const VkFramebufferMixedSamplesCombinationNV* from,
17654 VkFramebufferMixedSamplesCombinationNV* to)
17655{
Yilong Li422b0582021-04-30 13:09:43 -070017656 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017657 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017658 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017659 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17660 {
17661 rootType = from->sType;
17662 }
Yilong Li04218f72021-02-19 01:31:17 -080017663 const void* from_pNext = from;
17664 size_t pNext_size = 0u;
17665 while (!pNext_size && from_pNext)
17666 {
17667 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017668 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017669 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017670 to->pNext = nullptr;
17671 if (pNext_size)
17672 {
Yilong Li422b0582021-04-30 13:09:43 -070017673 to->pNext = (void*)alloc->alloc(pNext_size);
17674 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017675 }
17676}
17677
17678#endif
17679#ifdef VK_EXT_fragment_shader_interlock
17680void deepcopy_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017681 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017682 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017683 const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* from,
17684 VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* to)
17685{
Yilong Li422b0582021-04-30 13:09:43 -070017686 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017687 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017688 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017689 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17690 {
17691 rootType = from->sType;
17692 }
Yilong Li04218f72021-02-19 01:31:17 -080017693 const void* from_pNext = from;
17694 size_t pNext_size = 0u;
17695 while (!pNext_size && from_pNext)
17696 {
17697 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017698 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017699 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017700 to->pNext = nullptr;
17701 if (pNext_size)
17702 {
Yilong Li422b0582021-04-30 13:09:43 -070017703 to->pNext = (void*)alloc->alloc(pNext_size);
17704 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017705 }
17706}
17707
17708#endif
17709#ifdef VK_EXT_ycbcr_image_arrays
17710void deepcopy_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017711 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017712 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017713 const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* from,
17714 VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* to)
17715{
Yilong Li422b0582021-04-30 13:09:43 -070017716 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017717 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017718 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017719 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17720 {
17721 rootType = from->sType;
17722 }
Yilong Li04218f72021-02-19 01:31:17 -080017723 const void* from_pNext = from;
17724 size_t pNext_size = 0u;
17725 while (!pNext_size && from_pNext)
17726 {
17727 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017728 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017729 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017730 to->pNext = nullptr;
17731 if (pNext_size)
17732 {
Yilong Li422b0582021-04-30 13:09:43 -070017733 to->pNext = (void*)alloc->alloc(pNext_size);
17734 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017735 }
17736}
17737
17738#endif
Yilong Li353409a2022-01-04 02:37:56 -080017739#ifdef VK_EXT_provoking_vertex
17740void deepcopy_VkPhysicalDeviceProvokingVertexFeaturesEXT(
17741 Allocator* alloc,
17742 VkStructureType rootType,
17743 const VkPhysicalDeviceProvokingVertexFeaturesEXT* from,
17744 VkPhysicalDeviceProvokingVertexFeaturesEXT* to)
17745{
17746 (void)alloc;
17747 (void)rootType;
17748 *to = *from;
17749 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17750 {
17751 rootType = from->sType;
17752 }
17753 const void* from_pNext = from;
17754 size_t pNext_size = 0u;
17755 while (!pNext_size && from_pNext)
17756 {
17757 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
17758 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
17759 }
17760 to->pNext = nullptr;
17761 if (pNext_size)
17762 {
17763 to->pNext = (void*)alloc->alloc(pNext_size);
17764 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
17765 }
17766}
17767
17768void deepcopy_VkPhysicalDeviceProvokingVertexPropertiesEXT(
17769 Allocator* alloc,
17770 VkStructureType rootType,
17771 const VkPhysicalDeviceProvokingVertexPropertiesEXT* from,
17772 VkPhysicalDeviceProvokingVertexPropertiesEXT* to)
17773{
17774 (void)alloc;
17775 (void)rootType;
17776 *to = *from;
17777 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17778 {
17779 rootType = from->sType;
17780 }
17781 const void* from_pNext = from;
17782 size_t pNext_size = 0u;
17783 while (!pNext_size && from_pNext)
17784 {
17785 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
17786 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
17787 }
17788 to->pNext = nullptr;
17789 if (pNext_size)
17790 {
17791 to->pNext = (void*)alloc->alloc(pNext_size);
17792 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
17793 }
17794}
17795
17796void deepcopy_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
17797 Allocator* alloc,
17798 VkStructureType rootType,
17799 const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* from,
17800 VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* to)
17801{
17802 (void)alloc;
17803 (void)rootType;
17804 *to = *from;
17805 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17806 {
17807 rootType = from->sType;
17808 }
17809 const void* from_pNext = from;
17810 size_t pNext_size = 0u;
17811 while (!pNext_size && from_pNext)
17812 {
17813 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
17814 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
17815 }
17816 to->pNext = nullptr;
17817 if (pNext_size)
17818 {
17819 to->pNext = (void*)alloc->alloc(pNext_size);
17820 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
17821 }
17822}
17823
17824#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017825#ifdef VK_EXT_full_screen_exclusive
17826void deepcopy_VkSurfaceFullScreenExclusiveInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017827 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017828 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017829 const VkSurfaceFullScreenExclusiveInfoEXT* from,
17830 VkSurfaceFullScreenExclusiveInfoEXT* to)
17831{
Yilong Li422b0582021-04-30 13:09:43 -070017832 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017833 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017834 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017835 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17836 {
17837 rootType = from->sType;
17838 }
Yilong Li04218f72021-02-19 01:31:17 -080017839 const void* from_pNext = from;
17840 size_t pNext_size = 0u;
17841 while (!pNext_size && from_pNext)
17842 {
17843 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017844 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017845 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017846 to->pNext = nullptr;
17847 if (pNext_size)
17848 {
Yilong Li422b0582021-04-30 13:09:43 -070017849 to->pNext = (void*)alloc->alloc(pNext_size);
17850 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017851 }
17852}
17853
17854void deepcopy_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017855 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017856 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017857 const VkSurfaceCapabilitiesFullScreenExclusiveEXT* from,
17858 VkSurfaceCapabilitiesFullScreenExclusiveEXT* to)
17859{
Yilong Li422b0582021-04-30 13:09:43 -070017860 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017861 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017862 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017863 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17864 {
17865 rootType = from->sType;
17866 }
Yilong Li04218f72021-02-19 01:31:17 -080017867 const void* from_pNext = from;
17868 size_t pNext_size = 0u;
17869 while (!pNext_size && from_pNext)
17870 {
17871 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017872 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017873 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017874 to->pNext = nullptr;
17875 if (pNext_size)
17876 {
Yilong Li422b0582021-04-30 13:09:43 -070017877 to->pNext = (void*)alloc->alloc(pNext_size);
17878 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017879 }
17880}
17881
17882void deepcopy_VkSurfaceFullScreenExclusiveWin32InfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017883 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017884 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017885 const VkSurfaceFullScreenExclusiveWin32InfoEXT* from,
17886 VkSurfaceFullScreenExclusiveWin32InfoEXT* to)
17887{
Yilong Li422b0582021-04-30 13:09:43 -070017888 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017889 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017890 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017891 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17892 {
17893 rootType = from->sType;
17894 }
Yilong Li04218f72021-02-19 01:31:17 -080017895 const void* from_pNext = from;
17896 size_t pNext_size = 0u;
17897 while (!pNext_size && from_pNext)
17898 {
17899 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017900 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017901 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017902 to->pNext = nullptr;
17903 if (pNext_size)
17904 {
Yilong Li324fa652021-12-29 17:00:42 -080017905 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017906 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017907 }
17908}
17909
17910#endif
17911#ifdef VK_EXT_headless_surface
17912void deepcopy_VkHeadlessSurfaceCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017913 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017914 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017915 const VkHeadlessSurfaceCreateInfoEXT* from,
17916 VkHeadlessSurfaceCreateInfoEXT* to)
17917{
Yilong Li422b0582021-04-30 13:09:43 -070017918 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017919 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017920 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017921 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17922 {
17923 rootType = from->sType;
17924 }
Yilong Li04218f72021-02-19 01:31:17 -080017925 const void* from_pNext = from;
17926 size_t pNext_size = 0u;
17927 while (!pNext_size && from_pNext)
17928 {
17929 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017930 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017931 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017932 to->pNext = nullptr;
17933 if (pNext_size)
17934 {
Yilong Li324fa652021-12-29 17:00:42 -080017935 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070017936 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017937 }
17938}
17939
17940#endif
17941#ifdef VK_EXT_line_rasterization
17942void deepcopy_VkPhysicalDeviceLineRasterizationFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017943 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017944 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017945 const VkPhysicalDeviceLineRasterizationFeaturesEXT* from,
17946 VkPhysicalDeviceLineRasterizationFeaturesEXT* to)
17947{
Yilong Li422b0582021-04-30 13:09:43 -070017948 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017949 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017950 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017951 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17952 {
17953 rootType = from->sType;
17954 }
Yilong Li04218f72021-02-19 01:31:17 -080017955 const void* from_pNext = from;
17956 size_t pNext_size = 0u;
17957 while (!pNext_size && from_pNext)
17958 {
17959 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017960 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017961 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017962 to->pNext = nullptr;
17963 if (pNext_size)
17964 {
Yilong Li422b0582021-04-30 13:09:43 -070017965 to->pNext = (void*)alloc->alloc(pNext_size);
17966 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017967 }
17968}
17969
17970void deepcopy_VkPhysicalDeviceLineRasterizationPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017971 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070017972 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080017973 const VkPhysicalDeviceLineRasterizationPropertiesEXT* from,
17974 VkPhysicalDeviceLineRasterizationPropertiesEXT* to)
17975{
Yilong Li422b0582021-04-30 13:09:43 -070017976 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070017977 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080017978 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070017979 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
17980 {
17981 rootType = from->sType;
17982 }
Yilong Li04218f72021-02-19 01:31:17 -080017983 const void* from_pNext = from;
17984 size_t pNext_size = 0u;
17985 while (!pNext_size && from_pNext)
17986 {
17987 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070017988 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080017989 }
Yilong Lia8d45f12021-02-07 02:30:21 -080017990 to->pNext = nullptr;
17991 if (pNext_size)
17992 {
Yilong Li422b0582021-04-30 13:09:43 -070017993 to->pNext = (void*)alloc->alloc(pNext_size);
17994 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080017995 }
17996}
17997
17998void deepcopy_VkPipelineRasterizationLineStateCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070017999 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018000 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018001 const VkPipelineRasterizationLineStateCreateInfoEXT* from,
18002 VkPipelineRasterizationLineStateCreateInfoEXT* to)
18003{
Yilong Li422b0582021-04-30 13:09:43 -070018004 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018005 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018006 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018007 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18008 {
18009 rootType = from->sType;
18010 }
Yilong Li04218f72021-02-19 01:31:17 -080018011 const void* from_pNext = from;
18012 size_t pNext_size = 0u;
18013 while (!pNext_size && from_pNext)
18014 {
18015 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018016 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018017 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018018 to->pNext = nullptr;
18019 if (pNext_size)
18020 {
Yilong Li324fa652021-12-29 17:00:42 -080018021 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018022 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018023 }
18024}
18025
18026#endif
18027#ifdef VK_EXT_shader_atomic_float
18028void deepcopy_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018029 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018030 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018031 const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* from,
18032 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* to)
18033{
Yilong Li422b0582021-04-30 13:09:43 -070018034 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018035 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018036 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018037 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18038 {
18039 rootType = from->sType;
18040 }
Yilong Li04218f72021-02-19 01:31:17 -080018041 const void* from_pNext = from;
18042 size_t pNext_size = 0u;
18043 while (!pNext_size && from_pNext)
18044 {
18045 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018046 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018047 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018048 to->pNext = nullptr;
18049 if (pNext_size)
18050 {
Yilong Li422b0582021-04-30 13:09:43 -070018051 to->pNext = (void*)alloc->alloc(pNext_size);
18052 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018053 }
18054}
18055
18056#endif
18057#ifdef VK_EXT_host_query_reset
18058#endif
18059#ifdef VK_EXT_index_type_uint8
18060void deepcopy_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018061 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018062 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018063 const VkPhysicalDeviceIndexTypeUint8FeaturesEXT* from,
18064 VkPhysicalDeviceIndexTypeUint8FeaturesEXT* to)
18065{
Yilong Li422b0582021-04-30 13:09:43 -070018066 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018067 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018068 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018069 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18070 {
18071 rootType = from->sType;
18072 }
Yilong Li04218f72021-02-19 01:31:17 -080018073 const void* from_pNext = from;
18074 size_t pNext_size = 0u;
18075 while (!pNext_size && from_pNext)
18076 {
18077 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018078 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018079 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018080 to->pNext = nullptr;
18081 if (pNext_size)
18082 {
Yilong Li422b0582021-04-30 13:09:43 -070018083 to->pNext = (void*)alloc->alloc(pNext_size);
18084 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018085 }
18086}
18087
18088#endif
18089#ifdef VK_EXT_extended_dynamic_state
18090void deepcopy_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018091 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018092 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018093 const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* from,
18094 VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* to)
18095{
Yilong Li422b0582021-04-30 13:09:43 -070018096 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018097 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018098 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018099 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18100 {
18101 rootType = from->sType;
18102 }
Yilong Li04218f72021-02-19 01:31:17 -080018103 const void* from_pNext = from;
18104 size_t pNext_size = 0u;
18105 while (!pNext_size && from_pNext)
18106 {
18107 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018108 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018109 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018110 to->pNext = nullptr;
18111 if (pNext_size)
18112 {
Yilong Li422b0582021-04-30 13:09:43 -070018113 to->pNext = (void*)alloc->alloc(pNext_size);
18114 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018115 }
18116}
18117
18118#endif
Yilong Li353409a2022-01-04 02:37:56 -080018119#ifdef VK_EXT_shader_atomic_float2
18120void deepcopy_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(
18121 Allocator* alloc,
18122 VkStructureType rootType,
18123 const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* from,
18124 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* to)
18125{
18126 (void)alloc;
18127 (void)rootType;
18128 *to = *from;
18129 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18130 {
18131 rootType = from->sType;
18132 }
18133 const void* from_pNext = from;
18134 size_t pNext_size = 0u;
18135 while (!pNext_size && from_pNext)
18136 {
18137 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
18138 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
18139 }
18140 to->pNext = nullptr;
18141 if (pNext_size)
18142 {
18143 to->pNext = (void*)alloc->alloc(pNext_size);
18144 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
18145 }
18146}
18147
18148#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080018149#ifdef VK_EXT_shader_demote_to_helper_invocation
18150void deepcopy_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018151 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018152 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018153 const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* from,
18154 VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* to)
18155{
Yilong Li422b0582021-04-30 13:09:43 -070018156 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018157 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018158 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018159 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18160 {
18161 rootType = from->sType;
18162 }
Yilong Li04218f72021-02-19 01:31:17 -080018163 const void* from_pNext = from;
18164 size_t pNext_size = 0u;
18165 while (!pNext_size && from_pNext)
18166 {
18167 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018168 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018169 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018170 to->pNext = nullptr;
18171 if (pNext_size)
18172 {
Yilong Li422b0582021-04-30 13:09:43 -070018173 to->pNext = (void*)alloc->alloc(pNext_size);
18174 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018175 }
18176}
18177
18178#endif
18179#ifdef VK_NV_device_generated_commands
18180void deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070018181 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018182 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018183 const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* from,
18184 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* to)
18185{
Yilong Li422b0582021-04-30 13:09:43 -070018186 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018187 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018188 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018189 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18190 {
18191 rootType = from->sType;
18192 }
Yilong Li04218f72021-02-19 01:31:17 -080018193 const void* from_pNext = from;
18194 size_t pNext_size = 0u;
18195 while (!pNext_size && from_pNext)
18196 {
18197 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018198 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018199 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018200 to->pNext = nullptr;
18201 if (pNext_size)
18202 {
Yilong Li422b0582021-04-30 13:09:43 -070018203 to->pNext = (void*)alloc->alloc(pNext_size);
18204 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018205 }
18206}
18207
18208void deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070018209 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018210 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018211 const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* from,
18212 VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* to)
18213{
Yilong Li422b0582021-04-30 13:09:43 -070018214 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018215 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018216 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018217 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18218 {
18219 rootType = from->sType;
18220 }
Yilong Li04218f72021-02-19 01:31:17 -080018221 const void* from_pNext = from;
18222 size_t pNext_size = 0u;
18223 while (!pNext_size && from_pNext)
18224 {
18225 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018226 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018227 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018228 to->pNext = nullptr;
18229 if (pNext_size)
18230 {
Yilong Li422b0582021-04-30 13:09:43 -070018231 to->pNext = (void*)alloc->alloc(pNext_size);
18232 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018233 }
18234}
18235
18236void deepcopy_VkGraphicsShaderGroupCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070018237 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018238 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018239 const VkGraphicsShaderGroupCreateInfoNV* from,
18240 VkGraphicsShaderGroupCreateInfoNV* to)
18241{
Yilong Li422b0582021-04-30 13:09:43 -070018242 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018243 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018244 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018245 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18246 {
18247 rootType = from->sType;
18248 }
Yilong Li04218f72021-02-19 01:31:17 -080018249 const void* from_pNext = from;
18250 size_t pNext_size = 0u;
18251 while (!pNext_size && from_pNext)
18252 {
18253 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018254 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018255 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018256 to->pNext = nullptr;
18257 if (pNext_size)
18258 {
Yilong Li324fa652021-12-29 17:00:42 -080018259 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018260 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018261 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080018262 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080018263 {
Yilong Libd10ec92021-02-10 13:24:27 -080018264 to->pStages = nullptr;
18265 if (from->pStages)
Yilong Lia8d45f12021-02-07 02:30:21 -080018266 {
Yilong Li422b0582021-04-30 13:09:43 -070018267 to->pStages = (VkPipelineShaderStageCreateInfo*)alloc->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
Yilong Libd10ec92021-02-10 13:24:27 -080018268 to->stageCount = from->stageCount;
18269 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
18270 {
Yilong Li422b0582021-04-30 13:09:43 -070018271 deepcopy_VkPipelineShaderStageCreateInfo(alloc, rootType, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
Yilong Libd10ec92021-02-10 13:24:27 -080018272 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018273 }
18274 }
18275 to->pVertexInputState = nullptr;
18276 if (from->pVertexInputState)
18277 {
Yilong Li422b0582021-04-30 13:09:43 -070018278 to->pVertexInputState = (VkPipelineVertexInputStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineVertexInputStateCreateInfo));
18279 deepcopy_VkPipelineVertexInputStateCreateInfo(alloc, rootType, from->pVertexInputState, (VkPipelineVertexInputStateCreateInfo*)(to->pVertexInputState));
Yilong Lia8d45f12021-02-07 02:30:21 -080018280 }
18281 to->pTessellationState = nullptr;
18282 if (from->pTessellationState)
18283 {
Yilong Li422b0582021-04-30 13:09:43 -070018284 to->pTessellationState = (VkPipelineTessellationStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineTessellationStateCreateInfo));
18285 deepcopy_VkPipelineTessellationStateCreateInfo(alloc, rootType, from->pTessellationState, (VkPipelineTessellationStateCreateInfo*)(to->pTessellationState));
Yilong Lia8d45f12021-02-07 02:30:21 -080018286 }
18287}
18288
18289void deepcopy_VkGraphicsPipelineShaderGroupsCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070018290 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018291 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018292 const VkGraphicsPipelineShaderGroupsCreateInfoNV* from,
18293 VkGraphicsPipelineShaderGroupsCreateInfoNV* to)
18294{
Yilong Li422b0582021-04-30 13:09:43 -070018295 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018296 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018297 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018298 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18299 {
18300 rootType = from->sType;
18301 }
Yilong Li04218f72021-02-19 01:31:17 -080018302 const void* from_pNext = from;
18303 size_t pNext_size = 0u;
18304 while (!pNext_size && from_pNext)
18305 {
18306 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018307 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018308 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018309 to->pNext = nullptr;
18310 if (pNext_size)
18311 {
Yilong Li324fa652021-12-29 17:00:42 -080018312 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018313 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018314 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080018315 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080018316 {
Yilong Libd10ec92021-02-10 13:24:27 -080018317 to->pGroups = nullptr;
18318 if (from->pGroups)
Yilong Lia8d45f12021-02-07 02:30:21 -080018319 {
Yilong Li422b0582021-04-30 13:09:43 -070018320 to->pGroups = (VkGraphicsShaderGroupCreateInfoNV*)alloc->alloc(from->groupCount * sizeof(const VkGraphicsShaderGroupCreateInfoNV));
Yilong Libd10ec92021-02-10 13:24:27 -080018321 to->groupCount = from->groupCount;
18322 for (uint32_t i = 0; i < (uint32_t)from->groupCount; ++i)
18323 {
Yilong Li422b0582021-04-30 13:09:43 -070018324 deepcopy_VkGraphicsShaderGroupCreateInfoNV(alloc, rootType, from->pGroups + i, (VkGraphicsShaderGroupCreateInfoNV*)(to->pGroups + i));
Yilong Libd10ec92021-02-10 13:24:27 -080018325 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018326 }
18327 }
18328 to->pPipelines = nullptr;
18329 if (from->pPipelines)
18330 {
Yilong Li422b0582021-04-30 13:09:43 -070018331 to->pPipelines = (VkPipeline*)alloc->dupArray(from->pPipelines, from->pipelineCount * sizeof(const VkPipeline));
Yilong Lia8d45f12021-02-07 02:30:21 -080018332 }
18333}
18334
18335void deepcopy_VkBindShaderGroupIndirectCommandNV(
Yilong Li422b0582021-04-30 13:09:43 -070018336 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018337 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018338 const VkBindShaderGroupIndirectCommandNV* from,
18339 VkBindShaderGroupIndirectCommandNV* to)
18340{
Yilong Li422b0582021-04-30 13:09:43 -070018341 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018342 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018343 *to = *from;
18344}
18345
18346void deepcopy_VkBindIndexBufferIndirectCommandNV(
Yilong Li422b0582021-04-30 13:09:43 -070018347 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018348 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018349 const VkBindIndexBufferIndirectCommandNV* from,
18350 VkBindIndexBufferIndirectCommandNV* to)
18351{
Yilong Li422b0582021-04-30 13:09:43 -070018352 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018353 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018354 *to = *from;
18355}
18356
18357void deepcopy_VkBindVertexBufferIndirectCommandNV(
Yilong Li422b0582021-04-30 13:09:43 -070018358 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018359 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018360 const VkBindVertexBufferIndirectCommandNV* from,
18361 VkBindVertexBufferIndirectCommandNV* to)
18362{
Yilong Li422b0582021-04-30 13:09:43 -070018363 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018364 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018365 *to = *from;
18366}
18367
18368void deepcopy_VkSetStateFlagsIndirectCommandNV(
Yilong Li422b0582021-04-30 13:09:43 -070018369 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018370 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018371 const VkSetStateFlagsIndirectCommandNV* from,
18372 VkSetStateFlagsIndirectCommandNV* to)
18373{
Yilong Li422b0582021-04-30 13:09:43 -070018374 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018375 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018376 *to = *from;
18377}
18378
18379void deepcopy_VkIndirectCommandsStreamNV(
Yilong Li422b0582021-04-30 13:09:43 -070018380 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018381 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018382 const VkIndirectCommandsStreamNV* from,
18383 VkIndirectCommandsStreamNV* to)
18384{
Yilong Li422b0582021-04-30 13:09:43 -070018385 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018386 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018387 *to = *from;
18388}
18389
18390void deepcopy_VkIndirectCommandsLayoutTokenNV(
Yilong Li422b0582021-04-30 13:09:43 -070018391 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018392 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018393 const VkIndirectCommandsLayoutTokenNV* from,
18394 VkIndirectCommandsLayoutTokenNV* to)
18395{
Yilong Li422b0582021-04-30 13:09:43 -070018396 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018397 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018398 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018399 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18400 {
18401 rootType = from->sType;
18402 }
Yilong Li04218f72021-02-19 01:31:17 -080018403 const void* from_pNext = from;
18404 size_t pNext_size = 0u;
18405 while (!pNext_size && from_pNext)
18406 {
18407 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018408 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018409 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018410 to->pNext = nullptr;
18411 if (pNext_size)
18412 {
Yilong Li324fa652021-12-29 17:00:42 -080018413 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018414 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018415 }
18416 to->pIndexTypes = nullptr;
18417 if (from->pIndexTypes)
18418 {
Yilong Li422b0582021-04-30 13:09:43 -070018419 to->pIndexTypes = (VkIndexType*)alloc->dupArray(from->pIndexTypes, from->indexTypeCount * sizeof(const VkIndexType));
Yilong Lia8d45f12021-02-07 02:30:21 -080018420 }
18421 to->pIndexTypeValues = nullptr;
18422 if (from->pIndexTypeValues)
18423 {
Yilong Li422b0582021-04-30 13:09:43 -070018424 to->pIndexTypeValues = (uint32_t*)alloc->dupArray(from->pIndexTypeValues, from->indexTypeCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080018425 }
18426}
18427
18428void deepcopy_VkIndirectCommandsLayoutCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070018429 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018430 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018431 const VkIndirectCommandsLayoutCreateInfoNV* from,
18432 VkIndirectCommandsLayoutCreateInfoNV* to)
18433{
Yilong Li422b0582021-04-30 13:09:43 -070018434 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018435 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018436 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018437 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18438 {
18439 rootType = from->sType;
18440 }
Yilong Li04218f72021-02-19 01:31:17 -080018441 const void* from_pNext = from;
18442 size_t pNext_size = 0u;
18443 while (!pNext_size && from_pNext)
18444 {
18445 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018446 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018447 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018448 to->pNext = nullptr;
18449 if (pNext_size)
18450 {
Yilong Li324fa652021-12-29 17:00:42 -080018451 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018452 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018453 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080018454 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080018455 {
Yilong Libd10ec92021-02-10 13:24:27 -080018456 to->pTokens = nullptr;
18457 if (from->pTokens)
Yilong Lia8d45f12021-02-07 02:30:21 -080018458 {
Yilong Li422b0582021-04-30 13:09:43 -070018459 to->pTokens = (VkIndirectCommandsLayoutTokenNV*)alloc->alloc(from->tokenCount * sizeof(const VkIndirectCommandsLayoutTokenNV));
Yilong Libd10ec92021-02-10 13:24:27 -080018460 to->tokenCount = from->tokenCount;
18461 for (uint32_t i = 0; i < (uint32_t)from->tokenCount; ++i)
18462 {
Yilong Li422b0582021-04-30 13:09:43 -070018463 deepcopy_VkIndirectCommandsLayoutTokenNV(alloc, rootType, from->pTokens + i, (VkIndirectCommandsLayoutTokenNV*)(to->pTokens + i));
Yilong Libd10ec92021-02-10 13:24:27 -080018464 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018465 }
18466 }
18467 to->pStreamStrides = nullptr;
18468 if (from->pStreamStrides)
18469 {
Yilong Li422b0582021-04-30 13:09:43 -070018470 to->pStreamStrides = (uint32_t*)alloc->dupArray(from->pStreamStrides, from->streamCount * sizeof(const uint32_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080018471 }
18472}
18473
18474void deepcopy_VkGeneratedCommandsInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070018475 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018476 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018477 const VkGeneratedCommandsInfoNV* from,
18478 VkGeneratedCommandsInfoNV* to)
18479{
Yilong Li422b0582021-04-30 13:09:43 -070018480 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018481 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018482 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018483 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18484 {
18485 rootType = from->sType;
18486 }
Yilong Li04218f72021-02-19 01:31:17 -080018487 const void* from_pNext = from;
18488 size_t pNext_size = 0u;
18489 while (!pNext_size && from_pNext)
18490 {
18491 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018492 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018493 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018494 to->pNext = nullptr;
18495 if (pNext_size)
18496 {
Yilong Li324fa652021-12-29 17:00:42 -080018497 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018498 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018499 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080018500 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080018501 {
Yilong Libd10ec92021-02-10 13:24:27 -080018502 to->pStreams = nullptr;
18503 if (from->pStreams)
Yilong Lia8d45f12021-02-07 02:30:21 -080018504 {
Yilong Li422b0582021-04-30 13:09:43 -070018505 to->pStreams = (VkIndirectCommandsStreamNV*)alloc->alloc(from->streamCount * sizeof(const VkIndirectCommandsStreamNV));
Yilong Libd10ec92021-02-10 13:24:27 -080018506 to->streamCount = from->streamCount;
18507 for (uint32_t i = 0; i < (uint32_t)from->streamCount; ++i)
18508 {
Yilong Li422b0582021-04-30 13:09:43 -070018509 deepcopy_VkIndirectCommandsStreamNV(alloc, rootType, from->pStreams + i, (VkIndirectCommandsStreamNV*)(to->pStreams + i));
Yilong Libd10ec92021-02-10 13:24:27 -080018510 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018511 }
18512 }
18513}
18514
18515void deepcopy_VkGeneratedCommandsMemoryRequirementsInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070018516 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018517 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018518 const VkGeneratedCommandsMemoryRequirementsInfoNV* from,
18519 VkGeneratedCommandsMemoryRequirementsInfoNV* to)
18520{
Yilong Li422b0582021-04-30 13:09:43 -070018521 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018522 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018523 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018524 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18525 {
18526 rootType = from->sType;
18527 }
Yilong Li04218f72021-02-19 01:31:17 -080018528 const void* from_pNext = from;
18529 size_t pNext_size = 0u;
18530 while (!pNext_size && from_pNext)
18531 {
18532 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018533 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018534 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018535 to->pNext = nullptr;
18536 if (pNext_size)
18537 {
Yilong Li324fa652021-12-29 17:00:42 -080018538 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018539 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018540 }
18541}
18542
18543#endif
Yilong Li353409a2022-01-04 02:37:56 -080018544#ifdef VK_NV_inherited_viewport_scissor
18545void deepcopy_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(
18546 Allocator* alloc,
18547 VkStructureType rootType,
18548 const VkPhysicalDeviceInheritedViewportScissorFeaturesNV* from,
18549 VkPhysicalDeviceInheritedViewportScissorFeaturesNV* to)
18550{
18551 (void)alloc;
18552 (void)rootType;
18553 *to = *from;
18554 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18555 {
18556 rootType = from->sType;
18557 }
18558 const void* from_pNext = from;
18559 size_t pNext_size = 0u;
18560 while (!pNext_size && from_pNext)
18561 {
18562 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
18563 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
18564 }
18565 to->pNext = nullptr;
18566 if (pNext_size)
18567 {
18568 to->pNext = (void*)alloc->alloc(pNext_size);
18569 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
18570 }
18571}
18572
18573void deepcopy_VkCommandBufferInheritanceViewportScissorInfoNV(
18574 Allocator* alloc,
18575 VkStructureType rootType,
18576 const VkCommandBufferInheritanceViewportScissorInfoNV* from,
18577 VkCommandBufferInheritanceViewportScissorInfoNV* to)
18578{
18579 (void)alloc;
18580 (void)rootType;
18581 *to = *from;
18582 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18583 {
18584 rootType = from->sType;
18585 }
18586 const void* from_pNext = from;
18587 size_t pNext_size = 0u;
18588 while (!pNext_size && from_pNext)
18589 {
18590 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
18591 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
18592 }
18593 to->pNext = nullptr;
18594 if (pNext_size)
18595 {
18596 to->pNext = (void*)alloc->alloc(pNext_size);
18597 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
18598 }
18599 to->pViewportDepths = nullptr;
18600 if (from->pViewportDepths)
18601 {
18602 to->pViewportDepths = (VkViewport*)alloc->alloc(sizeof(const VkViewport));
18603 deepcopy_VkViewport(alloc, rootType, from->pViewportDepths, (VkViewport*)(to->pViewportDepths));
18604 }
18605}
18606
18607#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080018608#ifdef VK_EXT_texel_buffer_alignment
18609void deepcopy_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018610 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018611 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018612 const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* from,
18613 VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* to)
18614{
Yilong Li422b0582021-04-30 13:09:43 -070018615 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018616 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018617 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018618 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18619 {
18620 rootType = from->sType;
18621 }
Yilong Li04218f72021-02-19 01:31:17 -080018622 const void* from_pNext = from;
18623 size_t pNext_size = 0u;
18624 while (!pNext_size && from_pNext)
18625 {
18626 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018627 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018628 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018629 to->pNext = nullptr;
18630 if (pNext_size)
18631 {
Yilong Li422b0582021-04-30 13:09:43 -070018632 to->pNext = (void*)alloc->alloc(pNext_size);
18633 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018634 }
18635}
18636
18637void deepcopy_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018638 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018639 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018640 const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* from,
18641 VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* to)
18642{
Yilong Li422b0582021-04-30 13:09:43 -070018643 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018644 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018645 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018646 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18647 {
18648 rootType = from->sType;
18649 }
Yilong Li04218f72021-02-19 01:31:17 -080018650 const void* from_pNext = from;
18651 size_t pNext_size = 0u;
18652 while (!pNext_size && from_pNext)
18653 {
18654 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018655 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018656 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018657 to->pNext = nullptr;
18658 if (pNext_size)
18659 {
Yilong Li422b0582021-04-30 13:09:43 -070018660 to->pNext = (void*)alloc->alloc(pNext_size);
18661 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018662 }
18663}
18664
18665#endif
18666#ifdef VK_QCOM_render_pass_transform
18667void deepcopy_VkRenderPassTransformBeginInfoQCOM(
Yilong Li422b0582021-04-30 13:09:43 -070018668 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018669 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018670 const VkRenderPassTransformBeginInfoQCOM* from,
18671 VkRenderPassTransformBeginInfoQCOM* to)
18672{
Yilong Li422b0582021-04-30 13:09:43 -070018673 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018674 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018675 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018676 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18677 {
18678 rootType = from->sType;
18679 }
Yilong Li04218f72021-02-19 01:31:17 -080018680 const void* from_pNext = from;
18681 size_t pNext_size = 0u;
18682 while (!pNext_size && from_pNext)
18683 {
18684 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018685 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018686 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018687 to->pNext = nullptr;
18688 if (pNext_size)
18689 {
Yilong Li422b0582021-04-30 13:09:43 -070018690 to->pNext = (void*)alloc->alloc(pNext_size);
18691 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018692 }
18693}
18694
18695void deepcopy_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
Yilong Li422b0582021-04-30 13:09:43 -070018696 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018697 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018698 const VkCommandBufferInheritanceRenderPassTransformInfoQCOM* from,
18699 VkCommandBufferInheritanceRenderPassTransformInfoQCOM* to)
18700{
Yilong Li422b0582021-04-30 13:09:43 -070018701 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018702 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018703 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018704 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18705 {
18706 rootType = from->sType;
18707 }
Yilong Li04218f72021-02-19 01:31:17 -080018708 const void* from_pNext = from;
18709 size_t pNext_size = 0u;
18710 while (!pNext_size && from_pNext)
18711 {
18712 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018713 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018714 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018715 to->pNext = nullptr;
18716 if (pNext_size)
18717 {
Yilong Li422b0582021-04-30 13:09:43 -070018718 to->pNext = (void*)alloc->alloc(pNext_size);
18719 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018720 }
Yilong Li422b0582021-04-30 13:09:43 -070018721 deepcopy_VkRect2D(alloc, rootType, &from->renderArea, (VkRect2D*)(&to->renderArea));
Yilong Lia8d45f12021-02-07 02:30:21 -080018722}
18723
18724#endif
18725#ifdef VK_EXT_device_memory_report
18726void deepcopy_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018727 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018728 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018729 const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* from,
18730 VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* to)
18731{
Yilong Li422b0582021-04-30 13:09:43 -070018732 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018733 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018734 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018735 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18736 {
18737 rootType = from->sType;
18738 }
Yilong Li04218f72021-02-19 01:31:17 -080018739 const void* from_pNext = from;
18740 size_t pNext_size = 0u;
18741 while (!pNext_size && from_pNext)
18742 {
18743 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018744 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018745 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018746 to->pNext = nullptr;
18747 if (pNext_size)
18748 {
Yilong Li422b0582021-04-30 13:09:43 -070018749 to->pNext = (void*)alloc->alloc(pNext_size);
18750 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018751 }
18752}
18753
18754void deepcopy_VkDeviceMemoryReportCallbackDataEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018755 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018756 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018757 const VkDeviceMemoryReportCallbackDataEXT* from,
18758 VkDeviceMemoryReportCallbackDataEXT* to)
18759{
Yilong Li422b0582021-04-30 13:09:43 -070018760 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018761 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018762 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018763 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18764 {
18765 rootType = from->sType;
18766 }
Yilong Li04218f72021-02-19 01:31:17 -080018767 const void* from_pNext = from;
18768 size_t pNext_size = 0u;
18769 while (!pNext_size && from_pNext)
18770 {
18771 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018772 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018773 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018774 to->pNext = nullptr;
18775 if (pNext_size)
18776 {
Yilong Li324fa652021-12-29 17:00:42 -080018777 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018778 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018779 }
18780}
18781
18782void deepcopy_VkDeviceDeviceMemoryReportCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018783 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018784 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018785 const VkDeviceDeviceMemoryReportCreateInfoEXT* from,
18786 VkDeviceDeviceMemoryReportCreateInfoEXT* to)
18787{
Yilong Li422b0582021-04-30 13:09:43 -070018788 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018789 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018790 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018791 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18792 {
18793 rootType = from->sType;
18794 }
Yilong Li04218f72021-02-19 01:31:17 -080018795 const void* from_pNext = from;
18796 size_t pNext_size = 0u;
18797 while (!pNext_size && from_pNext)
18798 {
18799 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018800 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018801 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018802 to->pNext = nullptr;
18803 if (pNext_size)
18804 {
Yilong Li324fa652021-12-29 17:00:42 -080018805 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018806 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018807 }
18808 to->pUserData = nullptr;
18809 if (from->pUserData)
18810 {
Yilong Li422b0582021-04-30 13:09:43 -070018811 to->pUserData = (void*)alloc->dupArray(from->pUserData, sizeof(uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080018812 }
18813}
18814
18815#endif
Yilong Li353409a2022-01-04 02:37:56 -080018816#ifdef VK_EXT_acquire_drm_display
18817#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080018818#ifdef VK_EXT_robustness2
18819void deepcopy_VkPhysicalDeviceRobustness2FeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018820 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018821 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018822 const VkPhysicalDeviceRobustness2FeaturesEXT* from,
18823 VkPhysicalDeviceRobustness2FeaturesEXT* to)
18824{
Yilong Li422b0582021-04-30 13:09:43 -070018825 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018826 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018827 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018828 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18829 {
18830 rootType = from->sType;
18831 }
Yilong Li04218f72021-02-19 01:31:17 -080018832 const void* from_pNext = from;
18833 size_t pNext_size = 0u;
18834 while (!pNext_size && from_pNext)
18835 {
18836 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018837 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018838 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018839 to->pNext = nullptr;
18840 if (pNext_size)
18841 {
Yilong Li422b0582021-04-30 13:09:43 -070018842 to->pNext = (void*)alloc->alloc(pNext_size);
18843 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018844 }
18845}
18846
18847void deepcopy_VkPhysicalDeviceRobustness2PropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018848 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018849 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018850 const VkPhysicalDeviceRobustness2PropertiesEXT* from,
18851 VkPhysicalDeviceRobustness2PropertiesEXT* to)
18852{
Yilong Li422b0582021-04-30 13:09:43 -070018853 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018854 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018855 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018856 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18857 {
18858 rootType = from->sType;
18859 }
Yilong Li04218f72021-02-19 01:31:17 -080018860 const void* from_pNext = from;
18861 size_t pNext_size = 0u;
18862 while (!pNext_size && from_pNext)
18863 {
18864 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018865 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018866 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018867 to->pNext = nullptr;
18868 if (pNext_size)
18869 {
Yilong Li422b0582021-04-30 13:09:43 -070018870 to->pNext = (void*)alloc->alloc(pNext_size);
18871 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018872 }
18873}
18874
18875#endif
18876#ifdef VK_EXT_custom_border_color
18877void deepcopy_VkSamplerCustomBorderColorCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018878 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018879 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018880 const VkSamplerCustomBorderColorCreateInfoEXT* from,
18881 VkSamplerCustomBorderColorCreateInfoEXT* to)
18882{
Yilong Li422b0582021-04-30 13:09:43 -070018883 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018884 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018885 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018886 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18887 {
18888 rootType = from->sType;
18889 }
Yilong Li04218f72021-02-19 01:31:17 -080018890 const void* from_pNext = from;
18891 size_t pNext_size = 0u;
18892 while (!pNext_size && from_pNext)
18893 {
18894 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018895 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018896 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018897 to->pNext = nullptr;
18898 if (pNext_size)
18899 {
Yilong Li324fa652021-12-29 17:00:42 -080018900 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070018901 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018902 }
Yilong Li422b0582021-04-30 13:09:43 -070018903 deepcopy_VkClearColorValue(alloc, rootType, &from->customBorderColor, (VkClearColorValue*)(&to->customBorderColor));
Yilong Lia8d45f12021-02-07 02:30:21 -080018904}
18905
18906void deepcopy_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018907 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018908 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018909 const VkPhysicalDeviceCustomBorderColorPropertiesEXT* from,
18910 VkPhysicalDeviceCustomBorderColorPropertiesEXT* to)
18911{
Yilong Li422b0582021-04-30 13:09:43 -070018912 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018913 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018914 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018915 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18916 {
18917 rootType = from->sType;
18918 }
Yilong Li04218f72021-02-19 01:31:17 -080018919 const void* from_pNext = from;
18920 size_t pNext_size = 0u;
18921 while (!pNext_size && from_pNext)
18922 {
18923 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018924 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018925 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018926 to->pNext = nullptr;
18927 if (pNext_size)
18928 {
Yilong Li422b0582021-04-30 13:09:43 -070018929 to->pNext = (void*)alloc->alloc(pNext_size);
18930 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018931 }
18932}
18933
18934void deepcopy_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018935 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018936 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018937 const VkPhysicalDeviceCustomBorderColorFeaturesEXT* from,
18938 VkPhysicalDeviceCustomBorderColorFeaturesEXT* to)
18939{
Yilong Li422b0582021-04-30 13:09:43 -070018940 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018941 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018942 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018943 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18944 {
18945 rootType = from->sType;
18946 }
Yilong Li04218f72021-02-19 01:31:17 -080018947 const void* from_pNext = from;
18948 size_t pNext_size = 0u;
18949 while (!pNext_size && from_pNext)
18950 {
18951 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018952 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018953 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018954 to->pNext = nullptr;
18955 if (pNext_size)
18956 {
Yilong Li422b0582021-04-30 13:09:43 -070018957 to->pNext = (void*)alloc->alloc(pNext_size);
18958 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018959 }
18960}
18961
18962#endif
18963#ifdef VK_GOOGLE_user_type
18964#endif
18965#ifdef VK_EXT_private_data
18966void deepcopy_VkPhysicalDevicePrivateDataFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018967 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018968 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018969 const VkPhysicalDevicePrivateDataFeaturesEXT* from,
18970 VkPhysicalDevicePrivateDataFeaturesEXT* to)
18971{
Yilong Li422b0582021-04-30 13:09:43 -070018972 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070018973 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080018974 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070018975 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
18976 {
18977 rootType = from->sType;
18978 }
Yilong Li04218f72021-02-19 01:31:17 -080018979 const void* from_pNext = from;
18980 size_t pNext_size = 0u;
18981 while (!pNext_size && from_pNext)
18982 {
18983 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070018984 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080018985 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018986 to->pNext = nullptr;
18987 if (pNext_size)
18988 {
Yilong Li422b0582021-04-30 13:09:43 -070018989 to->pNext = (void*)alloc->alloc(pNext_size);
18990 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080018991 }
18992}
18993
18994void deepcopy_VkDevicePrivateDataCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070018995 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070018996 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080018997 const VkDevicePrivateDataCreateInfoEXT* from,
18998 VkDevicePrivateDataCreateInfoEXT* to)
18999{
Yilong Li422b0582021-04-30 13:09:43 -070019000 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019001 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019002 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019003 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19004 {
19005 rootType = from->sType;
19006 }
Yilong Li04218f72021-02-19 01:31:17 -080019007 const void* from_pNext = from;
19008 size_t pNext_size = 0u;
19009 while (!pNext_size && from_pNext)
19010 {
19011 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019012 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019013 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019014 to->pNext = nullptr;
19015 if (pNext_size)
19016 {
Yilong Li324fa652021-12-29 17:00:42 -080019017 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070019018 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019019 }
19020}
19021
19022void deepcopy_VkPrivateDataSlotCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019023 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019024 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019025 const VkPrivateDataSlotCreateInfoEXT* from,
19026 VkPrivateDataSlotCreateInfoEXT* to)
19027{
Yilong Li422b0582021-04-30 13:09:43 -070019028 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019029 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019030 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019031 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19032 {
19033 rootType = from->sType;
19034 }
Yilong Li04218f72021-02-19 01:31:17 -080019035 const void* from_pNext = from;
19036 size_t pNext_size = 0u;
19037 while (!pNext_size && from_pNext)
19038 {
19039 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019040 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019041 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019042 to->pNext = nullptr;
19043 if (pNext_size)
19044 {
Yilong Li324fa652021-12-29 17:00:42 -080019045 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070019046 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019047 }
19048}
19049
19050#endif
19051#ifdef VK_EXT_pipeline_creation_cache_control
19052void deepcopy_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019053 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019054 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019055 const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* from,
19056 VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* to)
19057{
Yilong Li422b0582021-04-30 13:09:43 -070019058 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019059 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019060 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019061 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19062 {
19063 rootType = from->sType;
19064 }
Yilong Li04218f72021-02-19 01:31:17 -080019065 const void* from_pNext = from;
19066 size_t pNext_size = 0u;
19067 while (!pNext_size && from_pNext)
19068 {
19069 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019070 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019071 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019072 to->pNext = nullptr;
19073 if (pNext_size)
19074 {
Yilong Li422b0582021-04-30 13:09:43 -070019075 to->pNext = (void*)alloc->alloc(pNext_size);
19076 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019077 }
19078}
19079
19080#endif
19081#ifdef VK_NV_device_diagnostics_config
19082void deepcopy_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070019083 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019084 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019085 const VkPhysicalDeviceDiagnosticsConfigFeaturesNV* from,
19086 VkPhysicalDeviceDiagnosticsConfigFeaturesNV* to)
19087{
Yilong Li422b0582021-04-30 13:09:43 -070019088 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019089 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019090 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019091 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19092 {
19093 rootType = from->sType;
19094 }
Yilong Li04218f72021-02-19 01:31:17 -080019095 const void* from_pNext = from;
19096 size_t pNext_size = 0u;
19097 while (!pNext_size && from_pNext)
19098 {
19099 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019100 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019101 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019102 to->pNext = nullptr;
19103 if (pNext_size)
19104 {
Yilong Li422b0582021-04-30 13:09:43 -070019105 to->pNext = (void*)alloc->alloc(pNext_size);
19106 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019107 }
19108}
19109
19110void deepcopy_VkDeviceDiagnosticsConfigCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070019111 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019112 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019113 const VkDeviceDiagnosticsConfigCreateInfoNV* from,
19114 VkDeviceDiagnosticsConfigCreateInfoNV* to)
19115{
Yilong Li422b0582021-04-30 13:09:43 -070019116 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019117 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019118 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019119 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19120 {
19121 rootType = from->sType;
19122 }
Yilong Li04218f72021-02-19 01:31:17 -080019123 const void* from_pNext = from;
19124 size_t pNext_size = 0u;
19125 while (!pNext_size && from_pNext)
19126 {
19127 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019128 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019129 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019130 to->pNext = nullptr;
19131 if (pNext_size)
19132 {
Yilong Li324fa652021-12-29 17:00:42 -080019133 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070019134 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019135 }
19136}
19137
19138#endif
19139#ifdef VK_QCOM_render_pass_store_ops
19140#endif
19141#ifdef VK_NV_fragment_shading_rate_enums
19142void deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
Yilong Li422b0582021-04-30 13:09:43 -070019143 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019144 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019145 const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* from,
19146 VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* to)
19147{
Yilong Li422b0582021-04-30 13:09:43 -070019148 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019149 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019150 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019151 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19152 {
19153 rootType = from->sType;
19154 }
Yilong Li04218f72021-02-19 01:31:17 -080019155 const void* from_pNext = from;
19156 size_t pNext_size = 0u;
19157 while (!pNext_size && from_pNext)
19158 {
19159 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019160 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019161 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019162 to->pNext = nullptr;
19163 if (pNext_size)
19164 {
Yilong Li422b0582021-04-30 13:09:43 -070019165 to->pNext = (void*)alloc->alloc(pNext_size);
19166 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019167 }
19168}
19169
19170void deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
Yilong Li422b0582021-04-30 13:09:43 -070019171 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019172 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019173 const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* from,
19174 VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* to)
19175{
Yilong Li422b0582021-04-30 13:09:43 -070019176 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019177 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019178 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019179 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19180 {
19181 rootType = from->sType;
19182 }
Yilong Li04218f72021-02-19 01:31:17 -080019183 const void* from_pNext = from;
19184 size_t pNext_size = 0u;
19185 while (!pNext_size && from_pNext)
19186 {
19187 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019188 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019189 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019190 to->pNext = nullptr;
19191 if (pNext_size)
19192 {
Yilong Li422b0582021-04-30 13:09:43 -070019193 to->pNext = (void*)alloc->alloc(pNext_size);
19194 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019195 }
19196}
19197
19198void deepcopy_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
Yilong Li422b0582021-04-30 13:09:43 -070019199 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019200 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019201 const VkPipelineFragmentShadingRateEnumStateCreateInfoNV* from,
19202 VkPipelineFragmentShadingRateEnumStateCreateInfoNV* to)
19203{
Yilong Li422b0582021-04-30 13:09:43 -070019204 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019205 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019206 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019207 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19208 {
19209 rootType = from->sType;
19210 }
Yilong Li04218f72021-02-19 01:31:17 -080019211 const void* from_pNext = from;
19212 size_t pNext_size = 0u;
19213 while (!pNext_size && from_pNext)
19214 {
19215 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019216 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019217 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019218 to->pNext = nullptr;
19219 if (pNext_size)
19220 {
Yilong Li324fa652021-12-29 17:00:42 -080019221 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070019222 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019223 }
19224 memcpy(to->combinerOps, from->combinerOps, 2 * sizeof(VkFragmentShadingRateCombinerOpKHR));
19225}
19226
19227#endif
Yilong Li353409a2022-01-04 02:37:56 -080019228#ifdef VK_NV_ray_tracing_motion_blur
19229void deepcopy_VkDeviceOrHostAddressConstKHR(
19230 Allocator* alloc,
19231 VkStructureType rootType,
19232 const VkDeviceOrHostAddressConstKHR* from,
19233 VkDeviceOrHostAddressConstKHR* to)
19234{
19235 (void)alloc;
19236 (void)rootType;
19237 *to = *from;
19238 to->hostAddress = nullptr;
19239 if (from->hostAddress)
19240 {
19241 to->hostAddress = (void*)alloc->dupArray(from->hostAddress, sizeof(const uint8_t));
19242 }
19243}
19244
19245void deepcopy_VkAccelerationStructureGeometryMotionTrianglesDataNV(
19246 Allocator* alloc,
19247 VkStructureType rootType,
19248 const VkAccelerationStructureGeometryMotionTrianglesDataNV* from,
19249 VkAccelerationStructureGeometryMotionTrianglesDataNV* to)
19250{
19251 (void)alloc;
19252 (void)rootType;
19253 *to = *from;
19254 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19255 {
19256 rootType = from->sType;
19257 }
19258 const void* from_pNext = from;
19259 size_t pNext_size = 0u;
19260 while (!pNext_size && from_pNext)
19261 {
19262 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19263 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19264 }
19265 to->pNext = nullptr;
19266 if (pNext_size)
19267 {
19268 to->pNext = (void*)alloc->alloc(pNext_size);
19269 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19270 }
19271 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->vertexData, (VkDeviceOrHostAddressConstKHR*)(&to->vertexData));
19272}
19273
19274void deepcopy_VkAccelerationStructureMotionInfoNV(
19275 Allocator* alloc,
19276 VkStructureType rootType,
19277 const VkAccelerationStructureMotionInfoNV* from,
19278 VkAccelerationStructureMotionInfoNV* to)
19279{
19280 (void)alloc;
19281 (void)rootType;
19282 *to = *from;
19283 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19284 {
19285 rootType = from->sType;
19286 }
19287 const void* from_pNext = from;
19288 size_t pNext_size = 0u;
19289 while (!pNext_size && from_pNext)
19290 {
19291 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19292 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19293 }
19294 to->pNext = nullptr;
19295 if (pNext_size)
19296 {
19297 to->pNext = (void*)alloc->alloc(pNext_size);
19298 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19299 }
19300}
19301
19302void deepcopy_VkAccelerationStructureMatrixMotionInstanceNV(
19303 Allocator* alloc,
19304 VkStructureType rootType,
19305 const VkAccelerationStructureMatrixMotionInstanceNV* from,
19306 VkAccelerationStructureMatrixMotionInstanceNV* to)
19307{
19308 (void)alloc;
19309 (void)rootType;
19310 *to = *from;
19311 deepcopy_VkTransformMatrixKHR(alloc, rootType, &from->transformT0, (VkTransformMatrixKHR*)(&to->transformT0));
19312 deepcopy_VkTransformMatrixKHR(alloc, rootType, &from->transformT1, (VkTransformMatrixKHR*)(&to->transformT1));
19313}
19314
19315void deepcopy_VkSRTDataNV(
19316 Allocator* alloc,
19317 VkStructureType rootType,
19318 const VkSRTDataNV* from,
19319 VkSRTDataNV* to)
19320{
19321 (void)alloc;
19322 (void)rootType;
19323 *to = *from;
19324}
19325
19326void deepcopy_VkAccelerationStructureSRTMotionInstanceNV(
19327 Allocator* alloc,
19328 VkStructureType rootType,
19329 const VkAccelerationStructureSRTMotionInstanceNV* from,
19330 VkAccelerationStructureSRTMotionInstanceNV* to)
19331{
19332 (void)alloc;
19333 (void)rootType;
19334 *to = *from;
19335 deepcopy_VkSRTDataNV(alloc, rootType, &from->transformT0, (VkSRTDataNV*)(&to->transformT0));
19336 deepcopy_VkSRTDataNV(alloc, rootType, &from->transformT1, (VkSRTDataNV*)(&to->transformT1));
19337}
19338
19339void deepcopy_VkAccelerationStructureMotionInstanceDataNV(
19340 Allocator* alloc,
19341 VkStructureType rootType,
19342 const VkAccelerationStructureMotionInstanceDataNV* from,
19343 VkAccelerationStructureMotionInstanceDataNV* to)
19344{
19345 (void)alloc;
19346 (void)rootType;
19347 *to = *from;
19348 deepcopy_VkAccelerationStructureInstanceKHR(alloc, rootType, &from->staticInstance, (VkAccelerationStructureInstanceKHR*)(&to->staticInstance));
19349 deepcopy_VkAccelerationStructureMatrixMotionInstanceNV(alloc, rootType, &from->matrixMotionInstance, (VkAccelerationStructureMatrixMotionInstanceNV*)(&to->matrixMotionInstance));
19350 deepcopy_VkAccelerationStructureSRTMotionInstanceNV(alloc, rootType, &from->srtMotionInstance, (VkAccelerationStructureSRTMotionInstanceNV*)(&to->srtMotionInstance));
19351}
19352
19353void deepcopy_VkAccelerationStructureMotionInstanceNV(
19354 Allocator* alloc,
19355 VkStructureType rootType,
19356 const VkAccelerationStructureMotionInstanceNV* from,
19357 VkAccelerationStructureMotionInstanceNV* to)
19358{
19359 (void)alloc;
19360 (void)rootType;
19361 *to = *from;
19362 deepcopy_VkAccelerationStructureMotionInstanceDataNV(alloc, rootType, &from->data, (VkAccelerationStructureMotionInstanceDataNV*)(&to->data));
19363}
19364
19365void deepcopy_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(
19366 Allocator* alloc,
19367 VkStructureType rootType,
19368 const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* from,
19369 VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* to)
19370{
19371 (void)alloc;
19372 (void)rootType;
19373 *to = *from;
19374 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19375 {
19376 rootType = from->sType;
19377 }
19378 const void* from_pNext = from;
19379 size_t pNext_size = 0u;
19380 while (!pNext_size && from_pNext)
19381 {
19382 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19383 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19384 }
19385 to->pNext = nullptr;
19386 if (pNext_size)
19387 {
19388 to->pNext = (void*)alloc->alloc(pNext_size);
19389 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19390 }
19391}
19392
19393#endif
19394#ifdef VK_EXT_ycbcr_2plane_444_formats
19395void deepcopy_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
19396 Allocator* alloc,
19397 VkStructureType rootType,
19398 const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* from,
19399 VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* to)
19400{
19401 (void)alloc;
19402 (void)rootType;
19403 *to = *from;
19404 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19405 {
19406 rootType = from->sType;
19407 }
19408 const void* from_pNext = from;
19409 size_t pNext_size = 0u;
19410 while (!pNext_size && from_pNext)
19411 {
19412 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19413 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19414 }
19415 to->pNext = nullptr;
19416 if (pNext_size)
19417 {
19418 to->pNext = (void*)alloc->alloc(pNext_size);
19419 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19420 }
19421}
19422
19423#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080019424#ifdef VK_EXT_fragment_density_map2
19425void deepcopy_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019426 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019427 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019428 const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* from,
19429 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* to)
19430{
Yilong Li422b0582021-04-30 13:09:43 -070019431 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019432 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019433 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019434 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19435 {
19436 rootType = from->sType;
19437 }
Yilong Li04218f72021-02-19 01:31:17 -080019438 const void* from_pNext = from;
19439 size_t pNext_size = 0u;
19440 while (!pNext_size && from_pNext)
19441 {
19442 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019443 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019444 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019445 to->pNext = nullptr;
19446 if (pNext_size)
19447 {
Yilong Li422b0582021-04-30 13:09:43 -070019448 to->pNext = (void*)alloc->alloc(pNext_size);
19449 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019450 }
19451}
19452
19453void deepcopy_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019454 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019455 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019456 const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* from,
19457 VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* to)
19458{
Yilong Li422b0582021-04-30 13:09:43 -070019459 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019460 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019461 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019462 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19463 {
19464 rootType = from->sType;
19465 }
Yilong Li04218f72021-02-19 01:31:17 -080019466 const void* from_pNext = from;
19467 size_t pNext_size = 0u;
19468 while (!pNext_size && from_pNext)
19469 {
19470 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019471 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019472 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019473 to->pNext = nullptr;
19474 if (pNext_size)
19475 {
Yilong Li422b0582021-04-30 13:09:43 -070019476 to->pNext = (void*)alloc->alloc(pNext_size);
19477 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019478 }
19479}
19480
19481#endif
19482#ifdef VK_QCOM_rotated_copy_commands
19483void deepcopy_VkCopyCommandTransformInfoQCOM(
Yilong Li422b0582021-04-30 13:09:43 -070019484 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019485 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019486 const VkCopyCommandTransformInfoQCOM* from,
19487 VkCopyCommandTransformInfoQCOM* to)
19488{
Yilong Li422b0582021-04-30 13:09:43 -070019489 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019490 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019491 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019492 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19493 {
19494 rootType = from->sType;
19495 }
Yilong Li04218f72021-02-19 01:31:17 -080019496 const void* from_pNext = from;
19497 size_t pNext_size = 0u;
19498 while (!pNext_size && from_pNext)
19499 {
19500 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019501 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019502 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019503 to->pNext = nullptr;
19504 if (pNext_size)
19505 {
Yilong Li324fa652021-12-29 17:00:42 -080019506 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070019507 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019508 }
19509}
19510
19511#endif
19512#ifdef VK_EXT_image_robustness
19513void deepcopy_VkPhysicalDeviceImageRobustnessFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019514 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019515 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019516 const VkPhysicalDeviceImageRobustnessFeaturesEXT* from,
19517 VkPhysicalDeviceImageRobustnessFeaturesEXT* to)
19518{
Yilong Li422b0582021-04-30 13:09:43 -070019519 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019520 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019521 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019522 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19523 {
19524 rootType = from->sType;
19525 }
Yilong Li04218f72021-02-19 01:31:17 -080019526 const void* from_pNext = from;
19527 size_t pNext_size = 0u;
19528 while (!pNext_size && from_pNext)
19529 {
19530 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019531 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019532 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019533 to->pNext = nullptr;
19534 if (pNext_size)
19535 {
Yilong Li422b0582021-04-30 13:09:43 -070019536 to->pNext = (void*)alloc->alloc(pNext_size);
19537 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019538 }
19539}
19540
19541#endif
19542#ifdef VK_EXT_4444_formats
19543void deepcopy_VkPhysicalDevice4444FormatsFeaturesEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019544 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019545 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019546 const VkPhysicalDevice4444FormatsFeaturesEXT* from,
19547 VkPhysicalDevice4444FormatsFeaturesEXT* to)
19548{
Yilong Li422b0582021-04-30 13:09:43 -070019549 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019550 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019551 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019552 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19553 {
19554 rootType = from->sType;
19555 }
Yilong Li04218f72021-02-19 01:31:17 -080019556 const void* from_pNext = from;
19557 size_t pNext_size = 0u;
19558 while (!pNext_size && from_pNext)
19559 {
19560 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019561 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019562 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019563 to->pNext = nullptr;
19564 if (pNext_size)
19565 {
Yilong Li422b0582021-04-30 13:09:43 -070019566 to->pNext = (void*)alloc->alloc(pNext_size);
19567 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019568 }
19569}
19570
19571#endif
Yilong Li353409a2022-01-04 02:37:56 -080019572#ifdef VK_EXT_rgba10x6_formats
19573void deepcopy_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(
19574 Allocator* alloc,
19575 VkStructureType rootType,
19576 const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* from,
19577 VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* to)
19578{
19579 (void)alloc;
19580 (void)rootType;
19581 *to = *from;
19582 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19583 {
19584 rootType = from->sType;
19585 }
19586 const void* from_pNext = from;
19587 size_t pNext_size = 0u;
19588 while (!pNext_size && from_pNext)
19589 {
19590 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19591 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19592 }
19593 to->pNext = nullptr;
19594 if (pNext_size)
19595 {
19596 to->pNext = (void*)alloc->alloc(pNext_size);
19597 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19598 }
19599}
19600
19601#endif
19602#ifdef VK_NV_acquire_winrt_display
19603#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080019604#ifdef VK_EXT_directfb_surface
19605void deepcopy_VkDirectFBSurfaceCreateInfoEXT(
Yilong Li422b0582021-04-30 13:09:43 -070019606 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070019607 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080019608 const VkDirectFBSurfaceCreateInfoEXT* from,
19609 VkDirectFBSurfaceCreateInfoEXT* to)
19610{
Yilong Li422b0582021-04-30 13:09:43 -070019611 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070019612 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080019613 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070019614 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19615 {
19616 rootType = from->sType;
19617 }
Yilong Li04218f72021-02-19 01:31:17 -080019618 const void* from_pNext = from;
19619 size_t pNext_size = 0u;
19620 while (!pNext_size && from_pNext)
19621 {
19622 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070019623 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080019624 }
Yilong Lia8d45f12021-02-07 02:30:21 -080019625 to->pNext = nullptr;
19626 if (pNext_size)
19627 {
Yilong Li324fa652021-12-29 17:00:42 -080019628 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070019629 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080019630 }
19631 to->dfb = nullptr;
19632 if (from->dfb)
19633 {
Yilong Li422b0582021-04-30 13:09:43 -070019634 to->dfb = (IDirectFB*)alloc->dupArray(from->dfb, sizeof(IDirectFB));
Yilong Lia8d45f12021-02-07 02:30:21 -080019635 }
19636 to->surface = nullptr;
19637 if (from->surface)
19638 {
Yilong Li422b0582021-04-30 13:09:43 -070019639 to->surface = (IDirectFBSurface*)alloc->dupArray(from->surface, sizeof(IDirectFBSurface));
Yilong Lia8d45f12021-02-07 02:30:21 -080019640 }
19641}
19642
19643#endif
Yilong Li353409a2022-01-04 02:37:56 -080019644#ifdef VK_VALVE_mutable_descriptor_type
19645void deepcopy_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
19646 Allocator* alloc,
19647 VkStructureType rootType,
19648 const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* from,
19649 VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* to)
19650{
19651 (void)alloc;
19652 (void)rootType;
19653 *to = *from;
19654 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19655 {
19656 rootType = from->sType;
19657 }
19658 const void* from_pNext = from;
19659 size_t pNext_size = 0u;
19660 while (!pNext_size && from_pNext)
19661 {
19662 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19663 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19664 }
19665 to->pNext = nullptr;
19666 if (pNext_size)
19667 {
19668 to->pNext = (void*)alloc->alloc(pNext_size);
19669 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19670 }
19671}
19672
19673void deepcopy_VkMutableDescriptorTypeListVALVE(
19674 Allocator* alloc,
19675 VkStructureType rootType,
19676 const VkMutableDescriptorTypeListVALVE* from,
19677 VkMutableDescriptorTypeListVALVE* to)
19678{
19679 (void)alloc;
19680 (void)rootType;
19681 *to = *from;
19682 to->pDescriptorTypes = nullptr;
19683 if (from->pDescriptorTypes)
19684 {
19685 to->pDescriptorTypes = (VkDescriptorType*)alloc->dupArray(from->pDescriptorTypes, from->descriptorTypeCount * sizeof(const VkDescriptorType));
19686 }
19687}
19688
19689void deepcopy_VkMutableDescriptorTypeCreateInfoVALVE(
19690 Allocator* alloc,
19691 VkStructureType rootType,
19692 const VkMutableDescriptorTypeCreateInfoVALVE* from,
19693 VkMutableDescriptorTypeCreateInfoVALVE* to)
19694{
19695 (void)alloc;
19696 (void)rootType;
19697 *to = *from;
19698 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19699 {
19700 rootType = from->sType;
19701 }
19702 const void* from_pNext = from;
19703 size_t pNext_size = 0u;
19704 while (!pNext_size && from_pNext)
19705 {
19706 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19707 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19708 }
19709 to->pNext = nullptr;
19710 if (pNext_size)
19711 {
19712 to->pNext = (void*)alloc->alloc(pNext_size);
19713 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19714 }
19715 if (from)
19716 {
19717 to->pMutableDescriptorTypeLists = nullptr;
19718 if (from->pMutableDescriptorTypeLists)
19719 {
19720 to->pMutableDescriptorTypeLists = (VkMutableDescriptorTypeListVALVE*)alloc->alloc(from->mutableDescriptorTypeListCount * sizeof(const VkMutableDescriptorTypeListVALVE));
19721 to->mutableDescriptorTypeListCount = from->mutableDescriptorTypeListCount;
19722 for (uint32_t i = 0; i < (uint32_t)from->mutableDescriptorTypeListCount; ++i)
19723 {
19724 deepcopy_VkMutableDescriptorTypeListVALVE(alloc, rootType, from->pMutableDescriptorTypeLists + i, (VkMutableDescriptorTypeListVALVE*)(to->pMutableDescriptorTypeLists + i));
19725 }
19726 }
19727 }
19728}
19729
19730#endif
19731#ifdef VK_EXT_vertex_input_dynamic_state
19732void deepcopy_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
19733 Allocator* alloc,
19734 VkStructureType rootType,
19735 const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* from,
19736 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* to)
19737{
19738 (void)alloc;
19739 (void)rootType;
19740 *to = *from;
19741 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19742 {
19743 rootType = from->sType;
19744 }
19745 const void* from_pNext = from;
19746 size_t pNext_size = 0u;
19747 while (!pNext_size && from_pNext)
19748 {
19749 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19750 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19751 }
19752 to->pNext = nullptr;
19753 if (pNext_size)
19754 {
19755 to->pNext = (void*)alloc->alloc(pNext_size);
19756 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19757 }
19758}
19759
19760void deepcopy_VkVertexInputBindingDescription2EXT(
19761 Allocator* alloc,
19762 VkStructureType rootType,
19763 const VkVertexInputBindingDescription2EXT* from,
19764 VkVertexInputBindingDescription2EXT* to)
19765{
19766 (void)alloc;
19767 (void)rootType;
19768 *to = *from;
19769 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19770 {
19771 rootType = from->sType;
19772 }
19773 const void* from_pNext = from;
19774 size_t pNext_size = 0u;
19775 while (!pNext_size && from_pNext)
19776 {
19777 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19778 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19779 }
19780 to->pNext = nullptr;
19781 if (pNext_size)
19782 {
19783 to->pNext = (void*)alloc->alloc(pNext_size);
19784 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19785 }
19786}
19787
19788void deepcopy_VkVertexInputAttributeDescription2EXT(
19789 Allocator* alloc,
19790 VkStructureType rootType,
19791 const VkVertexInputAttributeDescription2EXT* from,
19792 VkVertexInputAttributeDescription2EXT* to)
19793{
19794 (void)alloc;
19795 (void)rootType;
19796 *to = *from;
19797 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19798 {
19799 rootType = from->sType;
19800 }
19801 const void* from_pNext = from;
19802 size_t pNext_size = 0u;
19803 while (!pNext_size && from_pNext)
19804 {
19805 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19806 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19807 }
19808 to->pNext = nullptr;
19809 if (pNext_size)
19810 {
19811 to->pNext = (void*)alloc->alloc(pNext_size);
19812 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19813 }
19814}
19815
19816#endif
19817#ifdef VK_EXT_physical_device_drm
19818void deepcopy_VkPhysicalDeviceDrmPropertiesEXT(
19819 Allocator* alloc,
19820 VkStructureType rootType,
19821 const VkPhysicalDeviceDrmPropertiesEXT* from,
19822 VkPhysicalDeviceDrmPropertiesEXT* to)
19823{
19824 (void)alloc;
19825 (void)rootType;
19826 *to = *from;
19827 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19828 {
19829 rootType = from->sType;
19830 }
19831 const void* from_pNext = from;
19832 size_t pNext_size = 0u;
19833 while (!pNext_size && from_pNext)
19834 {
19835 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19836 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19837 }
19838 to->pNext = nullptr;
19839 if (pNext_size)
19840 {
19841 to->pNext = (void*)alloc->alloc(pNext_size);
19842 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19843 }
19844}
19845
19846#endif
19847#ifdef VK_EXT_primitive_topology_list_restart
19848void deepcopy_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
19849 Allocator* alloc,
19850 VkStructureType rootType,
19851 const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* from,
19852 VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* to)
19853{
19854 (void)alloc;
19855 (void)rootType;
19856 *to = *from;
19857 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19858 {
19859 rootType = from->sType;
19860 }
19861 const void* from_pNext = from;
19862 size_t pNext_size = 0u;
19863 while (!pNext_size && from_pNext)
19864 {
19865 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19866 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19867 }
19868 to->pNext = nullptr;
19869 if (pNext_size)
19870 {
19871 to->pNext = (void*)alloc->alloc(pNext_size);
19872 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19873 }
19874}
19875
19876#endif
19877#ifdef VK_FUCHSIA_external_memory
19878void deepcopy_VkImportMemoryZirconHandleInfoFUCHSIA(
19879 Allocator* alloc,
19880 VkStructureType rootType,
19881 const VkImportMemoryZirconHandleInfoFUCHSIA* from,
19882 VkImportMemoryZirconHandleInfoFUCHSIA* to)
19883{
19884 (void)alloc;
19885 (void)rootType;
19886 *to = *from;
19887 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19888 {
19889 rootType = from->sType;
19890 }
19891 const void* from_pNext = from;
19892 size_t pNext_size = 0u;
19893 while (!pNext_size && from_pNext)
19894 {
19895 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19896 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19897 }
19898 to->pNext = nullptr;
19899 if (pNext_size)
19900 {
19901 to->pNext = (void*)alloc->alloc(pNext_size);
19902 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19903 }
19904}
19905
19906void deepcopy_VkMemoryZirconHandlePropertiesFUCHSIA(
19907 Allocator* alloc,
19908 VkStructureType rootType,
19909 const VkMemoryZirconHandlePropertiesFUCHSIA* from,
19910 VkMemoryZirconHandlePropertiesFUCHSIA* to)
19911{
19912 (void)alloc;
19913 (void)rootType;
19914 *to = *from;
19915 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19916 {
19917 rootType = from->sType;
19918 }
19919 const void* from_pNext = from;
19920 size_t pNext_size = 0u;
19921 while (!pNext_size && from_pNext)
19922 {
19923 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19924 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19925 }
19926 to->pNext = nullptr;
19927 if (pNext_size)
19928 {
19929 to->pNext = (void*)alloc->alloc(pNext_size);
19930 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19931 }
19932}
19933
19934void deepcopy_VkMemoryGetZirconHandleInfoFUCHSIA(
19935 Allocator* alloc,
19936 VkStructureType rootType,
19937 const VkMemoryGetZirconHandleInfoFUCHSIA* from,
19938 VkMemoryGetZirconHandleInfoFUCHSIA* to)
19939{
19940 (void)alloc;
19941 (void)rootType;
19942 *to = *from;
19943 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19944 {
19945 rootType = from->sType;
19946 }
19947 const void* from_pNext = from;
19948 size_t pNext_size = 0u;
19949 while (!pNext_size && from_pNext)
19950 {
19951 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19952 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19953 }
19954 to->pNext = nullptr;
19955 if (pNext_size)
19956 {
19957 to->pNext = (void*)alloc->alloc(pNext_size);
19958 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19959 }
19960}
19961
19962#endif
19963#ifdef VK_FUCHSIA_external_semaphore
19964void deepcopy_VkImportSemaphoreZirconHandleInfoFUCHSIA(
19965 Allocator* alloc,
19966 VkStructureType rootType,
19967 const VkImportSemaphoreZirconHandleInfoFUCHSIA* from,
19968 VkImportSemaphoreZirconHandleInfoFUCHSIA* to)
19969{
19970 (void)alloc;
19971 (void)rootType;
19972 *to = *from;
19973 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
19974 {
19975 rootType = from->sType;
19976 }
19977 const void* from_pNext = from;
19978 size_t pNext_size = 0u;
19979 while (!pNext_size && from_pNext)
19980 {
19981 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
19982 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
19983 }
19984 to->pNext = nullptr;
19985 if (pNext_size)
19986 {
19987 to->pNext = (void*)alloc->alloc(pNext_size);
19988 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
19989 }
19990}
19991
19992void deepcopy_VkSemaphoreGetZirconHandleInfoFUCHSIA(
19993 Allocator* alloc,
19994 VkStructureType rootType,
19995 const VkSemaphoreGetZirconHandleInfoFUCHSIA* from,
19996 VkSemaphoreGetZirconHandleInfoFUCHSIA* to)
19997{
19998 (void)alloc;
19999 (void)rootType;
20000 *to = *from;
20001 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20002 {
20003 rootType = from->sType;
20004 }
20005 const void* from_pNext = from;
20006 size_t pNext_size = 0u;
20007 while (!pNext_size && from_pNext)
20008 {
20009 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20010 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20011 }
20012 to->pNext = nullptr;
20013 if (pNext_size)
20014 {
20015 to->pNext = (void*)alloc->alloc(pNext_size);
20016 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20017 }
20018}
20019
20020#endif
20021#ifdef VK_FUCHSIA_buffer_collection
20022void deepcopy_VkBufferCollectionCreateInfoFUCHSIA(
20023 Allocator* alloc,
20024 VkStructureType rootType,
20025 const VkBufferCollectionCreateInfoFUCHSIA* from,
20026 VkBufferCollectionCreateInfoFUCHSIA* to)
20027{
20028 (void)alloc;
20029 (void)rootType;
20030 *to = *from;
20031 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20032 {
20033 rootType = from->sType;
20034 }
20035 const void* from_pNext = from;
20036 size_t pNext_size = 0u;
20037 while (!pNext_size && from_pNext)
20038 {
20039 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20040 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20041 }
20042 to->pNext = nullptr;
20043 if (pNext_size)
20044 {
20045 to->pNext = (void*)alloc->alloc(pNext_size);
20046 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20047 }
20048}
20049
20050void deepcopy_VkImportMemoryBufferCollectionFUCHSIA(
20051 Allocator* alloc,
20052 VkStructureType rootType,
20053 const VkImportMemoryBufferCollectionFUCHSIA* from,
20054 VkImportMemoryBufferCollectionFUCHSIA* to)
20055{
20056 (void)alloc;
20057 (void)rootType;
20058 *to = *from;
20059 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20060 {
20061 rootType = from->sType;
20062 }
20063 const void* from_pNext = from;
20064 size_t pNext_size = 0u;
20065 while (!pNext_size && from_pNext)
20066 {
20067 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20068 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20069 }
20070 to->pNext = nullptr;
20071 if (pNext_size)
20072 {
20073 to->pNext = (void*)alloc->alloc(pNext_size);
20074 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20075 }
20076}
20077
20078void deepcopy_VkBufferCollectionImageCreateInfoFUCHSIA(
20079 Allocator* alloc,
20080 VkStructureType rootType,
20081 const VkBufferCollectionImageCreateInfoFUCHSIA* from,
20082 VkBufferCollectionImageCreateInfoFUCHSIA* to)
20083{
20084 (void)alloc;
20085 (void)rootType;
20086 *to = *from;
20087 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20088 {
20089 rootType = from->sType;
20090 }
20091 const void* from_pNext = from;
20092 size_t pNext_size = 0u;
20093 while (!pNext_size && from_pNext)
20094 {
20095 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20096 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20097 }
20098 to->pNext = nullptr;
20099 if (pNext_size)
20100 {
20101 to->pNext = (void*)alloc->alloc(pNext_size);
20102 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20103 }
20104}
20105
20106void deepcopy_VkBufferCollectionConstraintsInfoFUCHSIA(
20107 Allocator* alloc,
20108 VkStructureType rootType,
20109 const VkBufferCollectionConstraintsInfoFUCHSIA* from,
20110 VkBufferCollectionConstraintsInfoFUCHSIA* to)
20111{
20112 (void)alloc;
20113 (void)rootType;
20114 *to = *from;
20115 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20116 {
20117 rootType = from->sType;
20118 }
20119 const void* from_pNext = from;
20120 size_t pNext_size = 0u;
20121 while (!pNext_size && from_pNext)
20122 {
20123 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20124 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20125 }
20126 to->pNext = nullptr;
20127 if (pNext_size)
20128 {
20129 to->pNext = (void*)alloc->alloc(pNext_size);
20130 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20131 }
20132}
20133
20134void deepcopy_VkBufferConstraintsInfoFUCHSIA(
20135 Allocator* alloc,
20136 VkStructureType rootType,
20137 const VkBufferConstraintsInfoFUCHSIA* from,
20138 VkBufferConstraintsInfoFUCHSIA* to)
20139{
20140 (void)alloc;
20141 (void)rootType;
20142 *to = *from;
20143 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20144 {
20145 rootType = from->sType;
20146 }
20147 const void* from_pNext = from;
20148 size_t pNext_size = 0u;
20149 while (!pNext_size && from_pNext)
20150 {
20151 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20152 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20153 }
20154 to->pNext = nullptr;
20155 if (pNext_size)
20156 {
20157 to->pNext = (void*)alloc->alloc(pNext_size);
20158 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20159 }
20160 deepcopy_VkBufferCreateInfo(alloc, rootType, &from->createInfo, (VkBufferCreateInfo*)(&to->createInfo));
20161 deepcopy_VkBufferCollectionConstraintsInfoFUCHSIA(alloc, rootType, &from->bufferCollectionConstraints, (VkBufferCollectionConstraintsInfoFUCHSIA*)(&to->bufferCollectionConstraints));
20162}
20163
20164void deepcopy_VkBufferCollectionBufferCreateInfoFUCHSIA(
20165 Allocator* alloc,
20166 VkStructureType rootType,
20167 const VkBufferCollectionBufferCreateInfoFUCHSIA* from,
20168 VkBufferCollectionBufferCreateInfoFUCHSIA* to)
20169{
20170 (void)alloc;
20171 (void)rootType;
20172 *to = *from;
20173 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20174 {
20175 rootType = from->sType;
20176 }
20177 const void* from_pNext = from;
20178 size_t pNext_size = 0u;
20179 while (!pNext_size && from_pNext)
20180 {
20181 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20182 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20183 }
20184 to->pNext = nullptr;
20185 if (pNext_size)
20186 {
20187 to->pNext = (void*)alloc->alloc(pNext_size);
20188 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20189 }
20190}
20191
20192void deepcopy_VkSysmemColorSpaceFUCHSIA(
20193 Allocator* alloc,
20194 VkStructureType rootType,
20195 const VkSysmemColorSpaceFUCHSIA* from,
20196 VkSysmemColorSpaceFUCHSIA* to)
20197{
20198 (void)alloc;
20199 (void)rootType;
20200 *to = *from;
20201 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20202 {
20203 rootType = from->sType;
20204 }
20205 const void* from_pNext = from;
20206 size_t pNext_size = 0u;
20207 while (!pNext_size && from_pNext)
20208 {
20209 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20210 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20211 }
20212 to->pNext = nullptr;
20213 if (pNext_size)
20214 {
20215 to->pNext = (void*)alloc->alloc(pNext_size);
20216 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20217 }
20218}
20219
20220void deepcopy_VkBufferCollectionPropertiesFUCHSIA(
20221 Allocator* alloc,
20222 VkStructureType rootType,
20223 const VkBufferCollectionPropertiesFUCHSIA* from,
20224 VkBufferCollectionPropertiesFUCHSIA* to)
20225{
20226 (void)alloc;
20227 (void)rootType;
20228 *to = *from;
20229 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20230 {
20231 rootType = from->sType;
20232 }
20233 const void* from_pNext = from;
20234 size_t pNext_size = 0u;
20235 while (!pNext_size && from_pNext)
20236 {
20237 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20238 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20239 }
20240 to->pNext = nullptr;
20241 if (pNext_size)
20242 {
20243 to->pNext = (void*)alloc->alloc(pNext_size);
20244 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20245 }
20246 deepcopy_VkSysmemColorSpaceFUCHSIA(alloc, rootType, &from->sysmemColorSpaceIndex, (VkSysmemColorSpaceFUCHSIA*)(&to->sysmemColorSpaceIndex));
20247 deepcopy_VkComponentMapping(alloc, rootType, &from->samplerYcbcrConversionComponents, (VkComponentMapping*)(&to->samplerYcbcrConversionComponents));
20248}
20249
20250void deepcopy_VkImageFormatConstraintsInfoFUCHSIA(
20251 Allocator* alloc,
20252 VkStructureType rootType,
20253 const VkImageFormatConstraintsInfoFUCHSIA* from,
20254 VkImageFormatConstraintsInfoFUCHSIA* to)
20255{
20256 (void)alloc;
20257 (void)rootType;
20258 *to = *from;
20259 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20260 {
20261 rootType = from->sType;
20262 }
20263 const void* from_pNext = from;
20264 size_t pNext_size = 0u;
20265 while (!pNext_size && from_pNext)
20266 {
20267 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20268 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20269 }
20270 to->pNext = nullptr;
20271 if (pNext_size)
20272 {
20273 to->pNext = (void*)alloc->alloc(pNext_size);
20274 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20275 }
20276 deepcopy_VkImageCreateInfo(alloc, rootType, &from->imageCreateInfo, (VkImageCreateInfo*)(&to->imageCreateInfo));
20277 to->pColorSpaces = nullptr;
20278 if (from->pColorSpaces)
20279 {
20280 to->pColorSpaces = (VkSysmemColorSpaceFUCHSIA*)alloc->alloc(sizeof(const VkSysmemColorSpaceFUCHSIA));
20281 deepcopy_VkSysmemColorSpaceFUCHSIA(alloc, rootType, from->pColorSpaces, (VkSysmemColorSpaceFUCHSIA*)(to->pColorSpaces));
20282 }
20283}
20284
20285void deepcopy_VkImageConstraintsInfoFUCHSIA(
20286 Allocator* alloc,
20287 VkStructureType rootType,
20288 const VkImageConstraintsInfoFUCHSIA* from,
20289 VkImageConstraintsInfoFUCHSIA* to)
20290{
20291 (void)alloc;
20292 (void)rootType;
20293 *to = *from;
20294 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20295 {
20296 rootType = from->sType;
20297 }
20298 const void* from_pNext = from;
20299 size_t pNext_size = 0u;
20300 while (!pNext_size && from_pNext)
20301 {
20302 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20303 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20304 }
20305 to->pNext = nullptr;
20306 if (pNext_size)
20307 {
20308 to->pNext = (void*)alloc->alloc(pNext_size);
20309 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20310 }
20311 if (from)
20312 {
20313 to->pFormatConstraints = nullptr;
20314 if (from->pFormatConstraints)
20315 {
20316 to->pFormatConstraints = (VkImageFormatConstraintsInfoFUCHSIA*)alloc->alloc(from->formatConstraintsCount * sizeof(const VkImageFormatConstraintsInfoFUCHSIA));
20317 to->formatConstraintsCount = from->formatConstraintsCount;
20318 for (uint32_t i = 0; i < (uint32_t)from->formatConstraintsCount; ++i)
20319 {
20320 deepcopy_VkImageFormatConstraintsInfoFUCHSIA(alloc, rootType, from->pFormatConstraints + i, (VkImageFormatConstraintsInfoFUCHSIA*)(to->pFormatConstraints + i));
20321 }
20322 }
20323 }
20324 deepcopy_VkBufferCollectionConstraintsInfoFUCHSIA(alloc, rootType, &from->bufferCollectionConstraints, (VkBufferCollectionConstraintsInfoFUCHSIA*)(&to->bufferCollectionConstraints));
20325}
20326
20327#endif
20328#ifdef VK_HUAWEI_subpass_shading
20329void deepcopy_VkSubpassShadingPipelineCreateInfoHUAWEI(
20330 Allocator* alloc,
20331 VkStructureType rootType,
20332 const VkSubpassShadingPipelineCreateInfoHUAWEI* from,
20333 VkSubpassShadingPipelineCreateInfoHUAWEI* to)
20334{
20335 (void)alloc;
20336 (void)rootType;
20337 *to = *from;
20338 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20339 {
20340 rootType = from->sType;
20341 }
20342 const void* from_pNext = from;
20343 size_t pNext_size = 0u;
20344 while (!pNext_size && from_pNext)
20345 {
20346 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20347 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20348 }
20349 to->pNext = nullptr;
20350 if (pNext_size)
20351 {
20352 to->pNext = (void*)alloc->alloc(pNext_size);
20353 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20354 }
20355}
20356
20357void deepcopy_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(
20358 Allocator* alloc,
20359 VkStructureType rootType,
20360 const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* from,
20361 VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* to)
20362{
20363 (void)alloc;
20364 (void)rootType;
20365 *to = *from;
20366 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20367 {
20368 rootType = from->sType;
20369 }
20370 const void* from_pNext = from;
20371 size_t pNext_size = 0u;
20372 while (!pNext_size && from_pNext)
20373 {
20374 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20375 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20376 }
20377 to->pNext = nullptr;
20378 if (pNext_size)
20379 {
20380 to->pNext = (void*)alloc->alloc(pNext_size);
20381 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20382 }
20383}
20384
20385void deepcopy_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(
20386 Allocator* alloc,
20387 VkStructureType rootType,
20388 const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* from,
20389 VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* to)
20390{
20391 (void)alloc;
20392 (void)rootType;
20393 *to = *from;
20394 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20395 {
20396 rootType = from->sType;
20397 }
20398 const void* from_pNext = from;
20399 size_t pNext_size = 0u;
20400 while (!pNext_size && from_pNext)
20401 {
20402 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20403 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20404 }
20405 to->pNext = nullptr;
20406 if (pNext_size)
20407 {
20408 to->pNext = (void*)alloc->alloc(pNext_size);
20409 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20410 }
20411}
20412
20413#endif
20414#ifdef VK_HUAWEI_invocation_mask
20415void deepcopy_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(
20416 Allocator* alloc,
20417 VkStructureType rootType,
20418 const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* from,
20419 VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* to)
20420{
20421 (void)alloc;
20422 (void)rootType;
20423 *to = *from;
20424 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20425 {
20426 rootType = from->sType;
20427 }
20428 const void* from_pNext = from;
20429 size_t pNext_size = 0u;
20430 while (!pNext_size && from_pNext)
20431 {
20432 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20433 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20434 }
20435 to->pNext = nullptr;
20436 if (pNext_size)
20437 {
20438 to->pNext = (void*)alloc->alloc(pNext_size);
20439 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20440 }
20441}
20442
20443#endif
20444#ifdef VK_NV_external_memory_rdma
20445void deepcopy_VkMemoryGetRemoteAddressInfoNV(
20446 Allocator* alloc,
20447 VkStructureType rootType,
20448 const VkMemoryGetRemoteAddressInfoNV* from,
20449 VkMemoryGetRemoteAddressInfoNV* to)
20450{
20451 (void)alloc;
20452 (void)rootType;
20453 *to = *from;
20454 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20455 {
20456 rootType = from->sType;
20457 }
20458 const void* from_pNext = from;
20459 size_t pNext_size = 0u;
20460 while (!pNext_size && from_pNext)
20461 {
20462 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20463 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20464 }
20465 to->pNext = nullptr;
20466 if (pNext_size)
20467 {
20468 to->pNext = (void*)alloc->alloc(pNext_size);
20469 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20470 }
20471}
20472
20473void deepcopy_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(
20474 Allocator* alloc,
20475 VkStructureType rootType,
20476 const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* from,
20477 VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* to)
20478{
20479 (void)alloc;
20480 (void)rootType;
20481 *to = *from;
20482 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20483 {
20484 rootType = from->sType;
20485 }
20486 const void* from_pNext = from;
20487 size_t pNext_size = 0u;
20488 while (!pNext_size && from_pNext)
20489 {
20490 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20491 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20492 }
20493 to->pNext = nullptr;
20494 if (pNext_size)
20495 {
20496 to->pNext = (void*)alloc->alloc(pNext_size);
20497 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20498 }
20499}
20500
20501#endif
20502#ifdef VK_EXT_extended_dynamic_state2
20503void deepcopy_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
20504 Allocator* alloc,
20505 VkStructureType rootType,
20506 const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* from,
20507 VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* to)
20508{
20509 (void)alloc;
20510 (void)rootType;
20511 *to = *from;
20512 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20513 {
20514 rootType = from->sType;
20515 }
20516 const void* from_pNext = from;
20517 size_t pNext_size = 0u;
20518 while (!pNext_size && from_pNext)
20519 {
20520 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20521 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20522 }
20523 to->pNext = nullptr;
20524 if (pNext_size)
20525 {
20526 to->pNext = (void*)alloc->alloc(pNext_size);
20527 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20528 }
20529}
20530
20531#endif
20532#ifdef VK_QNX_screen_surface
20533void deepcopy_VkScreenSurfaceCreateInfoQNX(
20534 Allocator* alloc,
20535 VkStructureType rootType,
20536 const VkScreenSurfaceCreateInfoQNX* from,
20537 VkScreenSurfaceCreateInfoQNX* to)
20538{
20539 (void)alloc;
20540 (void)rootType;
20541 *to = *from;
20542 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20543 {
20544 rootType = from->sType;
20545 }
20546 const void* from_pNext = from;
20547 size_t pNext_size = 0u;
20548 while (!pNext_size && from_pNext)
20549 {
20550 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20551 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20552 }
20553 to->pNext = nullptr;
20554 if (pNext_size)
20555 {
20556 to->pNext = (void*)alloc->alloc(pNext_size);
20557 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20558 }
20559 to->context = nullptr;
20560 if (from->context)
20561 {
20562 to->context = (_screen_context*)alloc->dupArray(from->context, sizeof(_screen_context));
20563 }
20564 to->window = nullptr;
20565 if (from->window)
20566 {
20567 to->window = (_screen_window*)alloc->dupArray(from->window, sizeof(_screen_window));
20568 }
20569}
20570
20571#endif
20572#ifdef VK_EXT_color_write_enable
20573void deepcopy_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
20574 Allocator* alloc,
20575 VkStructureType rootType,
20576 const VkPhysicalDeviceColorWriteEnableFeaturesEXT* from,
20577 VkPhysicalDeviceColorWriteEnableFeaturesEXT* to)
20578{
20579 (void)alloc;
20580 (void)rootType;
20581 *to = *from;
20582 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20583 {
20584 rootType = from->sType;
20585 }
20586 const void* from_pNext = from;
20587 size_t pNext_size = 0u;
20588 while (!pNext_size && from_pNext)
20589 {
20590 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20591 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20592 }
20593 to->pNext = nullptr;
20594 if (pNext_size)
20595 {
20596 to->pNext = (void*)alloc->alloc(pNext_size);
20597 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20598 }
20599}
20600
20601void deepcopy_VkPipelineColorWriteCreateInfoEXT(
20602 Allocator* alloc,
20603 VkStructureType rootType,
20604 const VkPipelineColorWriteCreateInfoEXT* from,
20605 VkPipelineColorWriteCreateInfoEXT* to)
20606{
20607 (void)alloc;
20608 (void)rootType;
20609 *to = *from;
20610 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20611 {
20612 rootType = from->sType;
20613 }
20614 const void* from_pNext = from;
20615 size_t pNext_size = 0u;
20616 while (!pNext_size && from_pNext)
20617 {
20618 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20619 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20620 }
20621 to->pNext = nullptr;
20622 if (pNext_size)
20623 {
20624 to->pNext = (void*)alloc->alloc(pNext_size);
20625 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20626 }
20627 to->pColorWriteEnables = nullptr;
20628 if (from->pColorWriteEnables)
20629 {
20630 to->pColorWriteEnables = (VkBool32*)alloc->dupArray(from->pColorWriteEnables, from->attachmentCount * sizeof(const VkBool32));
20631 }
20632}
20633
20634#endif
Yilong Li71c43c52021-02-10 02:50:43 -080020635#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070020636void deepcopy_VkImportColorBufferGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070020637 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070020638 VkStructureType rootType,
20639 const VkImportColorBufferGOOGLE* from,
20640 VkImportColorBufferGOOGLE* to)
20641{
Yilong Li422b0582021-04-30 13:09:43 -070020642 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070020643 (void)rootType;
20644 *to = *from;
20645 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20646 {
20647 rootType = from->sType;
20648 }
20649 const void* from_pNext = from;
20650 size_t pNext_size = 0u;
20651 while (!pNext_size && from_pNext)
20652 {
20653 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20654 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20655 }
20656 to->pNext = nullptr;
20657 if (pNext_size)
20658 {
Yilong Li422b0582021-04-30 13:09:43 -070020659 to->pNext = (void*)alloc->alloc(pNext_size);
20660 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Li48081632021-04-13 22:38:10 -070020661 }
20662}
20663
20664void deepcopy_VkImportBufferGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070020665 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070020666 VkStructureType rootType,
20667 const VkImportBufferGOOGLE* from,
20668 VkImportBufferGOOGLE* to)
20669{
Yilong Li422b0582021-04-30 13:09:43 -070020670 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070020671 (void)rootType;
20672 *to = *from;
20673 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20674 {
20675 rootType = from->sType;
20676 }
20677 const void* from_pNext = from;
20678 size_t pNext_size = 0u;
20679 while (!pNext_size && from_pNext)
20680 {
20681 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20682 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20683 }
20684 to->pNext = nullptr;
20685 if (pNext_size)
20686 {
Yilong Li422b0582021-04-30 13:09:43 -070020687 to->pNext = (void*)alloc->alloc(pNext_size);
20688 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Li48081632021-04-13 22:38:10 -070020689 }
20690}
20691
20692void deepcopy_VkImportPhysicalAddressGOOGLE(
Yilong Li422b0582021-04-30 13:09:43 -070020693 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070020694 VkStructureType rootType,
20695 const VkImportPhysicalAddressGOOGLE* from,
20696 VkImportPhysicalAddressGOOGLE* to)
20697{
Yilong Li422b0582021-04-30 13:09:43 -070020698 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070020699 (void)rootType;
20700 *to = *from;
20701 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20702 {
20703 rootType = from->sType;
20704 }
20705 const void* from_pNext = from;
20706 size_t pNext_size = 0u;
20707 while (!pNext_size && from_pNext)
20708 {
20709 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20710 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20711 }
20712 to->pNext = nullptr;
20713 if (pNext_size)
20714 {
Yilong Li422b0582021-04-30 13:09:43 -070020715 to->pNext = (void*)alloc->alloc(pNext_size);
20716 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Li48081632021-04-13 22:38:10 -070020717 }
20718}
20719
Lingfeng Yangded34672021-01-22 23:17:47 -080020720#endif
Yilong Li353409a2022-01-04 02:37:56 -080020721#ifdef VK_EXT_global_priority_query
20722void deepcopy_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(
20723 Allocator* alloc,
20724 VkStructureType rootType,
20725 const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* from,
20726 VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* to)
20727{
20728 (void)alloc;
20729 (void)rootType;
20730 *to = *from;
20731 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20732 {
20733 rootType = from->sType;
20734 }
20735 const void* from_pNext = from;
20736 size_t pNext_size = 0u;
20737 while (!pNext_size && from_pNext)
20738 {
20739 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20740 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20741 }
20742 to->pNext = nullptr;
20743 if (pNext_size)
20744 {
20745 to->pNext = (void*)alloc->alloc(pNext_size);
20746 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20747 }
20748}
20749
20750void deepcopy_VkQueueFamilyGlobalPriorityPropertiesEXT(
20751 Allocator* alloc,
20752 VkStructureType rootType,
20753 const VkQueueFamilyGlobalPriorityPropertiesEXT* from,
20754 VkQueueFamilyGlobalPriorityPropertiesEXT* to)
20755{
20756 (void)alloc;
20757 (void)rootType;
20758 *to = *from;
20759 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20760 {
20761 rootType = from->sType;
20762 }
20763 const void* from_pNext = from;
20764 size_t pNext_size = 0u;
20765 while (!pNext_size && from_pNext)
20766 {
20767 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20768 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20769 }
20770 to->pNext = nullptr;
20771 if (pNext_size)
20772 {
20773 to->pNext = (void*)alloc->alloc(pNext_size);
20774 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20775 }
20776 memcpy(to->priorities, from->priorities, VK_MAX_GLOBAL_PRIORITY_SIZE_EXT * sizeof(VkQueueGlobalPriorityEXT));
20777}
20778
20779#endif
20780#ifdef VK_EXT_multi_draw
20781void deepcopy_VkPhysicalDeviceMultiDrawFeaturesEXT(
20782 Allocator* alloc,
20783 VkStructureType rootType,
20784 const VkPhysicalDeviceMultiDrawFeaturesEXT* from,
20785 VkPhysicalDeviceMultiDrawFeaturesEXT* to)
20786{
20787 (void)alloc;
20788 (void)rootType;
20789 *to = *from;
20790 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20791 {
20792 rootType = from->sType;
20793 }
20794 const void* from_pNext = from;
20795 size_t pNext_size = 0u;
20796 while (!pNext_size && from_pNext)
20797 {
20798 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20799 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20800 }
20801 to->pNext = nullptr;
20802 if (pNext_size)
20803 {
20804 to->pNext = (void*)alloc->alloc(pNext_size);
20805 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20806 }
20807}
20808
20809void deepcopy_VkPhysicalDeviceMultiDrawPropertiesEXT(
20810 Allocator* alloc,
20811 VkStructureType rootType,
20812 const VkPhysicalDeviceMultiDrawPropertiesEXT* from,
20813 VkPhysicalDeviceMultiDrawPropertiesEXT* to)
20814{
20815 (void)alloc;
20816 (void)rootType;
20817 *to = *from;
20818 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20819 {
20820 rootType = from->sType;
20821 }
20822 const void* from_pNext = from;
20823 size_t pNext_size = 0u;
20824 while (!pNext_size && from_pNext)
20825 {
20826 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20827 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20828 }
20829 to->pNext = nullptr;
20830 if (pNext_size)
20831 {
20832 to->pNext = (void*)alloc->alloc(pNext_size);
20833 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20834 }
20835}
20836
20837void deepcopy_VkMultiDrawInfoEXT(
20838 Allocator* alloc,
20839 VkStructureType rootType,
20840 const VkMultiDrawInfoEXT* from,
20841 VkMultiDrawInfoEXT* to)
20842{
20843 (void)alloc;
20844 (void)rootType;
20845 *to = *from;
20846}
20847
20848void deepcopy_VkMultiDrawIndexedInfoEXT(
20849 Allocator* alloc,
20850 VkStructureType rootType,
20851 const VkMultiDrawIndexedInfoEXT* from,
20852 VkMultiDrawIndexedInfoEXT* to)
20853{
20854 (void)alloc;
20855 (void)rootType;
20856 *to = *from;
20857}
20858
20859#endif
20860#ifdef VK_EXT_load_store_op_none
20861#endif
20862#ifdef VK_EXT_border_color_swizzle
20863void deepcopy_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(
20864 Allocator* alloc,
20865 VkStructureType rootType,
20866 const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* from,
20867 VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* to)
20868{
20869 (void)alloc;
20870 (void)rootType;
20871 *to = *from;
20872 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20873 {
20874 rootType = from->sType;
20875 }
20876 const void* from_pNext = from;
20877 size_t pNext_size = 0u;
20878 while (!pNext_size && from_pNext)
20879 {
20880 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20881 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20882 }
20883 to->pNext = nullptr;
20884 if (pNext_size)
20885 {
20886 to->pNext = (void*)alloc->alloc(pNext_size);
20887 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20888 }
20889}
20890
20891void deepcopy_VkSamplerBorderColorComponentMappingCreateInfoEXT(
20892 Allocator* alloc,
20893 VkStructureType rootType,
20894 const VkSamplerBorderColorComponentMappingCreateInfoEXT* from,
20895 VkSamplerBorderColorComponentMappingCreateInfoEXT* to)
20896{
20897 (void)alloc;
20898 (void)rootType;
20899 *to = *from;
20900 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20901 {
20902 rootType = from->sType;
20903 }
20904 const void* from_pNext = from;
20905 size_t pNext_size = 0u;
20906 while (!pNext_size && from_pNext)
20907 {
20908 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20909 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20910 }
20911 to->pNext = nullptr;
20912 if (pNext_size)
20913 {
20914 to->pNext = (void*)alloc->alloc(pNext_size);
20915 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20916 }
20917 deepcopy_VkComponentMapping(alloc, rootType, &from->components, (VkComponentMapping*)(&to->components));
20918}
20919
20920#endif
20921#ifdef VK_EXT_pageable_device_local_memory
20922void deepcopy_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
20923 Allocator* alloc,
20924 VkStructureType rootType,
20925 const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* from,
20926 VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* to)
20927{
20928 (void)alloc;
20929 (void)rootType;
20930 *to = *from;
20931 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20932 {
20933 rootType = from->sType;
20934 }
20935 const void* from_pNext = from;
20936 size_t pNext_size = 0u;
20937 while (!pNext_size && from_pNext)
20938 {
20939 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
20940 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
20941 }
20942 to->pNext = nullptr;
20943 if (pNext_size)
20944 {
20945 to->pNext = (void*)alloc->alloc(pNext_size);
20946 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
20947 }
20948}
20949
20950#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080020951#ifdef VK_KHR_acceleration_structure
20952void deepcopy_VkDeviceOrHostAddressKHR(
Yilong Li422b0582021-04-30 13:09:43 -070020953 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070020954 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080020955 const VkDeviceOrHostAddressKHR* from,
20956 VkDeviceOrHostAddressKHR* to)
20957{
Yilong Li422b0582021-04-30 13:09:43 -070020958 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070020959 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080020960 *to = *from;
20961 to->hostAddress = nullptr;
20962 if (from->hostAddress)
20963 {
Yilong Li422b0582021-04-30 13:09:43 -070020964 to->hostAddress = (void*)alloc->dupArray(from->hostAddress, sizeof(uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080020965 }
20966}
20967
Yilong Lia8d45f12021-02-07 02:30:21 -080020968void deepcopy_VkAccelerationStructureBuildRangeInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070020969 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070020970 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080020971 const VkAccelerationStructureBuildRangeInfoKHR* from,
20972 VkAccelerationStructureBuildRangeInfoKHR* to)
20973{
Yilong Li422b0582021-04-30 13:09:43 -070020974 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070020975 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080020976 *to = *from;
20977}
20978
20979void deepcopy_VkAccelerationStructureGeometryTrianglesDataKHR(
Yilong Li422b0582021-04-30 13:09:43 -070020980 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070020981 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080020982 const VkAccelerationStructureGeometryTrianglesDataKHR* from,
20983 VkAccelerationStructureGeometryTrianglesDataKHR* to)
20984{
Yilong Li422b0582021-04-30 13:09:43 -070020985 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070020986 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080020987 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070020988 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
20989 {
20990 rootType = from->sType;
20991 }
Yilong Li04218f72021-02-19 01:31:17 -080020992 const void* from_pNext = from;
20993 size_t pNext_size = 0u;
20994 while (!pNext_size && from_pNext)
20995 {
20996 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070020997 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080020998 }
Yilong Lia8d45f12021-02-07 02:30:21 -080020999 to->pNext = nullptr;
21000 if (pNext_size)
21001 {
Yilong Li324fa652021-12-29 17:00:42 -080021002 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021003 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021004 }
Yilong Li422b0582021-04-30 13:09:43 -070021005 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->vertexData, (VkDeviceOrHostAddressConstKHR*)(&to->vertexData));
21006 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->indexData, (VkDeviceOrHostAddressConstKHR*)(&to->indexData));
21007 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->transformData, (VkDeviceOrHostAddressConstKHR*)(&to->transformData));
Yilong Lia8d45f12021-02-07 02:30:21 -080021008}
21009
21010void deepcopy_VkAccelerationStructureGeometryAabbsDataKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021011 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021012 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021013 const VkAccelerationStructureGeometryAabbsDataKHR* from,
21014 VkAccelerationStructureGeometryAabbsDataKHR* to)
21015{
Yilong Li422b0582021-04-30 13:09:43 -070021016 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021017 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021018 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021019 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21020 {
21021 rootType = from->sType;
21022 }
Yilong Li04218f72021-02-19 01:31:17 -080021023 const void* from_pNext = from;
21024 size_t pNext_size = 0u;
21025 while (!pNext_size && from_pNext)
21026 {
21027 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021028 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021029 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021030 to->pNext = nullptr;
21031 if (pNext_size)
21032 {
Yilong Li324fa652021-12-29 17:00:42 -080021033 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021034 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021035 }
Yilong Li422b0582021-04-30 13:09:43 -070021036 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->data, (VkDeviceOrHostAddressConstKHR*)(&to->data));
Yilong Lia8d45f12021-02-07 02:30:21 -080021037}
21038
21039void deepcopy_VkAccelerationStructureGeometryInstancesDataKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021040 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021041 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021042 const VkAccelerationStructureGeometryInstancesDataKHR* from,
21043 VkAccelerationStructureGeometryInstancesDataKHR* to)
21044{
Yilong Li422b0582021-04-30 13:09:43 -070021045 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021046 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021047 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021048 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21049 {
21050 rootType = from->sType;
21051 }
Yilong Li04218f72021-02-19 01:31:17 -080021052 const void* from_pNext = from;
21053 size_t pNext_size = 0u;
21054 while (!pNext_size && from_pNext)
21055 {
21056 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021057 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021058 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021059 to->pNext = nullptr;
21060 if (pNext_size)
21061 {
Yilong Li324fa652021-12-29 17:00:42 -080021062 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021063 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021064 }
Yilong Li422b0582021-04-30 13:09:43 -070021065 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->data, (VkDeviceOrHostAddressConstKHR*)(&to->data));
Yilong Lia8d45f12021-02-07 02:30:21 -080021066}
21067
21068void deepcopy_VkAccelerationStructureGeometryDataKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021069 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021070 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021071 const VkAccelerationStructureGeometryDataKHR* from,
21072 VkAccelerationStructureGeometryDataKHR* to)
21073{
Yilong Li422b0582021-04-30 13:09:43 -070021074 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021075 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021076 *to = *from;
Yilong Li422b0582021-04-30 13:09:43 -070021077 deepcopy_VkAccelerationStructureGeometryTrianglesDataKHR(alloc, rootType, &from->triangles, (VkAccelerationStructureGeometryTrianglesDataKHR*)(&to->triangles));
21078 deepcopy_VkAccelerationStructureGeometryAabbsDataKHR(alloc, rootType, &from->aabbs, (VkAccelerationStructureGeometryAabbsDataKHR*)(&to->aabbs));
21079 deepcopy_VkAccelerationStructureGeometryInstancesDataKHR(alloc, rootType, &from->instances, (VkAccelerationStructureGeometryInstancesDataKHR*)(&to->instances));
Yilong Lia8d45f12021-02-07 02:30:21 -080021080}
21081
21082void deepcopy_VkAccelerationStructureGeometryKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021083 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021084 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021085 const VkAccelerationStructureGeometryKHR* from,
21086 VkAccelerationStructureGeometryKHR* to)
21087{
Yilong Li422b0582021-04-30 13:09:43 -070021088 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021089 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021090 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021091 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21092 {
21093 rootType = from->sType;
21094 }
Yilong Li04218f72021-02-19 01:31:17 -080021095 const void* from_pNext = from;
21096 size_t pNext_size = 0u;
21097 while (!pNext_size && from_pNext)
21098 {
21099 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021100 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021101 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021102 to->pNext = nullptr;
21103 if (pNext_size)
21104 {
Yilong Li324fa652021-12-29 17:00:42 -080021105 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021106 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021107 }
Yilong Li422b0582021-04-30 13:09:43 -070021108 deepcopy_VkAccelerationStructureGeometryDataKHR(alloc, rootType, &from->geometry, (VkAccelerationStructureGeometryDataKHR*)(&to->geometry));
Yilong Lia8d45f12021-02-07 02:30:21 -080021109}
21110
21111void deepcopy_VkAccelerationStructureBuildGeometryInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021112 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021113 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021114 const VkAccelerationStructureBuildGeometryInfoKHR* from,
21115 VkAccelerationStructureBuildGeometryInfoKHR* to)
21116{
Yilong Li422b0582021-04-30 13:09:43 -070021117 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021118 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021119 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021120 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21121 {
21122 rootType = from->sType;
21123 }
Yilong Li04218f72021-02-19 01:31:17 -080021124 const void* from_pNext = from;
21125 size_t pNext_size = 0u;
21126 while (!pNext_size && from_pNext)
21127 {
21128 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021129 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021130 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021131 to->pNext = nullptr;
21132 if (pNext_size)
21133 {
Yilong Li324fa652021-12-29 17:00:42 -080021134 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021135 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021136 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080021137 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080021138 {
Yilong Libd10ec92021-02-10 13:24:27 -080021139 to->pGeometries = nullptr;
21140 if (from->pGeometries)
Yilong Lia8d45f12021-02-07 02:30:21 -080021141 {
Yilong Li422b0582021-04-30 13:09:43 -070021142 to->pGeometries = (VkAccelerationStructureGeometryKHR*)alloc->alloc(from->geometryCount * sizeof(const VkAccelerationStructureGeometryKHR));
Yilong Libd10ec92021-02-10 13:24:27 -080021143 to->geometryCount = from->geometryCount;
21144 for (uint32_t i = 0; i < (uint32_t)from->geometryCount; ++i)
21145 {
Yilong Li422b0582021-04-30 13:09:43 -070021146 deepcopy_VkAccelerationStructureGeometryKHR(alloc, rootType, from->pGeometries + i, (VkAccelerationStructureGeometryKHR*)(to->pGeometries + i));
Yilong Libd10ec92021-02-10 13:24:27 -080021147 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021148 }
21149 }
Yilong Li422b0582021-04-30 13:09:43 -070021150 deepcopy_VkDeviceOrHostAddressKHR(alloc, rootType, &from->scratchData, (VkDeviceOrHostAddressKHR*)(&to->scratchData));
Yilong Lia8d45f12021-02-07 02:30:21 -080021151}
21152
21153void deepcopy_VkAccelerationStructureCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021154 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021155 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021156 const VkAccelerationStructureCreateInfoKHR* from,
21157 VkAccelerationStructureCreateInfoKHR* to)
21158{
Yilong Li422b0582021-04-30 13:09:43 -070021159 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021160 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021161 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021162 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21163 {
21164 rootType = from->sType;
21165 }
Yilong Li04218f72021-02-19 01:31:17 -080021166 const void* from_pNext = from;
21167 size_t pNext_size = 0u;
21168 while (!pNext_size && from_pNext)
21169 {
21170 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021171 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021172 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021173 to->pNext = nullptr;
21174 if (pNext_size)
21175 {
Yilong Li324fa652021-12-29 17:00:42 -080021176 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021177 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021178 }
21179}
21180
21181void deepcopy_VkWriteDescriptorSetAccelerationStructureKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021182 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021183 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021184 const VkWriteDescriptorSetAccelerationStructureKHR* from,
21185 VkWriteDescriptorSetAccelerationStructureKHR* to)
21186{
Yilong Li422b0582021-04-30 13:09:43 -070021187 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021188 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021189 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021190 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21191 {
21192 rootType = from->sType;
21193 }
Yilong Li04218f72021-02-19 01:31:17 -080021194 const void* from_pNext = from;
21195 size_t pNext_size = 0u;
21196 while (!pNext_size && from_pNext)
21197 {
21198 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021199 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021200 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021201 to->pNext = nullptr;
21202 if (pNext_size)
21203 {
Yilong Li324fa652021-12-29 17:00:42 -080021204 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021205 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021206 }
21207 to->pAccelerationStructures = nullptr;
21208 if (from->pAccelerationStructures)
21209 {
Yilong Li422b0582021-04-30 13:09:43 -070021210 to->pAccelerationStructures = (VkAccelerationStructureKHR*)alloc->dupArray(from->pAccelerationStructures, from->accelerationStructureCount * sizeof(const VkAccelerationStructureKHR));
Yilong Lia8d45f12021-02-07 02:30:21 -080021211 }
21212}
21213
21214void deepcopy_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021215 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021216 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021217 const VkPhysicalDeviceAccelerationStructureFeaturesKHR* from,
21218 VkPhysicalDeviceAccelerationStructureFeaturesKHR* to)
21219{
Yilong Li422b0582021-04-30 13:09:43 -070021220 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021221 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021222 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021223 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21224 {
21225 rootType = from->sType;
21226 }
Yilong Li04218f72021-02-19 01:31:17 -080021227 const void* from_pNext = from;
21228 size_t pNext_size = 0u;
21229 while (!pNext_size && from_pNext)
21230 {
21231 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021232 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021233 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021234 to->pNext = nullptr;
21235 if (pNext_size)
21236 {
Yilong Li422b0582021-04-30 13:09:43 -070021237 to->pNext = (void*)alloc->alloc(pNext_size);
21238 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021239 }
21240}
21241
21242void deepcopy_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021243 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021244 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021245 const VkPhysicalDeviceAccelerationStructurePropertiesKHR* from,
21246 VkPhysicalDeviceAccelerationStructurePropertiesKHR* to)
21247{
Yilong Li422b0582021-04-30 13:09:43 -070021248 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021249 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021250 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021251 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21252 {
21253 rootType = from->sType;
21254 }
Yilong Li04218f72021-02-19 01:31:17 -080021255 const void* from_pNext = from;
21256 size_t pNext_size = 0u;
21257 while (!pNext_size && from_pNext)
21258 {
21259 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021260 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021261 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021262 to->pNext = nullptr;
21263 if (pNext_size)
21264 {
Yilong Li422b0582021-04-30 13:09:43 -070021265 to->pNext = (void*)alloc->alloc(pNext_size);
21266 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021267 }
21268}
21269
21270void deepcopy_VkAccelerationStructureDeviceAddressInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021271 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021272 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021273 const VkAccelerationStructureDeviceAddressInfoKHR* from,
21274 VkAccelerationStructureDeviceAddressInfoKHR* to)
21275{
Yilong Li422b0582021-04-30 13:09:43 -070021276 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021277 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021278 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021279 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21280 {
21281 rootType = from->sType;
21282 }
Yilong Li04218f72021-02-19 01:31:17 -080021283 const void* from_pNext = from;
21284 size_t pNext_size = 0u;
21285 while (!pNext_size && from_pNext)
21286 {
21287 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021288 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021289 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021290 to->pNext = nullptr;
21291 if (pNext_size)
21292 {
Yilong Li324fa652021-12-29 17:00:42 -080021293 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021294 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021295 }
21296}
21297
21298void deepcopy_VkAccelerationStructureVersionInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021299 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021300 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021301 const VkAccelerationStructureVersionInfoKHR* from,
21302 VkAccelerationStructureVersionInfoKHR* to)
21303{
Yilong Li422b0582021-04-30 13:09:43 -070021304 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021305 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021306 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021307 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21308 {
21309 rootType = from->sType;
21310 }
Yilong Li04218f72021-02-19 01:31:17 -080021311 const void* from_pNext = from;
21312 size_t pNext_size = 0u;
21313 while (!pNext_size && from_pNext)
21314 {
21315 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021316 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021317 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021318 to->pNext = nullptr;
21319 if (pNext_size)
21320 {
Yilong Li324fa652021-12-29 17:00:42 -080021321 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021322 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021323 }
21324 to->pVersionData = nullptr;
21325 if (from->pVersionData)
21326 {
Yilong Li422b0582021-04-30 13:09:43 -070021327 to->pVersionData = (uint8_t*)alloc->dupArray(from->pVersionData, 2*VK_UUID_SIZE * sizeof(const uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080021328 }
21329}
21330
21331void deepcopy_VkCopyAccelerationStructureToMemoryInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021332 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021333 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021334 const VkCopyAccelerationStructureToMemoryInfoKHR* from,
21335 VkCopyAccelerationStructureToMemoryInfoKHR* to)
21336{
Yilong Li422b0582021-04-30 13:09:43 -070021337 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021338 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021339 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021340 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21341 {
21342 rootType = from->sType;
21343 }
Yilong Li04218f72021-02-19 01:31:17 -080021344 const void* from_pNext = from;
21345 size_t pNext_size = 0u;
21346 while (!pNext_size && from_pNext)
21347 {
21348 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021349 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021350 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021351 to->pNext = nullptr;
21352 if (pNext_size)
21353 {
Yilong Li324fa652021-12-29 17:00:42 -080021354 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021355 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021356 }
Yilong Li422b0582021-04-30 13:09:43 -070021357 deepcopy_VkDeviceOrHostAddressKHR(alloc, rootType, &from->dst, (VkDeviceOrHostAddressKHR*)(&to->dst));
Yilong Lia8d45f12021-02-07 02:30:21 -080021358}
21359
21360void deepcopy_VkCopyMemoryToAccelerationStructureInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021361 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021362 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021363 const VkCopyMemoryToAccelerationStructureInfoKHR* from,
21364 VkCopyMemoryToAccelerationStructureInfoKHR* to)
21365{
Yilong Li422b0582021-04-30 13:09:43 -070021366 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021367 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021368 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021369 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21370 {
21371 rootType = from->sType;
21372 }
Yilong Li04218f72021-02-19 01:31:17 -080021373 const void* from_pNext = from;
21374 size_t pNext_size = 0u;
21375 while (!pNext_size && from_pNext)
21376 {
21377 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021378 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021379 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021380 to->pNext = nullptr;
21381 if (pNext_size)
21382 {
Yilong Li324fa652021-12-29 17:00:42 -080021383 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021384 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021385 }
Yilong Li422b0582021-04-30 13:09:43 -070021386 deepcopy_VkDeviceOrHostAddressConstKHR(alloc, rootType, &from->src, (VkDeviceOrHostAddressConstKHR*)(&to->src));
Yilong Lia8d45f12021-02-07 02:30:21 -080021387}
21388
21389void deepcopy_VkCopyAccelerationStructureInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021390 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021391 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021392 const VkCopyAccelerationStructureInfoKHR* from,
21393 VkCopyAccelerationStructureInfoKHR* to)
21394{
Yilong Li422b0582021-04-30 13:09:43 -070021395 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021396 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021397 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021398 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21399 {
21400 rootType = from->sType;
21401 }
Yilong Li04218f72021-02-19 01:31:17 -080021402 const void* from_pNext = from;
21403 size_t pNext_size = 0u;
21404 while (!pNext_size && from_pNext)
21405 {
21406 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021407 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021408 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021409 to->pNext = nullptr;
21410 if (pNext_size)
21411 {
Yilong Li324fa652021-12-29 17:00:42 -080021412 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021413 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021414 }
21415}
21416
21417void deepcopy_VkAccelerationStructureBuildSizesInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021418 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021419 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021420 const VkAccelerationStructureBuildSizesInfoKHR* from,
21421 VkAccelerationStructureBuildSizesInfoKHR* to)
21422{
Yilong Li422b0582021-04-30 13:09:43 -070021423 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021424 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021425 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021426 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21427 {
21428 rootType = from->sType;
21429 }
Yilong Li04218f72021-02-19 01:31:17 -080021430 const void* from_pNext = from;
21431 size_t pNext_size = 0u;
21432 while (!pNext_size && from_pNext)
21433 {
21434 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021435 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021436 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021437 to->pNext = nullptr;
21438 if (pNext_size)
21439 {
Yilong Li324fa652021-12-29 17:00:42 -080021440 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021441 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021442 }
21443}
21444
21445#endif
21446#ifdef VK_KHR_ray_tracing_pipeline
21447void deepcopy_VkRayTracingShaderGroupCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021448 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021449 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021450 const VkRayTracingShaderGroupCreateInfoKHR* from,
21451 VkRayTracingShaderGroupCreateInfoKHR* to)
21452{
Yilong Li422b0582021-04-30 13:09:43 -070021453 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021454 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021455 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021456 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21457 {
21458 rootType = from->sType;
21459 }
Yilong Li04218f72021-02-19 01:31:17 -080021460 const void* from_pNext = from;
21461 size_t pNext_size = 0u;
21462 while (!pNext_size && from_pNext)
21463 {
21464 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021465 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021466 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021467 to->pNext = nullptr;
21468 if (pNext_size)
21469 {
Yilong Li324fa652021-12-29 17:00:42 -080021470 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021471 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021472 }
21473 to->pShaderGroupCaptureReplayHandle = nullptr;
21474 if (from->pShaderGroupCaptureReplayHandle)
21475 {
Yilong Li422b0582021-04-30 13:09:43 -070021476 to->pShaderGroupCaptureReplayHandle = (void*)alloc->dupArray(from->pShaderGroupCaptureReplayHandle, sizeof(const uint8_t));
Yilong Lia8d45f12021-02-07 02:30:21 -080021477 }
21478}
21479
21480void deepcopy_VkRayTracingPipelineInterfaceCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021481 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021482 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021483 const VkRayTracingPipelineInterfaceCreateInfoKHR* from,
21484 VkRayTracingPipelineInterfaceCreateInfoKHR* to)
21485{
Yilong Li422b0582021-04-30 13:09:43 -070021486 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021487 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021488 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021489 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21490 {
21491 rootType = from->sType;
21492 }
Yilong Li04218f72021-02-19 01:31:17 -080021493 const void* from_pNext = from;
21494 size_t pNext_size = 0u;
21495 while (!pNext_size && from_pNext)
21496 {
21497 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021498 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021499 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021500 to->pNext = nullptr;
21501 if (pNext_size)
21502 {
Yilong Li324fa652021-12-29 17:00:42 -080021503 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021504 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021505 }
21506}
21507
21508void deepcopy_VkRayTracingPipelineCreateInfoKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021509 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021510 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021511 const VkRayTracingPipelineCreateInfoKHR* from,
21512 VkRayTracingPipelineCreateInfoKHR* to)
21513{
Yilong Li422b0582021-04-30 13:09:43 -070021514 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021515 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021516 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021517 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21518 {
21519 rootType = from->sType;
21520 }
Yilong Li04218f72021-02-19 01:31:17 -080021521 const void* from_pNext = from;
21522 size_t pNext_size = 0u;
21523 while (!pNext_size && from_pNext)
21524 {
21525 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021526 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021527 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021528 to->pNext = nullptr;
21529 if (pNext_size)
21530 {
Yilong Li324fa652021-12-29 17:00:42 -080021531 to->pNext = (void*)alloc->alloc(pNext_size);
Yilong Li422b0582021-04-30 13:09:43 -070021532 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021533 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080021534 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080021535 {
Yilong Libd10ec92021-02-10 13:24:27 -080021536 to->pStages = nullptr;
21537 if (from->pStages)
Yilong Lia8d45f12021-02-07 02:30:21 -080021538 {
Yilong Li422b0582021-04-30 13:09:43 -070021539 to->pStages = (VkPipelineShaderStageCreateInfo*)alloc->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
Yilong Libd10ec92021-02-10 13:24:27 -080021540 to->stageCount = from->stageCount;
21541 for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
21542 {
Yilong Li422b0582021-04-30 13:09:43 -070021543 deepcopy_VkPipelineShaderStageCreateInfo(alloc, rootType, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
Yilong Libd10ec92021-02-10 13:24:27 -080021544 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021545 }
21546 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080021547 if (from)
Yilong Lia8d45f12021-02-07 02:30:21 -080021548 {
Yilong Libd10ec92021-02-10 13:24:27 -080021549 to->pGroups = nullptr;
21550 if (from->pGroups)
Yilong Lia8d45f12021-02-07 02:30:21 -080021551 {
Yilong Li422b0582021-04-30 13:09:43 -070021552 to->pGroups = (VkRayTracingShaderGroupCreateInfoKHR*)alloc->alloc(from->groupCount * sizeof(const VkRayTracingShaderGroupCreateInfoKHR));
Yilong Libd10ec92021-02-10 13:24:27 -080021553 to->groupCount = from->groupCount;
21554 for (uint32_t i = 0; i < (uint32_t)from->groupCount; ++i)
21555 {
Yilong Li422b0582021-04-30 13:09:43 -070021556 deepcopy_VkRayTracingShaderGroupCreateInfoKHR(alloc, rootType, from->pGroups + i, (VkRayTracingShaderGroupCreateInfoKHR*)(to->pGroups + i));
Yilong Libd10ec92021-02-10 13:24:27 -080021557 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021558 }
21559 }
21560 to->pLibraryInfo = nullptr;
21561 if (from->pLibraryInfo)
21562 {
Yilong Li422b0582021-04-30 13:09:43 -070021563 to->pLibraryInfo = (VkPipelineLibraryCreateInfoKHR*)alloc->alloc(sizeof(const VkPipelineLibraryCreateInfoKHR));
21564 deepcopy_VkPipelineLibraryCreateInfoKHR(alloc, rootType, from->pLibraryInfo, (VkPipelineLibraryCreateInfoKHR*)(to->pLibraryInfo));
Yilong Lia8d45f12021-02-07 02:30:21 -080021565 }
21566 to->pLibraryInterface = nullptr;
21567 if (from->pLibraryInterface)
21568 {
Yilong Li422b0582021-04-30 13:09:43 -070021569 to->pLibraryInterface = (VkRayTracingPipelineInterfaceCreateInfoKHR*)alloc->alloc(sizeof(const VkRayTracingPipelineInterfaceCreateInfoKHR));
21570 deepcopy_VkRayTracingPipelineInterfaceCreateInfoKHR(alloc, rootType, from->pLibraryInterface, (VkRayTracingPipelineInterfaceCreateInfoKHR*)(to->pLibraryInterface));
Yilong Lia8d45f12021-02-07 02:30:21 -080021571 }
21572 to->pDynamicState = nullptr;
21573 if (from->pDynamicState)
21574 {
Yilong Li422b0582021-04-30 13:09:43 -070021575 to->pDynamicState = (VkPipelineDynamicStateCreateInfo*)alloc->alloc(sizeof(const VkPipelineDynamicStateCreateInfo));
21576 deepcopy_VkPipelineDynamicStateCreateInfo(alloc, rootType, from->pDynamicState, (VkPipelineDynamicStateCreateInfo*)(to->pDynamicState));
Yilong Lia8d45f12021-02-07 02:30:21 -080021577 }
21578}
21579
21580void deepcopy_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021581 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021582 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021583 const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* from,
21584 VkPhysicalDeviceRayTracingPipelineFeaturesKHR* to)
21585{
Yilong Li422b0582021-04-30 13:09:43 -070021586 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021587 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021588 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021589 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21590 {
21591 rootType = from->sType;
21592 }
Yilong Li04218f72021-02-19 01:31:17 -080021593 const void* from_pNext = from;
21594 size_t pNext_size = 0u;
21595 while (!pNext_size && from_pNext)
21596 {
21597 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021598 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021599 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021600 to->pNext = nullptr;
21601 if (pNext_size)
21602 {
Yilong Li422b0582021-04-30 13:09:43 -070021603 to->pNext = (void*)alloc->alloc(pNext_size);
21604 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021605 }
21606}
21607
21608void deepcopy_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021609 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021610 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021611 const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* from,
21612 VkPhysicalDeviceRayTracingPipelinePropertiesKHR* to)
21613{
Yilong Li422b0582021-04-30 13:09:43 -070021614 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021615 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021616 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021617 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21618 {
21619 rootType = from->sType;
21620 }
Yilong Li04218f72021-02-19 01:31:17 -080021621 const void* from_pNext = from;
21622 size_t pNext_size = 0u;
21623 while (!pNext_size && from_pNext)
21624 {
21625 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021626 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021627 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021628 to->pNext = nullptr;
21629 if (pNext_size)
21630 {
Yilong Li422b0582021-04-30 13:09:43 -070021631 to->pNext = (void*)alloc->alloc(pNext_size);
21632 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021633 }
21634}
21635
21636void deepcopy_VkStridedDeviceAddressRegionKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021637 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021638 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021639 const VkStridedDeviceAddressRegionKHR* from,
21640 VkStridedDeviceAddressRegionKHR* to)
21641{
Yilong Li422b0582021-04-30 13:09:43 -070021642 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021643 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021644 *to = *from;
21645}
21646
21647void deepcopy_VkTraceRaysIndirectCommandKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021648 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021649 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021650 const VkTraceRaysIndirectCommandKHR* from,
21651 VkTraceRaysIndirectCommandKHR* to)
21652{
Yilong Li422b0582021-04-30 13:09:43 -070021653 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021654 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021655 *to = *from;
21656}
21657
21658#endif
21659#ifdef VK_KHR_ray_query
21660void deepcopy_VkPhysicalDeviceRayQueryFeaturesKHR(
Yilong Li422b0582021-04-30 13:09:43 -070021661 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021662 VkStructureType rootType,
Yilong Lia8d45f12021-02-07 02:30:21 -080021663 const VkPhysicalDeviceRayQueryFeaturesKHR* from,
21664 VkPhysicalDeviceRayQueryFeaturesKHR* to)
21665{
Yilong Li422b0582021-04-30 13:09:43 -070021666 (void)alloc;
Yilong Li48081632021-04-13 22:38:10 -070021667 (void)rootType;
Yilong Lia8d45f12021-02-07 02:30:21 -080021668 *to = *from;
Yilong Li48081632021-04-13 22:38:10 -070021669 if (rootType == VK_STRUCTURE_TYPE_MAX_ENUM)
21670 {
21671 rootType = from->sType;
21672 }
Yilong Li04218f72021-02-19 01:31:17 -080021673 const void* from_pNext = from;
21674 size_t pNext_size = 0u;
21675 while (!pNext_size && from_pNext)
21676 {
21677 from_pNext = static_cast<const vk_struct_common*>(from_pNext)->pNext;
Yilong Li48081632021-04-13 22:38:10 -070021678 pNext_size = goldfish_vk_extension_struct_size(rootType, from_pNext);
Yilong Li04218f72021-02-19 01:31:17 -080021679 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021680 to->pNext = nullptr;
21681 if (pNext_size)
21682 {
Yilong Li422b0582021-04-30 13:09:43 -070021683 to->pNext = (void*)alloc->alloc(pNext_size);
21684 deepcopy_extension_struct(alloc, rootType, from_pNext, (void*)(to->pNext));
Yilong Lia8d45f12021-02-07 02:30:21 -080021685 }
21686}
21687
21688#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080021689void deepcopy_extension_struct(
Yilong Li422b0582021-04-30 13:09:43 -070021690 Allocator* alloc,
Yilong Li48081632021-04-13 22:38:10 -070021691 VkStructureType rootType,
Lingfeng Yang750c5642018-11-13 17:03:11 -080021692 const void* structExtension,
21693 void* structExtension_out)
21694{
21695 if (!structExtension)
21696 {
21697 return;
21698 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080021699 uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension);
Lingfeng Yang750c5642018-11-13 17:03:11 -080021700 switch(structType)
21701 {
21702#ifdef VK_VERSION_1_1
21703 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:
21704 {
Yilong Li422b0582021-04-30 13:09:43 -070021705 deepcopy_VkPhysicalDeviceSubgroupProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSubgroupProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubgroupProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021706 break;
21707 }
21708 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:
21709 {
Yilong Li422b0582021-04-30 13:09:43 -070021710 deepcopy_VkPhysicalDevice16BitStorageFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(structExtension), reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021711 break;
21712 }
21713 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
21714 {
Yilong Li422b0582021-04-30 13:09:43 -070021715 deepcopy_VkMemoryDedicatedRequirements(alloc, rootType, reinterpret_cast<const VkMemoryDedicatedRequirements*>(structExtension), reinterpret_cast<VkMemoryDedicatedRequirements*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021716 break;
21717 }
21718 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:
21719 {
Yilong Li422b0582021-04-30 13:09:43 -070021720 deepcopy_VkMemoryDedicatedAllocateInfo(alloc, rootType, reinterpret_cast<const VkMemoryDedicatedAllocateInfo*>(structExtension), reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021721 break;
21722 }
21723 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:
21724 {
Yilong Li422b0582021-04-30 13:09:43 -070021725 deepcopy_VkMemoryAllocateFlagsInfo(alloc, rootType, reinterpret_cast<const VkMemoryAllocateFlagsInfo*>(structExtension), reinterpret_cast<VkMemoryAllocateFlagsInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021726 break;
21727 }
21728 case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:
21729 {
Yilong Li422b0582021-04-30 13:09:43 -070021730 deepcopy_VkDeviceGroupRenderPassBeginInfo(alloc, rootType, reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo*>(structExtension), reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021731 break;
21732 }
21733 case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:
21734 {
Yilong Li422b0582021-04-30 13:09:43 -070021735 deepcopy_VkDeviceGroupCommandBufferBeginInfo(alloc, rootType, reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo*>(structExtension), reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021736 break;
21737 }
21738 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:
21739 {
Yilong Li422b0582021-04-30 13:09:43 -070021740 deepcopy_VkDeviceGroupSubmitInfo(alloc, rootType, reinterpret_cast<const VkDeviceGroupSubmitInfo*>(structExtension), reinterpret_cast<VkDeviceGroupSubmitInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021741 break;
21742 }
21743 case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:
21744 {
Yilong Li422b0582021-04-30 13:09:43 -070021745 deepcopy_VkDeviceGroupBindSparseInfo(alloc, rootType, reinterpret_cast<const VkDeviceGroupBindSparseInfo*>(structExtension), reinterpret_cast<VkDeviceGroupBindSparseInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021746 break;
21747 }
21748 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
21749 {
Yilong Li422b0582021-04-30 13:09:43 -070021750 deepcopy_VkBindBufferMemoryDeviceGroupInfo(alloc, rootType, reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo*>(structExtension), reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021751 break;
21752 }
21753 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:
21754 {
Yilong Li422b0582021-04-30 13:09:43 -070021755 deepcopy_VkBindImageMemoryDeviceGroupInfo(alloc, rootType, reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo*>(structExtension), reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021756 break;
21757 }
21758 case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:
21759 {
Yilong Li422b0582021-04-30 13:09:43 -070021760 deepcopy_VkDeviceGroupDeviceCreateInfo(alloc, rootType, reinterpret_cast<const VkDeviceGroupDeviceCreateInfo*>(structExtension), reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021761 break;
21762 }
21763 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
21764 {
Yilong Li422b0582021-04-30 13:09:43 -070021765 deepcopy_VkPhysicalDeviceFeatures2(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFeatures2*>(structExtension), reinterpret_cast<VkPhysicalDeviceFeatures2*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021766 break;
21767 }
21768 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:
21769 {
Yilong Li422b0582021-04-30 13:09:43 -070021770 deepcopy_VkPhysicalDevicePointClippingProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePointClippingProperties*>(structExtension), reinterpret_cast<VkPhysicalDevicePointClippingProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021771 break;
21772 }
21773 case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
21774 {
Yilong Li422b0582021-04-30 13:09:43 -070021775 deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(alloc, rootType, reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>(structExtension), reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021776 break;
21777 }
21778 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
21779 {
Yilong Li422b0582021-04-30 13:09:43 -070021780 deepcopy_VkImageViewUsageCreateInfo(alloc, rootType, reinterpret_cast<const VkImageViewUsageCreateInfo*>(structExtension), reinterpret_cast<VkImageViewUsageCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021781 break;
21782 }
21783 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
21784 {
Yilong Li422b0582021-04-30 13:09:43 -070021785 deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(alloc, rootType, reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo*>(structExtension), reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021786 break;
21787 }
21788 case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:
21789 {
Yilong Li422b0582021-04-30 13:09:43 -070021790 deepcopy_VkRenderPassMultiviewCreateInfo(alloc, rootType, reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>(structExtension), reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021791 break;
21792 }
21793 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:
21794 {
Yilong Li422b0582021-04-30 13:09:43 -070021795 deepcopy_VkPhysicalDeviceMultiviewFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021796 break;
21797 }
21798 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:
21799 {
Yilong Li422b0582021-04-30 13:09:43 -070021800 deepcopy_VkPhysicalDeviceMultiviewProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMultiviewProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiviewProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021801 break;
21802 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021803 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
Lingfeng Yang750c5642018-11-13 17:03:11 -080021804 {
Yilong Li422b0582021-04-30 13:09:43 -070021805 deepcopy_VkPhysicalDeviceVariablePointersFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021806 break;
21807 }
21808 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:
21809 {
Yilong Li422b0582021-04-30 13:09:43 -070021810 deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021811 break;
21812 }
21813 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:
21814 {
Yilong Li422b0582021-04-30 13:09:43 -070021815 deepcopy_VkPhysicalDeviceProtectedMemoryProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021816 break;
21817 }
21818 case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:
21819 {
Yilong Li422b0582021-04-30 13:09:43 -070021820 deepcopy_VkProtectedSubmitInfo(alloc, rootType, reinterpret_cast<const VkProtectedSubmitInfo*>(structExtension), reinterpret_cast<VkProtectedSubmitInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021821 break;
21822 }
21823 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
21824 {
Yilong Li422b0582021-04-30 13:09:43 -070021825 deepcopy_VkSamplerYcbcrConversionInfo(alloc, rootType, reinterpret_cast<const VkSamplerYcbcrConversionInfo*>(structExtension), reinterpret_cast<VkSamplerYcbcrConversionInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021826 break;
21827 }
21828 case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:
21829 {
Yilong Li422b0582021-04-30 13:09:43 -070021830 deepcopy_VkBindImagePlaneMemoryInfo(alloc, rootType, reinterpret_cast<const VkBindImagePlaneMemoryInfo*>(structExtension), reinterpret_cast<VkBindImagePlaneMemoryInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021831 break;
21832 }
21833 case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:
21834 {
Yilong Li422b0582021-04-30 13:09:43 -070021835 deepcopy_VkImagePlaneMemoryRequirementsInfo(alloc, rootType, reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo*>(structExtension), reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021836 break;
21837 }
21838 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
21839 {
Yilong Li422b0582021-04-30 13:09:43 -070021840 deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021841 break;
21842 }
21843 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
21844 {
Yilong Li422b0582021-04-30 13:09:43 -070021845 deepcopy_VkSamplerYcbcrConversionImageFormatProperties(alloc, rootType, reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties*>(structExtension), reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021846 break;
21847 }
21848 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
21849 {
Yilong Li422b0582021-04-30 13:09:43 -070021850 deepcopy_VkPhysicalDeviceExternalImageFormatInfo(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>(structExtension), reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021851 break;
21852 }
21853 case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
21854 {
Yilong Li422b0582021-04-30 13:09:43 -070021855 deepcopy_VkExternalImageFormatProperties(alloc, rootType, reinterpret_cast<const VkExternalImageFormatProperties*>(structExtension), reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021856 break;
21857 }
21858 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:
21859 {
Yilong Li422b0582021-04-30 13:09:43 -070021860 deepcopy_VkPhysicalDeviceIDProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceIDProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceIDProperties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021861 break;
21862 }
21863 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
21864 {
Yilong Li422b0582021-04-30 13:09:43 -070021865 deepcopy_VkExternalMemoryImageCreateInfo(alloc, rootType, reinterpret_cast<const VkExternalMemoryImageCreateInfo*>(structExtension), reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021866 break;
21867 }
21868 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
21869 {
Yilong Li422b0582021-04-30 13:09:43 -070021870 deepcopy_VkExternalMemoryBufferCreateInfo(alloc, rootType, reinterpret_cast<const VkExternalMemoryBufferCreateInfo*>(structExtension), reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021871 break;
21872 }
21873 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
21874 {
Yilong Li422b0582021-04-30 13:09:43 -070021875 deepcopy_VkExportMemoryAllocateInfo(alloc, rootType, reinterpret_cast<const VkExportMemoryAllocateInfo*>(structExtension), reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021876 break;
21877 }
21878 case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:
21879 {
Yilong Li422b0582021-04-30 13:09:43 -070021880 deepcopy_VkExportFenceCreateInfo(alloc, rootType, reinterpret_cast<const VkExportFenceCreateInfo*>(structExtension), reinterpret_cast<VkExportFenceCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021881 break;
21882 }
21883 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
21884 {
Yilong Li422b0582021-04-30 13:09:43 -070021885 deepcopy_VkExportSemaphoreCreateInfo(alloc, rootType, reinterpret_cast<const VkExportSemaphoreCreateInfo*>(structExtension), reinterpret_cast<VkExportSemaphoreCreateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021886 break;
21887 }
21888 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:
21889 {
Yilong Li422b0582021-04-30 13:09:43 -070021890 deepcopy_VkPhysicalDeviceMaintenance3Properties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties*>(structExtension), reinterpret_cast<VkPhysicalDeviceMaintenance3Properties*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080021891 break;
21892 }
Yilong Lia8d45f12021-02-07 02:30:21 -080021893 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
Lingfeng Yang750c5642018-11-13 17:03:11 -080021894 {
Yilong Li422b0582021-04-30 13:09:43 -070021895 deepcopy_VkPhysicalDeviceShaderDrawParametersFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021896 break;
21897 }
21898#endif
21899#ifdef VK_VERSION_1_2
21900 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:
21901 {
Yilong Li422b0582021-04-30 13:09:43 -070021902 deepcopy_VkPhysicalDeviceVulkan11Features(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan11Features*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021903 break;
21904 }
21905 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:
21906 {
Yilong Li422b0582021-04-30 13:09:43 -070021907 deepcopy_VkPhysicalDeviceVulkan11Properties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVulkan11Properties*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan11Properties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021908 break;
21909 }
21910 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:
21911 {
Yilong Li422b0582021-04-30 13:09:43 -070021912 deepcopy_VkPhysicalDeviceVulkan12Features(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan12Features*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021913 break;
21914 }
21915 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:
21916 {
Yilong Li422b0582021-04-30 13:09:43 -070021917 deepcopy_VkPhysicalDeviceVulkan12Properties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVulkan12Properties*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkan12Properties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021918 break;
21919 }
21920 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:
21921 {
Yilong Li422b0582021-04-30 13:09:43 -070021922 deepcopy_VkImageFormatListCreateInfo(alloc, rootType, reinterpret_cast<const VkImageFormatListCreateInfo*>(structExtension), reinterpret_cast<VkImageFormatListCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021923 break;
21924 }
21925 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:
21926 {
Yilong Li422b0582021-04-30 13:09:43 -070021927 deepcopy_VkPhysicalDevice8BitStorageFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>(structExtension), reinterpret_cast<VkPhysicalDevice8BitStorageFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021928 break;
21929 }
21930 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:
21931 {
Yilong Li422b0582021-04-30 13:09:43 -070021932 deepcopy_VkPhysicalDeviceDriverProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDriverProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceDriverProperties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021933 break;
21934 }
21935 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:
21936 {
Yilong Li422b0582021-04-30 13:09:43 -070021937 deepcopy_VkPhysicalDeviceShaderAtomicInt64Features(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021938 break;
21939 }
21940 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:
21941 {
Yilong Li422b0582021-04-30 13:09:43 -070021942 deepcopy_VkPhysicalDeviceShaderFloat16Int8Features(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021943 break;
21944 }
21945 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:
21946 {
Yilong Li422b0582021-04-30 13:09:43 -070021947 deepcopy_VkPhysicalDeviceFloatControlsProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceFloatControlsProperties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021948 break;
21949 }
21950 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:
21951 {
Yilong Li422b0582021-04-30 13:09:43 -070021952 deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfo(alloc, rootType, reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo*>(structExtension), reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021953 break;
21954 }
21955 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:
21956 {
Yilong Li422b0582021-04-30 13:09:43 -070021957 deepcopy_VkPhysicalDeviceDescriptorIndexingFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021958 break;
21959 }
21960 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:
21961 {
Yilong Li422b0582021-04-30 13:09:43 -070021962 deepcopy_VkPhysicalDeviceDescriptorIndexingProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021963 break;
21964 }
21965 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:
21966 {
Yilong Li422b0582021-04-30 13:09:43 -070021967 deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfo(alloc, rootType, reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo*>(structExtension), reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021968 break;
21969 }
21970 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
21971 {
Yilong Li422b0582021-04-30 13:09:43 -070021972 deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupport(alloc, rootType, reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport*>(structExtension), reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021973 break;
21974 }
21975 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:
21976 {
Yilong Li422b0582021-04-30 13:09:43 -070021977 deepcopy_VkSubpassDescriptionDepthStencilResolve(alloc, rootType, reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve*>(structExtension), reinterpret_cast<VkSubpassDescriptionDepthStencilResolve*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021978 break;
21979 }
21980 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:
21981 {
Yilong Li422b0582021-04-30 13:09:43 -070021982 deepcopy_VkPhysicalDeviceDepthStencilResolveProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021983 break;
21984 }
21985 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:
21986 {
Yilong Li422b0582021-04-30 13:09:43 -070021987 deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021988 break;
21989 }
21990 case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:
21991 {
Yilong Li422b0582021-04-30 13:09:43 -070021992 deepcopy_VkImageStencilUsageCreateInfo(alloc, rootType, reinterpret_cast<const VkImageStencilUsageCreateInfo*>(structExtension), reinterpret_cast<VkImageStencilUsageCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021993 break;
21994 }
21995 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
21996 {
Yilong Li422b0582021-04-30 13:09:43 -070021997 deepcopy_VkSamplerReductionModeCreateInfo(alloc, rootType, reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(structExtension), reinterpret_cast<VkSamplerReductionModeCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080021998 break;
21999 }
22000 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:
22001 {
Yilong Li422b0582021-04-30 13:09:43 -070022002 deepcopy_VkPhysicalDeviceSamplerFilterMinmaxProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022003 break;
22004 }
22005 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:
22006 {
Yilong Li422b0582021-04-30 13:09:43 -070022007 deepcopy_VkPhysicalDeviceVulkanMemoryModelFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022008 break;
22009 }
22010 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:
22011 {
Yilong Li422b0582021-04-30 13:09:43 -070022012 deepcopy_VkPhysicalDeviceImagelessFramebufferFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022013 break;
22014 }
22015 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:
22016 {
Yilong Li422b0582021-04-30 13:09:43 -070022017 deepcopy_VkFramebufferAttachmentsCreateInfo(alloc, rootType, reinterpret_cast<const VkFramebufferAttachmentsCreateInfo*>(structExtension), reinterpret_cast<VkFramebufferAttachmentsCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022018 break;
22019 }
22020 case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:
22021 {
Yilong Li422b0582021-04-30 13:09:43 -070022022 deepcopy_VkRenderPassAttachmentBeginInfo(alloc, rootType, reinterpret_cast<const VkRenderPassAttachmentBeginInfo*>(structExtension), reinterpret_cast<VkRenderPassAttachmentBeginInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022023 break;
22024 }
22025 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:
22026 {
Yilong Li422b0582021-04-30 13:09:43 -070022027 deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022028 break;
22029 }
22030 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:
22031 {
Yilong Li422b0582021-04-30 13:09:43 -070022032 deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022033 break;
22034 }
22035 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:
22036 {
Yilong Li422b0582021-04-30 13:09:43 -070022037 deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022038 break;
22039 }
22040 case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:
22041 {
Yilong Li422b0582021-04-30 13:09:43 -070022042 deepcopy_VkAttachmentReferenceStencilLayout(alloc, rootType, reinterpret_cast<const VkAttachmentReferenceStencilLayout*>(structExtension), reinterpret_cast<VkAttachmentReferenceStencilLayout*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022043 break;
22044 }
22045 case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:
22046 {
Yilong Li422b0582021-04-30 13:09:43 -070022047 deepcopy_VkAttachmentDescriptionStencilLayout(alloc, rootType, reinterpret_cast<const VkAttachmentDescriptionStencilLayout*>(structExtension), reinterpret_cast<VkAttachmentDescriptionStencilLayout*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022048 break;
22049 }
22050 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:
22051 {
Yilong Li422b0582021-04-30 13:09:43 -070022052 deepcopy_VkPhysicalDeviceHostQueryResetFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022053 break;
22054 }
22055 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:
22056 {
Yilong Li422b0582021-04-30 13:09:43 -070022057 deepcopy_VkPhysicalDeviceTimelineSemaphoreFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022058 break;
22059 }
22060 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:
22061 {
Yilong Li422b0582021-04-30 13:09:43 -070022062 deepcopy_VkPhysicalDeviceTimelineSemaphoreProperties(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties*>(structExtension), reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022063 break;
22064 }
22065 case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
22066 {
Yilong Li422b0582021-04-30 13:09:43 -070022067 deepcopy_VkSemaphoreTypeCreateInfo(alloc, rootType, reinterpret_cast<const VkSemaphoreTypeCreateInfo*>(structExtension), reinterpret_cast<VkSemaphoreTypeCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022068 break;
22069 }
22070 case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:
22071 {
Yilong Li422b0582021-04-30 13:09:43 -070022072 deepcopy_VkTimelineSemaphoreSubmitInfo(alloc, rootType, reinterpret_cast<const VkTimelineSemaphoreSubmitInfo*>(structExtension), reinterpret_cast<VkTimelineSemaphoreSubmitInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022073 break;
22074 }
22075 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:
22076 {
Yilong Li422b0582021-04-30 13:09:43 -070022077 deepcopy_VkPhysicalDeviceBufferDeviceAddressFeatures(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>(structExtension), reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022078 break;
22079 }
22080 case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
22081 {
Yilong Li422b0582021-04-30 13:09:43 -070022082 deepcopy_VkBufferOpaqueCaptureAddressCreateInfo(alloc, rootType, reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension), reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022083 break;
22084 }
22085 case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:
22086 {
Yilong Li422b0582021-04-30 13:09:43 -070022087 deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfo(alloc, rootType, reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension), reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022088 break;
22089 }
22090#endif
22091#ifdef VK_KHR_swapchain
22092 case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:
22093 {
Yilong Li422b0582021-04-30 13:09:43 -070022094 deepcopy_VkImageSwapchainCreateInfoKHR(alloc, rootType, reinterpret_cast<const VkImageSwapchainCreateInfoKHR*>(structExtension), reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022095 break;
22096 }
22097 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:
22098 {
Yilong Li422b0582021-04-30 13:09:43 -070022099 deepcopy_VkBindImageMemorySwapchainInfoKHR(alloc, rootType, reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR*>(structExtension), reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022100 break;
22101 }
22102 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:
22103 {
Yilong Li422b0582021-04-30 13:09:43 -070022104 deepcopy_VkDeviceGroupPresentInfoKHR(alloc, rootType, reinterpret_cast<const VkDeviceGroupPresentInfoKHR*>(structExtension), reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022105 break;
22106 }
22107 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:
22108 {
Yilong Li422b0582021-04-30 13:09:43 -070022109 deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(alloc, rootType, reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension), reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022110 break;
22111 }
22112#endif
22113#ifdef VK_KHR_display_swapchain
22114 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
22115 {
Yilong Li422b0582021-04-30 13:09:43 -070022116 deepcopy_VkDisplayPresentInfoKHR(alloc, rootType, reinterpret_cast<const VkDisplayPresentInfoKHR*>(structExtension), reinterpret_cast<VkDisplayPresentInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022117 break;
22118 }
22119#endif
Yilong Li353409a2022-01-04 02:37:56 -080022120#ifdef VK_KHR_video_queue
22121 case VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR:
22122 {
22123 deepcopy_VkVideoQueueFamilyProperties2KHR(alloc, rootType, reinterpret_cast<const VkVideoQueueFamilyProperties2KHR*>(structExtension), reinterpret_cast<VkVideoQueueFamilyProperties2KHR*>(structExtension_out));
22124 break;
22125 }
22126 case VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR:
22127 {
22128 deepcopy_VkVideoProfileKHR(alloc, rootType, reinterpret_cast<const VkVideoProfileKHR*>(structExtension), reinterpret_cast<VkVideoProfileKHR*>(structExtension_out));
22129 break;
22130 }
22131 case VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR:
22132 {
22133 deepcopy_VkVideoProfilesKHR(alloc, rootType, reinterpret_cast<const VkVideoProfilesKHR*>(structExtension), reinterpret_cast<VkVideoProfilesKHR*>(structExtension_out));
22134 break;
22135 }
22136#endif
22137#ifdef VK_KHR_dynamic_rendering
22138 case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR:
22139 {
22140 deepcopy_VkPipelineRenderingCreateInfoKHR(alloc, rootType, reinterpret_cast<const VkPipelineRenderingCreateInfoKHR*>(structExtension), reinterpret_cast<VkPipelineRenderingCreateInfoKHR*>(structExtension_out));
22141 break;
22142 }
22143 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR:
22144 {
22145 deepcopy_VkPhysicalDeviceDynamicRenderingFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeaturesKHR*>(structExtension_out));
22146 break;
22147 }
22148 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR:
22149 {
22150 deepcopy_VkCommandBufferInheritanceRenderingInfoKHR(alloc, rootType, reinterpret_cast<const VkCommandBufferInheritanceRenderingInfoKHR*>(structExtension), reinterpret_cast<VkCommandBufferInheritanceRenderingInfoKHR*>(structExtension_out));
22151 break;
22152 }
22153 case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:
22154 {
22155 deepcopy_VkRenderingFragmentShadingRateAttachmentInfoKHR(alloc, rootType, reinterpret_cast<const VkRenderingFragmentShadingRateAttachmentInfoKHR*>(structExtension), reinterpret_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR*>(structExtension_out));
22156 break;
22157 }
22158 case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT:
22159 {
22160 deepcopy_VkRenderingFragmentDensityMapAttachmentInfoEXT(alloc, rootType, reinterpret_cast<const VkRenderingFragmentDensityMapAttachmentInfoEXT*>(structExtension), reinterpret_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT*>(structExtension_out));
22161 break;
22162 }
22163 case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD:
22164 {
22165 deepcopy_VkAttachmentSampleCountInfoAMD(alloc, rootType, reinterpret_cast<const VkAttachmentSampleCountInfoAMD*>(structExtension), reinterpret_cast<VkAttachmentSampleCountInfoAMD*>(structExtension_out));
22166 break;
22167 }
22168 case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX:
22169 {
22170 deepcopy_VkMultiviewPerViewAttributesInfoNVX(alloc, rootType, reinterpret_cast<const VkMultiviewPerViewAttributesInfoNVX*>(structExtension), reinterpret_cast<VkMultiviewPerViewAttributesInfoNVX*>(structExtension_out));
22171 break;
22172 }
22173#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022174#ifdef VK_KHR_external_memory_win32
22175 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
22176 {
Yilong Li422b0582021-04-30 13:09:43 -070022177 deepcopy_VkImportMemoryWin32HandleInfoKHR(alloc, rootType, reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkImportMemoryWin32HandleInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022178 break;
22179 }
22180 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
22181 {
Yilong Li422b0582021-04-30 13:09:43 -070022182 deepcopy_VkExportMemoryWin32HandleInfoKHR(alloc, rootType, reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkExportMemoryWin32HandleInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022183 break;
22184 }
22185#endif
22186#ifdef VK_KHR_external_memory_fd
22187 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:
22188 {
Yilong Li422b0582021-04-30 13:09:43 -070022189 deepcopy_VkImportMemoryFdInfoKHR(alloc, rootType, reinterpret_cast<const VkImportMemoryFdInfoKHR*>(structExtension), reinterpret_cast<VkImportMemoryFdInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022190 break;
22191 }
22192#endif
22193#ifdef VK_KHR_win32_keyed_mutex
22194 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:
22195 {
Yilong Li422b0582021-04-30 13:09:43 -070022196 deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(alloc, rootType, reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(structExtension), reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022197 break;
22198 }
22199#endif
22200#ifdef VK_KHR_external_semaphore_win32
22201 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:
22202 {
Yilong Li422b0582021-04-30 13:09:43 -070022203 deepcopy_VkExportSemaphoreWin32HandleInfoKHR(alloc, rootType, reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022204 break;
22205 }
22206 case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:
22207 {
Yilong Li422b0582021-04-30 13:09:43 -070022208 deepcopy_VkD3D12FenceSubmitInfoKHR(alloc, rootType, reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(structExtension), reinterpret_cast<VkD3D12FenceSubmitInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022209 break;
22210 }
22211#endif
22212#ifdef VK_KHR_push_descriptor
22213 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:
22214 {
Yilong Li422b0582021-04-30 13:09:43 -070022215 deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePushDescriptorPropertiesKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022216 break;
22217 }
22218#endif
22219#ifdef VK_KHR_incremental_present
22220 case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:
22221 {
Yilong Li422b0582021-04-30 13:09:43 -070022222 deepcopy_VkPresentRegionsKHR(alloc, rootType, reinterpret_cast<const VkPresentRegionsKHR*>(structExtension), reinterpret_cast<VkPresentRegionsKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022223 break;
22224 }
22225#endif
22226#ifdef VK_KHR_shared_presentable_image
22227 case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:
22228 {
Yilong Li422b0582021-04-30 13:09:43 -070022229 deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(alloc, rootType, reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(structExtension), reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022230 break;
22231 }
22232#endif
22233#ifdef VK_KHR_external_fence_win32
22234 case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:
22235 {
Yilong Li422b0582021-04-30 13:09:43 -070022236 deepcopy_VkExportFenceWin32HandleInfoKHR(alloc, rootType, reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(structExtension), reinterpret_cast<VkExportFenceWin32HandleInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022237 break;
22238 }
22239#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022240#ifdef VK_KHR_performance_query
22241 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022242 {
Yilong Li422b0582021-04-30 13:09:43 -070022243 deepcopy_VkPhysicalDevicePerformanceQueryFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022244 break;
22245 }
22246 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:
22247 {
Yilong Li422b0582021-04-30 13:09:43 -070022248 deepcopy_VkPhysicalDevicePerformanceQueryPropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePerformanceQueryPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022249 break;
22250 }
22251 case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:
22252 {
Yilong Li422b0582021-04-30 13:09:43 -070022253 deepcopy_VkQueryPoolPerformanceCreateInfoKHR(alloc, rootType, reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR*>(structExtension), reinterpret_cast<VkQueryPoolPerformanceCreateInfoKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022254 break;
22255 }
22256 case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:
22257 {
Yilong Li422b0582021-04-30 13:09:43 -070022258 deepcopy_VkPerformanceQuerySubmitInfoKHR(alloc, rootType, reinterpret_cast<const VkPerformanceQuerySubmitInfoKHR*>(structExtension), reinterpret_cast<VkPerformanceQuerySubmitInfoKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022259 break;
22260 }
22261#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022262#ifdef VK_KHR_portability_subset
22263 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022264 {
Yilong Li422b0582021-04-30 13:09:43 -070022265 deepcopy_VkPhysicalDevicePortabilitySubsetFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePortabilitySubsetFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022266 break;
22267 }
22268 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR:
22269 {
Yilong Li422b0582021-04-30 13:09:43 -070022270 deepcopy_VkPhysicalDevicePortabilitySubsetPropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePortabilitySubsetPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePortabilitySubsetPropertiesKHR*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022271 break;
22272 }
22273#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022274#ifdef VK_KHR_shader_clock
22275 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:
Lingfeng Yang4c056b22020-07-02 11:43:57 -070022276 {
Yilong Li422b0582021-04-30 13:09:43 -070022277 deepcopy_VkPhysicalDeviceShaderClockFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderClockFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022278 break;
22279 }
22280#endif
22281#ifdef VK_KHR_shader_terminate_invocation
22282 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR:
22283 {
Yilong Li422b0582021-04-30 13:09:43 -070022284 deepcopy_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022285 break;
22286 }
22287#endif
22288#ifdef VK_KHR_fragment_shading_rate
22289 case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:
22290 {
Yilong Li422b0582021-04-30 13:09:43 -070022291 deepcopy_VkFragmentShadingRateAttachmentInfoKHR(alloc, rootType, reinterpret_cast<const VkFragmentShadingRateAttachmentInfoKHR*>(structExtension), reinterpret_cast<VkFragmentShadingRateAttachmentInfoKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022292 break;
22293 }
22294 case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:
22295 {
Yilong Li422b0582021-04-30 13:09:43 -070022296 deepcopy_VkPipelineFragmentShadingRateStateCreateInfoKHR(alloc, rootType, reinterpret_cast<const VkPipelineFragmentShadingRateStateCreateInfoKHR*>(structExtension), reinterpret_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022297 break;
22298 }
22299 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:
22300 {
Yilong Li422b0582021-04-30 13:09:43 -070022301 deepcopy_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022302 break;
22303 }
22304 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:
22305 {
Yilong Li422b0582021-04-30 13:09:43 -070022306 deepcopy_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRatePropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022307 break;
22308 }
22309#endif
22310#ifdef VK_KHR_surface_protected_capabilities
22311 case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:
22312 {
Yilong Li422b0582021-04-30 13:09:43 -070022313 deepcopy_VkSurfaceProtectedCapabilitiesKHR(alloc, rootType, reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR*>(structExtension), reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022314 break;
22315 }
22316#endif
Yilong Li353409a2022-01-04 02:37:56 -080022317#ifdef VK_KHR_present_wait
22318 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR:
22319 {
22320 deepcopy_VkPhysicalDevicePresentWaitFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePresentWaitFeaturesKHR*>(structExtension_out));
22321 break;
22322 }
22323#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022324#ifdef VK_KHR_pipeline_executable_properties
22325 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:
22326 {
Yilong Li422b0582021-04-30 13:09:43 -070022327 deepcopy_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(structExtension_out));
Lingfeng Yang4c056b22020-07-02 11:43:57 -070022328 break;
22329 }
22330#endif
Yilong Li353409a2022-01-04 02:37:56 -080022331#ifdef VK_KHR_shader_integer_dot_product
22332 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR:
22333 {
22334 deepcopy_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR*>(structExtension_out));
22335 break;
22336 }
22337 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR:
22338 {
22339 deepcopy_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR*>(structExtension_out));
22340 break;
22341 }
22342#endif
22343#ifdef VK_KHR_present_id
22344 case VK_STRUCTURE_TYPE_PRESENT_ID_KHR:
22345 {
22346 deepcopy_VkPresentIdKHR(alloc, rootType, reinterpret_cast<const VkPresentIdKHR*>(structExtension), reinterpret_cast<VkPresentIdKHR*>(structExtension_out));
22347 break;
22348 }
22349 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR:
22350 {
22351 deepcopy_VkPhysicalDevicePresentIdFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePresentIdFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDevicePresentIdFeaturesKHR*>(structExtension_out));
22352 break;
22353 }
22354#endif
22355#ifdef VK_KHR_video_encode_queue
22356 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR:
22357 {
22358 deepcopy_VkVideoEncodeRateControlInfoKHR(alloc, rootType, reinterpret_cast<const VkVideoEncodeRateControlInfoKHR*>(structExtension), reinterpret_cast<VkVideoEncodeRateControlInfoKHR*>(structExtension_out));
22359 break;
22360 }
22361#endif
22362#ifdef VK_KHR_synchronization2
22363 case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR:
22364 {
22365 deepcopy_VkMemoryBarrier2KHR(alloc, rootType, reinterpret_cast<const VkMemoryBarrier2KHR*>(structExtension), reinterpret_cast<VkMemoryBarrier2KHR*>(structExtension_out));
22366 break;
22367 }
22368 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR:
22369 {
22370 deepcopy_VkPhysicalDeviceSynchronization2FeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSynchronization2FeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceSynchronization2FeaturesKHR*>(structExtension_out));
22371 break;
22372 }
22373 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV:
22374 {
22375 deepcopy_VkQueueFamilyCheckpointProperties2NV(alloc, rootType, reinterpret_cast<const VkQueueFamilyCheckpointProperties2NV*>(structExtension), reinterpret_cast<VkQueueFamilyCheckpointProperties2NV*>(structExtension_out));
22376 break;
22377 }
22378#endif
22379#ifdef VK_KHR_shader_subgroup_uniform_control_flow
22380 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR:
22381 {
22382 deepcopy_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR*>(structExtension_out));
22383 break;
22384 }
22385#endif
22386#ifdef VK_KHR_zero_initialize_workgroup_memory
22387 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR:
22388 {
22389 deepcopy_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR*>(structExtension_out));
22390 break;
22391 }
22392#endif
22393#ifdef VK_KHR_workgroup_memory_explicit_layout
22394 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR:
22395 {
22396 deepcopy_VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR*>(structExtension_out));
22397 break;
22398 }
22399#endif
22400#ifdef VK_KHR_format_feature_flags2
22401 case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR:
22402 {
22403 deepcopy_VkFormatProperties3KHR(alloc, rootType, reinterpret_cast<const VkFormatProperties3KHR*>(structExtension), reinterpret_cast<VkFormatProperties3KHR*>(structExtension_out));
22404 break;
22405 }
22406#endif
22407#ifdef VK_KHR_maintenance4
22408 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR:
22409 {
22410 deepcopy_VkPhysicalDeviceMaintenance4FeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMaintenance4FeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceMaintenance4FeaturesKHR*>(structExtension_out));
22411 break;
22412 }
22413 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR:
22414 {
22415 deepcopy_VkPhysicalDeviceMaintenance4PropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMaintenance4PropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceMaintenance4PropertiesKHR*>(structExtension_out));
22416 break;
22417 }
22418#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080022419#ifdef VK_ANDROID_native_buffer
22420 case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID:
22421 {
Yilong Li422b0582021-04-30 13:09:43 -070022422 deepcopy_VkNativeBufferANDROID(alloc, rootType, reinterpret_cast<const VkNativeBufferANDROID*>(structExtension), reinterpret_cast<VkNativeBufferANDROID*>(structExtension_out));
Lingfeng Yang808a6312018-11-13 21:06:15 -080022423 break;
22424 }
22425#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022426#ifdef VK_EXT_debug_report
22427 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:
22428 {
Yilong Li422b0582021-04-30 13:09:43 -070022429 deepcopy_VkDebugReportCallbackCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(structExtension), reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022430 break;
22431 }
22432#endif
22433#ifdef VK_AMD_rasterization_order
22434 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
22435 {
Yilong Li422b0582021-04-30 13:09:43 -070022436 deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(alloc, rootType, reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(structExtension), reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022437 break;
22438 }
22439#endif
22440#ifdef VK_NV_dedicated_allocation
22441 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
22442 {
Yilong Li422b0582021-04-30 13:09:43 -070022443 deepcopy_VkDedicatedAllocationImageCreateInfoNV(alloc, rootType, reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(structExtension), reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022444 break;
22445 }
22446 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
22447 {
Yilong Li422b0582021-04-30 13:09:43 -070022448 deepcopy_VkDedicatedAllocationBufferCreateInfoNV(alloc, rootType, reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(structExtension), reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022449 break;
22450 }
22451 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
22452 {
Yilong Li422b0582021-04-30 13:09:43 -070022453 deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(alloc, rootType, reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(structExtension), reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022454 break;
22455 }
22456#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022457#ifdef VK_EXT_transform_feedback
22458 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:
22459 {
Yilong Li422b0582021-04-30 13:09:43 -070022460 deepcopy_VkPhysicalDeviceTransformFeedbackFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022461 break;
22462 }
22463 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
22464 {
Yilong Li422b0582021-04-30 13:09:43 -070022465 deepcopy_VkPhysicalDeviceTransformFeedbackPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022466 break;
22467 }
22468 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
22469 {
Yilong Li422b0582021-04-30 13:09:43 -070022470 deepcopy_VkPipelineRasterizationStateStreamCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022471 break;
22472 }
22473#endif
Yilong Li353409a2022-01-04 02:37:56 -080022474#ifdef VK_EXT_video_encode_h264
22475 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT:
22476 {
22477 deepcopy_VkVideoEncodeH264CapabilitiesEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264CapabilitiesEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264CapabilitiesEXT*>(structExtension_out));
22478 break;
22479 }
22480 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT:
22481 {
22482 deepcopy_VkVideoEncodeH264SessionCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264SessionCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264SessionCreateInfoEXT*>(structExtension_out));
22483 break;
22484 }
22485 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:
22486 {
22487 deepcopy_VkVideoEncodeH264SessionParametersAddInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264SessionParametersAddInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264SessionParametersAddInfoEXT*>(structExtension_out));
22488 break;
22489 }
22490 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:
22491 {
22492 deepcopy_VkVideoEncodeH264SessionParametersCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264SessionParametersCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264SessionParametersCreateInfoEXT*>(structExtension_out));
22493 break;
22494 }
22495 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT:
22496 {
22497 deepcopy_VkVideoEncodeH264VclFrameInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264VclFrameInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264VclFrameInfoEXT*>(structExtension_out));
22498 break;
22499 }
22500 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT:
22501 {
22502 deepcopy_VkVideoEncodeH264EmitPictureParametersEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264EmitPictureParametersEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264EmitPictureParametersEXT*>(structExtension_out));
22503 break;
22504 }
22505 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT:
22506 {
22507 deepcopy_VkVideoEncodeH264ProfileEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH264ProfileEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH264ProfileEXT*>(structExtension_out));
22508 break;
22509 }
22510#endif
22511#ifdef VK_EXT_video_encode_h265
22512 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT:
22513 {
22514 deepcopy_VkVideoEncodeH265CapabilitiesEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265CapabilitiesEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265CapabilitiesEXT*>(structExtension_out));
22515 break;
22516 }
22517 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT:
22518 {
22519 deepcopy_VkVideoEncodeH265SessionCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265SessionCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265SessionCreateInfoEXT*>(structExtension_out));
22520 break;
22521 }
22522 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT:
22523 {
22524 deepcopy_VkVideoEncodeH265SessionParametersAddInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265SessionParametersAddInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265SessionParametersAddInfoEXT*>(structExtension_out));
22525 break;
22526 }
22527 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT:
22528 {
22529 deepcopy_VkVideoEncodeH265SessionParametersCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265SessionParametersCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265SessionParametersCreateInfoEXT*>(structExtension_out));
22530 break;
22531 }
22532 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT:
22533 {
22534 deepcopy_VkVideoEncodeH265VclFrameInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265VclFrameInfoEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265VclFrameInfoEXT*>(structExtension_out));
22535 break;
22536 }
22537 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT:
22538 {
22539 deepcopy_VkVideoEncodeH265EmitPictureParametersEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265EmitPictureParametersEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265EmitPictureParametersEXT*>(structExtension_out));
22540 break;
22541 }
22542 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT:
22543 {
22544 deepcopy_VkVideoEncodeH265ProfileEXT(alloc, rootType, reinterpret_cast<const VkVideoEncodeH265ProfileEXT*>(structExtension), reinterpret_cast<VkVideoEncodeH265ProfileEXT*>(structExtension_out));
22545 break;
22546 }
22547#endif
22548#ifdef VK_EXT_video_decode_h264
22549 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT:
22550 {
22551 deepcopy_VkVideoDecodeH264ProfileEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264ProfileEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264ProfileEXT*>(structExtension_out));
22552 break;
22553 }
22554 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT:
22555 {
22556 deepcopy_VkVideoDecodeH264CapabilitiesEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264CapabilitiesEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264CapabilitiesEXT*>(structExtension_out));
22557 break;
22558 }
22559 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT:
22560 {
22561 deepcopy_VkVideoDecodeH264SessionCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264SessionCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264SessionCreateInfoEXT*>(structExtension_out));
22562 break;
22563 }
22564 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:
22565 {
22566 deepcopy_VkVideoDecodeH264SessionParametersAddInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264SessionParametersAddInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264SessionParametersAddInfoEXT*>(structExtension_out));
22567 break;
22568 }
22569 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:
22570 {
22571 deepcopy_VkVideoDecodeH264SessionParametersCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264SessionParametersCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264SessionParametersCreateInfoEXT*>(structExtension_out));
22572 break;
22573 }
22574 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT:
22575 {
22576 deepcopy_VkVideoDecodeH264PictureInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264PictureInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264PictureInfoEXT*>(structExtension_out));
22577 break;
22578 }
22579 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT:
22580 {
22581 deepcopy_VkVideoDecodeH264MvcEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264MvcEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264MvcEXT*>(structExtension_out));
22582 break;
22583 }
22584 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT:
22585 {
22586 deepcopy_VkVideoDecodeH264DpbSlotInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH264DpbSlotInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH264DpbSlotInfoEXT*>(structExtension_out));
22587 break;
22588 }
22589#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022590#ifdef VK_AMD_texture_gather_bias_lod
22591 case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:
22592 {
Yilong Li422b0582021-04-30 13:09:43 -070022593 deepcopy_VkTextureLODGatherFormatPropertiesAMD(alloc, rootType, reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(structExtension), reinterpret_cast<VkTextureLODGatherFormatPropertiesAMD*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022594 break;
22595 }
22596#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022597#ifdef VK_NV_corner_sampled_image
22598 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:
22599 {
Yilong Li422b0582021-04-30 13:09:43 -070022600 deepcopy_VkPhysicalDeviceCornerSampledImageFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022601 break;
22602 }
22603#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022604#ifdef VK_NV_external_memory
22605 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:
22606 {
Yilong Li422b0582021-04-30 13:09:43 -070022607 deepcopy_VkExternalMemoryImageCreateInfoNV(alloc, rootType, reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(structExtension), reinterpret_cast<VkExternalMemoryImageCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022608 break;
22609 }
22610 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:
22611 {
Yilong Li422b0582021-04-30 13:09:43 -070022612 deepcopy_VkExportMemoryAllocateInfoNV(alloc, rootType, reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(structExtension), reinterpret_cast<VkExportMemoryAllocateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022613 break;
22614 }
22615#endif
22616#ifdef VK_NV_external_memory_win32
22617 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:
22618 {
Yilong Li422b0582021-04-30 13:09:43 -070022619 deepcopy_VkImportMemoryWin32HandleInfoNV(alloc, rootType, reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(structExtension), reinterpret_cast<VkImportMemoryWin32HandleInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022620 break;
22621 }
22622 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:
22623 {
Yilong Li422b0582021-04-30 13:09:43 -070022624 deepcopy_VkExportMemoryWin32HandleInfoNV(alloc, rootType, reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(structExtension), reinterpret_cast<VkExportMemoryWin32HandleInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022625 break;
22626 }
22627#endif
22628#ifdef VK_NV_win32_keyed_mutex
22629 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:
22630 {
Yilong Li422b0582021-04-30 13:09:43 -070022631 deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(alloc, rootType, reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(structExtension), reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022632 break;
22633 }
22634#endif
22635#ifdef VK_EXT_validation_flags
22636 case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:
22637 {
Yilong Li422b0582021-04-30 13:09:43 -070022638 deepcopy_VkValidationFlagsEXT(alloc, rootType, reinterpret_cast<const VkValidationFlagsEXT*>(structExtension), reinterpret_cast<VkValidationFlagsEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022639 break;
22640 }
22641#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022642#ifdef VK_EXT_texture_compression_astc_hdr
22643 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:
22644 {
Yilong Li422b0582021-04-30 13:09:43 -070022645 deepcopy_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022646 break;
22647 }
22648#endif
22649#ifdef VK_EXT_astc_decode_mode
22650 case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:
22651 {
Yilong Li422b0582021-04-30 13:09:43 -070022652 deepcopy_VkImageViewASTCDecodeModeEXT(alloc, rootType, reinterpret_cast<const VkImageViewASTCDecodeModeEXT*>(structExtension), reinterpret_cast<VkImageViewASTCDecodeModeEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022653 break;
22654 }
22655 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:
22656 {
Yilong Li422b0582021-04-30 13:09:43 -070022657 deepcopy_VkPhysicalDeviceASTCDecodeFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022658 break;
22659 }
22660#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022661#ifdef VK_EXT_conditional_rendering
22662 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:
22663 {
Yilong Li422b0582021-04-30 13:09:43 -070022664 deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022665 break;
22666 }
22667 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:
22668 {
Yilong Li422b0582021-04-30 13:09:43 -070022669 deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(alloc, rootType, reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(structExtension), reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022670 break;
22671 }
22672#endif
22673#ifdef VK_NV_clip_space_w_scaling
22674 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:
22675 {
Yilong Li422b0582021-04-30 13:09:43 -070022676 deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022677 break;
22678 }
22679#endif
22680#ifdef VK_EXT_display_control
22681 case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:
22682 {
Yilong Li422b0582021-04-30 13:09:43 -070022683 deepcopy_VkSwapchainCounterCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(structExtension), reinterpret_cast<VkSwapchainCounterCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022684 break;
22685 }
22686#endif
22687#ifdef VK_GOOGLE_display_timing
22688 case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:
22689 {
Yilong Li422b0582021-04-30 13:09:43 -070022690 deepcopy_VkPresentTimesInfoGOOGLE(alloc, rootType, reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(structExtension), reinterpret_cast<VkPresentTimesInfoGOOGLE*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022691 break;
22692 }
22693#endif
22694#ifdef VK_NVX_multiview_per_view_attributes
22695 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:
22696 {
Yilong Li422b0582021-04-30 13:09:43 -070022697 deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022698 break;
22699 }
22700#endif
22701#ifdef VK_NV_viewport_swizzle
22702 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:
22703 {
Yilong Li422b0582021-04-30 13:09:43 -070022704 deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022705 break;
22706 }
22707#endif
22708#ifdef VK_EXT_discard_rectangles
22709 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
22710 {
Yilong Li422b0582021-04-30 13:09:43 -070022711 deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022712 break;
22713 }
22714 case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
22715 {
Yilong Li422b0582021-04-30 13:09:43 -070022716 deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022717 break;
22718 }
22719#endif
22720#ifdef VK_EXT_conservative_rasterization
22721 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:
22722 {
Yilong Li422b0582021-04-30 13:09:43 -070022723 deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022724 break;
22725 }
22726 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:
22727 {
Yilong Li422b0582021-04-30 13:09:43 -070022728 deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022729 break;
22730 }
22731#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022732#ifdef VK_EXT_depth_clip_enable
22733 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
22734 {
Yilong Li422b0582021-04-30 13:09:43 -070022735 deepcopy_VkPhysicalDeviceDepthClipEnableFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022736 break;
22737 }
22738 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:
22739 {
Yilong Li422b0582021-04-30 13:09:43 -070022740 deepcopy_VkPipelineRasterizationDepthClipStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022741 break;
22742 }
22743#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022744#ifdef VK_EXT_debug_utils
22745 case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
22746 {
Yilong Li422b0582021-04-30 13:09:43 -070022747 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>(structExtension), reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022748 break;
22749 }
22750#endif
22751#ifdef VK_ANDROID_external_memory_android_hardware_buffer
22752 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:
22753 {
Yilong Li422b0582021-04-30 13:09:43 -070022754 deepcopy_VkAndroidHardwareBufferUsageANDROID(alloc, rootType, reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID*>(structExtension), reinterpret_cast<VkAndroidHardwareBufferUsageANDROID*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022755 break;
22756 }
22757 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:
22758 {
Yilong Li422b0582021-04-30 13:09:43 -070022759 deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(alloc, rootType, reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID*>(structExtension), reinterpret_cast<VkAndroidHardwareBufferFormatPropertiesANDROID*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022760 break;
22761 }
22762 case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:
22763 {
Yilong Li422b0582021-04-30 13:09:43 -070022764 deepcopy_VkImportAndroidHardwareBufferInfoANDROID(alloc, rootType, reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID*>(structExtension), reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022765 break;
22766 }
22767 case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:
22768 {
Yilong Li422b0582021-04-30 13:09:43 -070022769 deepcopy_VkExternalFormatANDROID(alloc, rootType, reinterpret_cast<const VkExternalFormatANDROID*>(structExtension), reinterpret_cast<VkExternalFormatANDROID*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022770 break;
22771 }
Yilong Li353409a2022-01-04 02:37:56 -080022772 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID:
22773 {
22774 deepcopy_VkAndroidHardwareBufferFormatProperties2ANDROID(alloc, rootType, reinterpret_cast<const VkAndroidHardwareBufferFormatProperties2ANDROID*>(structExtension), reinterpret_cast<VkAndroidHardwareBufferFormatProperties2ANDROID*>(structExtension_out));
22775 break;
22776 }
Lingfeng Yang750c5642018-11-13 17:03:11 -080022777#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022778#ifdef VK_EXT_inline_uniform_block
22779 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022780 {
Yilong Li422b0582021-04-30 13:09:43 -070022781 deepcopy_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022782 break;
22783 }
Yilong Lia8d45f12021-02-07 02:30:21 -080022784 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022785 {
Yilong Li422b0582021-04-30 13:09:43 -070022786 deepcopy_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceInlineUniformBlockPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022787 break;
22788 }
22789 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:
22790 {
Yilong Li422b0582021-04-30 13:09:43 -070022791 deepcopy_VkWriteDescriptorSetInlineUniformBlockEXT(alloc, rootType, reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlockEXT*>(structExtension), reinterpret_cast<VkWriteDescriptorSetInlineUniformBlockEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022792 break;
22793 }
22794 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:
22795 {
Yilong Li422b0582021-04-30 13:09:43 -070022796 deepcopy_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(structExtension), reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022797 break;
22798 }
22799#endif
22800#ifdef VK_EXT_sample_locations
22801 case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:
22802 {
Yilong Li422b0582021-04-30 13:09:43 -070022803 deepcopy_VkSampleLocationsInfoEXT(alloc, rootType, reinterpret_cast<const VkSampleLocationsInfoEXT*>(structExtension), reinterpret_cast<VkSampleLocationsInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022804 break;
22805 }
22806 case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:
22807 {
Yilong Li422b0582021-04-30 13:09:43 -070022808 deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(alloc, rootType, reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(structExtension), reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022809 break;
22810 }
22811 case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:
22812 {
Yilong Li422b0582021-04-30 13:09:43 -070022813 deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022814 break;
22815 }
22816 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
22817 {
Yilong Li422b0582021-04-30 13:09:43 -070022818 deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022819 break;
22820 }
22821#endif
22822#ifdef VK_EXT_blend_operation_advanced
22823 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:
22824 {
Yilong Li422b0582021-04-30 13:09:43 -070022825 deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022826 break;
22827 }
22828 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:
22829 {
Yilong Li422b0582021-04-30 13:09:43 -070022830 deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022831 break;
22832 }
22833 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:
22834 {
Yilong Li422b0582021-04-30 13:09:43 -070022835 deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022836 break;
22837 }
22838#endif
22839#ifdef VK_NV_fragment_coverage_to_color
22840 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:
22841 {
Yilong Li422b0582021-04-30 13:09:43 -070022842 deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022843 break;
22844 }
22845#endif
22846#ifdef VK_NV_framebuffer_mixed_samples
22847 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:
22848 {
Yilong Li422b0582021-04-30 13:09:43 -070022849 deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022850 break;
22851 }
22852#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022853#ifdef VK_NV_shader_sm_builtins
22854 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:
22855 {
Yilong Li422b0582021-04-30 13:09:43 -070022856 deepcopy_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022857 break;
22858 }
22859 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:
22860 {
Yilong Li422b0582021-04-30 13:09:43 -070022861 deepcopy_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022862 break;
22863 }
22864#endif
22865#ifdef VK_EXT_image_drm_format_modifier
22866 case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:
22867 {
Yilong Li422b0582021-04-30 13:09:43 -070022868 deepcopy_VkDrmFormatModifierPropertiesListEXT(alloc, rootType, reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT*>(structExtension), reinterpret_cast<VkDrmFormatModifierPropertiesListEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022869 break;
22870 }
22871 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
22872 {
Yilong Li422b0582021-04-30 13:09:43 -070022873 deepcopy_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022874 break;
22875 }
22876 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:
22877 {
Yilong Li422b0582021-04-30 13:09:43 -070022878 deepcopy_VkImageDrmFormatModifierListCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT*>(structExtension), reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022879 break;
22880 }
22881 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:
22882 {
Yilong Li422b0582021-04-30 13:09:43 -070022883 deepcopy_VkImageDrmFormatModifierExplicitCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT*>(structExtension), reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022884 break;
22885 }
Yilong Li353409a2022-01-04 02:37:56 -080022886 case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT:
22887 {
22888 deepcopy_VkDrmFormatModifierPropertiesList2EXT(alloc, rootType, reinterpret_cast<const VkDrmFormatModifierPropertiesList2EXT*>(structExtension), reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT*>(structExtension_out));
22889 break;
22890 }
Yilong Lia8d45f12021-02-07 02:30:21 -080022891#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022892#ifdef VK_EXT_validation_cache
22893 case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:
22894 {
Yilong Li422b0582021-04-30 13:09:43 -070022895 deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(structExtension), reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022896 break;
22897 }
22898#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022899#ifdef VK_NV_shading_rate_image
22900 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022901 {
Yilong Li422b0582021-04-30 13:09:43 -070022902 deepcopy_VkPipelineViewportShadingRateImageStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022903 break;
22904 }
Yilong Lia8d45f12021-02-07 02:30:21 -080022905 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022906 {
Yilong Li422b0582021-04-30 13:09:43 -070022907 deepcopy_VkPhysicalDeviceShadingRateImageFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022908 break;
22909 }
Yilong Lia8d45f12021-02-07 02:30:21 -080022910 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022911 {
Yilong Li422b0582021-04-30 13:09:43 -070022912 deepcopy_VkPhysicalDeviceShadingRateImagePropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShadingRateImagePropertiesNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022913 break;
22914 }
Yilong Lia8d45f12021-02-07 02:30:21 -080022915 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022916 {
Yilong Li422b0582021-04-30 13:09:43 -070022917 deepcopy_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022918 break;
22919 }
Yilong Lia8d45f12021-02-07 02:30:21 -080022920#endif
22921#ifdef VK_NV_ray_tracing
22922 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:
Lingfeng Yang750c5642018-11-13 17:03:11 -080022923 {
Yilong Li422b0582021-04-30 13:09:43 -070022924 deepcopy_VkWriteDescriptorSetAccelerationStructureNV(alloc, rootType, reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV*>(structExtension), reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022925 break;
22926 }
22927 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:
22928 {
Yilong Li422b0582021-04-30 13:09:43 -070022929 deepcopy_VkPhysicalDeviceRayTracingPropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingPropertiesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022930 break;
22931 }
22932#endif
22933#ifdef VK_NV_representative_fragment_test
22934 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:
22935 {
Yilong Li422b0582021-04-30 13:09:43 -070022936 deepcopy_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022937 break;
22938 }
22939 case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:
22940 {
Yilong Li422b0582021-04-30 13:09:43 -070022941 deepcopy_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022942 break;
22943 }
22944#endif
22945#ifdef VK_EXT_filter_cubic
22946 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:
22947 {
Yilong Li422b0582021-04-30 13:09:43 -070022948 deepcopy_VkPhysicalDeviceImageViewImageFormatInfoEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022949 break;
22950 }
22951 case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:
22952 {
Yilong Li422b0582021-04-30 13:09:43 -070022953 deepcopy_VkFilterCubicImageViewImageFormatPropertiesEXT(alloc, rootType, reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT*>(structExtension), reinterpret_cast<VkFilterCubicImageViewImageFormatPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022954 break;
22955 }
22956#endif
22957#ifdef VK_EXT_global_priority
22958 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:
22959 {
Yilong Li422b0582021-04-30 13:09:43 -070022960 deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(structExtension), reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022961 break;
22962 }
22963#endif
22964#ifdef VK_EXT_external_memory_host
22965 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:
22966 {
Yilong Li422b0582021-04-30 13:09:43 -070022967 deepcopy_VkImportMemoryHostPointerInfoEXT(alloc, rootType, reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(structExtension), reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022968 break;
22969 }
22970 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:
22971 {
Yilong Li422b0582021-04-30 13:09:43 -070022972 deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022973 break;
22974 }
22975#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080022976#ifdef VK_AMD_pipeline_compiler_control
22977 case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:
22978 {
Yilong Li422b0582021-04-30 13:09:43 -070022979 deepcopy_VkPipelineCompilerControlCreateInfoAMD(alloc, rootType, reinterpret_cast<const VkPipelineCompilerControlCreateInfoAMD*>(structExtension), reinterpret_cast<VkPipelineCompilerControlCreateInfoAMD*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080022980 break;
22981 }
22982#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080022983#ifdef VK_AMD_shader_core_properties
22984 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:
22985 {
Yilong Li422b0582021-04-30 13:09:43 -070022986 deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesAMD*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080022987 break;
22988 }
22989#endif
Yilong Li353409a2022-01-04 02:37:56 -080022990#ifdef VK_EXT_video_decode_h265
22991 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT:
22992 {
22993 deepcopy_VkVideoDecodeH265ProfileEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265ProfileEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265ProfileEXT*>(structExtension_out));
22994 break;
22995 }
22996 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT:
22997 {
22998 deepcopy_VkVideoDecodeH265CapabilitiesEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265CapabilitiesEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265CapabilitiesEXT*>(structExtension_out));
22999 break;
23000 }
23001 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT:
23002 {
23003 deepcopy_VkVideoDecodeH265SessionCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265SessionCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265SessionCreateInfoEXT*>(structExtension_out));
23004 break;
23005 }
23006 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT:
23007 {
23008 deepcopy_VkVideoDecodeH265SessionParametersAddInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265SessionParametersAddInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265SessionParametersAddInfoEXT*>(structExtension_out));
23009 break;
23010 }
23011 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT:
23012 {
23013 deepcopy_VkVideoDecodeH265SessionParametersCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265SessionParametersCreateInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265SessionParametersCreateInfoEXT*>(structExtension_out));
23014 break;
23015 }
23016 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT:
23017 {
23018 deepcopy_VkVideoDecodeH265PictureInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265PictureInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265PictureInfoEXT*>(structExtension_out));
23019 break;
23020 }
23021 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT:
23022 {
23023 deepcopy_VkVideoDecodeH265DpbSlotInfoEXT(alloc, rootType, reinterpret_cast<const VkVideoDecodeH265DpbSlotInfoEXT*>(structExtension), reinterpret_cast<VkVideoDecodeH265DpbSlotInfoEXT*>(structExtension_out));
23024 break;
23025 }
23026#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023027#ifdef VK_AMD_memory_overallocation_behavior
23028 case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:
23029 {
Yilong Li422b0582021-04-30 13:09:43 -070023030 deepcopy_VkDeviceMemoryOverallocationCreateInfoAMD(alloc, rootType, reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD*>(structExtension), reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023031 break;
23032 }
23033#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080023034#ifdef VK_EXT_vertex_attribute_divisor
23035 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:
23036 {
Yilong Li422b0582021-04-30 13:09:43 -070023037 deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080023038 break;
23039 }
23040 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:
23041 {
Yilong Li422b0582021-04-30 13:09:43 -070023042 deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080023043 break;
23044 }
Yilong Lia8d45f12021-02-07 02:30:21 -080023045 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:
23046 {
Yilong Li422b0582021-04-30 13:09:43 -070023047 deepcopy_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023048 break;
23049 }
23050#endif
23051#ifdef VK_GGP_frame_token
23052 case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:
23053 {
Yilong Li422b0582021-04-30 13:09:43 -070023054 deepcopy_VkPresentFrameTokenGGP(alloc, rootType, reinterpret_cast<const VkPresentFrameTokenGGP*>(structExtension), reinterpret_cast<VkPresentFrameTokenGGP*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023055 break;
23056 }
23057#endif
23058#ifdef VK_EXT_pipeline_creation_feedback
23059 case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:
23060 {
Yilong Li422b0582021-04-30 13:09:43 -070023061 deepcopy_VkPipelineCreationFeedbackCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineCreationFeedbackCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineCreationFeedbackCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023062 break;
23063 }
23064#endif
23065#ifdef VK_NV_compute_shader_derivatives
23066 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:
23067 {
Yilong Li422b0582021-04-30 13:09:43 -070023068 deepcopy_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023069 break;
23070 }
23071#endif
23072#ifdef VK_NV_mesh_shader
23073 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:
23074 {
Yilong Li422b0582021-04-30 13:09:43 -070023075 deepcopy_VkPhysicalDeviceMeshShaderFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023076 break;
23077 }
23078 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:
23079 {
Yilong Li422b0582021-04-30 13:09:43 -070023080 deepcopy_VkPhysicalDeviceMeshShaderPropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023081 break;
23082 }
23083#endif
23084#ifdef VK_NV_fragment_shader_barycentric
23085 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:
23086 {
Yilong Li422b0582021-04-30 13:09:43 -070023087 deepcopy_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023088 break;
23089 }
23090#endif
23091#ifdef VK_NV_shader_image_footprint
23092 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:
23093 {
Yilong Li422b0582021-04-30 13:09:43 -070023094 deepcopy_VkPhysicalDeviceShaderImageFootprintFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023095 break;
23096 }
23097#endif
23098#ifdef VK_NV_scissor_exclusive
23099 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:
23100 {
Yilong Li422b0582021-04-30 13:09:43 -070023101 deepcopy_VkPipelineViewportExclusiveScissorStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023102 break;
23103 }
23104 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:
23105 {
Yilong Li422b0582021-04-30 13:09:43 -070023106 deepcopy_VkPhysicalDeviceExclusiveScissorFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023107 break;
23108 }
Lingfeng Yang750c5642018-11-13 17:03:11 -080023109#endif
23110#ifdef VK_NV_device_diagnostic_checkpoints
23111 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:
23112 {
Yilong Li422b0582021-04-30 13:09:43 -070023113 deepcopy_VkQueueFamilyCheckpointPropertiesNV(alloc, rootType, reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV*>(structExtension), reinterpret_cast<VkQueueFamilyCheckpointPropertiesNV*>(structExtension_out));
Lingfeng Yang750c5642018-11-13 17:03:11 -080023114 break;
23115 }
23116#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023117#ifdef VK_INTEL_shader_integer_functions2
23118 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:
23119 {
Yilong Li422b0582021-04-30 13:09:43 -070023120 deepcopy_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023121 break;
23122 }
23123#endif
23124#ifdef VK_INTEL_performance_query
23125 case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL:
23126 {
Yilong Li422b0582021-04-30 13:09:43 -070023127 deepcopy_VkQueryPoolPerformanceQueryCreateInfoINTEL(alloc, rootType, reinterpret_cast<const VkQueryPoolPerformanceQueryCreateInfoINTEL*>(structExtension), reinterpret_cast<VkQueryPoolPerformanceQueryCreateInfoINTEL*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023128 break;
23129 }
23130#endif
23131#ifdef VK_EXT_pci_bus_info
23132 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
23133 {
Yilong Li422b0582021-04-30 13:09:43 -070023134 deepcopy_VkPhysicalDevicePCIBusInfoPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023135 break;
23136 }
23137#endif
23138#ifdef VK_AMD_display_native_hdr
23139 case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:
23140 {
Yilong Li422b0582021-04-30 13:09:43 -070023141 deepcopy_VkDisplayNativeHdrSurfaceCapabilitiesAMD(alloc, rootType, reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD*>(structExtension), reinterpret_cast<VkDisplayNativeHdrSurfaceCapabilitiesAMD*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023142 break;
23143 }
23144 case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:
23145 {
Yilong Li422b0582021-04-30 13:09:43 -070023146 deepcopy_VkSwapchainDisplayNativeHdrCreateInfoAMD(alloc, rootType, reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD*>(structExtension), reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023147 break;
23148 }
23149#endif
Yilong Li48081632021-04-13 22:38:10 -070023150#ifdef VK_EXT_fragment_density_map
23151 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:
Lingfeng Yange4e0e472019-02-27 23:32:20 -080023152 {
Yilong Li48081632021-04-13 22:38:10 -070023153 switch(rootType)
23154 {
23155 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
23156 {
Yilong Li422b0582021-04-30 13:09:43 -070023157 deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023158 break;
23159 }
23160 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:
23161 {
Yilong Li422b0582021-04-30 13:09:43 -070023162 deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023163 break;
23164 }
23165 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
23166 {
Yilong Li422b0582021-04-30 13:09:43 -070023167 deepcopy_VkImportColorBufferGOOGLE(alloc, rootType, reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension), reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023168 break;
23169 }
23170 default:
23171 {
Yilong Li422b0582021-04-30 13:09:43 -070023172 deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023173 break;
23174 }
23175 }
Lingfeng Yange4e0e472019-02-27 23:32:20 -080023176 break;
23177 }
Yilong Li48081632021-04-13 22:38:10 -070023178 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:
Yilong Lif21226b2020-07-01 14:47:57 -070023179 {
Yilong Li48081632021-04-13 22:38:10 -070023180 switch(rootType)
23181 {
23182 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:
23183 {
Yilong Li422b0582021-04-30 13:09:43 -070023184 deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023185 break;
23186 }
23187 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
23188 {
Yilong Li422b0582021-04-30 13:09:43 -070023189 deepcopy_VkImportPhysicalAddressGOOGLE(alloc, rootType, reinterpret_cast<const VkImportPhysicalAddressGOOGLE*>(structExtension), reinterpret_cast<VkImportPhysicalAddressGOOGLE*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023190 break;
23191 }
23192 default:
23193 {
Yilong Li422b0582021-04-30 13:09:43 -070023194 deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023195 break;
23196 }
23197 }
Yilong Lif21226b2020-07-01 14:47:57 -070023198 break;
23199 }
Yilong Li48081632021-04-13 22:38:10 -070023200 case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:
Lingfeng Yange4e0e472019-02-27 23:32:20 -080023201 {
Yilong Li48081632021-04-13 22:38:10 -070023202 switch(rootType)
23203 {
23204 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:
23205 {
Yilong Li422b0582021-04-30 13:09:43 -070023206 deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(structExtension), reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023207 break;
23208 }
23209 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2:
23210 {
Yilong Li422b0582021-04-30 13:09:43 -070023211 deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(structExtension), reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023212 break;
23213 }
23214 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
23215 {
Yilong Li422b0582021-04-30 13:09:43 -070023216 deepcopy_VkImportBufferGOOGLE(alloc, rootType, reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension), reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023217 break;
23218 }
23219 default:
23220 {
Yilong Li422b0582021-04-30 13:09:43 -070023221 deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT*>(structExtension), reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023222 break;
23223 }
23224 }
Lingfeng Yange4e0e472019-02-27 23:32:20 -080023225 break;
23226 }
23227#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023228#ifdef VK_EXT_subgroup_size_control
23229 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:
23230 {
Yilong Li422b0582021-04-30 13:09:43 -070023231 deepcopy_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023232 break;
23233 }
23234 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:
23235 {
Yilong Li422b0582021-04-30 13:09:43 -070023236 deepcopy_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023237 break;
23238 }
23239 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT:
23240 {
Yilong Li422b0582021-04-30 13:09:43 -070023241 deepcopy_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023242 break;
23243 }
23244#endif
23245#ifdef VK_AMD_shader_core_properties2
23246 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD:
23247 {
Yilong Li422b0582021-04-30 13:09:43 -070023248 deepcopy_VkPhysicalDeviceShaderCoreProperties2AMD(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderCoreProperties2AMD*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderCoreProperties2AMD*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023249 break;
23250 }
23251#endif
23252#ifdef VK_AMD_device_coherent_memory
23253 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:
23254 {
Yilong Li422b0582021-04-30 13:09:43 -070023255 deepcopy_VkPhysicalDeviceCoherentMemoryFeaturesAMD(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(structExtension), reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023256 break;
23257 }
23258#endif
23259#ifdef VK_EXT_shader_image_atomic_int64
23260 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:
23261 {
Yilong Li422b0582021-04-30 13:09:43 -070023262 deepcopy_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023263 break;
23264 }
23265#endif
23266#ifdef VK_EXT_memory_budget
23267 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:
23268 {
Yilong Li422b0582021-04-30 13:09:43 -070023269 deepcopy_VkPhysicalDeviceMemoryBudgetPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023270 break;
23271 }
23272#endif
23273#ifdef VK_EXT_memory_priority
23274 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:
23275 {
Yilong Li422b0582021-04-30 13:09:43 -070023276 deepcopy_VkPhysicalDeviceMemoryPriorityFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023277 break;
23278 }
23279 case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:
23280 {
Yilong Li422b0582021-04-30 13:09:43 -070023281 deepcopy_VkMemoryPriorityAllocateInfoEXT(alloc, rootType, reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT*>(structExtension), reinterpret_cast<VkMemoryPriorityAllocateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023282 break;
23283 }
23284#endif
23285#ifdef VK_NV_dedicated_allocation_image_aliasing
23286 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:
23287 {
Yilong Li422b0582021-04-30 13:09:43 -070023288 deepcopy_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023289 break;
23290 }
23291#endif
23292#ifdef VK_EXT_buffer_device_address
23293 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:
23294 {
Yilong Li422b0582021-04-30 13:09:43 -070023295 deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023296 break;
23297 }
23298 case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:
23299 {
Yilong Li422b0582021-04-30 13:09:43 -070023300 deepcopy_VkBufferDeviceAddressCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT*>(structExtension), reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023301 break;
23302 }
23303#endif
23304#ifdef VK_EXT_validation_features
23305 case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:
23306 {
Yilong Li422b0582021-04-30 13:09:43 -070023307 deepcopy_VkValidationFeaturesEXT(alloc, rootType, reinterpret_cast<const VkValidationFeaturesEXT*>(structExtension), reinterpret_cast<VkValidationFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023308 break;
23309 }
23310#endif
23311#ifdef VK_NV_cooperative_matrix
23312 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:
23313 {
Yilong Li422b0582021-04-30 13:09:43 -070023314 deepcopy_VkPhysicalDeviceCooperativeMatrixFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023315 break;
23316 }
23317 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:
23318 {
Yilong Li422b0582021-04-30 13:09:43 -070023319 deepcopy_VkPhysicalDeviceCooperativeMatrixPropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023320 break;
23321 }
23322#endif
23323#ifdef VK_NV_coverage_reduction_mode
23324 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:
23325 {
Yilong Li422b0582021-04-30 13:09:43 -070023326 deepcopy_VkPhysicalDeviceCoverageReductionModeFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023327 break;
23328 }
23329 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:
23330 {
Yilong Li422b0582021-04-30 13:09:43 -070023331 deepcopy_VkPipelineCoverageReductionStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023332 break;
23333 }
23334#endif
23335#ifdef VK_EXT_fragment_shader_interlock
23336 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:
23337 {
Yilong Li422b0582021-04-30 13:09:43 -070023338 deepcopy_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023339 break;
23340 }
23341#endif
23342#ifdef VK_EXT_ycbcr_image_arrays
23343 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:
23344 {
Yilong Li422b0582021-04-30 13:09:43 -070023345 deepcopy_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023346 break;
23347 }
23348#endif
Yilong Li353409a2022-01-04 02:37:56 -080023349#ifdef VK_EXT_provoking_vertex
23350 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT:
23351 {
23352 deepcopy_VkPhysicalDeviceProvokingVertexFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT*>(structExtension_out));
23353 break;
23354 }
23355 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT:
23356 {
23357 deepcopy_VkPhysicalDeviceProvokingVertexPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceProvokingVertexPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT*>(structExtension_out));
23358 break;
23359 }
23360 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT:
23361 {
23362 deepcopy_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT*>(structExtension_out));
23363 break;
23364 }
23365#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023366#ifdef VK_EXT_full_screen_exclusive
23367 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:
23368 {
Yilong Li422b0582021-04-30 13:09:43 -070023369 deepcopy_VkSurfaceFullScreenExclusiveInfoEXT(alloc, rootType, reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT*>(structExtension), reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023370 break;
23371 }
23372 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:
23373 {
Yilong Li422b0582021-04-30 13:09:43 -070023374 deepcopy_VkSurfaceCapabilitiesFullScreenExclusiveEXT(alloc, rootType, reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT*>(structExtension), reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023375 break;
23376 }
23377 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:
23378 {
Yilong Li422b0582021-04-30 13:09:43 -070023379 deepcopy_VkSurfaceFullScreenExclusiveWin32InfoEXT(alloc, rootType, reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT*>(structExtension), reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023380 break;
23381 }
23382#endif
23383#ifdef VK_EXT_line_rasterization
23384 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:
23385 {
Yilong Li422b0582021-04-30 13:09:43 -070023386 deepcopy_VkPhysicalDeviceLineRasterizationFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023387 break;
23388 }
23389 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:
23390 {
Yilong Li422b0582021-04-30 13:09:43 -070023391 deepcopy_VkPhysicalDeviceLineRasterizationPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceLineRasterizationPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023392 break;
23393 }
23394 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:
23395 {
Yilong Li422b0582021-04-30 13:09:43 -070023396 deepcopy_VkPipelineRasterizationLineStateCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023397 break;
23398 }
23399#endif
23400#ifdef VK_EXT_shader_atomic_float
23401 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:
23402 {
Yilong Li422b0582021-04-30 13:09:43 -070023403 deepcopy_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023404 break;
23405 }
23406#endif
23407#ifdef VK_EXT_index_type_uint8
23408 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:
23409 {
Yilong Li422b0582021-04-30 13:09:43 -070023410 deepcopy_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023411 break;
23412 }
23413#endif
23414#ifdef VK_EXT_extended_dynamic_state
23415 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
23416 {
Yilong Li422b0582021-04-30 13:09:43 -070023417 deepcopy_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023418 break;
23419 }
23420#endif
Yilong Li353409a2022-01-04 02:37:56 -080023421#ifdef VK_EXT_shader_atomic_float2
23422 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT:
23423 {
23424 deepcopy_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT*>(structExtension_out));
23425 break;
23426 }
23427#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023428#ifdef VK_EXT_shader_demote_to_helper_invocation
23429 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT:
23430 {
Yilong Li422b0582021-04-30 13:09:43 -070023431 deepcopy_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023432 break;
23433 }
23434#endif
23435#ifdef VK_NV_device_generated_commands
23436 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV:
23437 {
Yilong Li422b0582021-04-30 13:09:43 -070023438 deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023439 break;
23440 }
23441 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV:
23442 {
Yilong Li422b0582021-04-30 13:09:43 -070023443 deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023444 break;
23445 }
23446 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV:
23447 {
Yilong Li422b0582021-04-30 13:09:43 -070023448 deepcopy_VkGraphicsPipelineShaderGroupsCreateInfoNV(alloc, rootType, reinterpret_cast<const VkGraphicsPipelineShaderGroupsCreateInfoNV*>(structExtension), reinterpret_cast<VkGraphicsPipelineShaderGroupsCreateInfoNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023449 break;
23450 }
23451#endif
Yilong Li353409a2022-01-04 02:37:56 -080023452#ifdef VK_NV_inherited_viewport_scissor
23453 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV:
23454 {
23455 deepcopy_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceInheritedViewportScissorFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceInheritedViewportScissorFeaturesNV*>(structExtension_out));
23456 break;
23457 }
23458 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV:
23459 {
23460 deepcopy_VkCommandBufferInheritanceViewportScissorInfoNV(alloc, rootType, reinterpret_cast<const VkCommandBufferInheritanceViewportScissorInfoNV*>(structExtension), reinterpret_cast<VkCommandBufferInheritanceViewportScissorInfoNV*>(structExtension_out));
23461 break;
23462 }
23463#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023464#ifdef VK_EXT_texel_buffer_alignment
23465 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:
23466 {
Yilong Li422b0582021-04-30 13:09:43 -070023467 deepcopy_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023468 break;
23469 }
23470 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:
23471 {
Yilong Li422b0582021-04-30 13:09:43 -070023472 deepcopy_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023473 break;
23474 }
23475#endif
23476#ifdef VK_QCOM_render_pass_transform
23477 case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM:
23478 {
Yilong Li422b0582021-04-30 13:09:43 -070023479 deepcopy_VkRenderPassTransformBeginInfoQCOM(alloc, rootType, reinterpret_cast<const VkRenderPassTransformBeginInfoQCOM*>(structExtension), reinterpret_cast<VkRenderPassTransformBeginInfoQCOM*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023480 break;
23481 }
23482 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM:
23483 {
Yilong Li422b0582021-04-30 13:09:43 -070023484 deepcopy_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(alloc, rootType, reinterpret_cast<const VkCommandBufferInheritanceRenderPassTransformInfoQCOM*>(structExtension), reinterpret_cast<VkCommandBufferInheritanceRenderPassTransformInfoQCOM*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023485 break;
23486 }
23487#endif
23488#ifdef VK_EXT_device_memory_report
23489 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:
23490 {
Yilong Li422b0582021-04-30 13:09:43 -070023491 deepcopy_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023492 break;
23493 }
23494 case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT:
23495 {
Yilong Li422b0582021-04-30 13:09:43 -070023496 deepcopy_VkDeviceDeviceMemoryReportCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension), reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023497 break;
23498 }
23499#endif
23500#ifdef VK_EXT_robustness2
23501 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:
23502 {
Yilong Li422b0582021-04-30 13:09:43 -070023503 deepcopy_VkPhysicalDeviceRobustness2FeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023504 break;
23505 }
23506 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:
23507 {
Yilong Li422b0582021-04-30 13:09:43 -070023508 deepcopy_VkPhysicalDeviceRobustness2PropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023509 break;
23510 }
23511#endif
23512#ifdef VK_EXT_custom_border_color
23513 case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
23514 {
Yilong Li422b0582021-04-30 13:09:43 -070023515 deepcopy_VkSamplerCustomBorderColorCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension), reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023516 break;
23517 }
23518 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
23519 {
Yilong Li422b0582021-04-30 13:09:43 -070023520 deepcopy_VkPhysicalDeviceCustomBorderColorPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023521 break;
23522 }
23523 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
23524 {
Yilong Li422b0582021-04-30 13:09:43 -070023525 deepcopy_VkPhysicalDeviceCustomBorderColorFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023526 break;
23527 }
23528#endif
23529#ifdef VK_EXT_private_data
23530 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT:
23531 {
Yilong Li422b0582021-04-30 13:09:43 -070023532 deepcopy_VkPhysicalDevicePrivateDataFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePrivateDataFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePrivateDataFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023533 break;
23534 }
23535 case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT:
23536 {
Yilong Li422b0582021-04-30 13:09:43 -070023537 deepcopy_VkDevicePrivateDataCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkDevicePrivateDataCreateInfoEXT*>(structExtension), reinterpret_cast<VkDevicePrivateDataCreateInfoEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023538 break;
23539 }
23540#endif
23541#ifdef VK_EXT_pipeline_creation_cache_control
23542 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT:
23543 {
Yilong Li422b0582021-04-30 13:09:43 -070023544 deepcopy_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023545 break;
23546 }
23547#endif
23548#ifdef VK_NV_device_diagnostics_config
23549 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV:
23550 {
Yilong Li422b0582021-04-30 13:09:43 -070023551 deepcopy_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceDiagnosticsConfigFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023552 break;
23553 }
23554 case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV:
23555 {
Yilong Li422b0582021-04-30 13:09:43 -070023556 deepcopy_VkDeviceDiagnosticsConfigCreateInfoNV(alloc, rootType, reinterpret_cast<const VkDeviceDiagnosticsConfigCreateInfoNV*>(structExtension), reinterpret_cast<VkDeviceDiagnosticsConfigCreateInfoNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023557 break;
23558 }
23559#endif
23560#ifdef VK_NV_fragment_shading_rate_enums
23561 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV:
23562 {
Yilong Li422b0582021-04-30 13:09:43 -070023563 deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023564 break;
23565 }
23566 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV:
23567 {
Yilong Li422b0582021-04-30 13:09:43 -070023568 deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023569 break;
23570 }
23571 case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV:
23572 {
Yilong Li422b0582021-04-30 13:09:43 -070023573 deepcopy_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(alloc, rootType, reinterpret_cast<const VkPipelineFragmentShadingRateEnumStateCreateInfoNV*>(structExtension), reinterpret_cast<VkPipelineFragmentShadingRateEnumStateCreateInfoNV*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023574 break;
23575 }
23576#endif
Yilong Li353409a2022-01-04 02:37:56 -080023577#ifdef VK_NV_ray_tracing_motion_blur
23578 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV:
23579 {
23580 deepcopy_VkAccelerationStructureGeometryMotionTrianglesDataNV(alloc, rootType, reinterpret_cast<const VkAccelerationStructureGeometryMotionTrianglesDataNV*>(structExtension), reinterpret_cast<VkAccelerationStructureGeometryMotionTrianglesDataNV*>(structExtension_out));
23581 break;
23582 }
23583 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV:
23584 {
23585 deepcopy_VkAccelerationStructureMotionInfoNV(alloc, rootType, reinterpret_cast<const VkAccelerationStructureMotionInfoNV*>(structExtension), reinterpret_cast<VkAccelerationStructureMotionInfoNV*>(structExtension_out));
23586 break;
23587 }
23588 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV:
23589 {
23590 deepcopy_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV*>(structExtension_out));
23591 break;
23592 }
23593#endif
23594#ifdef VK_EXT_ycbcr_2plane_444_formats
23595 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT:
23596 {
23597 deepcopy_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(structExtension_out));
23598 break;
23599 }
23600#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023601#ifdef VK_EXT_fragment_density_map2
23602 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT:
23603 {
Yilong Li422b0582021-04-30 13:09:43 -070023604 deepcopy_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023605 break;
23606 }
23607 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT:
23608 {
Yilong Li422b0582021-04-30 13:09:43 -070023609 deepcopy_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023610 break;
23611 }
23612#endif
23613#ifdef VK_QCOM_rotated_copy_commands
23614 case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM:
23615 {
Yilong Li422b0582021-04-30 13:09:43 -070023616 deepcopy_VkCopyCommandTransformInfoQCOM(alloc, rootType, reinterpret_cast<const VkCopyCommandTransformInfoQCOM*>(structExtension), reinterpret_cast<VkCopyCommandTransformInfoQCOM*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023617 break;
23618 }
23619#endif
23620#ifdef VK_EXT_image_robustness
23621 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:
23622 {
Yilong Li422b0582021-04-30 13:09:43 -070023623 deepcopy_VkPhysicalDeviceImageRobustnessFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceImageRobustnessFeaturesEXT*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023624 break;
23625 }
23626#endif
23627#ifdef VK_EXT_4444_formats
23628 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:
23629 {
Yilong Li422b0582021-04-30 13:09:43 -070023630 deepcopy_VkPhysicalDevice4444FormatsFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023631 break;
23632 }
23633#endif
Yilong Li353409a2022-01-04 02:37:56 -080023634#ifdef VK_EXT_rgba10x6_formats
23635 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT:
23636 {
23637 deepcopy_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT*>(structExtension_out));
23638 break;
23639 }
23640#endif
23641#ifdef VK_VALVE_mutable_descriptor_type
23642 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE:
23643 {
23644 deepcopy_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE*>(structExtension), reinterpret_cast<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE*>(structExtension_out));
23645 break;
23646 }
23647 case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE:
23648 {
23649 deepcopy_VkMutableDescriptorTypeCreateInfoVALVE(alloc, rootType, reinterpret_cast<const VkMutableDescriptorTypeCreateInfoVALVE*>(structExtension), reinterpret_cast<VkMutableDescriptorTypeCreateInfoVALVE*>(structExtension_out));
23650 break;
23651 }
23652#endif
23653#ifdef VK_EXT_vertex_input_dynamic_state
23654 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:
23655 {
23656 deepcopy_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>(structExtension_out));
23657 break;
23658 }
23659#endif
23660#ifdef VK_EXT_physical_device_drm
23661 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT:
23662 {
23663 deepcopy_VkPhysicalDeviceDrmPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceDrmPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceDrmPropertiesEXT*>(structExtension_out));
23664 break;
23665 }
23666#endif
23667#ifdef VK_EXT_primitive_topology_list_restart
23668 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT:
23669 {
23670 deepcopy_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(structExtension_out));
23671 break;
23672 }
23673#endif
23674#ifdef VK_FUCHSIA_external_memory
23675 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA:
23676 {
23677 deepcopy_VkImportMemoryZirconHandleInfoFUCHSIA(alloc, rootType, reinterpret_cast<const VkImportMemoryZirconHandleInfoFUCHSIA*>(structExtension), reinterpret_cast<VkImportMemoryZirconHandleInfoFUCHSIA*>(structExtension_out));
23678 break;
23679 }
23680#endif
23681#ifdef VK_FUCHSIA_buffer_collection
23682 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA:
23683 {
23684 deepcopy_VkImportMemoryBufferCollectionFUCHSIA(alloc, rootType, reinterpret_cast<const VkImportMemoryBufferCollectionFUCHSIA*>(structExtension), reinterpret_cast<VkImportMemoryBufferCollectionFUCHSIA*>(structExtension_out));
23685 break;
23686 }
23687 case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA:
23688 {
23689 deepcopy_VkBufferCollectionImageCreateInfoFUCHSIA(alloc, rootType, reinterpret_cast<const VkBufferCollectionImageCreateInfoFUCHSIA*>(structExtension), reinterpret_cast<VkBufferCollectionImageCreateInfoFUCHSIA*>(structExtension_out));
23690 break;
23691 }
23692 case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA:
23693 {
23694 deepcopy_VkBufferCollectionBufferCreateInfoFUCHSIA(alloc, rootType, reinterpret_cast<const VkBufferCollectionBufferCreateInfoFUCHSIA*>(structExtension), reinterpret_cast<VkBufferCollectionBufferCreateInfoFUCHSIA*>(structExtension_out));
23695 break;
23696 }
23697#endif
23698#ifdef VK_HUAWEI_subpass_shading
23699 case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI:
23700 {
23701 deepcopy_VkSubpassShadingPipelineCreateInfoHUAWEI(alloc, rootType, reinterpret_cast<const VkSubpassShadingPipelineCreateInfoHUAWEI*>(structExtension), reinterpret_cast<VkSubpassShadingPipelineCreateInfoHUAWEI*>(structExtension_out));
23702 break;
23703 }
23704 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI:
23705 {
23706 deepcopy_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI*>(structExtension_out));
23707 break;
23708 }
23709 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI:
23710 {
23711 deepcopy_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI*>(structExtension), reinterpret_cast<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI*>(structExtension_out));
23712 break;
23713 }
23714#endif
23715#ifdef VK_HUAWEI_invocation_mask
23716 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI:
23717 {
23718 deepcopy_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI*>(structExtension), reinterpret_cast<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI*>(structExtension_out));
23719 break;
23720 }
23721#endif
23722#ifdef VK_NV_external_memory_rdma
23723 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV:
23724 {
23725 deepcopy_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV*>(structExtension), reinterpret_cast<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV*>(structExtension_out));
23726 break;
23727 }
23728#endif
23729#ifdef VK_EXT_extended_dynamic_state2
23730 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:
23731 {
23732 deepcopy_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(structExtension_out));
23733 break;
23734 }
23735#endif
23736#ifdef VK_EXT_color_write_enable
23737 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:
23738 {
23739 deepcopy_VkPhysicalDeviceColorWriteEnableFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(structExtension_out));
23740 break;
23741 }
23742 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT:
23743 {
23744 deepcopy_VkPipelineColorWriteCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkPipelineColorWriteCreateInfoEXT*>(structExtension), reinterpret_cast<VkPipelineColorWriteCreateInfoEXT*>(structExtension_out));
23745 break;
23746 }
23747#endif
Yilong Li48081632021-04-13 22:38:10 -070023748#ifdef VK_GOOGLE_gfxstream
23749 case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE:
23750 {
Yilong Li422b0582021-04-30 13:09:43 -070023751 deepcopy_VkImportColorBufferGOOGLE(alloc, rootType, reinterpret_cast<const VkImportColorBufferGOOGLE*>(structExtension), reinterpret_cast<VkImportColorBufferGOOGLE*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023752 break;
23753 }
23754 case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE:
23755 {
Yilong Li422b0582021-04-30 13:09:43 -070023756 deepcopy_VkImportBufferGOOGLE(alloc, rootType, reinterpret_cast<const VkImportBufferGOOGLE*>(structExtension), reinterpret_cast<VkImportBufferGOOGLE*>(structExtension_out));
Yilong Li48081632021-04-13 22:38:10 -070023757 break;
23758 }
23759 case VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE:
23760 {
Yilong Li422b0582021-04-30 13:09:43 -070023761 deepcopy_VkImportPhysicalAddressGOOGLE(alloc, rootType, reinterpret_cast<const VkImportPhysicalAddressGOOGLE*>(structExtension), reinterpret_cast<VkImportPhysicalAddressGOOGLE*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023762 break;
23763 }
23764#endif
Yilong Li353409a2022-01-04 02:37:56 -080023765#ifdef VK_EXT_global_priority_query
23766 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT:
23767 {
23768 deepcopy_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT*>(structExtension_out));
23769 break;
23770 }
23771 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT:
23772 {
23773 deepcopy_VkQueueFamilyGlobalPriorityPropertiesEXT(alloc, rootType, reinterpret_cast<const VkQueueFamilyGlobalPriorityPropertiesEXT*>(structExtension), reinterpret_cast<VkQueueFamilyGlobalPriorityPropertiesEXT*>(structExtension_out));
23774 break;
23775 }
23776#endif
23777#ifdef VK_EXT_multi_draw
23778 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT:
23779 {
23780 deepcopy_VkPhysicalDeviceMultiDrawFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMultiDrawFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiDrawFeaturesEXT*>(structExtension_out));
23781 break;
23782 }
23783 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT:
23784 {
23785 deepcopy_VkPhysicalDeviceMultiDrawPropertiesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceMultiDrawPropertiesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceMultiDrawPropertiesEXT*>(structExtension_out));
23786 break;
23787 }
23788#endif
23789#ifdef VK_EXT_border_color_swizzle
23790 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT:
23791 {
23792 deepcopy_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT*>(structExtension_out));
23793 break;
23794 }
23795 case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT:
23796 {
23797 deepcopy_VkSamplerBorderColorComponentMappingCreateInfoEXT(alloc, rootType, reinterpret_cast<const VkSamplerBorderColorComponentMappingCreateInfoEXT*>(structExtension), reinterpret_cast<VkSamplerBorderColorComponentMappingCreateInfoEXT*>(structExtension_out));
23798 break;
23799 }
23800#endif
23801#ifdef VK_EXT_pageable_device_local_memory
23802 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT:
23803 {
23804 deepcopy_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(alloc, rootType, reinterpret_cast<const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT*>(structExtension), reinterpret_cast<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT*>(structExtension_out));
23805 break;
23806 }
23807#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080023808#ifdef VK_KHR_acceleration_structure
23809 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:
23810 {
Yilong Li422b0582021-04-30 13:09:43 -070023811 deepcopy_VkWriteDescriptorSetAccelerationStructureKHR(alloc, rootType, reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureKHR*>(structExtension), reinterpret_cast<VkWriteDescriptorSetAccelerationStructureKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023812 break;
23813 }
23814 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR:
23815 {
Yilong Li422b0582021-04-30 13:09:43 -070023816 deepcopy_VkPhysicalDeviceAccelerationStructureFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceAccelerationStructureFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023817 break;
23818 }
23819 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR:
23820 {
Yilong Li422b0582021-04-30 13:09:43 -070023821 deepcopy_VkPhysicalDeviceAccelerationStructurePropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceAccelerationStructurePropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceAccelerationStructurePropertiesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023822 break;
23823 }
23824#endif
23825#ifdef VK_KHR_ray_tracing_pipeline
23826 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR:
23827 {
Yilong Li422b0582021-04-30 13:09:43 -070023828 deepcopy_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023829 break;
23830 }
23831 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR:
23832 {
Yilong Li422b0582021-04-30 13:09:43 -070023833 deepcopy_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023834 break;
23835 }
23836#endif
23837#ifdef VK_KHR_ray_query
23838 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR:
23839 {
Yilong Li422b0582021-04-30 13:09:43 -070023840 deepcopy_VkPhysicalDeviceRayQueryFeaturesKHR(alloc, rootType, reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR*>(structExtension), reinterpret_cast<VkPhysicalDeviceRayQueryFeaturesKHR*>(structExtension_out));
Yilong Lia8d45f12021-02-07 02:30:21 -080023841 break;
23842 }
23843#endif
Lingfeng Yang750c5642018-11-13 17:03:11 -080023844 default:
23845 {
23846 return;
23847 }
23848 }
23849}
23850
Lingfeng Yang71b596b2018-11-07 18:03:25 -080023851
23852} // namespace goldfish_vk