• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module func_table
17 // (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18 // Please do not modify directly;
19 // re-run android/scripts/generate-vulkan-sources.sh,
20 // or directly from Python by defining:
21 // VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
23 // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24 
25 #include "func_table.h"
26 
27 
28 #include "VkEncoder.h"
29 #include "../OpenglSystemCommon/HostConnection.h"
30 #include "ResourceTracker.h"
31 
32 #include "goldfish_vk_private_defs.h"
33 
34 #include <log/log.h>
35 
36 // Stuff we are not going to use but if included,
37 // will cause compile errors. These are Android Vulkan
38 // required extensions, but the approach will be to
39 // implement them completely on the guest side.
40 #undef VK_KHR_android_surface
41 
42 
43 namespace goldfish_vk {
44 
sOnInvalidDynamicallyCheckedCall(const char * apiname,const char * neededFeature)45 static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46 {
47     ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48     abort();
49 }
50 #ifdef VK_VERSION_1_0
entry_vkCreateInstance(const VkInstanceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkInstance * pInstance)51 static VkResult entry_vkCreateInstance(
52     const VkInstanceCreateInfo* pCreateInfo,
53     const VkAllocationCallbacks* pAllocator,
54     VkInstance* pInstance)
55 {
56     AEMU_SCOPED_TRACE("vkCreateInstance");
57     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
58     VkResult vkCreateInstance_VkResult_return = (VkResult)0;
59     vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
60     return vkCreateInstance_VkResult_return;
61 }
entry_vkDestroyInstance(VkInstance instance,const VkAllocationCallbacks * pAllocator)62 static void entry_vkDestroyInstance(
63     VkInstance instance,
64     const VkAllocationCallbacks* pAllocator)
65 {
66     AEMU_SCOPED_TRACE("vkDestroyInstance");
67     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
68     vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
69 }
entry_vkEnumeratePhysicalDevices(VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)70 static VkResult entry_vkEnumeratePhysicalDevices(
71     VkInstance instance,
72     uint32_t* pPhysicalDeviceCount,
73     VkPhysicalDevice* pPhysicalDevices)
74 {
75     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
76     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
77     VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
78     auto resources = ResourceTracker::get();
79     vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
80     return vkEnumeratePhysicalDevices_VkResult_return;
81 }
entry_vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)82 static void entry_vkGetPhysicalDeviceFeatures(
83     VkPhysicalDevice physicalDevice,
84     VkPhysicalDeviceFeatures* pFeatures)
85 {
86     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
87     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
88     vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
89 }
entry_vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)90 static void entry_vkGetPhysicalDeviceFormatProperties(
91     VkPhysicalDevice physicalDevice,
92     VkFormat format,
93     VkFormatProperties* pFormatProperties)
94 {
95     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
96     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
97     vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
98 }
entry_vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)99 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
100     VkPhysicalDevice physicalDevice,
101     VkFormat format,
102     VkImageType type,
103     VkImageTiling tiling,
104     VkImageUsageFlags usage,
105     VkImageCreateFlags flags,
106     VkImageFormatProperties* pImageFormatProperties)
107 {
108     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
109     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
110     VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
111     vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
112     return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113 }
entry_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)114 static void entry_vkGetPhysicalDeviceProperties(
115     VkPhysicalDevice physicalDevice,
116     VkPhysicalDeviceProperties* pProperties)
117 {
118     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
119     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
120     vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
121 }
entry_vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)122 static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123     VkPhysicalDevice physicalDevice,
124     uint32_t* pQueueFamilyPropertyCount,
125     VkQueueFamilyProperties* pQueueFamilyProperties)
126 {
127     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
128     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
129     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
130 }
entry_vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)131 static void entry_vkGetPhysicalDeviceMemoryProperties(
132     VkPhysicalDevice physicalDevice,
133     VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134 {
135     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
136     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
137     vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
138 }
entry_vkGetInstanceProcAddr(VkInstance instance,const char * pName)139 static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140     VkInstance instance,
141     const char* pName)
142 {
143     AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
144     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
145     PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
146     vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
147     return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148 }
entry_vkGetDeviceProcAddr(VkDevice device,const char * pName)149 static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150     VkDevice device,
151     const char* pName)
152 {
153     AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
154     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
155     PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
156     vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
157     return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158 }
entry_vkCreateDevice(VkPhysicalDevice physicalDevice,const VkDeviceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDevice * pDevice)159 static VkResult entry_vkCreateDevice(
160     VkPhysicalDevice physicalDevice,
161     const VkDeviceCreateInfo* pCreateInfo,
162     const VkAllocationCallbacks* pAllocator,
163     VkDevice* pDevice)
164 {
165     AEMU_SCOPED_TRACE("vkCreateDevice");
166     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
167     VkResult vkCreateDevice_VkResult_return = (VkResult)0;
168     vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
169     return vkCreateDevice_VkResult_return;
170 }
entry_vkDestroyDevice(VkDevice device,const VkAllocationCallbacks * pAllocator)171 static void entry_vkDestroyDevice(
172     VkDevice device,
173     const VkAllocationCallbacks* pAllocator)
174 {
175     AEMU_SCOPED_TRACE("vkDestroyDevice");
176     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
177     vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
178 }
entry_vkEnumerateInstanceExtensionProperties(const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)179 static VkResult entry_vkEnumerateInstanceExtensionProperties(
180     const char* pLayerName,
181     uint32_t* pPropertyCount,
182     VkExtensionProperties* pProperties)
183 {
184     AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
185     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
186     VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
187     auto resources = ResourceTracker::get();
188     vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
189     return vkEnumerateInstanceExtensionProperties_VkResult_return;
190 }
entry_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)191 static VkResult entry_vkEnumerateDeviceExtensionProperties(
192     VkPhysicalDevice physicalDevice,
193     const char* pLayerName,
194     uint32_t* pPropertyCount,
195     VkExtensionProperties* pProperties)
196 {
197     AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
198     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
199     VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
200     auto resources = ResourceTracker::get();
201     vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
202     return vkEnumerateDeviceExtensionProperties_VkResult_return;
203 }
entry_vkEnumerateInstanceLayerProperties(uint32_t * pPropertyCount,VkLayerProperties * pProperties)204 static VkResult entry_vkEnumerateInstanceLayerProperties(
205     uint32_t* pPropertyCount,
206     VkLayerProperties* pProperties)
207 {
208     AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
209     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
210     VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
211     vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
212     return vkEnumerateInstanceLayerProperties_VkResult_return;
213 }
entry_vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkLayerProperties * pProperties)214 static VkResult entry_vkEnumerateDeviceLayerProperties(
215     VkPhysicalDevice physicalDevice,
216     uint32_t* pPropertyCount,
217     VkLayerProperties* pProperties)
218 {
219     AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
220     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
221     VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
222     vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
223     return vkEnumerateDeviceLayerProperties_VkResult_return;
224 }
entry_vkGetDeviceQueue(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)225 static void entry_vkGetDeviceQueue(
226     VkDevice device,
227     uint32_t queueFamilyIndex,
228     uint32_t queueIndex,
229     VkQueue* pQueue)
230 {
231     AEMU_SCOPED_TRACE("vkGetDeviceQueue");
232     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
233     vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
234 }
entry_vkQueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)235 static VkResult entry_vkQueueSubmit(
236     VkQueue queue,
237     uint32_t submitCount,
238     const VkSubmitInfo* pSubmits,
239     VkFence fence)
240 {
241     AEMU_SCOPED_TRACE("vkQueueSubmit");
242     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
243     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
244     auto resources = ResourceTracker::get();
245     vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
246     return vkQueueSubmit_VkResult_return;
247 }
entry_vkQueueWaitIdle(VkQueue queue)248 static VkResult entry_vkQueueWaitIdle(
249     VkQueue queue)
250 {
251     AEMU_SCOPED_TRACE("vkQueueWaitIdle");
252     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
253     VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
254     auto resources = ResourceTracker::get();
255     vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
256     return vkQueueWaitIdle_VkResult_return;
257 }
entry_vkDeviceWaitIdle(VkDevice device)258 static VkResult entry_vkDeviceWaitIdle(
259     VkDevice device)
260 {
261     AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
262     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
263     VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
264     vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
265     return vkDeviceWaitIdle_VkResult_return;
266 }
entry_vkAllocateMemory(VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)267 static VkResult entry_vkAllocateMemory(
268     VkDevice device,
269     const VkMemoryAllocateInfo* pAllocateInfo,
270     const VkAllocationCallbacks* pAllocator,
271     VkDeviceMemory* pMemory)
272 {
273     AEMU_SCOPED_TRACE("vkAllocateMemory");
274     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
275     VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
276     auto resources = ResourceTracker::get();
277     vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
278     return vkAllocateMemory_VkResult_return;
279 }
entry_vkFreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)280 static void entry_vkFreeMemory(
281     VkDevice device,
282     VkDeviceMemory memory,
283     const VkAllocationCallbacks* pAllocator)
284 {
285     AEMU_SCOPED_TRACE("vkFreeMemory");
286     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
287     auto resources = ResourceTracker::get();
288     resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
289 }
entry_vkMapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)290 static VkResult entry_vkMapMemory(
291     VkDevice device,
292     VkDeviceMemory memory,
293     VkDeviceSize offset,
294     VkDeviceSize size,
295     VkMemoryMapFlags flags,
296     void** ppData)
297 {
298     AEMU_SCOPED_TRACE("vkMapMemory");
299     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
300     VkResult vkMapMemory_VkResult_return = (VkResult)0;
301     vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
302     return vkMapMemory_VkResult_return;
303 }
entry_vkUnmapMemory(VkDevice device,VkDeviceMemory memory)304 static void entry_vkUnmapMemory(
305     VkDevice device,
306     VkDeviceMemory memory)
307 {
308     AEMU_SCOPED_TRACE("vkUnmapMemory");
309     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
310     vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
311 }
entry_vkFlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)312 static VkResult entry_vkFlushMappedMemoryRanges(
313     VkDevice device,
314     uint32_t memoryRangeCount,
315     const VkMappedMemoryRange* pMemoryRanges)
316 {
317     AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
318     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
319     VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
320     vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
321     return vkFlushMappedMemoryRanges_VkResult_return;
322 }
entry_vkInvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)323 static VkResult entry_vkInvalidateMappedMemoryRanges(
324     VkDevice device,
325     uint32_t memoryRangeCount,
326     const VkMappedMemoryRange* pMemoryRanges)
327 {
328     AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
329     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
330     VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
331     vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
332     return vkInvalidateMappedMemoryRanges_VkResult_return;
333 }
entry_vkGetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)334 static void entry_vkGetDeviceMemoryCommitment(
335     VkDevice device,
336     VkDeviceMemory memory,
337     VkDeviceSize* pCommittedMemoryInBytes)
338 {
339     AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
340     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
341     vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
342 }
entry_vkBindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)343 static VkResult entry_vkBindBufferMemory(
344     VkDevice device,
345     VkBuffer buffer,
346     VkDeviceMemory memory,
347     VkDeviceSize memoryOffset)
348 {
349     AEMU_SCOPED_TRACE("vkBindBufferMemory");
350     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
351     VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
352     auto resources = ResourceTracker::get();
353     vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
354     return vkBindBufferMemory_VkResult_return;
355 }
entry_vkBindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)356 static VkResult entry_vkBindImageMemory(
357     VkDevice device,
358     VkImage image,
359     VkDeviceMemory memory,
360     VkDeviceSize memoryOffset)
361 {
362     AEMU_SCOPED_TRACE("vkBindImageMemory");
363     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
364     VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
365     auto resources = ResourceTracker::get();
366     vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
367     return vkBindImageMemory_VkResult_return;
368 }
entry_vkGetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)369 static void entry_vkGetBufferMemoryRequirements(
370     VkDevice device,
371     VkBuffer buffer,
372     VkMemoryRequirements* pMemoryRequirements)
373 {
374     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
375     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
376     auto resources = ResourceTracker::get();
377     resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
378 }
entry_vkGetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)379 static void entry_vkGetImageMemoryRequirements(
380     VkDevice device,
381     VkImage image,
382     VkMemoryRequirements* pMemoryRequirements)
383 {
384     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
385     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
386     auto resources = ResourceTracker::get();
387     resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
388 }
entry_vkGetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)389 static void entry_vkGetImageSparseMemoryRequirements(
390     VkDevice device,
391     VkImage image,
392     uint32_t* pSparseMemoryRequirementCount,
393     VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
394 {
395     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
396     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
397     vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
398 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)399 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
400     VkPhysicalDevice physicalDevice,
401     VkFormat format,
402     VkImageType type,
403     VkSampleCountFlagBits samples,
404     VkImageUsageFlags usage,
405     VkImageTiling tiling,
406     uint32_t* pPropertyCount,
407     VkSparseImageFormatProperties* pProperties)
408 {
409     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
410     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
411     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
412 }
entry_vkQueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)413 static VkResult entry_vkQueueBindSparse(
414     VkQueue queue,
415     uint32_t bindInfoCount,
416     const VkBindSparseInfo* pBindInfo,
417     VkFence fence)
418 {
419     AEMU_SCOPED_TRACE("vkQueueBindSparse");
420     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
421     VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
422     vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
423     return vkQueueBindSparse_VkResult_return;
424 }
entry_vkCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)425 static VkResult entry_vkCreateFence(
426     VkDevice device,
427     const VkFenceCreateInfo* pCreateInfo,
428     const VkAllocationCallbacks* pAllocator,
429     VkFence* pFence)
430 {
431     AEMU_SCOPED_TRACE("vkCreateFence");
432     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
433     VkResult vkCreateFence_VkResult_return = (VkResult)0;
434     auto resources = ResourceTracker::get();
435     vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
436     return vkCreateFence_VkResult_return;
437 }
entry_vkDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)438 static void entry_vkDestroyFence(
439     VkDevice device,
440     VkFence fence,
441     const VkAllocationCallbacks* pAllocator)
442 {
443     AEMU_SCOPED_TRACE("vkDestroyFence");
444     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
445     vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
446 }
entry_vkResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)447 static VkResult entry_vkResetFences(
448     VkDevice device,
449     uint32_t fenceCount,
450     const VkFence* pFences)
451 {
452     AEMU_SCOPED_TRACE("vkResetFences");
453     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
454     VkResult vkResetFences_VkResult_return = (VkResult)0;
455     auto resources = ResourceTracker::get();
456     vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
457     return vkResetFences_VkResult_return;
458 }
entry_vkGetFenceStatus(VkDevice device,VkFence fence)459 static VkResult entry_vkGetFenceStatus(
460     VkDevice device,
461     VkFence fence)
462 {
463     AEMU_SCOPED_TRACE("vkGetFenceStatus");
464     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
465     VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
466     vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
467     return vkGetFenceStatus_VkResult_return;
468 }
entry_vkWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)469 static VkResult entry_vkWaitForFences(
470     VkDevice device,
471     uint32_t fenceCount,
472     const VkFence* pFences,
473     VkBool32 waitAll,
474     uint64_t timeout)
475 {
476     AEMU_SCOPED_TRACE("vkWaitForFences");
477     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
478     VkResult vkWaitForFences_VkResult_return = (VkResult)0;
479     auto resources = ResourceTracker::get();
480     vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
481     return vkWaitForFences_VkResult_return;
482 }
entry_vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)483 static VkResult entry_vkCreateSemaphore(
484     VkDevice device,
485     const VkSemaphoreCreateInfo* pCreateInfo,
486     const VkAllocationCallbacks* pAllocator,
487     VkSemaphore* pSemaphore)
488 {
489     AEMU_SCOPED_TRACE("vkCreateSemaphore");
490     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
491     VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
492     auto resources = ResourceTracker::get();
493     vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
494     return vkCreateSemaphore_VkResult_return;
495 }
entry_vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)496 static void entry_vkDestroySemaphore(
497     VkDevice device,
498     VkSemaphore semaphore,
499     const VkAllocationCallbacks* pAllocator)
500 {
501     AEMU_SCOPED_TRACE("vkDestroySemaphore");
502     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
503     auto resources = ResourceTracker::get();
504     resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
505 }
entry_vkCreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)506 static VkResult entry_vkCreateEvent(
507     VkDevice device,
508     const VkEventCreateInfo* pCreateInfo,
509     const VkAllocationCallbacks* pAllocator,
510     VkEvent* pEvent)
511 {
512     AEMU_SCOPED_TRACE("vkCreateEvent");
513     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
514     VkResult vkCreateEvent_VkResult_return = (VkResult)0;
515     vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
516     return vkCreateEvent_VkResult_return;
517 }
entry_vkDestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)518 static void entry_vkDestroyEvent(
519     VkDevice device,
520     VkEvent event,
521     const VkAllocationCallbacks* pAllocator)
522 {
523     AEMU_SCOPED_TRACE("vkDestroyEvent");
524     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
525     vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
526 }
entry_vkGetEventStatus(VkDevice device,VkEvent event)527 static VkResult entry_vkGetEventStatus(
528     VkDevice device,
529     VkEvent event)
530 {
531     AEMU_SCOPED_TRACE("vkGetEventStatus");
532     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
533     VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
534     vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
535     return vkGetEventStatus_VkResult_return;
536 }
entry_vkSetEvent(VkDevice device,VkEvent event)537 static VkResult entry_vkSetEvent(
538     VkDevice device,
539     VkEvent event)
540 {
541     AEMU_SCOPED_TRACE("vkSetEvent");
542     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
543     VkResult vkSetEvent_VkResult_return = (VkResult)0;
544     vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
545     return vkSetEvent_VkResult_return;
546 }
entry_vkResetEvent(VkDevice device,VkEvent event)547 static VkResult entry_vkResetEvent(
548     VkDevice device,
549     VkEvent event)
550 {
551     AEMU_SCOPED_TRACE("vkResetEvent");
552     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
553     VkResult vkResetEvent_VkResult_return = (VkResult)0;
554     vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
555     return vkResetEvent_VkResult_return;
556 }
entry_vkCreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)557 static VkResult entry_vkCreateQueryPool(
558     VkDevice device,
559     const VkQueryPoolCreateInfo* pCreateInfo,
560     const VkAllocationCallbacks* pAllocator,
561     VkQueryPool* pQueryPool)
562 {
563     AEMU_SCOPED_TRACE("vkCreateQueryPool");
564     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
565     VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
566     vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
567     return vkCreateQueryPool_VkResult_return;
568 }
entry_vkDestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)569 static void entry_vkDestroyQueryPool(
570     VkDevice device,
571     VkQueryPool queryPool,
572     const VkAllocationCallbacks* pAllocator)
573 {
574     AEMU_SCOPED_TRACE("vkDestroyQueryPool");
575     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
576     vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
577 }
entry_vkGetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)578 static VkResult entry_vkGetQueryPoolResults(
579     VkDevice device,
580     VkQueryPool queryPool,
581     uint32_t firstQuery,
582     uint32_t queryCount,
583     size_t dataSize,
584     void* pData,
585     VkDeviceSize stride,
586     VkQueryResultFlags flags)
587 {
588     AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
589     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
590     VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
591     vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
592     return vkGetQueryPoolResults_VkResult_return;
593 }
entry_vkCreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)594 static VkResult entry_vkCreateBuffer(
595     VkDevice device,
596     const VkBufferCreateInfo* pCreateInfo,
597     const VkAllocationCallbacks* pAllocator,
598     VkBuffer* pBuffer)
599 {
600     AEMU_SCOPED_TRACE("vkCreateBuffer");
601     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
602     VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
603     auto resources = ResourceTracker::get();
604     vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
605     return vkCreateBuffer_VkResult_return;
606 }
entry_vkDestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)607 static void entry_vkDestroyBuffer(
608     VkDevice device,
609     VkBuffer buffer,
610     const VkAllocationCallbacks* pAllocator)
611 {
612     AEMU_SCOPED_TRACE("vkDestroyBuffer");
613     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
614     auto resources = ResourceTracker::get();
615     resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
616 }
entry_vkCreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)617 static VkResult entry_vkCreateBufferView(
618     VkDevice device,
619     const VkBufferViewCreateInfo* pCreateInfo,
620     const VkAllocationCallbacks* pAllocator,
621     VkBufferView* pView)
622 {
623     AEMU_SCOPED_TRACE("vkCreateBufferView");
624     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
625     VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
626     vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
627     return vkCreateBufferView_VkResult_return;
628 }
entry_vkDestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)629 static void entry_vkDestroyBufferView(
630     VkDevice device,
631     VkBufferView bufferView,
632     const VkAllocationCallbacks* pAllocator)
633 {
634     AEMU_SCOPED_TRACE("vkDestroyBufferView");
635     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
636     vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
637 }
entry_vkCreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)638 static VkResult entry_vkCreateImage(
639     VkDevice device,
640     const VkImageCreateInfo* pCreateInfo,
641     const VkAllocationCallbacks* pAllocator,
642     VkImage* pImage)
643 {
644     AEMU_SCOPED_TRACE("vkCreateImage");
645     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
646     VkResult vkCreateImage_VkResult_return = (VkResult)0;
647     auto resources = ResourceTracker::get();
648     vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
649     return vkCreateImage_VkResult_return;
650 }
entry_vkDestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)651 static void entry_vkDestroyImage(
652     VkDevice device,
653     VkImage image,
654     const VkAllocationCallbacks* pAllocator)
655 {
656     AEMU_SCOPED_TRACE("vkDestroyImage");
657     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
658     auto resources = ResourceTracker::get();
659     resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
660 }
entry_vkGetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)661 static void entry_vkGetImageSubresourceLayout(
662     VkDevice device,
663     VkImage image,
664     const VkImageSubresource* pSubresource,
665     VkSubresourceLayout* pLayout)
666 {
667     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
668     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
669     vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
670 }
entry_vkCreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)671 static VkResult entry_vkCreateImageView(
672     VkDevice device,
673     const VkImageViewCreateInfo* pCreateInfo,
674     const VkAllocationCallbacks* pAllocator,
675     VkImageView* pView)
676 {
677     AEMU_SCOPED_TRACE("vkCreateImageView");
678     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
679     VkResult vkCreateImageView_VkResult_return = (VkResult)0;
680     auto resources = ResourceTracker::get();
681     vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
682     return vkCreateImageView_VkResult_return;
683 }
entry_vkDestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)684 static void entry_vkDestroyImageView(
685     VkDevice device,
686     VkImageView imageView,
687     const VkAllocationCallbacks* pAllocator)
688 {
689     AEMU_SCOPED_TRACE("vkDestroyImageView");
690     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
691     vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
692 }
entry_vkCreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)693 static VkResult entry_vkCreateShaderModule(
694     VkDevice device,
695     const VkShaderModuleCreateInfo* pCreateInfo,
696     const VkAllocationCallbacks* pAllocator,
697     VkShaderModule* pShaderModule)
698 {
699     AEMU_SCOPED_TRACE("vkCreateShaderModule");
700     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
701     VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
702     vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
703     return vkCreateShaderModule_VkResult_return;
704 }
entry_vkDestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)705 static void entry_vkDestroyShaderModule(
706     VkDevice device,
707     VkShaderModule shaderModule,
708     const VkAllocationCallbacks* pAllocator)
709 {
710     AEMU_SCOPED_TRACE("vkDestroyShaderModule");
711     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
712     vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
713 }
entry_vkCreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)714 static VkResult entry_vkCreatePipelineCache(
715     VkDevice device,
716     const VkPipelineCacheCreateInfo* pCreateInfo,
717     const VkAllocationCallbacks* pAllocator,
718     VkPipelineCache* pPipelineCache)
719 {
720     AEMU_SCOPED_TRACE("vkCreatePipelineCache");
721     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
722     VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
723     vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
724     return vkCreatePipelineCache_VkResult_return;
725 }
entry_vkDestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)726 static void entry_vkDestroyPipelineCache(
727     VkDevice device,
728     VkPipelineCache pipelineCache,
729     const VkAllocationCallbacks* pAllocator)
730 {
731     AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
732     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
733     vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
734 }
entry_vkGetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)735 static VkResult entry_vkGetPipelineCacheData(
736     VkDevice device,
737     VkPipelineCache pipelineCache,
738     size_t* pDataSize,
739     void* pData)
740 {
741     AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
742     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
743     VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
744     vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
745     return vkGetPipelineCacheData_VkResult_return;
746 }
entry_vkMergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)747 static VkResult entry_vkMergePipelineCaches(
748     VkDevice device,
749     VkPipelineCache dstCache,
750     uint32_t srcCacheCount,
751     const VkPipelineCache* pSrcCaches)
752 {
753     AEMU_SCOPED_TRACE("vkMergePipelineCaches");
754     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
755     VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
756     vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
757     return vkMergePipelineCaches_VkResult_return;
758 }
entry_vkCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)759 static VkResult entry_vkCreateGraphicsPipelines(
760     VkDevice device,
761     VkPipelineCache pipelineCache,
762     uint32_t createInfoCount,
763     const VkGraphicsPipelineCreateInfo* pCreateInfos,
764     const VkAllocationCallbacks* pAllocator,
765     VkPipeline* pPipelines)
766 {
767     AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
768     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
769     VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
770     vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
771     return vkCreateGraphicsPipelines_VkResult_return;
772 }
entry_vkCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)773 static VkResult entry_vkCreateComputePipelines(
774     VkDevice device,
775     VkPipelineCache pipelineCache,
776     uint32_t createInfoCount,
777     const VkComputePipelineCreateInfo* pCreateInfos,
778     const VkAllocationCallbacks* pAllocator,
779     VkPipeline* pPipelines)
780 {
781     AEMU_SCOPED_TRACE("vkCreateComputePipelines");
782     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
783     VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
784     vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
785     return vkCreateComputePipelines_VkResult_return;
786 }
entry_vkDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)787 static void entry_vkDestroyPipeline(
788     VkDevice device,
789     VkPipeline pipeline,
790     const VkAllocationCallbacks* pAllocator)
791 {
792     AEMU_SCOPED_TRACE("vkDestroyPipeline");
793     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
794     vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
795 }
entry_vkCreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)796 static VkResult entry_vkCreatePipelineLayout(
797     VkDevice device,
798     const VkPipelineLayoutCreateInfo* pCreateInfo,
799     const VkAllocationCallbacks* pAllocator,
800     VkPipelineLayout* pPipelineLayout)
801 {
802     AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
803     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
804     VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
805     vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
806     return vkCreatePipelineLayout_VkResult_return;
807 }
entry_vkDestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)808 static void entry_vkDestroyPipelineLayout(
809     VkDevice device,
810     VkPipelineLayout pipelineLayout,
811     const VkAllocationCallbacks* pAllocator)
812 {
813     AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
814     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
815     vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
816 }
entry_vkCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)817 static VkResult entry_vkCreateSampler(
818     VkDevice device,
819     const VkSamplerCreateInfo* pCreateInfo,
820     const VkAllocationCallbacks* pAllocator,
821     VkSampler* pSampler)
822 {
823     AEMU_SCOPED_TRACE("vkCreateSampler");
824     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
825     VkResult vkCreateSampler_VkResult_return = (VkResult)0;
826     auto resources = ResourceTracker::get();
827     vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
828     return vkCreateSampler_VkResult_return;
829 }
entry_vkDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)830 static void entry_vkDestroySampler(
831     VkDevice device,
832     VkSampler sampler,
833     const VkAllocationCallbacks* pAllocator)
834 {
835     AEMU_SCOPED_TRACE("vkDestroySampler");
836     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
837     vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
838 }
entry_vkCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)839 static VkResult entry_vkCreateDescriptorSetLayout(
840     VkDevice device,
841     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
842     const VkAllocationCallbacks* pAllocator,
843     VkDescriptorSetLayout* pSetLayout)
844 {
845     AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
846     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
847     VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
848     auto resources = ResourceTracker::get();
849     vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
850     return vkCreateDescriptorSetLayout_VkResult_return;
851 }
entry_vkDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)852 static void entry_vkDestroyDescriptorSetLayout(
853     VkDevice device,
854     VkDescriptorSetLayout descriptorSetLayout,
855     const VkAllocationCallbacks* pAllocator)
856 {
857     AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
858     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
859     auto resources = ResourceTracker::get();
860     resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
861 }
entry_vkCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)862 static VkResult entry_vkCreateDescriptorPool(
863     VkDevice device,
864     const VkDescriptorPoolCreateInfo* pCreateInfo,
865     const VkAllocationCallbacks* pAllocator,
866     VkDescriptorPool* pDescriptorPool)
867 {
868     AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
869     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
870     VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
871     auto resources = ResourceTracker::get();
872     vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
873     return vkCreateDescriptorPool_VkResult_return;
874 }
entry_vkDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)875 static void entry_vkDestroyDescriptorPool(
876     VkDevice device,
877     VkDescriptorPool descriptorPool,
878     const VkAllocationCallbacks* pAllocator)
879 {
880     AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
881     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
882     auto resources = ResourceTracker::get();
883     resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
884 }
entry_vkResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)885 static VkResult entry_vkResetDescriptorPool(
886     VkDevice device,
887     VkDescriptorPool descriptorPool,
888     VkDescriptorPoolResetFlags flags)
889 {
890     AEMU_SCOPED_TRACE("vkResetDescriptorPool");
891     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
892     VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
893     auto resources = ResourceTracker::get();
894     vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
895     return vkResetDescriptorPool_VkResult_return;
896 }
entry_vkAllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)897 static VkResult entry_vkAllocateDescriptorSets(
898     VkDevice device,
899     const VkDescriptorSetAllocateInfo* pAllocateInfo,
900     VkDescriptorSet* pDescriptorSets)
901 {
902     AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
903     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
904     VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
905     auto resources = ResourceTracker::get();
906     vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
907     return vkAllocateDescriptorSets_VkResult_return;
908 }
entry_vkFreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)909 static VkResult entry_vkFreeDescriptorSets(
910     VkDevice device,
911     VkDescriptorPool descriptorPool,
912     uint32_t descriptorSetCount,
913     const VkDescriptorSet* pDescriptorSets)
914 {
915     AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
916     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
917     VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
918     auto resources = ResourceTracker::get();
919     vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
920     return vkFreeDescriptorSets_VkResult_return;
921 }
entry_vkUpdateDescriptorSets(VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)922 static void entry_vkUpdateDescriptorSets(
923     VkDevice device,
924     uint32_t descriptorWriteCount,
925     const VkWriteDescriptorSet* pDescriptorWrites,
926     uint32_t descriptorCopyCount,
927     const VkCopyDescriptorSet* pDescriptorCopies)
928 {
929     AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
930     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
931     auto resources = ResourceTracker::get();
932     resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
933 }
entry_vkCreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)934 static VkResult entry_vkCreateFramebuffer(
935     VkDevice device,
936     const VkFramebufferCreateInfo* pCreateInfo,
937     const VkAllocationCallbacks* pAllocator,
938     VkFramebuffer* pFramebuffer)
939 {
940     AEMU_SCOPED_TRACE("vkCreateFramebuffer");
941     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
942     VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
943     vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
944     return vkCreateFramebuffer_VkResult_return;
945 }
entry_vkDestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)946 static void entry_vkDestroyFramebuffer(
947     VkDevice device,
948     VkFramebuffer framebuffer,
949     const VkAllocationCallbacks* pAllocator)
950 {
951     AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
952     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
953     vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
954 }
entry_vkCreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)955 static VkResult entry_vkCreateRenderPass(
956     VkDevice device,
957     const VkRenderPassCreateInfo* pCreateInfo,
958     const VkAllocationCallbacks* pAllocator,
959     VkRenderPass* pRenderPass)
960 {
961     AEMU_SCOPED_TRACE("vkCreateRenderPass");
962     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
963     VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
964     vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
965     return vkCreateRenderPass_VkResult_return;
966 }
entry_vkDestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)967 static void entry_vkDestroyRenderPass(
968     VkDevice device,
969     VkRenderPass renderPass,
970     const VkAllocationCallbacks* pAllocator)
971 {
972     AEMU_SCOPED_TRACE("vkDestroyRenderPass");
973     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
974     vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
975 }
entry_vkGetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)976 static void entry_vkGetRenderAreaGranularity(
977     VkDevice device,
978     VkRenderPass renderPass,
979     VkExtent2D* pGranularity)
980 {
981     AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
982     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
983     vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
984 }
entry_vkCreateCommandPool(VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)985 static VkResult entry_vkCreateCommandPool(
986     VkDevice device,
987     const VkCommandPoolCreateInfo* pCreateInfo,
988     const VkAllocationCallbacks* pAllocator,
989     VkCommandPool* pCommandPool)
990 {
991     AEMU_SCOPED_TRACE("vkCreateCommandPool");
992     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
993     VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
994     vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
995     return vkCreateCommandPool_VkResult_return;
996 }
entry_vkDestroyCommandPool(VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)997 static void entry_vkDestroyCommandPool(
998     VkDevice device,
999     VkCommandPool commandPool,
1000     const VkAllocationCallbacks* pAllocator)
1001 {
1002     AEMU_SCOPED_TRACE("vkDestroyCommandPool");
1003     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1004     vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
1005 }
entry_vkResetCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)1006 static VkResult entry_vkResetCommandPool(
1007     VkDevice device,
1008     VkCommandPool commandPool,
1009     VkCommandPoolResetFlags flags)
1010 {
1011     AEMU_SCOPED_TRACE("vkResetCommandPool");
1012     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1013     VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
1014     vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
1015     if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1016         ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1017     }
1018     return vkResetCommandPool_VkResult_return;
1019 }
entry_vkAllocateCommandBuffers(VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)1020 static VkResult entry_vkAllocateCommandBuffers(
1021     VkDevice device,
1022     const VkCommandBufferAllocateInfo* pAllocateInfo,
1023     VkCommandBuffer* pCommandBuffers)
1024 {
1025     AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
1026     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1027     VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1028     auto resources = ResourceTracker::get();
1029     vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
1030     if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1031         ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1032     }
1033     return vkAllocateCommandBuffers_VkResult_return;
1034 }
entry_vkFreeCommandBuffers(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1035 static void entry_vkFreeCommandBuffers(
1036     VkDevice device,
1037     VkCommandPool commandPool,
1038     uint32_t commandBufferCount,
1039     const VkCommandBuffer* pCommandBuffers)
1040 {
1041     AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
1042     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1043     vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
1044 }
entry_vkBeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)1045 static VkResult entry_vkBeginCommandBuffer(
1046     VkCommandBuffer commandBuffer,
1047     const VkCommandBufferBeginInfo* pBeginInfo)
1048 {
1049     AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
1050     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1051     VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
1052     auto resources = ResourceTracker::get();
1053     vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
1054     return vkBeginCommandBuffer_VkResult_return;
1055 }
entry_vkEndCommandBuffer(VkCommandBuffer commandBuffer)1056 static VkResult entry_vkEndCommandBuffer(
1057     VkCommandBuffer commandBuffer)
1058 {
1059     AEMU_SCOPED_TRACE("vkEndCommandBuffer");
1060     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1061     VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
1062     auto resources = ResourceTracker::get();
1063     vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
1064     return vkEndCommandBuffer_VkResult_return;
1065 }
entry_vkResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)1066 static VkResult entry_vkResetCommandBuffer(
1067     VkCommandBuffer commandBuffer,
1068     VkCommandBufferResetFlags flags)
1069 {
1070     AEMU_SCOPED_TRACE("vkResetCommandBuffer");
1071     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1072     VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
1073     auto resources = ResourceTracker::get();
1074     vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
1075     return vkResetCommandBuffer_VkResult_return;
1076 }
entry_vkCmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)1077 static void entry_vkCmdBindPipeline(
1078     VkCommandBuffer commandBuffer,
1079     VkPipelineBindPoint pipelineBindPoint,
1080     VkPipeline pipeline)
1081 {
1082     AEMU_SCOPED_TRACE("vkCmdBindPipeline");
1083     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1084     vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
1085 }
entry_vkCmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)1086 static void entry_vkCmdSetViewport(
1087     VkCommandBuffer commandBuffer,
1088     uint32_t firstViewport,
1089     uint32_t viewportCount,
1090     const VkViewport* pViewports)
1091 {
1092     AEMU_SCOPED_TRACE("vkCmdSetViewport");
1093     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1094     vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
1095 }
entry_vkCmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)1096 static void entry_vkCmdSetScissor(
1097     VkCommandBuffer commandBuffer,
1098     uint32_t firstScissor,
1099     uint32_t scissorCount,
1100     const VkRect2D* pScissors)
1101 {
1102     AEMU_SCOPED_TRACE("vkCmdSetScissor");
1103     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1104     vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
1105 }
entry_vkCmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)1106 static void entry_vkCmdSetLineWidth(
1107     VkCommandBuffer commandBuffer,
1108     float lineWidth)
1109 {
1110     AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
1111     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1112     vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
1113 }
entry_vkCmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)1114 static void entry_vkCmdSetDepthBias(
1115     VkCommandBuffer commandBuffer,
1116     float depthBiasConstantFactor,
1117     float depthBiasClamp,
1118     float depthBiasSlopeFactor)
1119 {
1120     AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
1121     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1122     vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
1123 }
entry_vkCmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])1124 static void entry_vkCmdSetBlendConstants(
1125     VkCommandBuffer commandBuffer,
1126     const float blendConstants[4])
1127 {
1128     AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
1129     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1130     vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
1131 }
entry_vkCmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)1132 static void entry_vkCmdSetDepthBounds(
1133     VkCommandBuffer commandBuffer,
1134     float minDepthBounds,
1135     float maxDepthBounds)
1136 {
1137     AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
1138     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1139     vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
1140 }
entry_vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)1141 static void entry_vkCmdSetStencilCompareMask(
1142     VkCommandBuffer commandBuffer,
1143     VkStencilFaceFlags faceMask,
1144     uint32_t compareMask)
1145 {
1146     AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
1147     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1148     vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
1149 }
entry_vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)1150 static void entry_vkCmdSetStencilWriteMask(
1151     VkCommandBuffer commandBuffer,
1152     VkStencilFaceFlags faceMask,
1153     uint32_t writeMask)
1154 {
1155     AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
1156     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1157     vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
1158 }
entry_vkCmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)1159 static void entry_vkCmdSetStencilReference(
1160     VkCommandBuffer commandBuffer,
1161     VkStencilFaceFlags faceMask,
1162     uint32_t reference)
1163 {
1164     AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
1165     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1166     vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
1167 }
entry_vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)1168 static void entry_vkCmdBindDescriptorSets(
1169     VkCommandBuffer commandBuffer,
1170     VkPipelineBindPoint pipelineBindPoint,
1171     VkPipelineLayout layout,
1172     uint32_t firstSet,
1173     uint32_t descriptorSetCount,
1174     const VkDescriptorSet* pDescriptorSets,
1175     uint32_t dynamicOffsetCount,
1176     const uint32_t* pDynamicOffsets)
1177 {
1178     AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
1179     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1180     auto resources = ResourceTracker::get();
1181     resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1182 }
entry_vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)1183 static void entry_vkCmdBindIndexBuffer(
1184     VkCommandBuffer commandBuffer,
1185     VkBuffer buffer,
1186     VkDeviceSize offset,
1187     VkIndexType indexType)
1188 {
1189     AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
1190     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1191     vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
1192 }
entry_vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)1193 static void entry_vkCmdBindVertexBuffers(
1194     VkCommandBuffer commandBuffer,
1195     uint32_t firstBinding,
1196     uint32_t bindingCount,
1197     const VkBuffer* pBuffers,
1198     const VkDeviceSize* pOffsets)
1199 {
1200     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
1201     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1202     vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
1203 }
entry_vkCmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)1204 static void entry_vkCmdDraw(
1205     VkCommandBuffer commandBuffer,
1206     uint32_t vertexCount,
1207     uint32_t instanceCount,
1208     uint32_t firstVertex,
1209     uint32_t firstInstance)
1210 {
1211     AEMU_SCOPED_TRACE("vkCmdDraw");
1212     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1213     vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
1214 }
entry_vkCmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)1215 static void entry_vkCmdDrawIndexed(
1216     VkCommandBuffer commandBuffer,
1217     uint32_t indexCount,
1218     uint32_t instanceCount,
1219     uint32_t firstIndex,
1220     int32_t vertexOffset,
1221     uint32_t firstInstance)
1222 {
1223     AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
1224     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1225     vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
1226 }
entry_vkCmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1227 static void entry_vkCmdDrawIndirect(
1228     VkCommandBuffer commandBuffer,
1229     VkBuffer buffer,
1230     VkDeviceSize offset,
1231     uint32_t drawCount,
1232     uint32_t stride)
1233 {
1234     AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
1235     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1236     vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
1237 }
entry_vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1238 static void entry_vkCmdDrawIndexedIndirect(
1239     VkCommandBuffer commandBuffer,
1240     VkBuffer buffer,
1241     VkDeviceSize offset,
1242     uint32_t drawCount,
1243     uint32_t stride)
1244 {
1245     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
1246     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1247     vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
1248 }
entry_vkCmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1249 static void entry_vkCmdDispatch(
1250     VkCommandBuffer commandBuffer,
1251     uint32_t groupCountX,
1252     uint32_t groupCountY,
1253     uint32_t groupCountZ)
1254 {
1255     AEMU_SCOPED_TRACE("vkCmdDispatch");
1256     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1257     vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
1258 }
entry_vkCmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)1259 static void entry_vkCmdDispatchIndirect(
1260     VkCommandBuffer commandBuffer,
1261     VkBuffer buffer,
1262     VkDeviceSize offset)
1263 {
1264     AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
1265     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1266     vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
1267 }
entry_vkCmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)1268 static void entry_vkCmdCopyBuffer(
1269     VkCommandBuffer commandBuffer,
1270     VkBuffer srcBuffer,
1271     VkBuffer dstBuffer,
1272     uint32_t regionCount,
1273     const VkBufferCopy* pRegions)
1274 {
1275     AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
1276     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1277     vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
1278 }
entry_vkCmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)1279 static void entry_vkCmdCopyImage(
1280     VkCommandBuffer commandBuffer,
1281     VkImage srcImage,
1282     VkImageLayout srcImageLayout,
1283     VkImage dstImage,
1284     VkImageLayout dstImageLayout,
1285     uint32_t regionCount,
1286     const VkImageCopy* pRegions)
1287 {
1288     AEMU_SCOPED_TRACE("vkCmdCopyImage");
1289     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1290     vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
1291 }
entry_vkCmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)1292 static void entry_vkCmdBlitImage(
1293     VkCommandBuffer commandBuffer,
1294     VkImage srcImage,
1295     VkImageLayout srcImageLayout,
1296     VkImage dstImage,
1297     VkImageLayout dstImageLayout,
1298     uint32_t regionCount,
1299     const VkImageBlit* pRegions,
1300     VkFilter filter)
1301 {
1302     AEMU_SCOPED_TRACE("vkCmdBlitImage");
1303     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1304     vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
1305 }
entry_vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)1306 static void entry_vkCmdCopyBufferToImage(
1307     VkCommandBuffer commandBuffer,
1308     VkBuffer srcBuffer,
1309     VkImage dstImage,
1310     VkImageLayout dstImageLayout,
1311     uint32_t regionCount,
1312     const VkBufferImageCopy* pRegions)
1313 {
1314     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
1315     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1316     vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
1317 }
entry_vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)1318 static void entry_vkCmdCopyImageToBuffer(
1319     VkCommandBuffer commandBuffer,
1320     VkImage srcImage,
1321     VkImageLayout srcImageLayout,
1322     VkBuffer dstBuffer,
1323     uint32_t regionCount,
1324     const VkBufferImageCopy* pRegions)
1325 {
1326     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
1327     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1328     vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
1329 }
entry_vkCmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)1330 static void entry_vkCmdUpdateBuffer(
1331     VkCommandBuffer commandBuffer,
1332     VkBuffer dstBuffer,
1333     VkDeviceSize dstOffset,
1334     VkDeviceSize dataSize,
1335     const void* pData)
1336 {
1337     AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
1338     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1339     vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
1340 }
entry_vkCmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)1341 static void entry_vkCmdFillBuffer(
1342     VkCommandBuffer commandBuffer,
1343     VkBuffer dstBuffer,
1344     VkDeviceSize dstOffset,
1345     VkDeviceSize size,
1346     uint32_t data)
1347 {
1348     AEMU_SCOPED_TRACE("vkCmdFillBuffer");
1349     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1350     vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
1351 }
entry_vkCmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1352 static void entry_vkCmdClearColorImage(
1353     VkCommandBuffer commandBuffer,
1354     VkImage image,
1355     VkImageLayout imageLayout,
1356     const VkClearColorValue* pColor,
1357     uint32_t rangeCount,
1358     const VkImageSubresourceRange* pRanges)
1359 {
1360     AEMU_SCOPED_TRACE("vkCmdClearColorImage");
1361     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1362     vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
1363 }
entry_vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1364 static void entry_vkCmdClearDepthStencilImage(
1365     VkCommandBuffer commandBuffer,
1366     VkImage image,
1367     VkImageLayout imageLayout,
1368     const VkClearDepthStencilValue* pDepthStencil,
1369     uint32_t rangeCount,
1370     const VkImageSubresourceRange* pRanges)
1371 {
1372     AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
1373     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1374     vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
1375 }
entry_vkCmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)1376 static void entry_vkCmdClearAttachments(
1377     VkCommandBuffer commandBuffer,
1378     uint32_t attachmentCount,
1379     const VkClearAttachment* pAttachments,
1380     uint32_t rectCount,
1381     const VkClearRect* pRects)
1382 {
1383     AEMU_SCOPED_TRACE("vkCmdClearAttachments");
1384     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1385     vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
1386 }
entry_vkCmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)1387 static void entry_vkCmdResolveImage(
1388     VkCommandBuffer commandBuffer,
1389     VkImage srcImage,
1390     VkImageLayout srcImageLayout,
1391     VkImage dstImage,
1392     VkImageLayout dstImageLayout,
1393     uint32_t regionCount,
1394     const VkImageResolve* pRegions)
1395 {
1396     AEMU_SCOPED_TRACE("vkCmdResolveImage");
1397     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1398     vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
1399 }
entry_vkCmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1400 static void entry_vkCmdSetEvent(
1401     VkCommandBuffer commandBuffer,
1402     VkEvent event,
1403     VkPipelineStageFlags stageMask)
1404 {
1405     AEMU_SCOPED_TRACE("vkCmdSetEvent");
1406     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1407     vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
1408 }
entry_vkCmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1409 static void entry_vkCmdResetEvent(
1410     VkCommandBuffer commandBuffer,
1411     VkEvent event,
1412     VkPipelineStageFlags stageMask)
1413 {
1414     AEMU_SCOPED_TRACE("vkCmdResetEvent");
1415     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1416     vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
1417 }
entry_vkCmdWaitEvents(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,uint32_t memoryBarrierCount,const VkMemoryBarrier * pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const VkBufferMemoryBarrier * pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const VkImageMemoryBarrier * pImageMemoryBarriers)1418 static void entry_vkCmdWaitEvents(
1419     VkCommandBuffer commandBuffer,
1420     uint32_t eventCount,
1421     const VkEvent* pEvents,
1422     VkPipelineStageFlags srcStageMask,
1423     VkPipelineStageFlags dstStageMask,
1424     uint32_t memoryBarrierCount,
1425     const VkMemoryBarrier* pMemoryBarriers,
1426     uint32_t bufferMemoryBarrierCount,
1427     const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1428     uint32_t imageMemoryBarrierCount,
1429     const VkImageMemoryBarrier* pImageMemoryBarriers)
1430 {
1431     AEMU_SCOPED_TRACE("vkCmdWaitEvents");
1432     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1433     vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
1434 }
entry_vkCmdPipelineBarrier(VkCommandBuffer commandBuffer,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,VkDependencyFlags dependencyFlags,uint32_t memoryBarrierCount,const VkMemoryBarrier * pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const VkBufferMemoryBarrier * pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const VkImageMemoryBarrier * pImageMemoryBarriers)1435 static void entry_vkCmdPipelineBarrier(
1436     VkCommandBuffer commandBuffer,
1437     VkPipelineStageFlags srcStageMask,
1438     VkPipelineStageFlags dstStageMask,
1439     VkDependencyFlags dependencyFlags,
1440     uint32_t memoryBarrierCount,
1441     const VkMemoryBarrier* pMemoryBarriers,
1442     uint32_t bufferMemoryBarrierCount,
1443     const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1444     uint32_t imageMemoryBarrierCount,
1445     const VkImageMemoryBarrier* pImageMemoryBarriers)
1446 {
1447     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
1448     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1449     vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
1450 }
entry_vkCmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)1451 static void entry_vkCmdBeginQuery(
1452     VkCommandBuffer commandBuffer,
1453     VkQueryPool queryPool,
1454     uint32_t query,
1455     VkQueryControlFlags flags)
1456 {
1457     AEMU_SCOPED_TRACE("vkCmdBeginQuery");
1458     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1459     vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
1460 }
entry_vkCmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)1461 static void entry_vkCmdEndQuery(
1462     VkCommandBuffer commandBuffer,
1463     VkQueryPool queryPool,
1464     uint32_t query)
1465 {
1466     AEMU_SCOPED_TRACE("vkCmdEndQuery");
1467     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1468     vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
1469 }
entry_vkCmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1470 static void entry_vkCmdResetQueryPool(
1471     VkCommandBuffer commandBuffer,
1472     VkQueryPool queryPool,
1473     uint32_t firstQuery,
1474     uint32_t queryCount)
1475 {
1476     AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
1477     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1478     vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
1479 }
entry_vkCmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)1480 static void entry_vkCmdWriteTimestamp(
1481     VkCommandBuffer commandBuffer,
1482     VkPipelineStageFlagBits pipelineStage,
1483     VkQueryPool queryPool,
1484     uint32_t query)
1485 {
1486     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
1487     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1488     vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
1489 }
entry_vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)1490 static void entry_vkCmdCopyQueryPoolResults(
1491     VkCommandBuffer commandBuffer,
1492     VkQueryPool queryPool,
1493     uint32_t firstQuery,
1494     uint32_t queryCount,
1495     VkBuffer dstBuffer,
1496     VkDeviceSize dstOffset,
1497     VkDeviceSize stride,
1498     VkQueryResultFlags flags)
1499 {
1500     AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
1501     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1502     vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
1503 }
entry_vkCmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)1504 static void entry_vkCmdPushConstants(
1505     VkCommandBuffer commandBuffer,
1506     VkPipelineLayout layout,
1507     VkShaderStageFlags stageFlags,
1508     uint32_t offset,
1509     uint32_t size,
1510     const void* pValues)
1511 {
1512     AEMU_SCOPED_TRACE("vkCmdPushConstants");
1513     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1514     vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
1515 }
entry_vkCmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)1516 static void entry_vkCmdBeginRenderPass(
1517     VkCommandBuffer commandBuffer,
1518     const VkRenderPassBeginInfo* pRenderPassBegin,
1519     VkSubpassContents contents)
1520 {
1521     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
1522     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1523     vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
1524 }
entry_vkCmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)1525 static void entry_vkCmdNextSubpass(
1526     VkCommandBuffer commandBuffer,
1527     VkSubpassContents contents)
1528 {
1529     AEMU_SCOPED_TRACE("vkCmdNextSubpass");
1530     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1531     vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
1532 }
entry_vkCmdEndRenderPass(VkCommandBuffer commandBuffer)1533 static void entry_vkCmdEndRenderPass(
1534     VkCommandBuffer commandBuffer)
1535 {
1536     AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
1537     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1538     vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
1539 }
entry_vkCmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1540 static void entry_vkCmdExecuteCommands(
1541     VkCommandBuffer commandBuffer,
1542     uint32_t commandBufferCount,
1543     const VkCommandBuffer* pCommandBuffers)
1544 {
1545     AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
1546     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1547     auto resources = ResourceTracker::get();
1548     resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
1549 }
1550 #endif
1551 #ifdef VK_VERSION_1_1
entry_vkEnumerateInstanceVersion(uint32_t * pApiVersion)1552 static VkResult entry_vkEnumerateInstanceVersion(
1553     uint32_t* pApiVersion)
1554 {
1555     AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
1556     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1557     VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1558     vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
1559     return vkEnumerateInstanceVersion_VkResult_return;
1560 }
entry_vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1561 static VkResult entry_vkBindBufferMemory2(
1562     VkDevice device,
1563     uint32_t bindInfoCount,
1564     const VkBindBufferMemoryInfo* pBindInfos)
1565 {
1566     AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1567     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1568     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1569     auto resources = ResourceTracker::get();
1570     vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1571     return vkBindBufferMemory2_VkResult_return;
1572 }
dynCheck_entry_vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1573 static VkResult dynCheck_entry_vkBindBufferMemory2(
1574     VkDevice device,
1575     uint32_t bindInfoCount,
1576     const VkBindBufferMemoryInfo* pBindInfos)
1577 {
1578     auto resources = ResourceTracker::get();
1579     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1580     {
1581         sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1582     }
1583     AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1584     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1585     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1586     vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1587     return vkBindBufferMemory2_VkResult_return;
1588 }
entry_vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1589 static VkResult entry_vkBindImageMemory2(
1590     VkDevice device,
1591     uint32_t bindInfoCount,
1592     const VkBindImageMemoryInfo* pBindInfos)
1593 {
1594     AEMU_SCOPED_TRACE("vkBindImageMemory2");
1595     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1596     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1597     auto resources = ResourceTracker::get();
1598     vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1599     return vkBindImageMemory2_VkResult_return;
1600 }
dynCheck_entry_vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1601 static VkResult dynCheck_entry_vkBindImageMemory2(
1602     VkDevice device,
1603     uint32_t bindInfoCount,
1604     const VkBindImageMemoryInfo* pBindInfos)
1605 {
1606     auto resources = ResourceTracker::get();
1607     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1608     {
1609         sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1610     }
1611     AEMU_SCOPED_TRACE("vkBindImageMemory2");
1612     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1613     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1614     vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1615     return vkBindImageMemory2_VkResult_return;
1616 }
entry_vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1617 static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1618     VkDevice device,
1619     uint32_t heapIndex,
1620     uint32_t localDeviceIndex,
1621     uint32_t remoteDeviceIndex,
1622     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1623 {
1624     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1625     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1626     vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
1627 }
dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1628 static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1629     VkDevice device,
1630     uint32_t heapIndex,
1631     uint32_t localDeviceIndex,
1632     uint32_t remoteDeviceIndex,
1633     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1634 {
1635     auto resources = ResourceTracker::get();
1636     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1637     {
1638         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1639     }
1640     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1641     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1642     vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
1643 }
entry_vkCmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)1644 static void entry_vkCmdSetDeviceMask(
1645     VkCommandBuffer commandBuffer,
1646     uint32_t deviceMask)
1647 {
1648     AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
1649     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1650     vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
1651 }
entry_vkCmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1652 static void entry_vkCmdDispatchBase(
1653     VkCommandBuffer commandBuffer,
1654     uint32_t baseGroupX,
1655     uint32_t baseGroupY,
1656     uint32_t baseGroupZ,
1657     uint32_t groupCountX,
1658     uint32_t groupCountY,
1659     uint32_t groupCountZ)
1660 {
1661     AEMU_SCOPED_TRACE("vkCmdDispatchBase");
1662     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1663     vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
1664 }
entry_vkEnumeratePhysicalDeviceGroups(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)1665 static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1666     VkInstance instance,
1667     uint32_t* pPhysicalDeviceGroupCount,
1668     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1669 {
1670     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
1671     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1672     VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1673     vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
1674     return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1675 }
entry_vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1676 static void entry_vkGetImageMemoryRequirements2(
1677     VkDevice device,
1678     const VkImageMemoryRequirementsInfo2* pInfo,
1679     VkMemoryRequirements2* pMemoryRequirements)
1680 {
1681     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1682     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1683     auto resources = ResourceTracker::get();
1684     resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1685 }
dynCheck_entry_vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1686 static void dynCheck_entry_vkGetImageMemoryRequirements2(
1687     VkDevice device,
1688     const VkImageMemoryRequirementsInfo2* pInfo,
1689     VkMemoryRequirements2* pMemoryRequirements)
1690 {
1691     auto resources = ResourceTracker::get();
1692     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1693     {
1694         sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1695     }
1696     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1697     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1698     resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1699 }
entry_vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1700 static void entry_vkGetBufferMemoryRequirements2(
1701     VkDevice device,
1702     const VkBufferMemoryRequirementsInfo2* pInfo,
1703     VkMemoryRequirements2* pMemoryRequirements)
1704 {
1705     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1706     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1707     auto resources = ResourceTracker::get();
1708     resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1709 }
dynCheck_entry_vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1710 static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1711     VkDevice device,
1712     const VkBufferMemoryRequirementsInfo2* pInfo,
1713     VkMemoryRequirements2* pMemoryRequirements)
1714 {
1715     auto resources = ResourceTracker::get();
1716     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1717     {
1718         sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1719     }
1720     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1721     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1722     resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1723 }
entry_vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1724 static void entry_vkGetImageSparseMemoryRequirements2(
1725     VkDevice device,
1726     const VkImageSparseMemoryRequirementsInfo2* pInfo,
1727     uint32_t* pSparseMemoryRequirementCount,
1728     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1729 {
1730     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1731     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1732     vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
1733 }
dynCheck_entry_vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1734 static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1735     VkDevice device,
1736     const VkImageSparseMemoryRequirementsInfo2* pInfo,
1737     uint32_t* pSparseMemoryRequirementCount,
1738     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1739 {
1740     auto resources = ResourceTracker::get();
1741     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1742     {
1743         sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1744     }
1745     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1746     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1747     vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
1748 }
entry_vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)1749 static void entry_vkGetPhysicalDeviceFeatures2(
1750     VkPhysicalDevice physicalDevice,
1751     VkPhysicalDeviceFeatures2* pFeatures)
1752 {
1753     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
1754     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1755     vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
1756 }
entry_vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)1757 static void entry_vkGetPhysicalDeviceProperties2(
1758     VkPhysicalDevice physicalDevice,
1759     VkPhysicalDeviceProperties2* pProperties)
1760 {
1761     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
1762     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1763     vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
1764 }
entry_vkGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)1765 static void entry_vkGetPhysicalDeviceFormatProperties2(
1766     VkPhysicalDevice physicalDevice,
1767     VkFormat format,
1768     VkFormatProperties2* pFormatProperties)
1769 {
1770     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
1771     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1772     vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
1773 }
entry_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)1774 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1775     VkPhysicalDevice physicalDevice,
1776     const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1777     VkImageFormatProperties2* pImageFormatProperties)
1778 {
1779     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
1780     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1781     VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
1782     auto resources = ResourceTracker::get();
1783     vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
1784     return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1785 }
entry_vkGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)1786 static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1787     VkPhysicalDevice physicalDevice,
1788     uint32_t* pQueueFamilyPropertyCount,
1789     VkQueueFamilyProperties2* pQueueFamilyProperties)
1790 {
1791     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
1792     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1793     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
1794 }
entry_vkGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)1795 static void entry_vkGetPhysicalDeviceMemoryProperties2(
1796     VkPhysicalDevice physicalDevice,
1797     VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1798 {
1799     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
1800     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1801     vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
1802 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)1803 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1804     VkPhysicalDevice physicalDevice,
1805     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1806     uint32_t* pPropertyCount,
1807     VkSparseImageFormatProperties2* pProperties)
1808 {
1809     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
1810     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1811     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
1812 }
entry_vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1813 static void entry_vkTrimCommandPool(
1814     VkDevice device,
1815     VkCommandPool commandPool,
1816     VkCommandPoolTrimFlags flags)
1817 {
1818     AEMU_SCOPED_TRACE("vkTrimCommandPool");
1819     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1820     vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
1821 }
dynCheck_entry_vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1822 static void dynCheck_entry_vkTrimCommandPool(
1823     VkDevice device,
1824     VkCommandPool commandPool,
1825     VkCommandPoolTrimFlags flags)
1826 {
1827     auto resources = ResourceTracker::get();
1828     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1829     {
1830         sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1831     }
1832     AEMU_SCOPED_TRACE("vkTrimCommandPool");
1833     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1834     vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
1835 }
entry_vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1836 static void entry_vkGetDeviceQueue2(
1837     VkDevice device,
1838     const VkDeviceQueueInfo2* pQueueInfo,
1839     VkQueue* pQueue)
1840 {
1841     AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1842     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1843     vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
1844 }
dynCheck_entry_vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1845 static void dynCheck_entry_vkGetDeviceQueue2(
1846     VkDevice device,
1847     const VkDeviceQueueInfo2* pQueueInfo,
1848     VkQueue* pQueue)
1849 {
1850     auto resources = ResourceTracker::get();
1851     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1852     {
1853         sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1854     }
1855     AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1856     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1857     vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
1858 }
entry_vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1859 static VkResult entry_vkCreateSamplerYcbcrConversion(
1860     VkDevice device,
1861     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1862     const VkAllocationCallbacks* pAllocator,
1863     VkSamplerYcbcrConversion* pYcbcrConversion)
1864 {
1865     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1866     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1867     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1868     auto resources = ResourceTracker::get();
1869     vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1870     return vkCreateSamplerYcbcrConversion_VkResult_return;
1871 }
dynCheck_entry_vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1872 static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1873     VkDevice device,
1874     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1875     const VkAllocationCallbacks* pAllocator,
1876     VkSamplerYcbcrConversion* pYcbcrConversion)
1877 {
1878     auto resources = ResourceTracker::get();
1879     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1880     {
1881         sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1882     }
1883     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1884     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1885     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1886     vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1887     return vkCreateSamplerYcbcrConversion_VkResult_return;
1888 }
entry_vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1889 static void entry_vkDestroySamplerYcbcrConversion(
1890     VkDevice device,
1891     VkSamplerYcbcrConversion ycbcrConversion,
1892     const VkAllocationCallbacks* pAllocator)
1893 {
1894     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1895     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1896     auto resources = ResourceTracker::get();
1897     resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1898 }
dynCheck_entry_vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1899 static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1900     VkDevice device,
1901     VkSamplerYcbcrConversion ycbcrConversion,
1902     const VkAllocationCallbacks* pAllocator)
1903 {
1904     auto resources = ResourceTracker::get();
1905     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1906     {
1907         sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1908     }
1909     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1910     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1911     resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1912 }
entry_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1913 static VkResult entry_vkCreateDescriptorUpdateTemplate(
1914     VkDevice device,
1915     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1916     const VkAllocationCallbacks* pAllocator,
1917     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1918 {
1919     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1920     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1921     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1922     vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
1923     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1924 }
dynCheck_entry_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1925 static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1926     VkDevice device,
1927     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1928     const VkAllocationCallbacks* pAllocator,
1929     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1930 {
1931     auto resources = ResourceTracker::get();
1932     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1933     {
1934         sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1935     }
1936     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1937     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1938     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1939     vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
1940     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1941 }
entry_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1942 static void entry_vkDestroyDescriptorUpdateTemplate(
1943     VkDevice device,
1944     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1945     const VkAllocationCallbacks* pAllocator)
1946 {
1947     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1948     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1949     vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
1950 }
dynCheck_entry_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1951 static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1952     VkDevice device,
1953     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1954     const VkAllocationCallbacks* pAllocator)
1955 {
1956     auto resources = ResourceTracker::get();
1957     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1958     {
1959         sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1960     }
1961     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1962     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1963     vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
1964 }
entry_vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)1965 static void entry_vkUpdateDescriptorSetWithTemplate(
1966     VkDevice device,
1967     VkDescriptorSet descriptorSet,
1968     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1969     const void* pData)
1970 {
1971     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
1972     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1973     auto resources = ResourceTracker::get();
1974     resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1975 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)1976 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1977     VkDevice device,
1978     VkDescriptorSet descriptorSet,
1979     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1980     const void* pData)
1981 {
1982     auto resources = ResourceTracker::get();
1983     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1984     {
1985         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1986     }
1987     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
1988     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1989     resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1990 }
entry_vkGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)1991 static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1992     VkPhysicalDevice physicalDevice,
1993     const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1994     VkExternalBufferProperties* pExternalBufferProperties)
1995 {
1996     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
1997     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1998     vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
1999 }
entry_vkGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)2000 static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2001     VkPhysicalDevice physicalDevice,
2002     const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2003     VkExternalFenceProperties* pExternalFenceProperties)
2004 {
2005     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
2006     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2007     auto resources = ResourceTracker::get();
2008     resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
2009 }
entry_vkGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)2010 static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2011     VkPhysicalDevice physicalDevice,
2012     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2013     VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2014 {
2015     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
2016     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2017     vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
2018 }
entry_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)2019 static void entry_vkGetDescriptorSetLayoutSupport(
2020     VkDevice device,
2021     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2022     VkDescriptorSetLayoutSupport* pSupport)
2023 {
2024     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2025     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2026     vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
2027 }
dynCheck_entry_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)2028 static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2029     VkDevice device,
2030     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2031     VkDescriptorSetLayoutSupport* pSupport)
2032 {
2033     auto resources = ResourceTracker::get();
2034     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2035     {
2036         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2037     }
2038     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2039     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2040     vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
2041 }
2042 #endif
2043 #ifdef VK_VERSION_1_2
entry_vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)2044 static void entry_vkCmdDrawIndirectCount(
2045     VkCommandBuffer commandBuffer,
2046     VkBuffer buffer,
2047     VkDeviceSize offset,
2048     VkBuffer countBuffer,
2049     VkDeviceSize countBufferOffset,
2050     uint32_t maxDrawCount,
2051     uint32_t stride)
2052 {
2053     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2054     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2055     vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2056 }
entry_vkCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)2057 static void entry_vkCmdDrawIndexedIndirectCount(
2058     VkCommandBuffer commandBuffer,
2059     VkBuffer buffer,
2060     VkDeviceSize offset,
2061     VkBuffer countBuffer,
2062     VkDeviceSize countBufferOffset,
2063     uint32_t maxDrawCount,
2064     uint32_t stride)
2065 {
2066     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2067     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2068     vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2069 }
entry_vkCreateRenderPass2(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)2070 static VkResult entry_vkCreateRenderPass2(
2071     VkDevice device,
2072     const VkRenderPassCreateInfo2* pCreateInfo,
2073     const VkAllocationCallbacks* pAllocator,
2074     VkRenderPass* pRenderPass)
2075 {
2076     AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2077     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2078     VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2079     vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2080     return vkCreateRenderPass2_VkResult_return;
2081 }
dynCheck_entry_vkCreateRenderPass2(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)2082 static VkResult dynCheck_entry_vkCreateRenderPass2(
2083     VkDevice device,
2084     const VkRenderPassCreateInfo2* pCreateInfo,
2085     const VkAllocationCallbacks* pAllocator,
2086     VkRenderPass* pRenderPass)
2087 {
2088     auto resources = ResourceTracker::get();
2089     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2090     {
2091         sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2092     }
2093     AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2094     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2095     VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2096     vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2097     return vkCreateRenderPass2_VkResult_return;
2098 }
entry_vkCmdBeginRenderPass2(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)2099 static void entry_vkCmdBeginRenderPass2(
2100     VkCommandBuffer commandBuffer,
2101     const VkRenderPassBeginInfo* pRenderPassBegin,
2102     const VkSubpassBeginInfo* pSubpassBeginInfo)
2103 {
2104     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2105     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2106     vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2107 }
entry_vkCmdNextSubpass2(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)2108 static void entry_vkCmdNextSubpass2(
2109     VkCommandBuffer commandBuffer,
2110     const VkSubpassBeginInfo* pSubpassBeginInfo,
2111     const VkSubpassEndInfo* pSubpassEndInfo)
2112 {
2113     AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2114     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2115     vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2116 }
entry_vkCmdEndRenderPass2(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)2117 static void entry_vkCmdEndRenderPass2(
2118     VkCommandBuffer commandBuffer,
2119     const VkSubpassEndInfo* pSubpassEndInfo)
2120 {
2121     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2122     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2123     vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2124 }
entry_vkResetQueryPool(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)2125 static void entry_vkResetQueryPool(
2126     VkDevice device,
2127     VkQueryPool queryPool,
2128     uint32_t firstQuery,
2129     uint32_t queryCount)
2130 {
2131     AEMU_SCOPED_TRACE("vkResetQueryPool");
2132     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2133     vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2134 }
dynCheck_entry_vkResetQueryPool(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)2135 static void dynCheck_entry_vkResetQueryPool(
2136     VkDevice device,
2137     VkQueryPool queryPool,
2138     uint32_t firstQuery,
2139     uint32_t queryCount)
2140 {
2141     auto resources = ResourceTracker::get();
2142     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2143     {
2144         sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2145     }
2146     AEMU_SCOPED_TRACE("vkResetQueryPool");
2147     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2148     vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2149 }
entry_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)2150 static VkResult entry_vkGetSemaphoreCounterValue(
2151     VkDevice device,
2152     VkSemaphore semaphore,
2153     uint64_t* pValue)
2154 {
2155     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2156     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2157     VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2158     vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2159     return vkGetSemaphoreCounterValue_VkResult_return;
2160 }
dynCheck_entry_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)2161 static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2162     VkDevice device,
2163     VkSemaphore semaphore,
2164     uint64_t* pValue)
2165 {
2166     auto resources = ResourceTracker::get();
2167     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2168     {
2169         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2170     }
2171     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2172     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2173     VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2174     vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2175     return vkGetSemaphoreCounterValue_VkResult_return;
2176 }
entry_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)2177 static VkResult entry_vkWaitSemaphores(
2178     VkDevice device,
2179     const VkSemaphoreWaitInfo* pWaitInfo,
2180     uint64_t timeout)
2181 {
2182     AEMU_SCOPED_TRACE("vkWaitSemaphores");
2183     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2184     VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2185     vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2186     return vkWaitSemaphores_VkResult_return;
2187 }
dynCheck_entry_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)2188 static VkResult dynCheck_entry_vkWaitSemaphores(
2189     VkDevice device,
2190     const VkSemaphoreWaitInfo* pWaitInfo,
2191     uint64_t timeout)
2192 {
2193     auto resources = ResourceTracker::get();
2194     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2195     {
2196         sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2197     }
2198     AEMU_SCOPED_TRACE("vkWaitSemaphores");
2199     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2200     VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2201     vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2202     return vkWaitSemaphores_VkResult_return;
2203 }
entry_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)2204 static VkResult entry_vkSignalSemaphore(
2205     VkDevice device,
2206     const VkSemaphoreSignalInfo* pSignalInfo)
2207 {
2208     AEMU_SCOPED_TRACE("vkSignalSemaphore");
2209     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2210     VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2211     vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2212     return vkSignalSemaphore_VkResult_return;
2213 }
dynCheck_entry_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)2214 static VkResult dynCheck_entry_vkSignalSemaphore(
2215     VkDevice device,
2216     const VkSemaphoreSignalInfo* pSignalInfo)
2217 {
2218     auto resources = ResourceTracker::get();
2219     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2220     {
2221         sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2222     }
2223     AEMU_SCOPED_TRACE("vkSignalSemaphore");
2224     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2225     VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2226     vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2227     return vkSignalSemaphore_VkResult_return;
2228 }
entry_vkGetBufferDeviceAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2229 static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2230     VkDevice device,
2231     const VkBufferDeviceAddressInfo* pInfo)
2232 {
2233     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2234     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2235     VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2236     vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2237     return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2238 }
dynCheck_entry_vkGetBufferDeviceAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2239 static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2240     VkDevice device,
2241     const VkBufferDeviceAddressInfo* pInfo)
2242 {
2243     auto resources = ResourceTracker::get();
2244     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2245     {
2246         sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2247     }
2248     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2249     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2250     VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2251     vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2252     return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2253 }
entry_vkGetBufferOpaqueCaptureAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2254 static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2255     VkDevice device,
2256     const VkBufferDeviceAddressInfo* pInfo)
2257 {
2258     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2259     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2260     uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2261     vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2262     return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2263 }
dynCheck_entry_vkGetBufferOpaqueCaptureAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2264 static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2265     VkDevice device,
2266     const VkBufferDeviceAddressInfo* pInfo)
2267 {
2268     auto resources = ResourceTracker::get();
2269     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2270     {
2271         sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2272     }
2273     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2274     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2275     uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2276     vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2277     return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2278 }
entry_vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)2279 static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2280     VkDevice device,
2281     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2282 {
2283     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2284     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2285     uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2286     vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2287     return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2288 }
dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)2289 static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2290     VkDevice device,
2291     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2292 {
2293     auto resources = ResourceTracker::get();
2294     if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2295     {
2296         sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2297     }
2298     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2299     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2300     uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2301     vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2302     return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2303 }
2304 #endif
2305 #ifdef VK_KHR_surface
entry_vkDestroySurfaceKHR(VkInstance instance,VkSurfaceKHR surface,const VkAllocationCallbacks * pAllocator)2306 static void entry_vkDestroySurfaceKHR(
2307     VkInstance instance,
2308     VkSurfaceKHR surface,
2309     const VkAllocationCallbacks* pAllocator)
2310 {
2311     AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
2312     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2313     vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
2314 }
entry_vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32 * pSupported)2315 static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2316     VkPhysicalDevice physicalDevice,
2317     uint32_t queueFamilyIndex,
2318     VkSurfaceKHR surface,
2319     VkBool32* pSupported)
2320 {
2321     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
2322     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2323     VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2324     vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
2325     return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2326 }
entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR * pSurfaceCapabilities)2327 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2328     VkPhysicalDevice physicalDevice,
2329     VkSurfaceKHR surface,
2330     VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2331 {
2332     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
2333     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2334     VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2335     vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
2336     return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2337 }
entry_vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pSurfaceFormatCount,VkSurfaceFormatKHR * pSurfaceFormats)2338 static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2339     VkPhysicalDevice physicalDevice,
2340     VkSurfaceKHR surface,
2341     uint32_t* pSurfaceFormatCount,
2342     VkSurfaceFormatKHR* pSurfaceFormats)
2343 {
2344     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
2345     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2346     VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2347     vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
2348     return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2349 }
entry_vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)2350 static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2351     VkPhysicalDevice physicalDevice,
2352     VkSurfaceKHR surface,
2353     uint32_t* pPresentModeCount,
2354     VkPresentModeKHR* pPresentModes)
2355 {
2356     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
2357     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2358     VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2359     vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
2360     return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2361 }
2362 #endif
2363 #ifdef VK_KHR_swapchain
entry_vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2364 static VkResult entry_vkCreateSwapchainKHR(
2365     VkDevice device,
2366     const VkSwapchainCreateInfoKHR* pCreateInfo,
2367     const VkAllocationCallbacks* pAllocator,
2368     VkSwapchainKHR* pSwapchain)
2369 {
2370     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2371     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2372     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2373     vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
2374     return vkCreateSwapchainKHR_VkResult_return;
2375 }
dynCheck_entry_vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2376 static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2377     VkDevice device,
2378     const VkSwapchainCreateInfoKHR* pCreateInfo,
2379     const VkAllocationCallbacks* pAllocator,
2380     VkSwapchainKHR* pSwapchain)
2381 {
2382     auto resources = ResourceTracker::get();
2383     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2384     {
2385         sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2386     }
2387     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2388     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2389     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2390     vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
2391     return vkCreateSwapchainKHR_VkResult_return;
2392 }
entry_vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2393 static void entry_vkDestroySwapchainKHR(
2394     VkDevice device,
2395     VkSwapchainKHR swapchain,
2396     const VkAllocationCallbacks* pAllocator)
2397 {
2398     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2399     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2400     vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
2401 }
dynCheck_entry_vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2402 static void dynCheck_entry_vkDestroySwapchainKHR(
2403     VkDevice device,
2404     VkSwapchainKHR swapchain,
2405     const VkAllocationCallbacks* pAllocator)
2406 {
2407     auto resources = ResourceTracker::get();
2408     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2409     {
2410         sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2411     }
2412     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2413     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2414     vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
2415 }
entry_vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2416 static VkResult entry_vkGetSwapchainImagesKHR(
2417     VkDevice device,
2418     VkSwapchainKHR swapchain,
2419     uint32_t* pSwapchainImageCount,
2420     VkImage* pSwapchainImages)
2421 {
2422     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2423     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2424     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2425     vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
2426     return vkGetSwapchainImagesKHR_VkResult_return;
2427 }
dynCheck_entry_vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2428 static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2429     VkDevice device,
2430     VkSwapchainKHR swapchain,
2431     uint32_t* pSwapchainImageCount,
2432     VkImage* pSwapchainImages)
2433 {
2434     auto resources = ResourceTracker::get();
2435     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2436     {
2437         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2438     }
2439     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2440     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2441     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2442     vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
2443     return vkGetSwapchainImagesKHR_VkResult_return;
2444 }
entry_vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2445 static VkResult entry_vkAcquireNextImageKHR(
2446     VkDevice device,
2447     VkSwapchainKHR swapchain,
2448     uint64_t timeout,
2449     VkSemaphore semaphore,
2450     VkFence fence,
2451     uint32_t* pImageIndex)
2452 {
2453     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2454     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2455     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2456     vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
2457     return vkAcquireNextImageKHR_VkResult_return;
2458 }
dynCheck_entry_vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2459 static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2460     VkDevice device,
2461     VkSwapchainKHR swapchain,
2462     uint64_t timeout,
2463     VkSemaphore semaphore,
2464     VkFence fence,
2465     uint32_t* pImageIndex)
2466 {
2467     auto resources = ResourceTracker::get();
2468     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2469     {
2470         sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2471     }
2472     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2473     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2474     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2475     vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
2476     return vkAcquireNextImageKHR_VkResult_return;
2477 }
entry_vkQueuePresentKHR(VkQueue queue,const VkPresentInfoKHR * pPresentInfo)2478 static VkResult entry_vkQueuePresentKHR(
2479     VkQueue queue,
2480     const VkPresentInfoKHR* pPresentInfo)
2481 {
2482     AEMU_SCOPED_TRACE("vkQueuePresentKHR");
2483     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
2484     VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2485     vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
2486     return vkQueuePresentKHR_VkResult_return;
2487 }
entry_vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2488 static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2489     VkDevice device,
2490     VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2491 {
2492     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2493     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2494     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2495     vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
2496     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2497 }
dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2498 static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2499     VkDevice device,
2500     VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2501 {
2502     auto resources = ResourceTracker::get();
2503     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2504     {
2505         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2506     }
2507     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2508     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2509     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2510     vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
2511     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2512 }
entry_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2513 static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2514     VkDevice device,
2515     VkSurfaceKHR surface,
2516     VkDeviceGroupPresentModeFlagsKHR* pModes)
2517 {
2518     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2519     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2520     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2521     vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
2522     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2523 }
dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2524 static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2525     VkDevice device,
2526     VkSurfaceKHR surface,
2527     VkDeviceGroupPresentModeFlagsKHR* pModes)
2528 {
2529     auto resources = ResourceTracker::get();
2530     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2531     {
2532         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2533     }
2534     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2535     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2536     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2537     vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
2538     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2539 }
entry_vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)2540 static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2541     VkPhysicalDevice physicalDevice,
2542     VkSurfaceKHR surface,
2543     uint32_t* pRectCount,
2544     VkRect2D* pRects)
2545 {
2546     AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
2547     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2548     VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2549     vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
2550     return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2551 }
entry_vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2552 static VkResult entry_vkAcquireNextImage2KHR(
2553     VkDevice device,
2554     const VkAcquireNextImageInfoKHR* pAcquireInfo,
2555     uint32_t* pImageIndex)
2556 {
2557     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2558     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2559     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2560     vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
2561     return vkAcquireNextImage2KHR_VkResult_return;
2562 }
dynCheck_entry_vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2563 static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2564     VkDevice device,
2565     const VkAcquireNextImageInfoKHR* pAcquireInfo,
2566     uint32_t* pImageIndex)
2567 {
2568     auto resources = ResourceTracker::get();
2569     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2570     {
2571         sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2572     }
2573     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2574     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2575     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2576     vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
2577     return vkAcquireNextImage2KHR_VkResult_return;
2578 }
2579 #endif
2580 #ifdef VK_KHR_display
entry_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPropertiesKHR * pProperties)2581 static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2582     VkPhysicalDevice physicalDevice,
2583     uint32_t* pPropertyCount,
2584     VkDisplayPropertiesKHR* pProperties)
2585 {
2586     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
2587     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2588     VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2589     vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
2590     return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2591 }
entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlanePropertiesKHR * pProperties)2592 static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2593     VkPhysicalDevice physicalDevice,
2594     uint32_t* pPropertyCount,
2595     VkDisplayPlanePropertiesKHR* pProperties)
2596 {
2597     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
2598     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2599     VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2600     vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
2601     return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2602 }
entry_vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t * pDisplayCount,VkDisplayKHR * pDisplays)2603 static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2604     VkPhysicalDevice physicalDevice,
2605     uint32_t planeIndex,
2606     uint32_t* pDisplayCount,
2607     VkDisplayKHR* pDisplays)
2608 {
2609     AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
2610     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2611     VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2612     vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
2613     return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2614 }
entry_vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModePropertiesKHR * pProperties)2615 static VkResult entry_vkGetDisplayModePropertiesKHR(
2616     VkPhysicalDevice physicalDevice,
2617     VkDisplayKHR display,
2618     uint32_t* pPropertyCount,
2619     VkDisplayModePropertiesKHR* pProperties)
2620 {
2621     AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
2622     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2623     VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2624     vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
2625     return vkGetDisplayModePropertiesKHR_VkResult_return;
2626 }
entry_vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const VkDisplayModeCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDisplayModeKHR * pMode)2627 static VkResult entry_vkCreateDisplayModeKHR(
2628     VkPhysicalDevice physicalDevice,
2629     VkDisplayKHR display,
2630     const VkDisplayModeCreateInfoKHR* pCreateInfo,
2631     const VkAllocationCallbacks* pAllocator,
2632     VkDisplayModeKHR* pMode)
2633 {
2634     AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
2635     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2636     VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2637     vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
2638     return vkCreateDisplayModeKHR_VkResult_return;
2639 }
entry_vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR * pCapabilities)2640 static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2641     VkPhysicalDevice physicalDevice,
2642     VkDisplayModeKHR mode,
2643     uint32_t planeIndex,
2644     VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2645 {
2646     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
2647     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2648     VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2649     vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
2650     return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2651 }
entry_vkCreateDisplayPlaneSurfaceKHR(VkInstance instance,const VkDisplaySurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2652 static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2653     VkInstance instance,
2654     const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2655     const VkAllocationCallbacks* pAllocator,
2656     VkSurfaceKHR* pSurface)
2657 {
2658     AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
2659     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2660     VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2661     vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2662     return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2663 }
2664 #endif
2665 #ifdef VK_KHR_display_swapchain
entry_vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)2666 static VkResult entry_vkCreateSharedSwapchainsKHR(
2667     VkDevice device,
2668     uint32_t swapchainCount,
2669     const VkSwapchainCreateInfoKHR* pCreateInfos,
2670     const VkAllocationCallbacks* pAllocator,
2671     VkSwapchainKHR* pSwapchains)
2672 {
2673     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2674     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2675     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2676     vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
2677     return vkCreateSharedSwapchainsKHR_VkResult_return;
2678 }
dynCheck_entry_vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)2679 static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2680     VkDevice device,
2681     uint32_t swapchainCount,
2682     const VkSwapchainCreateInfoKHR* pCreateInfos,
2683     const VkAllocationCallbacks* pAllocator,
2684     VkSwapchainKHR* pSwapchains)
2685 {
2686     auto resources = ResourceTracker::get();
2687     if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2688     {
2689         sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2690     }
2691     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2692     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2693     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2694     vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
2695     return vkCreateSharedSwapchainsKHR_VkResult_return;
2696 }
2697 #endif
2698 #ifdef VK_KHR_xlib_surface
entry_vkCreateXlibSurfaceKHR(VkInstance instance,const VkXlibSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2699 static VkResult entry_vkCreateXlibSurfaceKHR(
2700     VkInstance instance,
2701     const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2702     const VkAllocationCallbacks* pAllocator,
2703     VkSurfaceKHR* pSurface)
2704 {
2705     AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
2706     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2707     VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2708     vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2709     return vkCreateXlibSurfaceKHR_VkResult_return;
2710 }
entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,Display * dpy,VisualID visualID)2711 static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2712     VkPhysicalDevice physicalDevice,
2713     uint32_t queueFamilyIndex,
2714     Display* dpy,
2715     VisualID visualID)
2716 {
2717     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
2718     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2719     VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2720     vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
2721     return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2722 }
2723 #endif
2724 #ifdef VK_KHR_xcb_surface
entry_vkCreateXcbSurfaceKHR(VkInstance instance,const VkXcbSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2725 static VkResult entry_vkCreateXcbSurfaceKHR(
2726     VkInstance instance,
2727     const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2728     const VkAllocationCallbacks* pAllocator,
2729     VkSurfaceKHR* pSurface)
2730 {
2731     AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
2732     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2733     VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2734     vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2735     return vkCreateXcbSurfaceKHR_VkResult_return;
2736 }
entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,xcb_connection_t * connection,xcb_visualid_t visual_id)2737 static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2738     VkPhysicalDevice physicalDevice,
2739     uint32_t queueFamilyIndex,
2740     xcb_connection_t* connection,
2741     xcb_visualid_t visual_id)
2742 {
2743     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
2744     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2745     VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2746     vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
2747     return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2748 }
2749 #endif
2750 #ifdef VK_KHR_wayland_surface
entry_vkCreateWaylandSurfaceKHR(VkInstance instance,const VkWaylandSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2751 static VkResult entry_vkCreateWaylandSurfaceKHR(
2752     VkInstance instance,
2753     const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2754     const VkAllocationCallbacks* pAllocator,
2755     VkSurfaceKHR* pSurface)
2756 {
2757     AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
2758     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2759     VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2760     vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2761     return vkCreateWaylandSurfaceKHR_VkResult_return;
2762 }
entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,wl_display * display)2763 static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2764     VkPhysicalDevice physicalDevice,
2765     uint32_t queueFamilyIndex,
2766     wl_display* display)
2767 {
2768     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
2769     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2770     VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2771     vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
2772     return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2773 }
2774 #endif
2775 #ifdef VK_KHR_android_surface
entry_vkCreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2776 static VkResult entry_vkCreateAndroidSurfaceKHR(
2777     VkInstance instance,
2778     const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2779     const VkAllocationCallbacks* pAllocator,
2780     VkSurfaceKHR* pSurface)
2781 {
2782     AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
2783     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2784     VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2785     vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2786     return vkCreateAndroidSurfaceKHR_VkResult_return;
2787 }
2788 #endif
2789 #ifdef VK_KHR_win32_surface
entry_vkCreateWin32SurfaceKHR(VkInstance instance,const VkWin32SurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2790 static VkResult entry_vkCreateWin32SurfaceKHR(
2791     VkInstance instance,
2792     const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2793     const VkAllocationCallbacks* pAllocator,
2794     VkSurfaceKHR* pSurface)
2795 {
2796     AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
2797     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2798     VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2799     vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2800     return vkCreateWin32SurfaceKHR_VkResult_return;
2801 }
entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex)2802 static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2803     VkPhysicalDevice physicalDevice,
2804     uint32_t queueFamilyIndex)
2805 {
2806     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
2807     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2808     VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2809     vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
2810     return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2811 }
2812 #endif
2813 #ifdef VK_KHR_sampler_mirror_clamp_to_edge
2814 #endif
2815 #ifdef VK_KHR_multiview
2816 #endif
2817 #ifdef VK_KHR_get_physical_device_properties2
entry_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)2818 static void entry_vkGetPhysicalDeviceFeatures2KHR(
2819     VkPhysicalDevice physicalDevice,
2820     VkPhysicalDeviceFeatures2* pFeatures)
2821 {
2822     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
2823     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2824     vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
2825 }
entry_vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)2826 static void entry_vkGetPhysicalDeviceProperties2KHR(
2827     VkPhysicalDevice physicalDevice,
2828     VkPhysicalDeviceProperties2* pProperties)
2829 {
2830     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
2831     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2832     vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
2833 }
entry_vkGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)2834 static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2835     VkPhysicalDevice physicalDevice,
2836     VkFormat format,
2837     VkFormatProperties2* pFormatProperties)
2838 {
2839     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
2840     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2841     vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
2842 }
entry_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)2843 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2844     VkPhysicalDevice physicalDevice,
2845     const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2846     VkImageFormatProperties2* pImageFormatProperties)
2847 {
2848     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
2849     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2850     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
2851     auto resources = ResourceTracker::get();
2852     vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
2853     return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2854 }
entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)2855 static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2856     VkPhysicalDevice physicalDevice,
2857     uint32_t* pQueueFamilyPropertyCount,
2858     VkQueueFamilyProperties2* pQueueFamilyProperties)
2859 {
2860     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
2861     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2862     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
2863 }
entry_vkGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)2864 static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2865     VkPhysicalDevice physicalDevice,
2866     VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2867 {
2868     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
2869     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2870     vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
2871 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)2872 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2873     VkPhysicalDevice physicalDevice,
2874     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2875     uint32_t* pPropertyCount,
2876     VkSparseImageFormatProperties2* pProperties)
2877 {
2878     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
2879     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2880     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
2881 }
2882 #endif
2883 #ifdef VK_KHR_device_group
entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2884 static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2885     VkDevice device,
2886     uint32_t heapIndex,
2887     uint32_t localDeviceIndex,
2888     uint32_t remoteDeviceIndex,
2889     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2890 {
2891     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2892     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2893     vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
2894 }
dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2895 static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2896     VkDevice device,
2897     uint32_t heapIndex,
2898     uint32_t localDeviceIndex,
2899     uint32_t remoteDeviceIndex,
2900     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2901 {
2902     auto resources = ResourceTracker::get();
2903     if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2904     {
2905         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2906     }
2907     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2908     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2909     vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
2910 }
entry_vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)2911 static void entry_vkCmdSetDeviceMaskKHR(
2912     VkCommandBuffer commandBuffer,
2913     uint32_t deviceMask)
2914 {
2915     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
2916     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2917     vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
2918 }
entry_vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)2919 static void entry_vkCmdDispatchBaseKHR(
2920     VkCommandBuffer commandBuffer,
2921     uint32_t baseGroupX,
2922     uint32_t baseGroupY,
2923     uint32_t baseGroupZ,
2924     uint32_t groupCountX,
2925     uint32_t groupCountY,
2926     uint32_t groupCountZ)
2927 {
2928     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
2929     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2930     vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
2931 }
2932 #endif
2933 #ifdef VK_KHR_shader_draw_parameters
2934 #endif
2935 #ifdef VK_KHR_maintenance1
entry_vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2936 static void entry_vkTrimCommandPoolKHR(
2937     VkDevice device,
2938     VkCommandPool commandPool,
2939     VkCommandPoolTrimFlags flags)
2940 {
2941     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2942     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2943     vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
2944 }
dynCheck_entry_vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2945 static void dynCheck_entry_vkTrimCommandPoolKHR(
2946     VkDevice device,
2947     VkCommandPool commandPool,
2948     VkCommandPoolTrimFlags flags)
2949 {
2950     auto resources = ResourceTracker::get();
2951     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2952     {
2953         sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2954     }
2955     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2956     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2957     vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
2958 }
2959 #endif
2960 #ifdef VK_KHR_device_group_creation
entry_vkEnumeratePhysicalDeviceGroupsKHR(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)2961 static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2962     VkInstance instance,
2963     uint32_t* pPhysicalDeviceGroupCount,
2964     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2965 {
2966     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
2967     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2968     VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2969     vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
2970     return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2971 }
2972 #endif
2973 #ifdef VK_KHR_external_memory_capabilities
entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)2974 static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2975     VkPhysicalDevice physicalDevice,
2976     const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2977     VkExternalBufferProperties* pExternalBufferProperties)
2978 {
2979     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
2980     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2981     vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
2982 }
2983 #endif
2984 #ifdef VK_KHR_external_memory
2985 #endif
2986 #ifdef VK_KHR_external_memory_win32
entry_vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2987 static VkResult entry_vkGetMemoryWin32HandleKHR(
2988     VkDevice device,
2989     const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2990     HANDLE* pHandle)
2991 {
2992     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2993     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2994     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2995     vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
2996     return vkGetMemoryWin32HandleKHR_VkResult_return;
2997 }
dynCheck_entry_vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2998 static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2999     VkDevice device,
3000     const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3001     HANDLE* pHandle)
3002 {
3003     auto resources = ResourceTracker::get();
3004     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3005     {
3006         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3007     }
3008     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
3009     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3010     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
3011     vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3012     return vkGetMemoryWin32HandleKHR_VkResult_return;
3013 }
entry_vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)3014 static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3015     VkDevice device,
3016     VkExternalMemoryHandleTypeFlagBits handleType,
3017     HANDLE handle,
3018     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3019 {
3020     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
3021     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3022     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
3023     vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
3024     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3025 }
dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)3026 static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3027     VkDevice device,
3028     VkExternalMemoryHandleTypeFlagBits handleType,
3029     HANDLE handle,
3030     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3031 {
3032     auto resources = ResourceTracker::get();
3033     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3034     {
3035         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3036     }
3037     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
3038     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3039     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
3040     vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
3041     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3042 }
3043 #endif
3044 #ifdef VK_KHR_external_memory_fd
entry_vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)3045 static VkResult entry_vkGetMemoryFdKHR(
3046     VkDevice device,
3047     const VkMemoryGetFdInfoKHR* pGetFdInfo,
3048     int* pFd)
3049 {
3050     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
3051     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3052     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
3053     vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
3054     return vkGetMemoryFdKHR_VkResult_return;
3055 }
dynCheck_entry_vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)3056 static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3057     VkDevice device,
3058     const VkMemoryGetFdInfoKHR* pGetFdInfo,
3059     int* pFd)
3060 {
3061     auto resources = ResourceTracker::get();
3062     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3063     {
3064         sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3065     }
3066     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
3067     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3068     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
3069     vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
3070     return vkGetMemoryFdKHR_VkResult_return;
3071 }
entry_vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3072 static VkResult entry_vkGetMemoryFdPropertiesKHR(
3073     VkDevice device,
3074     VkExternalMemoryHandleTypeFlagBits handleType,
3075     int fd,
3076     VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3077 {
3078     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
3079     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3080     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
3081     vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
3082     return vkGetMemoryFdPropertiesKHR_VkResult_return;
3083 }
dynCheck_entry_vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3084 static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3085     VkDevice device,
3086     VkExternalMemoryHandleTypeFlagBits handleType,
3087     int fd,
3088     VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3089 {
3090     auto resources = ResourceTracker::get();
3091     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3092     {
3093         sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3094     }
3095     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
3096     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3097     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
3098     vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
3099     return vkGetMemoryFdPropertiesKHR_VkResult_return;
3100 }
3101 #endif
3102 #ifdef VK_KHR_win32_keyed_mutex
3103 #endif
3104 #ifdef VK_KHR_external_semaphore_capabilities
entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)3105 static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3106     VkPhysicalDevice physicalDevice,
3107     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3108     VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3109 {
3110     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
3111     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3112     vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
3113 }
3114 #endif
3115 #ifdef VK_KHR_external_semaphore
3116 #endif
3117 #ifdef VK_KHR_external_semaphore_win32
entry_vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)3118 static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3119     VkDevice device,
3120     const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3121 {
3122     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
3123     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3124     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3125     vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
3126     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3127 }
dynCheck_entry_vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)3128 static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3129     VkDevice device,
3130     const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3131 {
3132     auto resources = ResourceTracker::get();
3133     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3134     {
3135         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3136     }
3137     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
3138     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3139     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3140     vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
3141     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3142 }
entry_vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3143 static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3144     VkDevice device,
3145     const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3146     HANDLE* pHandle)
3147 {
3148     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
3149     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3150     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3151     vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3152     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3153 }
dynCheck_entry_vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3154 static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3155     VkDevice device,
3156     const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3157     HANDLE* pHandle)
3158 {
3159     auto resources = ResourceTracker::get();
3160     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3161     {
3162         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3163     }
3164     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
3165     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3166     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3167     vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3168     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3169 }
3170 #endif
3171 #ifdef VK_KHR_external_semaphore_fd
entry_vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3172 static VkResult entry_vkImportSemaphoreFdKHR(
3173     VkDevice device,
3174     const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3175 {
3176     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
3177     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3178     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3179     auto resources = ResourceTracker::get();
3180     vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3181     return vkImportSemaphoreFdKHR_VkResult_return;
3182 }
dynCheck_entry_vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3183 static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3184     VkDevice device,
3185     const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3186 {
3187     auto resources = ResourceTracker::get();
3188     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3189     {
3190         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3191     }
3192     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
3193     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3194     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3195     vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3196     return vkImportSemaphoreFdKHR_VkResult_return;
3197 }
entry_vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3198 static VkResult entry_vkGetSemaphoreFdKHR(
3199     VkDevice device,
3200     const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3201     int* pFd)
3202 {
3203     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3204     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3205     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3206     auto resources = ResourceTracker::get();
3207     vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3208     return vkGetSemaphoreFdKHR_VkResult_return;
3209 }
dynCheck_entry_vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3210 static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3211     VkDevice device,
3212     const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3213     int* pFd)
3214 {
3215     auto resources = ResourceTracker::get();
3216     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3217     {
3218         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3219     }
3220     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3221     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3222     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3223     vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3224     return vkGetSemaphoreFdKHR_VkResult_return;
3225 }
3226 #endif
3227 #ifdef VK_KHR_push_descriptor
entry_vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)3228 static void entry_vkCmdPushDescriptorSetKHR(
3229     VkCommandBuffer commandBuffer,
3230     VkPipelineBindPoint pipelineBindPoint,
3231     VkPipelineLayout layout,
3232     uint32_t set,
3233     uint32_t descriptorWriteCount,
3234     const VkWriteDescriptorSet* pDescriptorWrites)
3235 {
3236     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
3237     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3238     vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
3239 }
entry_vkCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)3240 static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3241     VkCommandBuffer commandBuffer,
3242     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3243     VkPipelineLayout layout,
3244     uint32_t set,
3245     const void* pData)
3246 {
3247     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
3248     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3249     vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
3250 }
3251 #endif
3252 #ifdef VK_KHR_shader_float16_int8
3253 #endif
3254 #ifdef VK_KHR_16bit_storage
3255 #endif
3256 #ifdef VK_KHR_incremental_present
3257 #endif
3258 #ifdef VK_KHR_descriptor_update_template
entry_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3259 static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3260     VkDevice device,
3261     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3262     const VkAllocationCallbacks* pAllocator,
3263     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3264 {
3265     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3266     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3267     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3268     vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
3269     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3270 }
dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3271 static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3272     VkDevice device,
3273     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3274     const VkAllocationCallbacks* pAllocator,
3275     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3276 {
3277     auto resources = ResourceTracker::get();
3278     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3279     {
3280         sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3281     }
3282     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3283     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3284     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3285     vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
3286     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3287 }
entry_vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3288 static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3289     VkDevice device,
3290     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3291     const VkAllocationCallbacks* pAllocator)
3292 {
3293     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3294     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3295     vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
3296 }
dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3297 static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3298     VkDevice device,
3299     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3300     const VkAllocationCallbacks* pAllocator)
3301 {
3302     auto resources = ResourceTracker::get();
3303     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3304     {
3305         sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3306     }
3307     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3308     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3309     vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
3310 }
entry_vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3311 static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3312     VkDevice device,
3313     VkDescriptorSet descriptorSet,
3314     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3315     const void* pData)
3316 {
3317     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3318     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3319     vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
3320 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3321 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3322     VkDevice device,
3323     VkDescriptorSet descriptorSet,
3324     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3325     const void* pData)
3326 {
3327     auto resources = ResourceTracker::get();
3328     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3329     {
3330         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3331     }
3332     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3333     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3334     vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
3335 }
3336 #endif
3337 #ifdef VK_KHR_imageless_framebuffer
3338 #endif
3339 #ifdef VK_KHR_create_renderpass2
entry_vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3340 static VkResult entry_vkCreateRenderPass2KHR(
3341     VkDevice device,
3342     const VkRenderPassCreateInfo2* pCreateInfo,
3343     const VkAllocationCallbacks* pAllocator,
3344     VkRenderPass* pRenderPass)
3345 {
3346     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3347     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3348     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3349     vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
3350     return vkCreateRenderPass2KHR_VkResult_return;
3351 }
dynCheck_entry_vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3352 static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3353     VkDevice device,
3354     const VkRenderPassCreateInfo2* pCreateInfo,
3355     const VkAllocationCallbacks* pAllocator,
3356     VkRenderPass* pRenderPass)
3357 {
3358     auto resources = ResourceTracker::get();
3359     if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3360     {
3361         sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3362     }
3363     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3364     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3365     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3366     vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
3367     return vkCreateRenderPass2KHR_VkResult_return;
3368 }
entry_vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)3369 static void entry_vkCmdBeginRenderPass2KHR(
3370     VkCommandBuffer commandBuffer,
3371     const VkRenderPassBeginInfo* pRenderPassBegin,
3372     const VkSubpassBeginInfo* pSubpassBeginInfo)
3373 {
3374     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
3375     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3376     vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
3377 }
entry_vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)3378 static void entry_vkCmdNextSubpass2KHR(
3379     VkCommandBuffer commandBuffer,
3380     const VkSubpassBeginInfo* pSubpassBeginInfo,
3381     const VkSubpassEndInfo* pSubpassEndInfo)
3382 {
3383     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
3384     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3385     vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
3386 }
entry_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)3387 static void entry_vkCmdEndRenderPass2KHR(
3388     VkCommandBuffer commandBuffer,
3389     const VkSubpassEndInfo* pSubpassEndInfo)
3390 {
3391     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
3392     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3393     vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
3394 }
3395 #endif
3396 #ifdef VK_KHR_shared_presentable_image
entry_vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3397 static VkResult entry_vkGetSwapchainStatusKHR(
3398     VkDevice device,
3399     VkSwapchainKHR swapchain)
3400 {
3401     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3402     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3403     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3404     vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
3405     return vkGetSwapchainStatusKHR_VkResult_return;
3406 }
dynCheck_entry_vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3407 static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3408     VkDevice device,
3409     VkSwapchainKHR swapchain)
3410 {
3411     auto resources = ResourceTracker::get();
3412     if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3413     {
3414         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3415     }
3416     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3417     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3418     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3419     vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
3420     return vkGetSwapchainStatusKHR_VkResult_return;
3421 }
3422 #endif
3423 #ifdef VK_KHR_external_fence_capabilities
entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)3424 static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3425     VkPhysicalDevice physicalDevice,
3426     const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3427     VkExternalFenceProperties* pExternalFenceProperties)
3428 {
3429     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
3430     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3431     auto resources = ResourceTracker::get();
3432     resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
3433 }
3434 #endif
3435 #ifdef VK_KHR_external_fence
3436 #endif
3437 #ifdef VK_KHR_external_fence_win32
entry_vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3438 static VkResult entry_vkImportFenceWin32HandleKHR(
3439     VkDevice device,
3440     const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3441 {
3442     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3443     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3444     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3445     vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
3446     return vkImportFenceWin32HandleKHR_VkResult_return;
3447 }
dynCheck_entry_vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3448 static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3449     VkDevice device,
3450     const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3451 {
3452     auto resources = ResourceTracker::get();
3453     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3454     {
3455         sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3456     }
3457     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3458     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3459     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3460     vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
3461     return vkImportFenceWin32HandleKHR_VkResult_return;
3462 }
entry_vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3463 static VkResult entry_vkGetFenceWin32HandleKHR(
3464     VkDevice device,
3465     const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3466     HANDLE* pHandle)
3467 {
3468     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3469     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3470     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3471     vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3472     return vkGetFenceWin32HandleKHR_VkResult_return;
3473 }
dynCheck_entry_vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3474 static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3475     VkDevice device,
3476     const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3477     HANDLE* pHandle)
3478 {
3479     auto resources = ResourceTracker::get();
3480     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3481     {
3482         sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3483     }
3484     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3485     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3486     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3487     vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3488     return vkGetFenceWin32HandleKHR_VkResult_return;
3489 }
3490 #endif
3491 #ifdef VK_KHR_external_fence_fd
entry_vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3492 static VkResult entry_vkImportFenceFdKHR(
3493     VkDevice device,
3494     const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3495 {
3496     AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3497     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3498     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3499     auto resources = ResourceTracker::get();
3500     vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3501     return vkImportFenceFdKHR_VkResult_return;
3502 }
dynCheck_entry_vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3503 static VkResult dynCheck_entry_vkImportFenceFdKHR(
3504     VkDevice device,
3505     const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3506 {
3507     auto resources = ResourceTracker::get();
3508     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3509     {
3510         sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3511     }
3512     AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3513     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3514     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3515     vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3516     return vkImportFenceFdKHR_VkResult_return;
3517 }
entry_vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3518 static VkResult entry_vkGetFenceFdKHR(
3519     VkDevice device,
3520     const VkFenceGetFdInfoKHR* pGetFdInfo,
3521     int* pFd)
3522 {
3523     AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3524     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3525     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3526     auto resources = ResourceTracker::get();
3527     vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3528     return vkGetFenceFdKHR_VkResult_return;
3529 }
dynCheck_entry_vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3530 static VkResult dynCheck_entry_vkGetFenceFdKHR(
3531     VkDevice device,
3532     const VkFenceGetFdInfoKHR* pGetFdInfo,
3533     int* pFd)
3534 {
3535     auto resources = ResourceTracker::get();
3536     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3537     {
3538         sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3539     }
3540     AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3541     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3542     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3543     vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3544     return vkGetFenceFdKHR_VkResult_return;
3545 }
3546 #endif
3547 #ifdef VK_KHR_performance_query
entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)3548 static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3549     VkPhysicalDevice physicalDevice,
3550     uint32_t queueFamilyIndex,
3551     uint32_t* pCounterCount,
3552     VkPerformanceCounterKHR* pCounters,
3553     VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3554 {
3555     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3556     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3557     VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3558     vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3559     return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3560 }
entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)3561 static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3562     VkPhysicalDevice physicalDevice,
3563     const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3564     uint32_t* pNumPasses)
3565 {
3566     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3567     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3568     vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3569 }
entry_vkAcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)3570 static VkResult entry_vkAcquireProfilingLockKHR(
3571     VkDevice device,
3572     const VkAcquireProfilingLockInfoKHR* pInfo)
3573 {
3574     AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3575     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3576     VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3577     vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3578     return vkAcquireProfilingLockKHR_VkResult_return;
3579 }
dynCheck_entry_vkAcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)3580 static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3581     VkDevice device,
3582     const VkAcquireProfilingLockInfoKHR* pInfo)
3583 {
3584     auto resources = ResourceTracker::get();
3585     if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3586     {
3587         sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3588     }
3589     AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3590     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3591     VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3592     vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3593     return vkAcquireProfilingLockKHR_VkResult_return;
3594 }
entry_vkReleaseProfilingLockKHR(VkDevice device)3595 static void entry_vkReleaseProfilingLockKHR(
3596     VkDevice device)
3597 {
3598     AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3599     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3600     vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3601 }
dynCheck_entry_vkReleaseProfilingLockKHR(VkDevice device)3602 static void dynCheck_entry_vkReleaseProfilingLockKHR(
3603     VkDevice device)
3604 {
3605     auto resources = ResourceTracker::get();
3606     if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3607     {
3608         sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3609     }
3610     AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3611     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3612     vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3613 }
3614 #endif
3615 #ifdef VK_KHR_maintenance2
3616 #endif
3617 #ifdef VK_KHR_get_surface_capabilities2
entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkSurfaceCapabilities2KHR * pSurfaceCapabilities)3618 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3619     VkPhysicalDevice physicalDevice,
3620     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3621     VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3622 {
3623     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
3624     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3625     VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3626     vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
3627     return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3628 }
entry_vkGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pSurfaceFormatCount,VkSurfaceFormat2KHR * pSurfaceFormats)3629 static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3630     VkPhysicalDevice physicalDevice,
3631     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3632     uint32_t* pSurfaceFormatCount,
3633     VkSurfaceFormat2KHR* pSurfaceFormats)
3634 {
3635     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
3636     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3637     VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3638     vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
3639     return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3640 }
3641 #endif
3642 #ifdef VK_KHR_variable_pointers
3643 #endif
3644 #ifdef VK_KHR_get_display_properties2
entry_vkGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayProperties2KHR * pProperties)3645 static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3646     VkPhysicalDevice physicalDevice,
3647     uint32_t* pPropertyCount,
3648     VkDisplayProperties2KHR* pProperties)
3649 {
3650     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
3651     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3652     VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3653     vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
3654     return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3655 }
entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlaneProperties2KHR * pProperties)3656 static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3657     VkPhysicalDevice physicalDevice,
3658     uint32_t* pPropertyCount,
3659     VkDisplayPlaneProperties2KHR* pProperties)
3660 {
3661     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
3662     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3663     VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3664     vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
3665     return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3666 }
entry_vkGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModeProperties2KHR * pProperties)3667 static VkResult entry_vkGetDisplayModeProperties2KHR(
3668     VkPhysicalDevice physicalDevice,
3669     VkDisplayKHR display,
3670     uint32_t* pPropertyCount,
3671     VkDisplayModeProperties2KHR* pProperties)
3672 {
3673     AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
3674     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3675     VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3676     vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
3677     return vkGetDisplayModeProperties2KHR_VkResult_return;
3678 }
entry_vkGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo,VkDisplayPlaneCapabilities2KHR * pCapabilities)3679 static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3680     VkPhysicalDevice physicalDevice,
3681     const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3682     VkDisplayPlaneCapabilities2KHR* pCapabilities)
3683 {
3684     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
3685     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3686     VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3687     vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
3688     return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3689 }
3690 #endif
3691 #ifdef VK_KHR_dedicated_allocation
3692 #endif
3693 #ifdef VK_KHR_storage_buffer_storage_class
3694 #endif
3695 #ifdef VK_KHR_relaxed_block_layout
3696 #endif
3697 #ifdef VK_KHR_get_memory_requirements2
entry_vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3698 static void entry_vkGetImageMemoryRequirements2KHR(
3699     VkDevice device,
3700     const VkImageMemoryRequirementsInfo2* pInfo,
3701     VkMemoryRequirements2* pMemoryRequirements)
3702 {
3703     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3704     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3705     auto resources = ResourceTracker::get();
3706     resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3707 }
dynCheck_entry_vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3708 static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3709     VkDevice device,
3710     const VkImageMemoryRequirementsInfo2* pInfo,
3711     VkMemoryRequirements2* pMemoryRequirements)
3712 {
3713     auto resources = ResourceTracker::get();
3714     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3715     {
3716         sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3717     }
3718     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3719     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3720     resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3721 }
entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3722 static void entry_vkGetBufferMemoryRequirements2KHR(
3723     VkDevice device,
3724     const VkBufferMemoryRequirementsInfo2* pInfo,
3725     VkMemoryRequirements2* pMemoryRequirements)
3726 {
3727     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3728     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3729     auto resources = ResourceTracker::get();
3730     resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3731 }
dynCheck_entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3732 static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3733     VkDevice device,
3734     const VkBufferMemoryRequirementsInfo2* pInfo,
3735     VkMemoryRequirements2* pMemoryRequirements)
3736 {
3737     auto resources = ResourceTracker::get();
3738     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3739     {
3740         sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3741     }
3742     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3743     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3744     resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3745 }
entry_vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3746 static void entry_vkGetImageSparseMemoryRequirements2KHR(
3747     VkDevice device,
3748     const VkImageSparseMemoryRequirementsInfo2* pInfo,
3749     uint32_t* pSparseMemoryRequirementCount,
3750     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3751 {
3752     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3753     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3754     vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
3755 }
dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3756 static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3757     VkDevice device,
3758     const VkImageSparseMemoryRequirementsInfo2* pInfo,
3759     uint32_t* pSparseMemoryRequirementCount,
3760     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3761 {
3762     auto resources = ResourceTracker::get();
3763     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3764     {
3765         sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3766     }
3767     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3768     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3769     vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
3770 }
3771 #endif
3772 #ifdef VK_KHR_image_format_list
3773 #endif
3774 #ifdef VK_KHR_sampler_ycbcr_conversion
entry_vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3775 static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3776     VkDevice device,
3777     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3778     const VkAllocationCallbacks* pAllocator,
3779     VkSamplerYcbcrConversion* pYcbcrConversion)
3780 {
3781     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3782     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3783     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3784     auto resources = ResourceTracker::get();
3785     vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3786     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3787 }
dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3788 static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3789     VkDevice device,
3790     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3791     const VkAllocationCallbacks* pAllocator,
3792     VkSamplerYcbcrConversion* pYcbcrConversion)
3793 {
3794     auto resources = ResourceTracker::get();
3795     if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3796     {
3797         sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3798     }
3799     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3800     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3801     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3802     vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3803     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3804 }
entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3805 static void entry_vkDestroySamplerYcbcrConversionKHR(
3806     VkDevice device,
3807     VkSamplerYcbcrConversion ycbcrConversion,
3808     const VkAllocationCallbacks* pAllocator)
3809 {
3810     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3811     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3812     auto resources = ResourceTracker::get();
3813     resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3814 }
dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3815 static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3816     VkDevice device,
3817     VkSamplerYcbcrConversion ycbcrConversion,
3818     const VkAllocationCallbacks* pAllocator)
3819 {
3820     auto resources = ResourceTracker::get();
3821     if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3822     {
3823         sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3824     }
3825     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3826     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3827     resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3828 }
3829 #endif
3830 #ifdef VK_KHR_bind_memory2
entry_vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3831 static VkResult entry_vkBindBufferMemory2KHR(
3832     VkDevice device,
3833     uint32_t bindInfoCount,
3834     const VkBindBufferMemoryInfo* pBindInfos)
3835 {
3836     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3837     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3838     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3839     auto resources = ResourceTracker::get();
3840     vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3841     return vkBindBufferMemory2KHR_VkResult_return;
3842 }
dynCheck_entry_vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3843 static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3844     VkDevice device,
3845     uint32_t bindInfoCount,
3846     const VkBindBufferMemoryInfo* pBindInfos)
3847 {
3848     auto resources = ResourceTracker::get();
3849     if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3850     {
3851         sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3852     }
3853     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3854     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3855     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3856     vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3857     return vkBindBufferMemory2KHR_VkResult_return;
3858 }
entry_vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3859 static VkResult entry_vkBindImageMemory2KHR(
3860     VkDevice device,
3861     uint32_t bindInfoCount,
3862     const VkBindImageMemoryInfo* pBindInfos)
3863 {
3864     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3865     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3866     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3867     auto resources = ResourceTracker::get();
3868     vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3869     return vkBindImageMemory2KHR_VkResult_return;
3870 }
dynCheck_entry_vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3871 static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3872     VkDevice device,
3873     uint32_t bindInfoCount,
3874     const VkBindImageMemoryInfo* pBindInfos)
3875 {
3876     auto resources = ResourceTracker::get();
3877     if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3878     {
3879         sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3880     }
3881     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3882     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3883     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3884     vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3885     return vkBindImageMemory2KHR_VkResult_return;
3886 }
3887 #endif
3888 #ifdef VK_KHR_portability_subset
3889 #endif
3890 #ifdef VK_KHR_maintenance3
entry_vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3891 static void entry_vkGetDescriptorSetLayoutSupportKHR(
3892     VkDevice device,
3893     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3894     VkDescriptorSetLayoutSupport* pSupport)
3895 {
3896     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3897     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3898     vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
3899 }
dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3900 static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3901     VkDevice device,
3902     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3903     VkDescriptorSetLayoutSupport* pSupport)
3904 {
3905     auto resources = ResourceTracker::get();
3906     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3907     {
3908         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3909     }
3910     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3911     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3912     vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
3913 }
3914 #endif
3915 #ifdef VK_KHR_draw_indirect_count
entry_vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3916 static void entry_vkCmdDrawIndirectCountKHR(
3917     VkCommandBuffer commandBuffer,
3918     VkBuffer buffer,
3919     VkDeviceSize offset,
3920     VkBuffer countBuffer,
3921     VkDeviceSize countBufferOffset,
3922     uint32_t maxDrawCount,
3923     uint32_t stride)
3924 {
3925     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
3926     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3927     vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
3928 }
entry_vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3929 static void entry_vkCmdDrawIndexedIndirectCountKHR(
3930     VkCommandBuffer commandBuffer,
3931     VkBuffer buffer,
3932     VkDeviceSize offset,
3933     VkBuffer countBuffer,
3934     VkDeviceSize countBufferOffset,
3935     uint32_t maxDrawCount,
3936     uint32_t stride)
3937 {
3938     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
3939     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3940     vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
3941 }
3942 #endif
3943 #ifdef VK_KHR_shader_subgroup_extended_types
3944 #endif
3945 #ifdef VK_KHR_8bit_storage
3946 #endif
3947 #ifdef VK_KHR_shader_atomic_int64
3948 #endif
3949 #ifdef VK_KHR_shader_clock
3950 #endif
3951 #ifdef VK_KHR_driver_properties
3952 #endif
3953 #ifdef VK_KHR_shader_float_controls
3954 #endif
3955 #ifdef VK_KHR_depth_stencil_resolve
3956 #endif
3957 #ifdef VK_KHR_swapchain_mutable_format
3958 #endif
3959 #ifdef VK_KHR_timeline_semaphore
entry_vkGetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)3960 static VkResult entry_vkGetSemaphoreCounterValueKHR(
3961     VkDevice device,
3962     VkSemaphore semaphore,
3963     uint64_t* pValue)
3964 {
3965     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3966     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3967     VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3968     vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3969     return vkGetSemaphoreCounterValueKHR_VkResult_return;
3970 }
dynCheck_entry_vkGetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)3971 static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
3972     VkDevice device,
3973     VkSemaphore semaphore,
3974     uint64_t* pValue)
3975 {
3976     auto resources = ResourceTracker::get();
3977     if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
3978     {
3979         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
3980     }
3981     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3982     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3983     VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3984     vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3985     return vkGetSemaphoreCounterValueKHR_VkResult_return;
3986 }
entry_vkWaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)3987 static VkResult entry_vkWaitSemaphoresKHR(
3988     VkDevice device,
3989     const VkSemaphoreWaitInfo* pWaitInfo,
3990     uint64_t timeout)
3991 {
3992     AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
3993     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3994     VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
3995     vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
3996     return vkWaitSemaphoresKHR_VkResult_return;
3997 }
dynCheck_entry_vkWaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)3998 static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
3999     VkDevice device,
4000     const VkSemaphoreWaitInfo* pWaitInfo,
4001     uint64_t timeout)
4002 {
4003     auto resources = ResourceTracker::get();
4004     if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4005     {
4006         sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4007     }
4008     AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4009     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4010     VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4011     vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4012     return vkWaitSemaphoresKHR_VkResult_return;
4013 }
entry_vkSignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)4014 static VkResult entry_vkSignalSemaphoreKHR(
4015     VkDevice device,
4016     const VkSemaphoreSignalInfo* pSignalInfo)
4017 {
4018     AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4019     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4020     VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4021     vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4022     return vkSignalSemaphoreKHR_VkResult_return;
4023 }
dynCheck_entry_vkSignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)4024 static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4025     VkDevice device,
4026     const VkSemaphoreSignalInfo* pSignalInfo)
4027 {
4028     auto resources = ResourceTracker::get();
4029     if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4030     {
4031         sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4032     }
4033     AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4034     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4035     VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4036     vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4037     return vkSignalSemaphoreKHR_VkResult_return;
4038 }
4039 #endif
4040 #ifdef VK_KHR_vulkan_memory_model
4041 #endif
4042 #ifdef VK_KHR_shader_terminate_invocation
4043 #endif
4044 #ifdef VK_KHR_fragment_shading_rate
entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)4045 static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4046     VkPhysicalDevice physicalDevice,
4047     uint32_t* pFragmentShadingRateCount,
4048     VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4049 {
4050     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4051     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4052     VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4053     vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4054     return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4055 }
entry_vkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer,const VkExtent2D * pFragmentSize,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])4056 static void entry_vkCmdSetFragmentShadingRateKHR(
4057     VkCommandBuffer commandBuffer,
4058     const VkExtent2D* pFragmentSize,
4059     const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4060 {
4061     AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4062     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4063     vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4064 }
4065 #endif
4066 #ifdef VK_KHR_spirv_1_4
4067 #endif
4068 #ifdef VK_KHR_surface_protected_capabilities
4069 #endif
4070 #ifdef VK_KHR_separate_depth_stencil_layouts
4071 #endif
4072 #ifdef VK_KHR_uniform_buffer_standard_layout
4073 #endif
4074 #ifdef VK_KHR_buffer_device_address
entry_vkGetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4075 static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4076     VkDevice device,
4077     const VkBufferDeviceAddressInfo* pInfo)
4078 {
4079     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4080     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4081     VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4082     vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4083     return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4084 }
dynCheck_entry_vkGetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4085 static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4086     VkDevice device,
4087     const VkBufferDeviceAddressInfo* pInfo)
4088 {
4089     auto resources = ResourceTracker::get();
4090     if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4091     {
4092         sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4093     }
4094     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4095     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4096     VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4097     vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4098     return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4099 }
entry_vkGetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4100 static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4101     VkDevice device,
4102     const VkBufferDeviceAddressInfo* pInfo)
4103 {
4104     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4105     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4106     uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4107     vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4108     return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4109 }
dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4110 static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4111     VkDevice device,
4112     const VkBufferDeviceAddressInfo* pInfo)
4113 {
4114     auto resources = ResourceTracker::get();
4115     if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4116     {
4117         sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4118     }
4119     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4120     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4121     uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4122     vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4123     return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4124 }
entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)4125 static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4126     VkDevice device,
4127     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4128 {
4129     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4130     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4131     uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4132     vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4133     return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4134 }
dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)4135 static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4136     VkDevice device,
4137     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4138 {
4139     auto resources = ResourceTracker::get();
4140     if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4141     {
4142         sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4143     }
4144     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4145     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4146     uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4147     vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4148     return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4149 }
4150 #endif
4151 #ifdef VK_KHR_deferred_host_operations
entry_vkCreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)4152 static VkResult entry_vkCreateDeferredOperationKHR(
4153     VkDevice device,
4154     const VkAllocationCallbacks* pAllocator,
4155     VkDeferredOperationKHR* pDeferredOperation)
4156 {
4157     AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4158     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4159     VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4160     vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4161     return vkCreateDeferredOperationKHR_VkResult_return;
4162 }
dynCheck_entry_vkCreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)4163 static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4164     VkDevice device,
4165     const VkAllocationCallbacks* pAllocator,
4166     VkDeferredOperationKHR* pDeferredOperation)
4167 {
4168     auto resources = ResourceTracker::get();
4169     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4170     {
4171         sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4172     }
4173     AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4174     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4175     VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4176     vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4177     return vkCreateDeferredOperationKHR_VkResult_return;
4178 }
entry_vkDestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)4179 static void entry_vkDestroyDeferredOperationKHR(
4180     VkDevice device,
4181     VkDeferredOperationKHR operation,
4182     const VkAllocationCallbacks* pAllocator)
4183 {
4184     AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4185     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4186     vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4187 }
dynCheck_entry_vkDestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)4188 static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4189     VkDevice device,
4190     VkDeferredOperationKHR operation,
4191     const VkAllocationCallbacks* pAllocator)
4192 {
4193     auto resources = ResourceTracker::get();
4194     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4195     {
4196         sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4197     }
4198     AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4199     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4200     vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4201 }
entry_vkGetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)4202 static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4203     VkDevice device,
4204     VkDeferredOperationKHR operation)
4205 {
4206     AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4207     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4208     uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4209     vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4210     return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4211 }
dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)4212 static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4213     VkDevice device,
4214     VkDeferredOperationKHR operation)
4215 {
4216     auto resources = ResourceTracker::get();
4217     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4218     {
4219         sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4220     }
4221     AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4222     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4223     uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4224     vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4225     return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4226 }
entry_vkGetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)4227 static VkResult entry_vkGetDeferredOperationResultKHR(
4228     VkDevice device,
4229     VkDeferredOperationKHR operation)
4230 {
4231     AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4232     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4233     VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4234     vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4235     return vkGetDeferredOperationResultKHR_VkResult_return;
4236 }
dynCheck_entry_vkGetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)4237 static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4238     VkDevice device,
4239     VkDeferredOperationKHR operation)
4240 {
4241     auto resources = ResourceTracker::get();
4242     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4243     {
4244         sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4245     }
4246     AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4247     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4248     VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4249     vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4250     return vkGetDeferredOperationResultKHR_VkResult_return;
4251 }
entry_vkDeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)4252 static VkResult entry_vkDeferredOperationJoinKHR(
4253     VkDevice device,
4254     VkDeferredOperationKHR operation)
4255 {
4256     AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4257     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4258     VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4259     vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4260     return vkDeferredOperationJoinKHR_VkResult_return;
4261 }
dynCheck_entry_vkDeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)4262 static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4263     VkDevice device,
4264     VkDeferredOperationKHR operation)
4265 {
4266     auto resources = ResourceTracker::get();
4267     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4268     {
4269         sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4270     }
4271     AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4272     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4273     VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4274     vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4275     return vkDeferredOperationJoinKHR_VkResult_return;
4276 }
4277 #endif
4278 #ifdef VK_KHR_pipeline_executable_properties
entry_vkGetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4279 static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4280     VkDevice device,
4281     const VkPipelineInfoKHR* pPipelineInfo,
4282     uint32_t* pExecutableCount,
4283     VkPipelineExecutablePropertiesKHR* pProperties)
4284 {
4285     AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4286     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4287     VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4288     vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4289     return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4290 }
dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4291 static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4292     VkDevice device,
4293     const VkPipelineInfoKHR* pPipelineInfo,
4294     uint32_t* pExecutableCount,
4295     VkPipelineExecutablePropertiesKHR* pProperties)
4296 {
4297     auto resources = ResourceTracker::get();
4298     if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4299     {
4300         sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4301     }
4302     AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4303     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4304     VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4305     vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4306     return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4307 }
entry_vkGetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4308 static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4309     VkDevice device,
4310     const VkPipelineExecutableInfoKHR* pExecutableInfo,
4311     uint32_t* pStatisticCount,
4312     VkPipelineExecutableStatisticKHR* pStatistics)
4313 {
4314     AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4315     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4316     VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4317     vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4318     return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4319 }
dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4320 static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4321     VkDevice device,
4322     const VkPipelineExecutableInfoKHR* pExecutableInfo,
4323     uint32_t* pStatisticCount,
4324     VkPipelineExecutableStatisticKHR* pStatistics)
4325 {
4326     auto resources = ResourceTracker::get();
4327     if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4328     {
4329         sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4330     }
4331     AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4332     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4333     VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4334     vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4335     return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4336 }
entry_vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4337 static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4338     VkDevice device,
4339     const VkPipelineExecutableInfoKHR* pExecutableInfo,
4340     uint32_t* pInternalRepresentationCount,
4341     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4342 {
4343     AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4344     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4345     VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4346     vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4347     return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4348 }
dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4349 static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4350     VkDevice device,
4351     const VkPipelineExecutableInfoKHR* pExecutableInfo,
4352     uint32_t* pInternalRepresentationCount,
4353     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4354 {
4355     auto resources = ResourceTracker::get();
4356     if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4357     {
4358         sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4359     }
4360     AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4361     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4362     VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4363     vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4364     return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4365 }
4366 #endif
4367 #ifdef VK_KHR_pipeline_library
4368 #endif
4369 #ifdef VK_KHR_shader_non_semantic_info
4370 #endif
4371 #ifdef VK_KHR_copy_commands2
entry_vkCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2KHR * pCopyBufferInfo)4372 static void entry_vkCmdCopyBuffer2KHR(
4373     VkCommandBuffer commandBuffer,
4374     const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4375 {
4376     AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4377     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4378     vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4379 }
entry_vkCmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2KHR * pCopyImageInfo)4380 static void entry_vkCmdCopyImage2KHR(
4381     VkCommandBuffer commandBuffer,
4382     const VkCopyImageInfo2KHR* pCopyImageInfo)
4383 {
4384     AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4385     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4386     vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4387 }
entry_vkCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2KHR * pCopyBufferToImageInfo)4388 static void entry_vkCmdCopyBufferToImage2KHR(
4389     VkCommandBuffer commandBuffer,
4390     const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4391 {
4392     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4393     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4394     vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4395 }
entry_vkCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2KHR * pCopyImageToBufferInfo)4396 static void entry_vkCmdCopyImageToBuffer2KHR(
4397     VkCommandBuffer commandBuffer,
4398     const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4399 {
4400     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4401     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4402     vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4403 }
entry_vkCmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2KHR * pBlitImageInfo)4404 static void entry_vkCmdBlitImage2KHR(
4405     VkCommandBuffer commandBuffer,
4406     const VkBlitImageInfo2KHR* pBlitImageInfo)
4407 {
4408     AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4409     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4410     vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4411 }
entry_vkCmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2KHR * pResolveImageInfo)4412 static void entry_vkCmdResolveImage2KHR(
4413     VkCommandBuffer commandBuffer,
4414     const VkResolveImageInfo2KHR* pResolveImageInfo)
4415 {
4416     AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4417     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4418     vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4419 }
4420 #endif
4421 #ifdef VK_ANDROID_native_buffer
entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)4422 static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4423     VkDevice device,
4424     VkFormat format,
4425     VkImageUsageFlags imageUsage,
4426     int* grallocUsage)
4427 {
4428     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
4429     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4430     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
4431     vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
4432     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4433 }
dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)4434 static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4435     VkDevice device,
4436     VkFormat format,
4437     VkImageUsageFlags imageUsage,
4438     int* grallocUsage)
4439 {
4440     auto resources = ResourceTracker::get();
4441     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4442     {
4443         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4444     }
4445     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
4446     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4447     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
4448     vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
4449     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4450 }
entry_vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)4451 static VkResult entry_vkAcquireImageANDROID(
4452     VkDevice device,
4453     VkImage image,
4454     int nativeFenceFd,
4455     VkSemaphore semaphore,
4456     VkFence fence)
4457 {
4458     AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
4459     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4460     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
4461     vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
4462     return vkAcquireImageANDROID_VkResult_return;
4463 }
dynCheck_entry_vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)4464 static VkResult dynCheck_entry_vkAcquireImageANDROID(
4465     VkDevice device,
4466     VkImage image,
4467     int nativeFenceFd,
4468     VkSemaphore semaphore,
4469     VkFence fence)
4470 {
4471     auto resources = ResourceTracker::get();
4472     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4473     {
4474         sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4475     }
4476     AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
4477     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4478     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
4479     vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
4480     return vkAcquireImageANDROID_VkResult_return;
4481 }
entry_vkQueueSignalReleaseImageANDROID(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int * pNativeFenceFd)4482 static VkResult entry_vkQueueSignalReleaseImageANDROID(
4483     VkQueue queue,
4484     uint32_t waitSemaphoreCount,
4485     const VkSemaphore* pWaitSemaphores,
4486     VkImage image,
4487     int* pNativeFenceFd)
4488 {
4489     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
4490     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4491     VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
4492     vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd, true /* do lock */);
4493     return vkQueueSignalReleaseImageANDROID_VkResult_return;
4494 }
4495 #endif
4496 #ifdef VK_EXT_debug_report
entry_vkCreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugReportCallbackEXT * pCallback)4497 static VkResult entry_vkCreateDebugReportCallbackEXT(
4498     VkInstance instance,
4499     const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4500     const VkAllocationCallbacks* pAllocator,
4501     VkDebugReportCallbackEXT* pCallback)
4502 {
4503     AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
4504     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4505     VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
4506     vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
4507     return vkCreateDebugReportCallbackEXT_VkResult_return;
4508 }
entry_vkDestroyDebugReportCallbackEXT(VkInstance instance,VkDebugReportCallbackEXT callback,const VkAllocationCallbacks * pAllocator)4509 static void entry_vkDestroyDebugReportCallbackEXT(
4510     VkInstance instance,
4511     VkDebugReportCallbackEXT callback,
4512     const VkAllocationCallbacks* pAllocator)
4513 {
4514     AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
4515     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4516     vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
4517 }
entry_vkDebugReportMessageEXT(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const char * pLayerPrefix,const char * pMessage)4518 static void entry_vkDebugReportMessageEXT(
4519     VkInstance instance,
4520     VkDebugReportFlagsEXT flags,
4521     VkDebugReportObjectTypeEXT objectType,
4522     uint64_t object,
4523     size_t location,
4524     int32_t messageCode,
4525     const char* pLayerPrefix,
4526     const char* pMessage)
4527 {
4528     AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
4529     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4530     vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
4531 }
4532 #endif
4533 #ifdef VK_NV_glsl_shader
4534 #endif
4535 #ifdef VK_EXT_depth_range_unrestricted
4536 #endif
4537 #ifdef VK_IMG_filter_cubic
4538 #endif
4539 #ifdef VK_AMD_rasterization_order
4540 #endif
4541 #ifdef VK_AMD_shader_trinary_minmax
4542 #endif
4543 #ifdef VK_AMD_shader_explicit_vertex_parameter
4544 #endif
4545 #ifdef VK_EXT_debug_marker
entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)4546 static VkResult entry_vkDebugMarkerSetObjectTagEXT(
4547     VkDevice device,
4548     const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4549 {
4550     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
4551     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4552     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
4553     vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
4554     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4555 }
dynCheck_entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)4556 static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
4557     VkDevice device,
4558     const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4559 {
4560     auto resources = ResourceTracker::get();
4561     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4562     {
4563         sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
4564     }
4565     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
4566     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4567     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
4568     vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
4569     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4570 }
entry_vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)4571 static VkResult entry_vkDebugMarkerSetObjectNameEXT(
4572     VkDevice device,
4573     const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4574 {
4575     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
4576     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4577     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
4578     vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
4579     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4580 }
dynCheck_entry_vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)4581 static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
4582     VkDevice device,
4583     const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4584 {
4585     auto resources = ResourceTracker::get();
4586     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4587     {
4588         sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
4589     }
4590     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
4591     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4592     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
4593     vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
4594     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4595 }
entry_vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)4596 static void entry_vkCmdDebugMarkerBeginEXT(
4597     VkCommandBuffer commandBuffer,
4598     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4599 {
4600     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
4601     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4602     vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
4603 }
entry_vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)4604 static void entry_vkCmdDebugMarkerEndEXT(
4605     VkCommandBuffer commandBuffer)
4606 {
4607     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
4608     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4609     vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
4610 }
entry_vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)4611 static void entry_vkCmdDebugMarkerInsertEXT(
4612     VkCommandBuffer commandBuffer,
4613     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4614 {
4615     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
4616     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4617     vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
4618 }
4619 #endif
4620 #ifdef VK_AMD_gcn_shader
4621 #endif
4622 #ifdef VK_NV_dedicated_allocation
4623 #endif
4624 #ifdef VK_EXT_transform_feedback
entry_vkCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)4625 static void entry_vkCmdBindTransformFeedbackBuffersEXT(
4626     VkCommandBuffer commandBuffer,
4627     uint32_t firstBinding,
4628     uint32_t bindingCount,
4629     const VkBuffer* pBuffers,
4630     const VkDeviceSize* pOffsets,
4631     const VkDeviceSize* pSizes)
4632 {
4633     AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
4634     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4635     vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
4636 }
entry_vkCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)4637 static void entry_vkCmdBeginTransformFeedbackEXT(
4638     VkCommandBuffer commandBuffer,
4639     uint32_t firstCounterBuffer,
4640     uint32_t counterBufferCount,
4641     const VkBuffer* pCounterBuffers,
4642     const VkDeviceSize* pCounterBufferOffsets)
4643 {
4644     AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
4645     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4646     vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4647 }
entry_vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)4648 static void entry_vkCmdEndTransformFeedbackEXT(
4649     VkCommandBuffer commandBuffer,
4650     uint32_t firstCounterBuffer,
4651     uint32_t counterBufferCount,
4652     const VkBuffer* pCounterBuffers,
4653     const VkDeviceSize* pCounterBufferOffsets)
4654 {
4655     AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
4656     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4657     vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4658 }
entry_vkCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)4659 static void entry_vkCmdBeginQueryIndexedEXT(
4660     VkCommandBuffer commandBuffer,
4661     VkQueryPool queryPool,
4662     uint32_t query,
4663     VkQueryControlFlags flags,
4664     uint32_t index)
4665 {
4666     AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
4667     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4668     vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
4669 }
entry_vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)4670 static void entry_vkCmdEndQueryIndexedEXT(
4671     VkCommandBuffer commandBuffer,
4672     VkQueryPool queryPool,
4673     uint32_t query,
4674     uint32_t index)
4675 {
4676     AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
4677     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4678     vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
4679 }
entry_vkCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)4680 static void entry_vkCmdDrawIndirectByteCountEXT(
4681     VkCommandBuffer commandBuffer,
4682     uint32_t instanceCount,
4683     uint32_t firstInstance,
4684     VkBuffer counterBuffer,
4685     VkDeviceSize counterBufferOffset,
4686     uint32_t counterOffset,
4687     uint32_t vertexStride)
4688 {
4689     AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
4690     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4691     vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
4692 }
4693 #endif
4694 #ifdef VK_NVX_image_view_handle
entry_vkGetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)4695 static uint32_t entry_vkGetImageViewHandleNVX(
4696     VkDevice device,
4697     const VkImageViewHandleInfoNVX* pInfo)
4698 {
4699     AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4700     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4701     uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4702     vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4703     return vkGetImageViewHandleNVX_uint32_t_return;
4704 }
dynCheck_entry_vkGetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)4705 static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
4706     VkDevice device,
4707     const VkImageViewHandleInfoNVX* pInfo)
4708 {
4709     auto resources = ResourceTracker::get();
4710     if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4711     {
4712         sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
4713     }
4714     AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4715     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4716     uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4717     vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4718     return vkGetImageViewHandleNVX_uint32_t_return;
4719 }
entry_vkGetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)4720 static VkResult entry_vkGetImageViewAddressNVX(
4721     VkDevice device,
4722     VkImageView imageView,
4723     VkImageViewAddressPropertiesNVX* pProperties)
4724 {
4725     AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4726     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4727     VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4728     vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4729     return vkGetImageViewAddressNVX_VkResult_return;
4730 }
dynCheck_entry_vkGetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)4731 static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
4732     VkDevice device,
4733     VkImageView imageView,
4734     VkImageViewAddressPropertiesNVX* pProperties)
4735 {
4736     auto resources = ResourceTracker::get();
4737     if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4738     {
4739         sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
4740     }
4741     AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4742     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4743     VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4744     vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4745     return vkGetImageViewAddressNVX_VkResult_return;
4746 }
4747 #endif
4748 #ifdef VK_AMD_draw_indirect_count
entry_vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4749 static void entry_vkCmdDrawIndirectCountAMD(
4750     VkCommandBuffer commandBuffer,
4751     VkBuffer buffer,
4752     VkDeviceSize offset,
4753     VkBuffer countBuffer,
4754     VkDeviceSize countBufferOffset,
4755     uint32_t maxDrawCount,
4756     uint32_t stride)
4757 {
4758     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
4759     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4760     vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
4761 }
entry_vkCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4762 static void entry_vkCmdDrawIndexedIndirectCountAMD(
4763     VkCommandBuffer commandBuffer,
4764     VkBuffer buffer,
4765     VkDeviceSize offset,
4766     VkBuffer countBuffer,
4767     VkDeviceSize countBufferOffset,
4768     uint32_t maxDrawCount,
4769     uint32_t stride)
4770 {
4771     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
4772     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4773     vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
4774 }
4775 #endif
4776 #ifdef VK_AMD_negative_viewport_height
4777 #endif
4778 #ifdef VK_AMD_gpu_shader_half_float
4779 #endif
4780 #ifdef VK_AMD_shader_ballot
4781 #endif
4782 #ifdef VK_AMD_texture_gather_bias_lod
4783 #endif
4784 #ifdef VK_AMD_shader_info
entry_vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)4785 static VkResult entry_vkGetShaderInfoAMD(
4786     VkDevice device,
4787     VkPipeline pipeline,
4788     VkShaderStageFlagBits shaderStage,
4789     VkShaderInfoTypeAMD infoType,
4790     size_t* pInfoSize,
4791     void* pInfo)
4792 {
4793     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
4794     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4795     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
4796     vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
4797     return vkGetShaderInfoAMD_VkResult_return;
4798 }
dynCheck_entry_vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)4799 static VkResult dynCheck_entry_vkGetShaderInfoAMD(
4800     VkDevice device,
4801     VkPipeline pipeline,
4802     VkShaderStageFlagBits shaderStage,
4803     VkShaderInfoTypeAMD infoType,
4804     size_t* pInfoSize,
4805     void* pInfo)
4806 {
4807     auto resources = ResourceTracker::get();
4808     if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
4809     {
4810         sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
4811     }
4812     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
4813     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4814     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
4815     vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
4816     return vkGetShaderInfoAMD_VkResult_return;
4817 }
4818 #endif
4819 #ifdef VK_AMD_shader_image_load_store_lod
4820 #endif
4821 #ifdef VK_GGP_stream_descriptor_surface
entry_vkCreateStreamDescriptorSurfaceGGP(VkInstance instance,const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)4822 static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
4823     VkInstance instance,
4824     const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4825     const VkAllocationCallbacks* pAllocator,
4826     VkSurfaceKHR* pSurface)
4827 {
4828     AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
4829     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4830     VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
4831     vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4832     return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
4833 }
4834 #endif
4835 #ifdef VK_NV_corner_sampled_image
4836 #endif
4837 #ifdef VK_IMG_format_pvrtc
4838 #endif
4839 #ifdef VK_NV_external_memory_capabilities
entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkExternalMemoryHandleTypeFlagsNV externalHandleType,VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties)4840 static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4841     VkPhysicalDevice physicalDevice,
4842     VkFormat format,
4843     VkImageType type,
4844     VkImageTiling tiling,
4845     VkImageUsageFlags usage,
4846     VkImageCreateFlags flags,
4847     VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4848     VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4849 {
4850     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
4851     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4852     VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
4853     vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
4854     return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
4855 }
4856 #endif
4857 #ifdef VK_NV_external_memory
4858 #endif
4859 #ifdef VK_NV_external_memory_win32
entry_vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)4860 static VkResult entry_vkGetMemoryWin32HandleNV(
4861     VkDevice device,
4862     VkDeviceMemory memory,
4863     VkExternalMemoryHandleTypeFlagsNV handleType,
4864     HANDLE* pHandle)
4865 {
4866     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4867     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4868     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4869     vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
4870     return vkGetMemoryWin32HandleNV_VkResult_return;
4871 }
dynCheck_entry_vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)4872 static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4873     VkDevice device,
4874     VkDeviceMemory memory,
4875     VkExternalMemoryHandleTypeFlagsNV handleType,
4876     HANDLE* pHandle)
4877 {
4878     auto resources = ResourceTracker::get();
4879     if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4880     {
4881         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4882     }
4883     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4884     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4885     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4886     vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
4887     return vkGetMemoryWin32HandleNV_VkResult_return;
4888 }
4889 #endif
4890 #ifdef VK_NV_win32_keyed_mutex
4891 #endif
4892 #ifdef VK_EXT_validation_flags
4893 #endif
4894 #ifdef VK_NN_vi_surface
entry_vkCreateViSurfaceNN(VkInstance instance,const VkViSurfaceCreateInfoNN * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)4895 static VkResult entry_vkCreateViSurfaceNN(
4896     VkInstance instance,
4897     const VkViSurfaceCreateInfoNN* pCreateInfo,
4898     const VkAllocationCallbacks* pAllocator,
4899     VkSurfaceKHR* pSurface)
4900 {
4901     AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
4902     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4903     VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4904     vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4905     return vkCreateViSurfaceNN_VkResult_return;
4906 }
4907 #endif
4908 #ifdef VK_EXT_shader_subgroup_ballot
4909 #endif
4910 #ifdef VK_EXT_shader_subgroup_vote
4911 #endif
4912 #ifdef VK_EXT_texture_compression_astc_hdr
4913 #endif
4914 #ifdef VK_EXT_astc_decode_mode
4915 #endif
4916 #ifdef VK_EXT_conditional_rendering
entry_vkCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)4917 static void entry_vkCmdBeginConditionalRenderingEXT(
4918     VkCommandBuffer commandBuffer,
4919     const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4920 {
4921     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
4922     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4923     vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
4924 }
entry_vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)4925 static void entry_vkCmdEndConditionalRenderingEXT(
4926     VkCommandBuffer commandBuffer)
4927 {
4928     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
4929     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4930     vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
4931 }
4932 #endif
4933 #ifdef VK_NV_clip_space_w_scaling
entry_vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)4934 static void entry_vkCmdSetViewportWScalingNV(
4935     VkCommandBuffer commandBuffer,
4936     uint32_t firstViewport,
4937     uint32_t viewportCount,
4938     const VkViewportWScalingNV* pViewportWScalings)
4939 {
4940     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
4941     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4942     vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
4943 }
4944 #endif
4945 #ifdef VK_EXT_direct_mode_display
entry_vkReleaseDisplayEXT(VkPhysicalDevice physicalDevice,VkDisplayKHR display)4946 static VkResult entry_vkReleaseDisplayEXT(
4947     VkPhysicalDevice physicalDevice,
4948     VkDisplayKHR display)
4949 {
4950     AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
4951     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4952     VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4953     vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
4954     return vkReleaseDisplayEXT_VkResult_return;
4955 }
4956 #endif
4957 #ifdef VK_EXT_acquire_xlib_display
entry_vkAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,VkDisplayKHR display)4958 static VkResult entry_vkAcquireXlibDisplayEXT(
4959     VkPhysicalDevice physicalDevice,
4960     Display* dpy,
4961     VkDisplayKHR display)
4962 {
4963     AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
4964     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4965     VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4966     vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
4967     return vkAcquireXlibDisplayEXT_VkResult_return;
4968 }
entry_vkGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,RROutput rrOutput,VkDisplayKHR * pDisplay)4969 static VkResult entry_vkGetRandROutputDisplayEXT(
4970     VkPhysicalDevice physicalDevice,
4971     Display* dpy,
4972     RROutput rrOutput,
4973     VkDisplayKHR* pDisplay)
4974 {
4975     AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
4976     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4977     VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4978     vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
4979     return vkGetRandROutputDisplayEXT_VkResult_return;
4980 }
4981 #endif
4982 #ifdef VK_EXT_display_surface_counter
entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilities2EXT * pSurfaceCapabilities)4983 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4984     VkPhysicalDevice physicalDevice,
4985     VkSurfaceKHR surface,
4986     VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4987 {
4988     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
4989     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4990     VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4991     vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
4992     return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4993 }
4994 #endif
4995 #ifdef VK_EXT_display_control
entry_vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)4996 static VkResult entry_vkDisplayPowerControlEXT(
4997     VkDevice device,
4998     VkDisplayKHR display,
4999     const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5000 {
5001     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
5002     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5003     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
5004     vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
5005     return vkDisplayPowerControlEXT_VkResult_return;
5006 }
dynCheck_entry_vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)5007 static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5008     VkDevice device,
5009     VkDisplayKHR display,
5010     const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5011 {
5012     auto resources = ResourceTracker::get();
5013     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5014     {
5015         sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5016     }
5017     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
5018     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5019     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
5020     vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
5021     return vkDisplayPowerControlEXT_VkResult_return;
5022 }
entry_vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5023 static VkResult entry_vkRegisterDeviceEventEXT(
5024     VkDevice device,
5025     const VkDeviceEventInfoEXT* pDeviceEventInfo,
5026     const VkAllocationCallbacks* pAllocator,
5027     VkFence* pFence)
5028 {
5029     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
5030     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5031     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
5032     vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
5033     return vkRegisterDeviceEventEXT_VkResult_return;
5034 }
dynCheck_entry_vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5035 static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5036     VkDevice device,
5037     const VkDeviceEventInfoEXT* pDeviceEventInfo,
5038     const VkAllocationCallbacks* pAllocator,
5039     VkFence* pFence)
5040 {
5041     auto resources = ResourceTracker::get();
5042     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5043     {
5044         sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5045     }
5046     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
5047     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5048     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
5049     vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
5050     return vkRegisterDeviceEventEXT_VkResult_return;
5051 }
entry_vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5052 static VkResult entry_vkRegisterDisplayEventEXT(
5053     VkDevice device,
5054     VkDisplayKHR display,
5055     const VkDisplayEventInfoEXT* pDisplayEventInfo,
5056     const VkAllocationCallbacks* pAllocator,
5057     VkFence* pFence)
5058 {
5059     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
5060     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5061     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
5062     vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
5063     return vkRegisterDisplayEventEXT_VkResult_return;
5064 }
dynCheck_entry_vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5065 static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5066     VkDevice device,
5067     VkDisplayKHR display,
5068     const VkDisplayEventInfoEXT* pDisplayEventInfo,
5069     const VkAllocationCallbacks* pAllocator,
5070     VkFence* pFence)
5071 {
5072     auto resources = ResourceTracker::get();
5073     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5074     {
5075         sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5076     }
5077     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
5078     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5079     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
5080     vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
5081     return vkRegisterDisplayEventEXT_VkResult_return;
5082 }
entry_vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5083 static VkResult entry_vkGetSwapchainCounterEXT(
5084     VkDevice device,
5085     VkSwapchainKHR swapchain,
5086     VkSurfaceCounterFlagBitsEXT counter,
5087     uint64_t* pCounterValue)
5088 {
5089     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
5090     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5091     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
5092     vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
5093     return vkGetSwapchainCounterEXT_VkResult_return;
5094 }
dynCheck_entry_vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5095 static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5096     VkDevice device,
5097     VkSwapchainKHR swapchain,
5098     VkSurfaceCounterFlagBitsEXT counter,
5099     uint64_t* pCounterValue)
5100 {
5101     auto resources = ResourceTracker::get();
5102     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5103     {
5104         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5105     }
5106     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
5107     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5108     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
5109     vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
5110     return vkGetSwapchainCounterEXT_VkResult_return;
5111 }
5112 #endif
5113 #ifdef VK_GOOGLE_display_timing
entry_vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5114 static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5115     VkDevice device,
5116     VkSwapchainKHR swapchain,
5117     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5118 {
5119     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
5120     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5121     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
5122     vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
5123     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5124 }
dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5125 static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5126     VkDevice device,
5127     VkSwapchainKHR swapchain,
5128     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5129 {
5130     auto resources = ResourceTracker::get();
5131     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5132     {
5133         sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5134     }
5135     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
5136     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5137     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
5138     vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
5139     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5140 }
entry_vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5141 static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5142     VkDevice device,
5143     VkSwapchainKHR swapchain,
5144     uint32_t* pPresentationTimingCount,
5145     VkPastPresentationTimingGOOGLE* pPresentationTimings)
5146 {
5147     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
5148     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5149     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
5150     vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
5151     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5152 }
dynCheck_entry_vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5153 static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5154     VkDevice device,
5155     VkSwapchainKHR swapchain,
5156     uint32_t* pPresentationTimingCount,
5157     VkPastPresentationTimingGOOGLE* pPresentationTimings)
5158 {
5159     auto resources = ResourceTracker::get();
5160     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5161     {
5162         sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5163     }
5164     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
5165     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5166     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
5167     vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
5168     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5169 }
5170 #endif
5171 #ifdef VK_NV_sample_mask_override_coverage
5172 #endif
5173 #ifdef VK_NV_geometry_shader_passthrough
5174 #endif
5175 #ifdef VK_NV_viewport_array2
5176 #endif
5177 #ifdef VK_NVX_multiview_per_view_attributes
5178 #endif
5179 #ifdef VK_NV_viewport_swizzle
5180 #endif
5181 #ifdef VK_EXT_discard_rectangles
entry_vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)5182 static void entry_vkCmdSetDiscardRectangleEXT(
5183     VkCommandBuffer commandBuffer,
5184     uint32_t firstDiscardRectangle,
5185     uint32_t discardRectangleCount,
5186     const VkRect2D* pDiscardRectangles)
5187 {
5188     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
5189     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5190     vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
5191 }
5192 #endif
5193 #ifdef VK_EXT_conservative_rasterization
5194 #endif
5195 #ifdef VK_EXT_depth_clip_enable
5196 #endif
5197 #ifdef VK_EXT_swapchain_colorspace
5198 #endif
5199 #ifdef VK_EXT_hdr_metadata
entry_vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5200 static void entry_vkSetHdrMetadataEXT(
5201     VkDevice device,
5202     uint32_t swapchainCount,
5203     const VkSwapchainKHR* pSwapchains,
5204     const VkHdrMetadataEXT* pMetadata)
5205 {
5206     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
5207     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5208     vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
5209 }
dynCheck_entry_vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5210 static void dynCheck_entry_vkSetHdrMetadataEXT(
5211     VkDevice device,
5212     uint32_t swapchainCount,
5213     const VkSwapchainKHR* pSwapchains,
5214     const VkHdrMetadataEXT* pMetadata)
5215 {
5216     auto resources = ResourceTracker::get();
5217     if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5218     {
5219         sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5220     }
5221     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
5222     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5223     vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
5224 }
5225 #endif
5226 #ifdef VK_MVK_ios_surface
entry_vkCreateIOSSurfaceMVK(VkInstance instance,const VkIOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5227 static VkResult entry_vkCreateIOSSurfaceMVK(
5228     VkInstance instance,
5229     const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5230     const VkAllocationCallbacks* pAllocator,
5231     VkSurfaceKHR* pSurface)
5232 {
5233     AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
5234     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5235     VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
5236     vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5237     return vkCreateIOSSurfaceMVK_VkResult_return;
5238 }
5239 #endif
5240 #ifdef VK_MVK_macos_surface
entry_vkCreateMacOSSurfaceMVK(VkInstance instance,const VkMacOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5241 static VkResult entry_vkCreateMacOSSurfaceMVK(
5242     VkInstance instance,
5243     const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5244     const VkAllocationCallbacks* pAllocator,
5245     VkSurfaceKHR* pSurface)
5246 {
5247     AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
5248     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5249     VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
5250     vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5251     return vkCreateMacOSSurfaceMVK_VkResult_return;
5252 }
5253 #endif
5254 #ifdef VK_MVK_moltenvk
entry_vkGetMTLDeviceMVK(VkPhysicalDevice physicalDevice,void ** pMTLDevice)5255 static void entry_vkGetMTLDeviceMVK(
5256     VkPhysicalDevice physicalDevice,
5257     void** pMTLDevice)
5258 {
5259     AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5260     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5261     vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5262 }
entry_vkSetMTLTextureMVK(VkImage image,void * mtlTexture)5263 static VkResult entry_vkSetMTLTextureMVK(
5264     VkImage image,
5265     void* mtlTexture)
5266 {
5267     AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5268     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5269     VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5270     vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5271     return vkSetMTLTextureMVK_VkResult_return;
5272 }
entry_vkGetMTLTextureMVK(VkImage image,void ** pMTLTexture)5273 static void entry_vkGetMTLTextureMVK(
5274     VkImage image,
5275     void** pMTLTexture)
5276 {
5277     AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5278     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5279     vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5280 }
entry_vkGetMTLBufferMVK(VkBuffer buffer,void ** pMTLBuffer)5281 static void entry_vkGetMTLBufferMVK(
5282     VkBuffer buffer,
5283     void** pMTLBuffer)
5284 {
5285     AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5286     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5287     vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5288 }
entry_vkUseIOSurfaceMVK(VkImage image,void * ioSurface)5289 static VkResult entry_vkUseIOSurfaceMVK(
5290     VkImage image,
5291     void* ioSurface)
5292 {
5293     AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5294     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5295     VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5296     vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5297     return vkUseIOSurfaceMVK_VkResult_return;
5298 }
entry_vkGetIOSurfaceMVK(VkImage image,void ** pIOSurface)5299 static void entry_vkGetIOSurfaceMVK(
5300     VkImage image,
5301     void** pIOSurface)
5302 {
5303     AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5304     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5305     vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5306 }
5307 #endif
5308 #ifdef VK_EXT_external_memory_dma_buf
5309 #endif
5310 #ifdef VK_EXT_queue_family_foreign
5311 #endif
5312 #ifdef VK_EXT_debug_utils
entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)5313 static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5314     VkDevice device,
5315     const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5316 {
5317     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
5318     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5319     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
5320     vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
5321     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5322 }
dynCheck_entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)5323 static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5324     VkDevice device,
5325     const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5326 {
5327     auto resources = ResourceTracker::get();
5328     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5329     {
5330         sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5331     }
5332     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
5333     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5334     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
5335     vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
5336     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5337 }
entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)5338 static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5339     VkDevice device,
5340     const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5341 {
5342     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
5343     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5344     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
5345     vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
5346     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5347 }
dynCheck_entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)5348 static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5349     VkDevice device,
5350     const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5351 {
5352     auto resources = ResourceTracker::get();
5353     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5354     {
5355         sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5356     }
5357     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
5358     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5359     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
5360     vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
5361     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5362 }
entry_vkQueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5363 static void entry_vkQueueBeginDebugUtilsLabelEXT(
5364     VkQueue queue,
5365     const VkDebugUtilsLabelEXT* pLabelInfo)
5366 {
5367     AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
5368     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
5369     vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
5370 }
entry_vkQueueEndDebugUtilsLabelEXT(VkQueue queue)5371 static void entry_vkQueueEndDebugUtilsLabelEXT(
5372     VkQueue queue)
5373 {
5374     AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
5375     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
5376     vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
5377 }
entry_vkQueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5378 static void entry_vkQueueInsertDebugUtilsLabelEXT(
5379     VkQueue queue,
5380     const VkDebugUtilsLabelEXT* pLabelInfo)
5381 {
5382     AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
5383     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
5384     vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
5385 }
entry_vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5386 static void entry_vkCmdBeginDebugUtilsLabelEXT(
5387     VkCommandBuffer commandBuffer,
5388     const VkDebugUtilsLabelEXT* pLabelInfo)
5389 {
5390     AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
5391     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5392     vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
5393 }
entry_vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)5394 static void entry_vkCmdEndDebugUtilsLabelEXT(
5395     VkCommandBuffer commandBuffer)
5396 {
5397     AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
5398     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5399     vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
5400 }
entry_vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5401 static void entry_vkCmdInsertDebugUtilsLabelEXT(
5402     VkCommandBuffer commandBuffer,
5403     const VkDebugUtilsLabelEXT* pLabelInfo)
5404 {
5405     AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
5406     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5407     vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
5408 }
entry_vkCreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugUtilsMessengerEXT * pMessenger)5409 static VkResult entry_vkCreateDebugUtilsMessengerEXT(
5410     VkInstance instance,
5411     const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5412     const VkAllocationCallbacks* pAllocator,
5413     VkDebugUtilsMessengerEXT* pMessenger)
5414 {
5415     AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
5416     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5417     VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
5418     vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
5419     return vkCreateDebugUtilsMessengerEXT_VkResult_return;
5420 }
entry_vkDestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT messenger,const VkAllocationCallbacks * pAllocator)5421 static void entry_vkDestroyDebugUtilsMessengerEXT(
5422     VkInstance instance,
5423     VkDebugUtilsMessengerEXT messenger,
5424     const VkAllocationCallbacks* pAllocator)
5425 {
5426     AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
5427     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5428     vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
5429 }
entry_vkSubmitDebugUtilsMessageEXT(VkInstance instance,VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)5430 static void entry_vkSubmitDebugUtilsMessageEXT(
5431     VkInstance instance,
5432     VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5433     VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5434     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5435 {
5436     AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
5437     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5438     vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
5439 }
5440 #endif
5441 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
entry_vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)5442 static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5443     VkDevice device,
5444     const AHardwareBuffer* buffer,
5445     VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5446 {
5447     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
5448     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5449     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5450     auto resources = ResourceTracker::get();
5451     vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5452     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5453 }
dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)5454 static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5455     VkDevice device,
5456     const AHardwareBuffer* buffer,
5457     VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5458 {
5459     auto resources = ResourceTracker::get();
5460     if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5461     {
5462         sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5463     }
5464     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
5465     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5466     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5467     vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5468     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5469 }
entry_vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)5470 static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
5471     VkDevice device,
5472     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5473     AHardwareBuffer** pBuffer)
5474 {
5475     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
5476     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5477     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5478     auto resources = ResourceTracker::get();
5479     vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5480     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5481 }
dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)5482 static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
5483     VkDevice device,
5484     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5485     AHardwareBuffer** pBuffer)
5486 {
5487     auto resources = ResourceTracker::get();
5488     if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5489     {
5490         sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5491     }
5492     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
5493     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5494     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5495     vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5496     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5497 }
5498 #endif
5499 #ifdef VK_EXT_sampler_filter_minmax
5500 #endif
5501 #ifdef VK_AMD_gpu_shader_int16
5502 #endif
5503 #ifdef VK_AMD_mixed_attachment_samples
5504 #endif
5505 #ifdef VK_AMD_shader_fragment_mask
5506 #endif
5507 #ifdef VK_EXT_inline_uniform_block
5508 #endif
5509 #ifdef VK_EXT_shader_stencil_export
5510 #endif
5511 #ifdef VK_EXT_sample_locations
entry_vkCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)5512 static void entry_vkCmdSetSampleLocationsEXT(
5513     VkCommandBuffer commandBuffer,
5514     const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5515 {
5516     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
5517     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5518     vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
5519 }
entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)5520 static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
5521     VkPhysicalDevice physicalDevice,
5522     VkSampleCountFlagBits samples,
5523     VkMultisamplePropertiesEXT* pMultisampleProperties)
5524 {
5525     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
5526     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5527     vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
5528 }
5529 #endif
5530 #ifdef VK_EXT_blend_operation_advanced
5531 #endif
5532 #ifdef VK_NV_fragment_coverage_to_color
5533 #endif
5534 #ifdef VK_NV_framebuffer_mixed_samples
5535 #endif
5536 #ifdef VK_NV_fill_rectangle
5537 #endif
5538 #ifdef VK_NV_shader_sm_builtins
5539 #endif
5540 #ifdef VK_EXT_post_depth_coverage
5541 #endif
5542 #ifdef VK_EXT_image_drm_format_modifier
entry_vkGetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)5543 static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
5544     VkDevice device,
5545     VkImage image,
5546     VkImageDrmFormatModifierPropertiesEXT* pProperties)
5547 {
5548     AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5549     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5550     VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5551     vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5552     return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5553 }
dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)5554 static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
5555     VkDevice device,
5556     VkImage image,
5557     VkImageDrmFormatModifierPropertiesEXT* pProperties)
5558 {
5559     auto resources = ResourceTracker::get();
5560     if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
5561     {
5562         sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
5563     }
5564     AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5565     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5566     VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5567     vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5568     return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5569 }
5570 #endif
5571 #ifdef VK_EXT_validation_cache
entry_vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)5572 static VkResult entry_vkCreateValidationCacheEXT(
5573     VkDevice device,
5574     const VkValidationCacheCreateInfoEXT* pCreateInfo,
5575     const VkAllocationCallbacks* pAllocator,
5576     VkValidationCacheEXT* pValidationCache)
5577 {
5578     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
5579     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5580     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
5581     vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
5582     return vkCreateValidationCacheEXT_VkResult_return;
5583 }
dynCheck_entry_vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)5584 static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
5585     VkDevice device,
5586     const VkValidationCacheCreateInfoEXT* pCreateInfo,
5587     const VkAllocationCallbacks* pAllocator,
5588     VkValidationCacheEXT* pValidationCache)
5589 {
5590     auto resources = ResourceTracker::get();
5591     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5592     {
5593         sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
5594     }
5595     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
5596     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5597     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
5598     vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
5599     return vkCreateValidationCacheEXT_VkResult_return;
5600 }
entry_vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)5601 static void entry_vkDestroyValidationCacheEXT(
5602     VkDevice device,
5603     VkValidationCacheEXT validationCache,
5604     const VkAllocationCallbacks* pAllocator)
5605 {
5606     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
5607     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5608     vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
5609 }
dynCheck_entry_vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)5610 static void dynCheck_entry_vkDestroyValidationCacheEXT(
5611     VkDevice device,
5612     VkValidationCacheEXT validationCache,
5613     const VkAllocationCallbacks* pAllocator)
5614 {
5615     auto resources = ResourceTracker::get();
5616     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5617     {
5618         sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
5619     }
5620     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
5621     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5622     vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
5623 }
entry_vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)5624 static VkResult entry_vkMergeValidationCachesEXT(
5625     VkDevice device,
5626     VkValidationCacheEXT dstCache,
5627     uint32_t srcCacheCount,
5628     const VkValidationCacheEXT* pSrcCaches)
5629 {
5630     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
5631     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5632     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
5633     vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
5634     return vkMergeValidationCachesEXT_VkResult_return;
5635 }
dynCheck_entry_vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)5636 static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
5637     VkDevice device,
5638     VkValidationCacheEXT dstCache,
5639     uint32_t srcCacheCount,
5640     const VkValidationCacheEXT* pSrcCaches)
5641 {
5642     auto resources = ResourceTracker::get();
5643     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5644     {
5645         sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
5646     }
5647     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
5648     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5649     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
5650     vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
5651     return vkMergeValidationCachesEXT_VkResult_return;
5652 }
entry_vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)5653 static VkResult entry_vkGetValidationCacheDataEXT(
5654     VkDevice device,
5655     VkValidationCacheEXT validationCache,
5656     size_t* pDataSize,
5657     void* pData)
5658 {
5659     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
5660     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5661     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
5662     vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
5663     return vkGetValidationCacheDataEXT_VkResult_return;
5664 }
dynCheck_entry_vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)5665 static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
5666     VkDevice device,
5667     VkValidationCacheEXT validationCache,
5668     size_t* pDataSize,
5669     void* pData)
5670 {
5671     auto resources = ResourceTracker::get();
5672     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5673     {
5674         sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
5675     }
5676     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
5677     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5678     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
5679     vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
5680     return vkGetValidationCacheDataEXT_VkResult_return;
5681 }
5682 #endif
5683 #ifdef VK_EXT_descriptor_indexing
5684 #endif
5685 #ifdef VK_EXT_shader_viewport_index_layer
5686 #endif
5687 #ifdef VK_NV_shading_rate_image
entry_vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)5688 static void entry_vkCmdBindShadingRateImageNV(
5689     VkCommandBuffer commandBuffer,
5690     VkImageView imageView,
5691     VkImageLayout imageLayout)
5692 {
5693     AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
5694     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5695     vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
5696 }
entry_vkCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)5697 static void entry_vkCmdSetViewportShadingRatePaletteNV(
5698     VkCommandBuffer commandBuffer,
5699     uint32_t firstViewport,
5700     uint32_t viewportCount,
5701     const VkShadingRatePaletteNV* pShadingRatePalettes)
5702 {
5703     AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
5704     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5705     vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
5706 }
entry_vkCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)5707 static void entry_vkCmdSetCoarseSampleOrderNV(
5708     VkCommandBuffer commandBuffer,
5709     VkCoarseSampleOrderTypeNV sampleOrderType,
5710     uint32_t customSampleOrderCount,
5711     const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
5712 {
5713     AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
5714     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5715     vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
5716 }
5717 #endif
5718 #ifdef VK_NV_ray_tracing
entry_vkCreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)5719 static VkResult entry_vkCreateAccelerationStructureNV(
5720     VkDevice device,
5721     const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5722     const VkAllocationCallbacks* pAllocator,
5723     VkAccelerationStructureNV* pAccelerationStructure)
5724 {
5725     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5726     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5727     VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5728     vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5729     return vkCreateAccelerationStructureNV_VkResult_return;
5730 }
dynCheck_entry_vkCreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)5731 static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
5732     VkDevice device,
5733     const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5734     const VkAllocationCallbacks* pAllocator,
5735     VkAccelerationStructureNV* pAccelerationStructure)
5736 {
5737     auto resources = ResourceTracker::get();
5738     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5739     {
5740         sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
5741     }
5742     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5743     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5744     VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5745     vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5746     return vkCreateAccelerationStructureNV_VkResult_return;
5747 }
entry_vkDestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)5748 static void entry_vkDestroyAccelerationStructureNV(
5749     VkDevice device,
5750     VkAccelerationStructureNV accelerationStructure,
5751     const VkAllocationCallbacks* pAllocator)
5752 {
5753     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5754     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5755     vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5756 }
dynCheck_entry_vkDestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)5757 static void dynCheck_entry_vkDestroyAccelerationStructureNV(
5758     VkDevice device,
5759     VkAccelerationStructureNV accelerationStructure,
5760     const VkAllocationCallbacks* pAllocator)
5761 {
5762     auto resources = ResourceTracker::get();
5763     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5764     {
5765         sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
5766     }
5767     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5768     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5769     vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5770 }
entry_vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)5771 static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
5772     VkDevice device,
5773     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5774     VkMemoryRequirements2KHR* pMemoryRequirements)
5775 {
5776     AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5777     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5778     vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5779 }
dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)5780 static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
5781     VkDevice device,
5782     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5783     VkMemoryRequirements2KHR* pMemoryRequirements)
5784 {
5785     auto resources = ResourceTracker::get();
5786     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5787     {
5788         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
5789     }
5790     AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5791     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5792     vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5793 }
entry_vkBindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)5794 static VkResult entry_vkBindAccelerationStructureMemoryNV(
5795     VkDevice device,
5796     uint32_t bindInfoCount,
5797     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5798 {
5799     AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5800     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5801     VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5802     vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5803     return vkBindAccelerationStructureMemoryNV_VkResult_return;
5804 }
dynCheck_entry_vkBindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)5805 static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
5806     VkDevice device,
5807     uint32_t bindInfoCount,
5808     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5809 {
5810     auto resources = ResourceTracker::get();
5811     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5812     {
5813         sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
5814     }
5815     AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5816     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5817     VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5818     vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5819     return vkBindAccelerationStructureMemoryNV_VkResult_return;
5820 }
entry_vkCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)5821 static void entry_vkCmdBuildAccelerationStructureNV(
5822     VkCommandBuffer commandBuffer,
5823     const VkAccelerationStructureInfoNV* pInfo,
5824     VkBuffer instanceData,
5825     VkDeviceSize instanceOffset,
5826     VkBool32 update,
5827     VkAccelerationStructureNV dst,
5828     VkAccelerationStructureNV src,
5829     VkBuffer scratch,
5830     VkDeviceSize scratchOffset)
5831 {
5832     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
5833     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5834     vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
5835 }
entry_vkCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeKHR mode)5836 static void entry_vkCmdCopyAccelerationStructureNV(
5837     VkCommandBuffer commandBuffer,
5838     VkAccelerationStructureNV dst,
5839     VkAccelerationStructureNV src,
5840     VkCopyAccelerationStructureModeKHR mode)
5841 {
5842     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
5843     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5844     vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
5845 }
entry_vkCmdTraceRaysNV(VkCommandBuffer commandBuffer,VkBuffer raygenShaderBindingTableBuffer,VkDeviceSize raygenShaderBindingOffset,VkBuffer missShaderBindingTableBuffer,VkDeviceSize missShaderBindingOffset,VkDeviceSize missShaderBindingStride,VkBuffer hitShaderBindingTableBuffer,VkDeviceSize hitShaderBindingOffset,VkDeviceSize hitShaderBindingStride,VkBuffer callableShaderBindingTableBuffer,VkDeviceSize callableShaderBindingOffset,VkDeviceSize callableShaderBindingStride,uint32_t width,uint32_t height,uint32_t depth)5846 static void entry_vkCmdTraceRaysNV(
5847     VkCommandBuffer commandBuffer,
5848     VkBuffer raygenShaderBindingTableBuffer,
5849     VkDeviceSize raygenShaderBindingOffset,
5850     VkBuffer missShaderBindingTableBuffer,
5851     VkDeviceSize missShaderBindingOffset,
5852     VkDeviceSize missShaderBindingStride,
5853     VkBuffer hitShaderBindingTableBuffer,
5854     VkDeviceSize hitShaderBindingOffset,
5855     VkDeviceSize hitShaderBindingStride,
5856     VkBuffer callableShaderBindingTableBuffer,
5857     VkDeviceSize callableShaderBindingOffset,
5858     VkDeviceSize callableShaderBindingStride,
5859     uint32_t width,
5860     uint32_t height,
5861     uint32_t depth)
5862 {
5863     AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
5864     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5865     vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
5866 }
entry_vkCreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)5867 static VkResult entry_vkCreateRayTracingPipelinesNV(
5868     VkDevice device,
5869     VkPipelineCache pipelineCache,
5870     uint32_t createInfoCount,
5871     const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5872     const VkAllocationCallbacks* pAllocator,
5873     VkPipeline* pPipelines)
5874 {
5875     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5876     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5877     VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5878     vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5879     return vkCreateRayTracingPipelinesNV_VkResult_return;
5880 }
dynCheck_entry_vkCreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)5881 static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
5882     VkDevice device,
5883     VkPipelineCache pipelineCache,
5884     uint32_t createInfoCount,
5885     const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5886     const VkAllocationCallbacks* pAllocator,
5887     VkPipeline* pPipelines)
5888 {
5889     auto resources = ResourceTracker::get();
5890     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5891     {
5892         sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
5893     }
5894     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5895     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5896     VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5897     vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5898     return vkCreateRayTracingPipelinesNV_VkResult_return;
5899 }
entry_vkGetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)5900 static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
5901     VkDevice device,
5902     VkPipeline pipeline,
5903     uint32_t firstGroup,
5904     uint32_t groupCount,
5905     size_t dataSize,
5906     void* pData)
5907 {
5908     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5909     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5910     VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5911     vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5912     return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5913 }
dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)5914 static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
5915     VkDevice device,
5916     VkPipeline pipeline,
5917     uint32_t firstGroup,
5918     uint32_t groupCount,
5919     size_t dataSize,
5920     void* pData)
5921 {
5922     auto resources = ResourceTracker::get();
5923     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5924     {
5925         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
5926     }
5927     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5928     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5929     VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5930     vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5931     return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5932 }
entry_vkGetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)5933 static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
5934     VkDevice device,
5935     VkPipeline pipeline,
5936     uint32_t firstGroup,
5937     uint32_t groupCount,
5938     size_t dataSize,
5939     void* pData)
5940 {
5941     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5942     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5943     VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5944     vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5945     return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5946 }
dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)5947 static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
5948     VkDevice device,
5949     VkPipeline pipeline,
5950     uint32_t firstGroup,
5951     uint32_t groupCount,
5952     size_t dataSize,
5953     void* pData)
5954 {
5955     auto resources = ResourceTracker::get();
5956     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5957     {
5958         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
5959     }
5960     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5961     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5962     VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5963     vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5964     return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5965 }
entry_vkGetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)5966 static VkResult entry_vkGetAccelerationStructureHandleNV(
5967     VkDevice device,
5968     VkAccelerationStructureNV accelerationStructure,
5969     size_t dataSize,
5970     void* pData)
5971 {
5972     AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5973     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5974     VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5975     vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5976     return vkGetAccelerationStructureHandleNV_VkResult_return;
5977 }
dynCheck_entry_vkGetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)5978 static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
5979     VkDevice device,
5980     VkAccelerationStructureNV accelerationStructure,
5981     size_t dataSize,
5982     void* pData)
5983 {
5984     auto resources = ResourceTracker::get();
5985     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5986     {
5987         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
5988     }
5989     AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5990     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5991     VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5992     vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5993     return vkGetAccelerationStructureHandleNV_VkResult_return;
5994 }
entry_vkCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)5995 static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
5996     VkCommandBuffer commandBuffer,
5997     uint32_t accelerationStructureCount,
5998     const VkAccelerationStructureNV* pAccelerationStructures,
5999     VkQueryType queryType,
6000     VkQueryPool queryPool,
6001     uint32_t firstQuery)
6002 {
6003     AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6004     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6005     vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6006 }
entry_vkCompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6007 static VkResult entry_vkCompileDeferredNV(
6008     VkDevice device,
6009     VkPipeline pipeline,
6010     uint32_t shader)
6011 {
6012     AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6013     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6014     VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6015     vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6016     return vkCompileDeferredNV_VkResult_return;
6017 }
dynCheck_entry_vkCompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6018 static VkResult dynCheck_entry_vkCompileDeferredNV(
6019     VkDevice device,
6020     VkPipeline pipeline,
6021     uint32_t shader)
6022 {
6023     auto resources = ResourceTracker::get();
6024     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6025     {
6026         sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6027     }
6028     AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6029     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6030     VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6031     vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6032     return vkCompileDeferredNV_VkResult_return;
6033 }
6034 #endif
6035 #ifdef VK_NV_representative_fragment_test
6036 #endif
6037 #ifdef VK_EXT_filter_cubic
6038 #endif
6039 #ifdef VK_QCOM_render_pass_shader_resolve
6040 #endif
6041 #ifdef VK_EXT_global_priority
6042 #endif
6043 #ifdef VK_EXT_external_memory_host
entry_vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6044 static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6045     VkDevice device,
6046     VkExternalMemoryHandleTypeFlagBits handleType,
6047     const void* pHostPointer,
6048     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6049 {
6050     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
6051     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6052     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
6053     vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
6054     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6055 }
dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6056 static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6057     VkDevice device,
6058     VkExternalMemoryHandleTypeFlagBits handleType,
6059     const void* pHostPointer,
6060     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6061 {
6062     auto resources = ResourceTracker::get();
6063     if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6064     {
6065         sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6066     }
6067     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
6068     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6069     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
6070     vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
6071     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6072 }
6073 #endif
6074 #ifdef VK_AMD_buffer_marker
entry_vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6075 static void entry_vkCmdWriteBufferMarkerAMD(
6076     VkCommandBuffer commandBuffer,
6077     VkPipelineStageFlagBits pipelineStage,
6078     VkBuffer dstBuffer,
6079     VkDeviceSize dstOffset,
6080     uint32_t marker)
6081 {
6082     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
6083     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6084     vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
6085 }
6086 #endif
6087 #ifdef VK_AMD_pipeline_compiler_control
6088 #endif
6089 #ifdef VK_EXT_calibrated_timestamps
entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainEXT * pTimeDomains)6090 static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6091     VkPhysicalDevice physicalDevice,
6092     uint32_t* pTimeDomainCount,
6093     VkTimeDomainEXT* pTimeDomains)
6094 {
6095     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6096     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6097     VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6098     vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6099     return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6100 }
entry_vkGetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6101 static VkResult entry_vkGetCalibratedTimestampsEXT(
6102     VkDevice device,
6103     uint32_t timestampCount,
6104     const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6105     uint64_t* pTimestamps,
6106     uint64_t* pMaxDeviation)
6107 {
6108     AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6109     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6110     VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6111     vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6112     return vkGetCalibratedTimestampsEXT_VkResult_return;
6113 }
dynCheck_entry_vkGetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6114 static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6115     VkDevice device,
6116     uint32_t timestampCount,
6117     const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6118     uint64_t* pTimestamps,
6119     uint64_t* pMaxDeviation)
6120 {
6121     auto resources = ResourceTracker::get();
6122     if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6123     {
6124         sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6125     }
6126     AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6127     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6128     VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6129     vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6130     return vkGetCalibratedTimestampsEXT_VkResult_return;
6131 }
6132 #endif
6133 #ifdef VK_AMD_shader_core_properties
6134 #endif
6135 #ifdef VK_AMD_memory_overallocation_behavior
6136 #endif
6137 #ifdef VK_EXT_vertex_attribute_divisor
6138 #endif
6139 #ifdef VK_GGP_frame_token
6140 #endif
6141 #ifdef VK_EXT_pipeline_creation_feedback
6142 #endif
6143 #ifdef VK_NV_shader_subgroup_partitioned
6144 #endif
6145 #ifdef VK_NV_compute_shader_derivatives
6146 #endif
6147 #ifdef VK_NV_mesh_shader
entry_vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)6148 static void entry_vkCmdDrawMeshTasksNV(
6149     VkCommandBuffer commandBuffer,
6150     uint32_t taskCount,
6151     uint32_t firstTask)
6152 {
6153     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6154     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6155     vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6156 }
entry_vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)6157 static void entry_vkCmdDrawMeshTasksIndirectNV(
6158     VkCommandBuffer commandBuffer,
6159     VkBuffer buffer,
6160     VkDeviceSize offset,
6161     uint32_t drawCount,
6162     uint32_t stride)
6163 {
6164     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6165     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6166     vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6167 }
entry_vkCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)6168 static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6169     VkCommandBuffer commandBuffer,
6170     VkBuffer buffer,
6171     VkDeviceSize offset,
6172     VkBuffer countBuffer,
6173     VkDeviceSize countBufferOffset,
6174     uint32_t maxDrawCount,
6175     uint32_t stride)
6176 {
6177     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6178     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6179     vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6180 }
6181 #endif
6182 #ifdef VK_NV_fragment_shader_barycentric
6183 #endif
6184 #ifdef VK_NV_shader_image_footprint
6185 #endif
6186 #ifdef VK_NV_scissor_exclusive
entry_vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)6187 static void entry_vkCmdSetExclusiveScissorNV(
6188     VkCommandBuffer commandBuffer,
6189     uint32_t firstExclusiveScissor,
6190     uint32_t exclusiveScissorCount,
6191     const VkRect2D* pExclusiveScissors)
6192 {
6193     AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6194     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6195     vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6196 }
6197 #endif
6198 #ifdef VK_NV_device_diagnostic_checkpoints
entry_vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)6199 static void entry_vkCmdSetCheckpointNV(
6200     VkCommandBuffer commandBuffer,
6201     const void* pCheckpointMarker)
6202 {
6203     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
6204     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6205     vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
6206 }
entry_vkGetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)6207 static void entry_vkGetQueueCheckpointDataNV(
6208     VkQueue queue,
6209     uint32_t* pCheckpointDataCount,
6210     VkCheckpointDataNV* pCheckpointData)
6211 {
6212     AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
6213     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6214     vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
6215 }
6216 #endif
6217 #ifdef VK_INTEL_shader_integer_functions2
6218 #endif
6219 #ifdef VK_INTEL_performance_query
entry_vkInitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)6220 static VkResult entry_vkInitializePerformanceApiINTEL(
6221     VkDevice device,
6222     const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
6223 {
6224     AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
6225     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6226     VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6227     vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6228     return vkInitializePerformanceApiINTEL_VkResult_return;
6229 }
dynCheck_entry_vkInitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)6230 static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
6231     VkDevice device,
6232     const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
6233 {
6234     auto resources = ResourceTracker::get();
6235     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6236     {
6237         sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6238     }
6239     AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
6240     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6241     VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6242     vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6243     return vkInitializePerformanceApiINTEL_VkResult_return;
6244 }
entry_vkUninitializePerformanceApiINTEL(VkDevice device)6245 static void entry_vkUninitializePerformanceApiINTEL(
6246     VkDevice device)
6247 {
6248     AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6249     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6250     vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6251 }
dynCheck_entry_vkUninitializePerformanceApiINTEL(VkDevice device)6252 static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6253     VkDevice device)
6254 {
6255     auto resources = ResourceTracker::get();
6256     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6257     {
6258         sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6259     }
6260     AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6261     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6262     vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6263 }
entry_vkCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)6264 static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6265     VkCommandBuffer commandBuffer,
6266     const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6267 {
6268     AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6269     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6270     VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6271     vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6272     return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6273 }
entry_vkCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)6274 static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6275     VkCommandBuffer commandBuffer,
6276     const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6277 {
6278     AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6279     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6280     VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6281     vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6282     return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6283 }
entry_vkCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)6284 static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6285     VkCommandBuffer commandBuffer,
6286     const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6287 {
6288     AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6289     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6290     VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6291     vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6292     return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6293 }
entry_vkAcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)6294 static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6295     VkDevice device,
6296     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6297     VkPerformanceConfigurationINTEL* pConfiguration)
6298 {
6299     AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6300     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6301     VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6302     vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6303     return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6304 }
dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)6305 static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6306     VkDevice device,
6307     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6308     VkPerformanceConfigurationINTEL* pConfiguration)
6309 {
6310     auto resources = ResourceTracker::get();
6311     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6312     {
6313         sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6314     }
6315     AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6316     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6317     VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6318     vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6319     return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6320 }
entry_vkReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)6321 static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6322     VkDevice device,
6323     VkPerformanceConfigurationINTEL configuration)
6324 {
6325     AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6326     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6327     VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6328     vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6329     return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6330 }
dynCheck_entry_vkReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)6331 static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6332     VkDevice device,
6333     VkPerformanceConfigurationINTEL configuration)
6334 {
6335     auto resources = ResourceTracker::get();
6336     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6337     {
6338         sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6339     }
6340     AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6341     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6342     VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6343     vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6344     return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6345 }
entry_vkQueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)6346 static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6347     VkQueue queue,
6348     VkPerformanceConfigurationINTEL configuration)
6349 {
6350     AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6351     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6352     VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6353     vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6354     return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6355 }
entry_vkGetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)6356 static VkResult entry_vkGetPerformanceParameterINTEL(
6357     VkDevice device,
6358     VkPerformanceParameterTypeINTEL parameter,
6359     VkPerformanceValueINTEL* pValue)
6360 {
6361     AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6362     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6363     VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6364     vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6365     return vkGetPerformanceParameterINTEL_VkResult_return;
6366 }
dynCheck_entry_vkGetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)6367 static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6368     VkDevice device,
6369     VkPerformanceParameterTypeINTEL parameter,
6370     VkPerformanceValueINTEL* pValue)
6371 {
6372     auto resources = ResourceTracker::get();
6373     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6374     {
6375         sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6376     }
6377     AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6378     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6379     VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6380     vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6381     return vkGetPerformanceParameterINTEL_VkResult_return;
6382 }
6383 #endif
6384 #ifdef VK_EXT_pci_bus_info
6385 #endif
6386 #ifdef VK_AMD_display_native_hdr
entry_vkSetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)6387 static void entry_vkSetLocalDimmingAMD(
6388     VkDevice device,
6389     VkSwapchainKHR swapChain,
6390     VkBool32 localDimmingEnable)
6391 {
6392     AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6393     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6394     vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6395 }
dynCheck_entry_vkSetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)6396 static void dynCheck_entry_vkSetLocalDimmingAMD(
6397     VkDevice device,
6398     VkSwapchainKHR swapChain,
6399     VkBool32 localDimmingEnable)
6400 {
6401     auto resources = ResourceTracker::get();
6402     if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6403     {
6404         sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6405     }
6406     AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6407     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6408     vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6409 }
6410 #endif
6411 #ifdef VK_FUCHSIA_imagepipe_surface
entry_vkCreateImagePipeSurfaceFUCHSIA(VkInstance instance,const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6412 static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
6413     VkInstance instance,
6414     const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6415     const VkAllocationCallbacks* pAllocator,
6416     VkSurfaceKHR* pSurface)
6417 {
6418     AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
6419     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6420     VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
6421     vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6422     return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
6423 }
6424 #endif
6425 #ifdef VK_EXT_metal_surface
entry_vkCreateMetalSurfaceEXT(VkInstance instance,const VkMetalSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6426 static VkResult entry_vkCreateMetalSurfaceEXT(
6427     VkInstance instance,
6428     const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6429     const VkAllocationCallbacks* pAllocator,
6430     VkSurfaceKHR* pSurface)
6431 {
6432     AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
6433     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6434     VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
6435     vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6436     return vkCreateMetalSurfaceEXT_VkResult_return;
6437 }
6438 #endif
6439 #ifdef VK_EXT_fragment_density_map
6440 #endif
6441 #ifdef VK_EXT_scalar_block_layout
6442 #endif
6443 #ifdef VK_GOOGLE_hlsl_functionality1
6444 #endif
6445 #ifdef VK_GOOGLE_decorate_string
6446 #endif
6447 #ifdef VK_EXT_subgroup_size_control
6448 #endif
6449 #ifdef VK_AMD_shader_core_properties2
6450 #endif
6451 #ifdef VK_AMD_device_coherent_memory
6452 #endif
6453 #ifdef VK_EXT_shader_image_atomic_int64
6454 #endif
6455 #ifdef VK_EXT_memory_budget
6456 #endif
6457 #ifdef VK_EXT_memory_priority
6458 #endif
6459 #ifdef VK_NV_dedicated_allocation_image_aliasing
6460 #endif
6461 #ifdef VK_EXT_buffer_device_address
entry_vkGetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)6462 static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
6463     VkDevice device,
6464     const VkBufferDeviceAddressInfo* pInfo)
6465 {
6466     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6467     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6468     VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6469     vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6470     return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6471 }
dynCheck_entry_vkGetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)6472 static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
6473     VkDevice device,
6474     const VkBufferDeviceAddressInfo* pInfo)
6475 {
6476     auto resources = ResourceTracker::get();
6477     if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
6478     {
6479         sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
6480     }
6481     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6482     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6483     VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6484     vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6485     return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6486 }
6487 #endif
6488 #ifdef VK_EXT_tooling_info
entry_vkGetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice,uint32_t * pToolCount,VkPhysicalDeviceToolPropertiesEXT * pToolProperties)6489 static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
6490     VkPhysicalDevice physicalDevice,
6491     uint32_t* pToolCount,
6492     VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
6493 {
6494     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
6495     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6496     VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
6497     vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
6498     return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
6499 }
6500 #endif
6501 #ifdef VK_EXT_separate_stencil_usage
6502 #endif
6503 #ifdef VK_EXT_validation_features
6504 #endif
6505 #ifdef VK_NV_cooperative_matrix
entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)6506 static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6507     VkPhysicalDevice physicalDevice,
6508     uint32_t* pPropertyCount,
6509     VkCooperativeMatrixPropertiesNV* pProperties)
6510 {
6511     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
6512     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6513     VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
6514     vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
6515     return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
6516 }
6517 #endif
6518 #ifdef VK_NV_coverage_reduction_mode
entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)6519 static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6520     VkPhysicalDevice physicalDevice,
6521     uint32_t* pCombinationCount,
6522     VkFramebufferMixedSamplesCombinationNV* pCombinations)
6523 {
6524     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6525     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6526     VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
6527     vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
6528     return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
6529 }
6530 #endif
6531 #ifdef VK_EXT_fragment_shader_interlock
6532 #endif
6533 #ifdef VK_EXT_ycbcr_image_arrays
6534 #endif
6535 #ifdef VK_EXT_full_screen_exclusive
entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)6536 static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
6537     VkPhysicalDevice physicalDevice,
6538     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6539     uint32_t* pPresentModeCount,
6540     VkPresentModeKHR* pPresentModes)
6541 {
6542     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
6543     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6544     VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6545     vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
6546     return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
6547 }
entry_vkAcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6548 static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
6549     VkDevice device,
6550     VkSwapchainKHR swapchain)
6551 {
6552     AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6553     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6554     VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6555     vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6556     return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6557 }
dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6558 static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
6559     VkDevice device,
6560     VkSwapchainKHR swapchain)
6561 {
6562     auto resources = ResourceTracker::get();
6563     if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6564     {
6565         sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6566     }
6567     AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6568     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6569     VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6570     vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6571     return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6572 }
entry_vkReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6573 static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
6574     VkDevice device,
6575     VkSwapchainKHR swapchain)
6576 {
6577     AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6578     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6579     VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6580     vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6581     return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6582 }
dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6583 static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
6584     VkDevice device,
6585     VkSwapchainKHR swapchain)
6586 {
6587     auto resources = ResourceTracker::get();
6588     if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6589     {
6590         sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6591     }
6592     AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6593     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6594     VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6595     vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6596     return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6597 }
entry_vkGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkDeviceGroupPresentModeFlagsKHR * pModes)6598 static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6599     VkDevice device,
6600     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6601     VkDeviceGroupPresentModeFlagsKHR* pModes)
6602 {
6603     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6604     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6605     VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6606     vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6607     return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6608 }
dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkDeviceGroupPresentModeFlagsKHR * pModes)6609 static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6610     VkDevice device,
6611     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6612     VkDeviceGroupPresentModeFlagsKHR* pModes)
6613 {
6614     auto resources = ResourceTracker::get();
6615     if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6616     {
6617         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
6618     }
6619     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6620     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6621     VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6622     vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6623     return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6624 }
6625 #endif
6626 #ifdef VK_EXT_headless_surface
entry_vkCreateHeadlessSurfaceEXT(VkInstance instance,const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6627 static VkResult entry_vkCreateHeadlessSurfaceEXT(
6628     VkInstance instance,
6629     const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6630     const VkAllocationCallbacks* pAllocator,
6631     VkSurfaceKHR* pSurface)
6632 {
6633     AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
6634     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6635     VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
6636     vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6637     return vkCreateHeadlessSurfaceEXT_VkResult_return;
6638 }
6639 #endif
6640 #ifdef VK_EXT_line_rasterization
entry_vkCmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)6641 static void entry_vkCmdSetLineStippleEXT(
6642     VkCommandBuffer commandBuffer,
6643     uint32_t lineStippleFactor,
6644     uint16_t lineStipplePattern)
6645 {
6646     AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
6647     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6648     vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
6649 }
6650 #endif
6651 #ifdef VK_EXT_shader_atomic_float
6652 #endif
6653 #ifdef VK_EXT_host_query_reset
entry_vkResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)6654 static void entry_vkResetQueryPoolEXT(
6655     VkDevice device,
6656     VkQueryPool queryPool,
6657     uint32_t firstQuery,
6658     uint32_t queryCount)
6659 {
6660     AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6661     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6662     vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6663 }
dynCheck_entry_vkResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)6664 static void dynCheck_entry_vkResetQueryPoolEXT(
6665     VkDevice device,
6666     VkQueryPool queryPool,
6667     uint32_t firstQuery,
6668     uint32_t queryCount)
6669 {
6670     auto resources = ResourceTracker::get();
6671     if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
6672     {
6673         sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
6674     }
6675     AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6676     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6677     vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6678 }
6679 #endif
6680 #ifdef VK_EXT_index_type_uint8
6681 #endif
6682 #ifdef VK_EXT_extended_dynamic_state
entry_vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)6683 static void entry_vkCmdSetCullModeEXT(
6684     VkCommandBuffer commandBuffer,
6685     VkCullModeFlags cullMode)
6686 {
6687     AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
6688     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6689     vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
6690 }
entry_vkCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)6691 static void entry_vkCmdSetFrontFaceEXT(
6692     VkCommandBuffer commandBuffer,
6693     VkFrontFace frontFace)
6694 {
6695     AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
6696     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6697     vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
6698 }
entry_vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)6699 static void entry_vkCmdSetPrimitiveTopologyEXT(
6700     VkCommandBuffer commandBuffer,
6701     VkPrimitiveTopology primitiveTopology)
6702 {
6703     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
6704     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6705     vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
6706 }
entry_vkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)6707 static void entry_vkCmdSetViewportWithCountEXT(
6708     VkCommandBuffer commandBuffer,
6709     uint32_t viewportCount,
6710     const VkViewport* pViewports)
6711 {
6712     AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
6713     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6714     vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
6715 }
entry_vkCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)6716 static void entry_vkCmdSetScissorWithCountEXT(
6717     VkCommandBuffer commandBuffer,
6718     uint32_t scissorCount,
6719     const VkRect2D* pScissors)
6720 {
6721     AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
6722     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6723     vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
6724 }
entry_vkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)6725 static void entry_vkCmdBindVertexBuffers2EXT(
6726     VkCommandBuffer commandBuffer,
6727     uint32_t firstBinding,
6728     uint32_t bindingCount,
6729     const VkBuffer* pBuffers,
6730     const VkDeviceSize* pOffsets,
6731     const VkDeviceSize* pSizes,
6732     const VkDeviceSize* pStrides)
6733 {
6734     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
6735     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6736     vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
6737 }
entry_vkCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)6738 static void entry_vkCmdSetDepthTestEnableEXT(
6739     VkCommandBuffer commandBuffer,
6740     VkBool32 depthTestEnable)
6741 {
6742     AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
6743     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6744     vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
6745 }
entry_vkCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)6746 static void entry_vkCmdSetDepthWriteEnableEXT(
6747     VkCommandBuffer commandBuffer,
6748     VkBool32 depthWriteEnable)
6749 {
6750     AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
6751     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6752     vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
6753 }
entry_vkCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)6754 static void entry_vkCmdSetDepthCompareOpEXT(
6755     VkCommandBuffer commandBuffer,
6756     VkCompareOp depthCompareOp)
6757 {
6758     AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
6759     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6760     vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
6761 }
entry_vkCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)6762 static void entry_vkCmdSetDepthBoundsTestEnableEXT(
6763     VkCommandBuffer commandBuffer,
6764     VkBool32 depthBoundsTestEnable)
6765 {
6766     AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
6767     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6768     vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
6769 }
entry_vkCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)6770 static void entry_vkCmdSetStencilTestEnableEXT(
6771     VkCommandBuffer commandBuffer,
6772     VkBool32 stencilTestEnable)
6773 {
6774     AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
6775     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6776     vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
6777 }
entry_vkCmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)6778 static void entry_vkCmdSetStencilOpEXT(
6779     VkCommandBuffer commandBuffer,
6780     VkStencilFaceFlags faceMask,
6781     VkStencilOp failOp,
6782     VkStencilOp passOp,
6783     VkStencilOp depthFailOp,
6784     VkCompareOp compareOp)
6785 {
6786     AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
6787     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6788     vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
6789 }
6790 #endif
6791 #ifdef VK_EXT_shader_demote_to_helper_invocation
6792 #endif
6793 #ifdef VK_NV_device_generated_commands
entry_vkGetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)6794 static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6795     VkDevice device,
6796     const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6797     VkMemoryRequirements2* pMemoryRequirements)
6798 {
6799     AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6800     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6801     vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6802 }
dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)6803 static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6804     VkDevice device,
6805     const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6806     VkMemoryRequirements2* pMemoryRequirements)
6807 {
6808     auto resources = ResourceTracker::get();
6809     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6810     {
6811         sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
6812     }
6813     AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6814     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6815     vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6816 }
entry_vkCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)6817 static void entry_vkCmdPreprocessGeneratedCommandsNV(
6818     VkCommandBuffer commandBuffer,
6819     const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6820 {
6821     AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
6822     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6823     vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
6824 }
entry_vkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)6825 static void entry_vkCmdExecuteGeneratedCommandsNV(
6826     VkCommandBuffer commandBuffer,
6827     VkBool32 isPreprocessed,
6828     const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6829 {
6830     AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
6831     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6832     vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
6833 }
entry_vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline,uint32_t groupIndex)6834 static void entry_vkCmdBindPipelineShaderGroupNV(
6835     VkCommandBuffer commandBuffer,
6836     VkPipelineBindPoint pipelineBindPoint,
6837     VkPipeline pipeline,
6838     uint32_t groupIndex)
6839 {
6840     AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
6841     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6842     vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
6843 }
entry_vkCreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)6844 static VkResult entry_vkCreateIndirectCommandsLayoutNV(
6845     VkDevice device,
6846     const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6847     const VkAllocationCallbacks* pAllocator,
6848     VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6849 {
6850     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6851     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6852     VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6853     vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6854     return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6855 }
dynCheck_entry_vkCreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)6856 static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
6857     VkDevice device,
6858     const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6859     const VkAllocationCallbacks* pAllocator,
6860     VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6861 {
6862     auto resources = ResourceTracker::get();
6863     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6864     {
6865         sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6866     }
6867     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6868     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6869     VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6870     vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6871     return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6872 }
entry_vkDestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)6873 static void entry_vkDestroyIndirectCommandsLayoutNV(
6874     VkDevice device,
6875     VkIndirectCommandsLayoutNV indirectCommandsLayout,
6876     const VkAllocationCallbacks* pAllocator)
6877 {
6878     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6879     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6880     vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6881 }
dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)6882 static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
6883     VkDevice device,
6884     VkIndirectCommandsLayoutNV indirectCommandsLayout,
6885     const VkAllocationCallbacks* pAllocator)
6886 {
6887     auto resources = ResourceTracker::get();
6888     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6889     {
6890         sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6891     }
6892     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6893     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6894     vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6895 }
6896 #endif
6897 #ifdef VK_EXT_texel_buffer_alignment
6898 #endif
6899 #ifdef VK_QCOM_render_pass_transform
6900 #endif
6901 #ifdef VK_EXT_device_memory_report
6902 #endif
6903 #ifdef VK_EXT_robustness2
6904 #endif
6905 #ifdef VK_EXT_custom_border_color
6906 #endif
6907 #ifdef VK_GOOGLE_user_type
6908 #endif
6909 #ifdef VK_EXT_private_data
entry_vkCreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlotEXT * pPrivateDataSlot)6910 static VkResult entry_vkCreatePrivateDataSlotEXT(
6911     VkDevice device,
6912     const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6913     const VkAllocationCallbacks* pAllocator,
6914     VkPrivateDataSlotEXT* pPrivateDataSlot)
6915 {
6916     AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6917     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6918     VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6919     vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6920     return vkCreatePrivateDataSlotEXT_VkResult_return;
6921 }
dynCheck_entry_vkCreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlotEXT * pPrivateDataSlot)6922 static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
6923     VkDevice device,
6924     const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6925     const VkAllocationCallbacks* pAllocator,
6926     VkPrivateDataSlotEXT* pPrivateDataSlot)
6927 {
6928     auto resources = ResourceTracker::get();
6929     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6930     {
6931         sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
6932     }
6933     AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6934     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6935     VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6936     vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6937     return vkCreatePrivateDataSlotEXT_VkResult_return;
6938 }
entry_vkDestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlotEXT privateDataSlot,const VkAllocationCallbacks * pAllocator)6939 static void entry_vkDestroyPrivateDataSlotEXT(
6940     VkDevice device,
6941     VkPrivateDataSlotEXT privateDataSlot,
6942     const VkAllocationCallbacks* pAllocator)
6943 {
6944     AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6945     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6946     vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6947 }
dynCheck_entry_vkDestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlotEXT privateDataSlot,const VkAllocationCallbacks * pAllocator)6948 static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
6949     VkDevice device,
6950     VkPrivateDataSlotEXT privateDataSlot,
6951     const VkAllocationCallbacks* pAllocator)
6952 {
6953     auto resources = ResourceTracker::get();
6954     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6955     {
6956         sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
6957     }
6958     AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6959     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6960     vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6961 }
entry_vkSetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlotEXT privateDataSlot,uint64_t data)6962 static VkResult entry_vkSetPrivateDataEXT(
6963     VkDevice device,
6964     VkObjectType objectType,
6965     uint64_t objectHandle,
6966     VkPrivateDataSlotEXT privateDataSlot,
6967     uint64_t data)
6968 {
6969     AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6970     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6971     VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6972     vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6973     return vkSetPrivateDataEXT_VkResult_return;
6974 }
dynCheck_entry_vkSetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlotEXT privateDataSlot,uint64_t data)6975 static VkResult dynCheck_entry_vkSetPrivateDataEXT(
6976     VkDevice device,
6977     VkObjectType objectType,
6978     uint64_t objectHandle,
6979     VkPrivateDataSlotEXT privateDataSlot,
6980     uint64_t data)
6981 {
6982     auto resources = ResourceTracker::get();
6983     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6984     {
6985         sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
6986     }
6987     AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6988     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6989     VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6990     vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6991     return vkSetPrivateDataEXT_VkResult_return;
6992 }
entry_vkGetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlotEXT privateDataSlot,uint64_t * pData)6993 static void entry_vkGetPrivateDataEXT(
6994     VkDevice device,
6995     VkObjectType objectType,
6996     uint64_t objectHandle,
6997     VkPrivateDataSlotEXT privateDataSlot,
6998     uint64_t* pData)
6999 {
7000     AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7001     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7002     vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7003 }
dynCheck_entry_vkGetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlotEXT privateDataSlot,uint64_t * pData)7004 static void dynCheck_entry_vkGetPrivateDataEXT(
7005     VkDevice device,
7006     VkObjectType objectType,
7007     uint64_t objectHandle,
7008     VkPrivateDataSlotEXT privateDataSlot,
7009     uint64_t* pData)
7010 {
7011     auto resources = ResourceTracker::get();
7012     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7013     {
7014         sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7015     }
7016     AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7017     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7018     vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7019 }
7020 #endif
7021 #ifdef VK_EXT_pipeline_creation_cache_control
7022 #endif
7023 #ifdef VK_NV_device_diagnostics_config
7024 #endif
7025 #ifdef VK_QCOM_render_pass_store_ops
7026 #endif
7027 #ifdef VK_NV_fragment_shading_rate_enums
entry_vkCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer,VkFragmentShadingRateNV shadingRate,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])7028 static void entry_vkCmdSetFragmentShadingRateEnumNV(
7029     VkCommandBuffer commandBuffer,
7030     VkFragmentShadingRateNV shadingRate,
7031     const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7032 {
7033     AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7034     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7035     vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7036 }
7037 #endif
7038 #ifdef VK_EXT_fragment_density_map2
7039 #endif
7040 #ifdef VK_QCOM_rotated_copy_commands
7041 #endif
7042 #ifdef VK_EXT_image_robustness
7043 #endif
7044 #ifdef VK_EXT_4444_formats
7045 #endif
7046 #ifdef VK_EXT_directfb_surface
entry_vkCreateDirectFBSurfaceEXT(VkInstance instance,const VkDirectFBSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)7047 static VkResult entry_vkCreateDirectFBSurfaceEXT(
7048     VkInstance instance,
7049     const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7050     const VkAllocationCallbacks* pAllocator,
7051     VkSurfaceKHR* pSurface)
7052 {
7053     AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7054     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7055     VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7056     vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7057     return vkCreateDirectFBSurfaceEXT_VkResult_return;
7058 }
entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,IDirectFB * dfb)7059 static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7060     VkPhysicalDevice physicalDevice,
7061     uint32_t queueFamilyIndex,
7062     IDirectFB* dfb)
7063 {
7064     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7065     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7066     VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7067     vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7068     return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7069 }
7070 #endif
7071 #ifdef VK_GOOGLE_gfxstream
entry_vkRegisterImageColorBufferGOOGLE(VkDevice device,VkImage image,uint32_t colorBuffer)7072 static VkResult entry_vkRegisterImageColorBufferGOOGLE(
7073     VkDevice device,
7074     VkImage image,
7075     uint32_t colorBuffer)
7076 {
7077     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7078     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7079     VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7080     vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7081     return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7082 }
dynCheck_entry_vkRegisterImageColorBufferGOOGLE(VkDevice device,VkImage image,uint32_t colorBuffer)7083 static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
7084     VkDevice device,
7085     VkImage image,
7086     uint32_t colorBuffer)
7087 {
7088     auto resources = ResourceTracker::get();
7089     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7090     {
7091         sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7092     }
7093     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7094     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7095     VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7096     vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7097     return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7098 }
entry_vkRegisterBufferColorBufferGOOGLE(VkDevice device,VkBuffer buffer,uint32_t colorBuffer)7099 static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
7100     VkDevice device,
7101     VkBuffer buffer,
7102     uint32_t colorBuffer)
7103 {
7104     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7105     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7106     VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7107     vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7108     return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7109 }
dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(VkDevice device,VkBuffer buffer,uint32_t colorBuffer)7110 static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
7111     VkDevice device,
7112     VkBuffer buffer,
7113     uint32_t colorBuffer)
7114 {
7115     auto resources = ResourceTracker::get();
7116     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7117     {
7118         sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7119     }
7120     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7121     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7122     VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7123     vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7124     return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7125 }
entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)7126 static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7127     VkDevice device,
7128     VkDeviceMemory memory,
7129     uint64_t* pAddress)
7130 {
7131     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7132     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7133     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7134     vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7135     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7136 }
dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)7137 static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7138     VkDevice device,
7139     VkDeviceMemory memory,
7140     uint64_t* pAddress)
7141 {
7142     auto resources = ResourceTracker::get();
7143     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7144     {
7145         sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
7146     }
7147     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7148     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7149     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7150     vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7151     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7152 }
entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews)7153 static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7154     VkDevice device,
7155     VkDescriptorSet descriptorSet,
7156     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7157     uint32_t imageInfoCount,
7158     uint32_t bufferInfoCount,
7159     uint32_t bufferViewCount,
7160     const uint32_t* pImageInfoEntryIndices,
7161     const uint32_t* pBufferInfoEntryIndices,
7162     const uint32_t* pBufferViewEntryIndices,
7163     const VkDescriptorImageInfo* pImageInfos,
7164     const VkDescriptorBufferInfo* pBufferInfos,
7165     const VkBufferView* pBufferViews)
7166 {
7167     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
7168     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7169     vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
7170 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews)7171 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7172     VkDevice device,
7173     VkDescriptorSet descriptorSet,
7174     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7175     uint32_t imageInfoCount,
7176     uint32_t bufferInfoCount,
7177     uint32_t bufferViewCount,
7178     const uint32_t* pImageInfoEntryIndices,
7179     const uint32_t* pBufferInfoEntryIndices,
7180     const uint32_t* pBufferViewEntryIndices,
7181     const VkDescriptorImageInfo* pImageInfos,
7182     const VkDescriptorBufferInfo* pBufferInfos,
7183     const VkBufferView* pBufferViews)
7184 {
7185     auto resources = ResourceTracker::get();
7186     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7187     {
7188         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
7189     }
7190     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
7191     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7192     vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
7193 }
entry_vkBeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)7194 static void entry_vkBeginCommandBufferAsyncGOOGLE(
7195     VkCommandBuffer commandBuffer,
7196     const VkCommandBufferBeginInfo* pBeginInfo)
7197 {
7198     AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
7199     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7200     vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
7201 }
entry_vkEndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer)7202 static void entry_vkEndCommandBufferAsyncGOOGLE(
7203     VkCommandBuffer commandBuffer)
7204 {
7205     AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
7206     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7207     vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
7208 }
entry_vkResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)7209 static void entry_vkResetCommandBufferAsyncGOOGLE(
7210     VkCommandBuffer commandBuffer,
7211     VkCommandBufferResetFlags flags)
7212 {
7213     AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
7214     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7215     vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
7216 }
entry_vkCommandBufferHostSyncGOOGLE(VkCommandBuffer commandBuffer,uint32_t needHostSync,uint32_t sequenceNumber)7217 static void entry_vkCommandBufferHostSyncGOOGLE(
7218     VkCommandBuffer commandBuffer,
7219     uint32_t needHostSync,
7220     uint32_t sequenceNumber)
7221 {
7222     AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
7223     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7224     vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
7225 }
entry_vkCreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)7226 static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7227     VkDevice device,
7228     const VkImageCreateInfo* pCreateInfo,
7229     const VkAllocationCallbacks* pAllocator,
7230     VkImage* pImage,
7231     VkMemoryRequirements* pMemoryRequirements)
7232 {
7233     AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
7234     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7235     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
7236     vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
7237     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7238 }
dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)7239 static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7240     VkDevice device,
7241     const VkImageCreateInfo* pCreateInfo,
7242     const VkAllocationCallbacks* pAllocator,
7243     VkImage* pImage,
7244     VkMemoryRequirements* pMemoryRequirements)
7245 {
7246     auto resources = ResourceTracker::get();
7247     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7248     {
7249         sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
7250     }
7251     AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
7252     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7253     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
7254     vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
7255     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7256 }
entry_vkCreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)7257 static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7258     VkDevice device,
7259     const VkBufferCreateInfo* pCreateInfo,
7260     const VkAllocationCallbacks* pAllocator,
7261     VkBuffer* pBuffer,
7262     VkMemoryRequirements* pMemoryRequirements)
7263 {
7264     AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
7265     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7266     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
7267     vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
7268     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7269 }
dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)7270 static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7271     VkDevice device,
7272     const VkBufferCreateInfo* pCreateInfo,
7273     const VkAllocationCallbacks* pAllocator,
7274     VkBuffer* pBuffer,
7275     VkMemoryRequirements* pMemoryRequirements)
7276 {
7277     auto resources = ResourceTracker::get();
7278     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7279     {
7280         sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
7281     }
7282     AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
7283     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7284     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
7285     vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
7286     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7287 }
entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)7288 static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7289     VkDevice device,
7290     VkDeviceMemory memory,
7291     uint64_t* pAddress,
7292     uint64_t* pSize,
7293     uint64_t* pHostmemId)
7294 {
7295     AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
7296     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7297     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
7298     vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
7299     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7300 }
dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)7301 static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7302     VkDevice device,
7303     VkDeviceMemory memory,
7304     uint64_t* pAddress,
7305     uint64_t* pSize,
7306     uint64_t* pHostmemId)
7307 {
7308     auto resources = ResourceTracker::get();
7309     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7310     {
7311         sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
7312     }
7313     AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
7314     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7315     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
7316     vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
7317     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7318 }
entry_vkFreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)7319 static VkResult entry_vkFreeMemorySyncGOOGLE(
7320     VkDevice device,
7321     VkDeviceMemory memory,
7322     const VkAllocationCallbacks* pAllocator)
7323 {
7324     AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
7325     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7326     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
7327     vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
7328     return vkFreeMemorySyncGOOGLE_VkResult_return;
7329 }
dynCheck_entry_vkFreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)7330 static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7331     VkDevice device,
7332     VkDeviceMemory memory,
7333     const VkAllocationCallbacks* pAllocator)
7334 {
7335     auto resources = ResourceTracker::get();
7336     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7337     {
7338         sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
7339     }
7340     AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
7341     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7342     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
7343     vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
7344     return vkFreeMemorySyncGOOGLE_VkResult_return;
7345 }
entry_vkQueueHostSyncGOOGLE(VkQueue queue,uint32_t needHostSync,uint32_t sequenceNumber)7346 static void entry_vkQueueHostSyncGOOGLE(
7347     VkQueue queue,
7348     uint32_t needHostSync,
7349     uint32_t sequenceNumber)
7350 {
7351     AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
7352     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7353     vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
7354 }
entry_vkQueueSubmitAsyncGOOGLE(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)7355 static void entry_vkQueueSubmitAsyncGOOGLE(
7356     VkQueue queue,
7357     uint32_t submitCount,
7358     const VkSubmitInfo* pSubmits,
7359     VkFence fence)
7360 {
7361     AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
7362     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7363     vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
7364 }
entry_vkQueueWaitIdleAsyncGOOGLE(VkQueue queue)7365 static void entry_vkQueueWaitIdleAsyncGOOGLE(
7366     VkQueue queue)
7367 {
7368     AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
7369     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7370     vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
7371 }
entry_vkQueueBindSparseAsyncGOOGLE(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)7372 static void entry_vkQueueBindSparseAsyncGOOGLE(
7373     VkQueue queue,
7374     uint32_t bindInfoCount,
7375     const VkBindSparseInfo* pBindInfo,
7376     VkFence fence)
7377 {
7378     AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
7379     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7380     vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
7381 }
entry_vkGetLinearImageLayoutGOOGLE(VkDevice device,VkFormat format,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)7382 static void entry_vkGetLinearImageLayoutGOOGLE(
7383     VkDevice device,
7384     VkFormat format,
7385     VkDeviceSize* pOffset,
7386     VkDeviceSize* pRowPitchAlignment)
7387 {
7388     AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
7389     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7390     vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
7391 }
dynCheck_entry_vkGetLinearImageLayoutGOOGLE(VkDevice device,VkFormat format,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)7392 static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7393     VkDevice device,
7394     VkFormat format,
7395     VkDeviceSize* pOffset,
7396     VkDeviceSize* pRowPitchAlignment)
7397 {
7398     auto resources = ResourceTracker::get();
7399     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7400     {
7401         sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
7402     }
7403     AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
7404     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7405     vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
7406 }
entry_vkQueueFlushCommandsGOOGLE(VkQueue queue,VkCommandBuffer commandBuffer,VkDeviceSize dataSize,const void * pData)7407 static void entry_vkQueueFlushCommandsGOOGLE(
7408     VkQueue queue,
7409     VkCommandBuffer commandBuffer,
7410     VkDeviceSize dataSize,
7411     const void* pData)
7412 {
7413     AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7414     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7415     vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7416 }
entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(VkQueue queue,uint32_t descriptorPoolCount,const VkDescriptorPool * pDescriptorPools,uint32_t descriptorSetCount,const VkDescriptorSetLayout * pSetLayouts,const uint64_t * pDescriptorSetPoolIds,const uint32_t * pDescriptorSetWhichPool,const uint32_t * pDescriptorSetPendingAllocation,const uint32_t * pDescriptorWriteStartingIndices,uint32_t pendingDescriptorWriteCount,const VkWriteDescriptorSet * pPendingDescriptorWrites)7417 static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
7418     VkQueue queue,
7419     uint32_t descriptorPoolCount,
7420     const VkDescriptorPool* pDescriptorPools,
7421     uint32_t descriptorSetCount,
7422     const VkDescriptorSetLayout* pSetLayouts,
7423     const uint64_t* pDescriptorSetPoolIds,
7424     const uint32_t* pDescriptorSetWhichPool,
7425     const uint32_t* pDescriptorSetPendingAllocation,
7426     const uint32_t* pDescriptorWriteStartingIndices,
7427     uint32_t pendingDescriptorWriteCount,
7428     const VkWriteDescriptorSet* pPendingDescriptorWrites)
7429 {
7430     AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
7431     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7432     vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
7433 }
entry_vkCollectDescriptorPoolIdsGOOGLE(VkDevice device,VkDescriptorPool descriptorPool,uint32_t * pPoolIdCount,uint64_t * pPoolIds)7434 static void entry_vkCollectDescriptorPoolIdsGOOGLE(
7435     VkDevice device,
7436     VkDescriptorPool descriptorPool,
7437     uint32_t* pPoolIdCount,
7438     uint64_t* pPoolIds)
7439 {
7440     AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7441     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7442     vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7443 }
dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(VkDevice device,VkDescriptorPool descriptorPool,uint32_t * pPoolIdCount,uint64_t * pPoolIds)7444 static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
7445     VkDevice device,
7446     VkDescriptorPool descriptorPool,
7447     uint32_t* pPoolIdCount,
7448     uint64_t* pPoolIds)
7449 {
7450     auto resources = ResourceTracker::get();
7451     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7452     {
7453         sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
7454     }
7455     AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7456     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7457     vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7458 }
7459 #endif
7460 #ifdef VK_KHR_acceleration_structure
entry_vkCreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)7461 static VkResult entry_vkCreateAccelerationStructureKHR(
7462     VkDevice device,
7463     const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7464     const VkAllocationCallbacks* pAllocator,
7465     VkAccelerationStructureKHR* pAccelerationStructure)
7466 {
7467     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7468     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7469     VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7470     vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7471     return vkCreateAccelerationStructureKHR_VkResult_return;
7472 }
dynCheck_entry_vkCreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)7473 static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7474     VkDevice device,
7475     const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7476     const VkAllocationCallbacks* pAllocator,
7477     VkAccelerationStructureKHR* pAccelerationStructure)
7478 {
7479     auto resources = ResourceTracker::get();
7480     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7481     {
7482         sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7483     }
7484     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7485     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7486     VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7487     vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7488     return vkCreateAccelerationStructureKHR_VkResult_return;
7489 }
entry_vkDestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)7490 static void entry_vkDestroyAccelerationStructureKHR(
7491     VkDevice device,
7492     VkAccelerationStructureKHR accelerationStructure,
7493     const VkAllocationCallbacks* pAllocator)
7494 {
7495     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7496     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7497     vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7498 }
dynCheck_entry_vkDestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)7499 static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7500     VkDevice device,
7501     VkAccelerationStructureKHR accelerationStructure,
7502     const VkAllocationCallbacks* pAllocator)
7503 {
7504     auto resources = ResourceTracker::get();
7505     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7506     {
7507         sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7508     }
7509     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7510     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7511     vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7512 }
entry_vkCmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)7513 static void entry_vkCmdBuildAccelerationStructuresKHR(
7514     VkCommandBuffer commandBuffer,
7515     uint32_t infoCount,
7516     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7517     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7518 {
7519     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7520     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7521     vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7522 }
entry_vkCmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkDeviceAddress * pIndirectDeviceAddresses,const uint32_t * pIndirectStrides,const uint32_t * const * ppMaxPrimitiveCounts)7523 static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7524     VkCommandBuffer commandBuffer,
7525     uint32_t infoCount,
7526     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7527     const VkDeviceAddress* pIndirectDeviceAddresses,
7528     const uint32_t* pIndirectStrides,
7529     const uint32_t* const* ppMaxPrimitiveCounts)
7530 {
7531     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7532     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7533     vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7534 }
entry_vkBuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)7535 static VkResult entry_vkBuildAccelerationStructuresKHR(
7536     VkDevice device,
7537     VkDeferredOperationKHR deferredOperation,
7538     uint32_t infoCount,
7539     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7540     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7541 {
7542     AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7543     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7544     VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7545     vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7546     return vkBuildAccelerationStructuresKHR_VkResult_return;
7547 }
dynCheck_entry_vkBuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)7548 static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7549     VkDevice device,
7550     VkDeferredOperationKHR deferredOperation,
7551     uint32_t infoCount,
7552     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7553     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7554 {
7555     auto resources = ResourceTracker::get();
7556     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7557     {
7558         sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7559     }
7560     AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7561     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7562     VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7563     vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7564     return vkBuildAccelerationStructuresKHR_VkResult_return;
7565 }
entry_vkCopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)7566 static VkResult entry_vkCopyAccelerationStructureKHR(
7567     VkDevice device,
7568     VkDeferredOperationKHR deferredOperation,
7569     const VkCopyAccelerationStructureInfoKHR* pInfo)
7570 {
7571     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7572     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7573     VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7574     vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7575     return vkCopyAccelerationStructureKHR_VkResult_return;
7576 }
dynCheck_entry_vkCopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)7577 static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
7578     VkDevice device,
7579     VkDeferredOperationKHR deferredOperation,
7580     const VkCopyAccelerationStructureInfoKHR* pInfo)
7581 {
7582     auto resources = ResourceTracker::get();
7583     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7584     {
7585         sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7586     }
7587     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7588     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7589     VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7590     vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7591     return vkCopyAccelerationStructureKHR_VkResult_return;
7592 }
entry_vkCopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)7593 static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7594     VkDevice device,
7595     VkDeferredOperationKHR deferredOperation,
7596     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7597 {
7598     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7599     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7600     VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7601     vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7602     return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7603 }
dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)7604 static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7605     VkDevice device,
7606     VkDeferredOperationKHR deferredOperation,
7607     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7608 {
7609     auto resources = ResourceTracker::get();
7610     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7611     {
7612         sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7613     }
7614     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7615     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7616     VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7617     vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7618     return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7619 }
entry_vkCopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)7620 static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7621     VkDevice device,
7622     VkDeferredOperationKHR deferredOperation,
7623     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7624 {
7625     AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7626     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7627     VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7628     vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7629     return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7630 }
dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)7631 static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7632     VkDevice device,
7633     VkDeferredOperationKHR deferredOperation,
7634     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7635 {
7636     auto resources = ResourceTracker::get();
7637     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7638     {
7639         sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7640     }
7641     AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7642     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7643     VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7644     vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7645     return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7646 }
entry_vkWriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)7647 static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7648     VkDevice device,
7649     uint32_t accelerationStructureCount,
7650     const VkAccelerationStructureKHR* pAccelerationStructures,
7651     VkQueryType queryType,
7652     size_t dataSize,
7653     void* pData,
7654     size_t stride)
7655 {
7656     AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7657     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7658     VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7659     vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7660     return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7661 }
dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)7662 static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7663     VkDevice device,
7664     uint32_t accelerationStructureCount,
7665     const VkAccelerationStructureKHR* pAccelerationStructures,
7666     VkQueryType queryType,
7667     size_t dataSize,
7668     void* pData,
7669     size_t stride)
7670 {
7671     auto resources = ResourceTracker::get();
7672     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7673     {
7674         sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7675     }
7676     AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7677     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7678     VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7679     vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7680     return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7681 }
entry_vkCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureInfoKHR * pInfo)7682 static void entry_vkCmdCopyAccelerationStructureKHR(
7683     VkCommandBuffer commandBuffer,
7684     const VkCopyAccelerationStructureInfoKHR* pInfo)
7685 {
7686     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7687     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7688     vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7689 }
entry_vkCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)7690 static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7691     VkCommandBuffer commandBuffer,
7692     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7693 {
7694     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7695     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7696     vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7697 }
entry_vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)7698 static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7699     VkCommandBuffer commandBuffer,
7700     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7701 {
7702     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7703     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7704     vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7705 }
entry_vkGetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)7706 static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7707     VkDevice device,
7708     const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7709 {
7710     AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7711     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7712     VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7713     vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7714     return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7715 }
dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)7716 static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7717     VkDevice device,
7718     const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7719 {
7720     auto resources = ResourceTracker::get();
7721     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7722     {
7723         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7724     }
7725     AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7726     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7727     VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7728     vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7729     return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7730 }
entry_vkCmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)7731 static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7732     VkCommandBuffer commandBuffer,
7733     uint32_t accelerationStructureCount,
7734     const VkAccelerationStructureKHR* pAccelerationStructures,
7735     VkQueryType queryType,
7736     VkQueryPool queryPool,
7737     uint32_t firstQuery)
7738 {
7739     AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7740     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7741     vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7742 }
entry_vkGetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)7743 static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7744     VkDevice device,
7745     const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7746     VkAccelerationStructureCompatibilityKHR* pCompatibility)
7747 {
7748     AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7749     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7750     vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7751 }
dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)7752 static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7753     VkDevice device,
7754     const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7755     VkAccelerationStructureCompatibilityKHR* pCompatibility)
7756 {
7757     auto resources = ResourceTracker::get();
7758     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7759     {
7760         sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7761     }
7762     AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7763     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7764     vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7765 }
entry_vkGetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)7766 static void entry_vkGetAccelerationStructureBuildSizesKHR(
7767     VkDevice device,
7768     VkAccelerationStructureBuildTypeKHR buildType,
7769     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7770     const uint32_t* pMaxPrimitiveCounts,
7771     VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7772 {
7773     AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7774     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7775     vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7776 }
dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)7777 static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7778     VkDevice device,
7779     VkAccelerationStructureBuildTypeKHR buildType,
7780     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7781     const uint32_t* pMaxPrimitiveCounts,
7782     VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7783 {
7784     auto resources = ResourceTracker::get();
7785     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7786     {
7787         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7788     }
7789     AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7790     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7791     vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7792 }
7793 #endif
7794 #ifdef VK_KHR_ray_tracing_pipeline
entry_vkCmdTraceRaysKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,uint32_t width,uint32_t height,uint32_t depth)7795 static void entry_vkCmdTraceRaysKHR(
7796     VkCommandBuffer commandBuffer,
7797     const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7798     const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7799     const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7800     const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7801     uint32_t width,
7802     uint32_t height,
7803     uint32_t depth)
7804 {
7805     AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7806     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7807     vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7808 }
entry_vkCreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)7809 static VkResult entry_vkCreateRayTracingPipelinesKHR(
7810     VkDevice device,
7811     VkDeferredOperationKHR deferredOperation,
7812     VkPipelineCache pipelineCache,
7813     uint32_t createInfoCount,
7814     const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7815     const VkAllocationCallbacks* pAllocator,
7816     VkPipeline* pPipelines)
7817 {
7818     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7819     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7820     VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7821     vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7822     return vkCreateRayTracingPipelinesKHR_VkResult_return;
7823 }
dynCheck_entry_vkCreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)7824 static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7825     VkDevice device,
7826     VkDeferredOperationKHR deferredOperation,
7827     VkPipelineCache pipelineCache,
7828     uint32_t createInfoCount,
7829     const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7830     const VkAllocationCallbacks* pAllocator,
7831     VkPipeline* pPipelines)
7832 {
7833     auto resources = ResourceTracker::get();
7834     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7835     {
7836         sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7837     }
7838     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7839     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7840     VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7841     vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7842     return vkCreateRayTracingPipelinesKHR_VkResult_return;
7843 }
entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)7844 static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7845     VkDevice device,
7846     VkPipeline pipeline,
7847     uint32_t firstGroup,
7848     uint32_t groupCount,
7849     size_t dataSize,
7850     void* pData)
7851 {
7852     AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7853     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7854     VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7855     vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7856     return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7857 }
dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)7858 static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7859     VkDevice device,
7860     VkPipeline pipeline,
7861     uint32_t firstGroup,
7862     uint32_t groupCount,
7863     size_t dataSize,
7864     void* pData)
7865 {
7866     auto resources = ResourceTracker::get();
7867     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7868     {
7869         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7870     }
7871     AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7872     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7873     VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7874     vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7875     return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7876 }
entry_vkCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,VkDeviceAddress indirectDeviceAddress)7877 static void entry_vkCmdTraceRaysIndirectKHR(
7878     VkCommandBuffer commandBuffer,
7879     const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7880     const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7881     const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7882     const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7883     VkDeviceAddress indirectDeviceAddress)
7884 {
7885     AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7886     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7887     vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7888 }
entry_vkGetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)7889 static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7890     VkDevice device,
7891     VkPipeline pipeline,
7892     uint32_t group,
7893     VkShaderGroupShaderKHR groupShader)
7894 {
7895     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7896     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7897     VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7898     vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7899     return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7900 }
dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)7901 static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7902     VkDevice device,
7903     VkPipeline pipeline,
7904     uint32_t group,
7905     VkShaderGroupShaderKHR groupShader)
7906 {
7907     auto resources = ResourceTracker::get();
7908     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7909     {
7910         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7911     }
7912     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7913     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7914     VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7915     vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7916     return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7917 }
entry_vkCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,uint32_t pipelineStackSize)7918 static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7919     VkCommandBuffer commandBuffer,
7920     uint32_t pipelineStackSize)
7921 {
7922     AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7923     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7924     vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7925 }
7926 #endif
7927 #ifdef VK_KHR_ray_query
7928 #endif
goldfish_vulkan_get_proc_address(const char * name)7929 void* goldfish_vulkan_get_proc_address(const char* name){
7930 #ifdef VK_VERSION_1_0
7931     if (!strcmp(name, "vkCreateInstance"))
7932     {
7933         return (void*)entry_vkCreateInstance;
7934     }
7935     if (!strcmp(name, "vkDestroyInstance"))
7936     {
7937         return (void*)entry_vkDestroyInstance;
7938     }
7939     if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7940     {
7941         return (void*)entry_vkEnumeratePhysicalDevices;
7942     }
7943     if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7944     {
7945         return (void*)entry_vkGetPhysicalDeviceFeatures;
7946     }
7947     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7948     {
7949         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7950     }
7951     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7952     {
7953         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7954     }
7955     if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7956     {
7957         return (void*)entry_vkGetPhysicalDeviceProperties;
7958     }
7959     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7960     {
7961         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7962     }
7963     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7964     {
7965         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7966     }
7967     if (!strcmp(name, "vkGetInstanceProcAddr"))
7968     {
7969         return (void*)entry_vkGetInstanceProcAddr;
7970     }
7971     if (!strcmp(name, "vkGetDeviceProcAddr"))
7972     {
7973         return (void*)entry_vkGetDeviceProcAddr;
7974     }
7975     if (!strcmp(name, "vkCreateDevice"))
7976     {
7977         return (void*)entry_vkCreateDevice;
7978     }
7979     if (!strcmp(name, "vkDestroyDevice"))
7980     {
7981         return (void*)entry_vkDestroyDevice;
7982     }
7983     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7984     {
7985         return (void*)entry_vkEnumerateInstanceExtensionProperties;
7986     }
7987     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
7988     {
7989         return (void*)entry_vkEnumerateDeviceExtensionProperties;
7990     }
7991     if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
7992     {
7993         return (void*)entry_vkEnumerateInstanceLayerProperties;
7994     }
7995     if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7996     {
7997         return (void*)entry_vkEnumerateDeviceLayerProperties;
7998     }
7999     if (!strcmp(name, "vkGetDeviceQueue"))
8000     {
8001         return (void*)entry_vkGetDeviceQueue;
8002     }
8003     if (!strcmp(name, "vkQueueSubmit"))
8004     {
8005         return (void*)entry_vkQueueSubmit;
8006     }
8007     if (!strcmp(name, "vkQueueWaitIdle"))
8008     {
8009         return (void*)entry_vkQueueWaitIdle;
8010     }
8011     if (!strcmp(name, "vkDeviceWaitIdle"))
8012     {
8013         return (void*)entry_vkDeviceWaitIdle;
8014     }
8015     if (!strcmp(name, "vkAllocateMemory"))
8016     {
8017         return (void*)entry_vkAllocateMemory;
8018     }
8019     if (!strcmp(name, "vkFreeMemory"))
8020     {
8021         return (void*)entry_vkFreeMemory;
8022     }
8023     if (!strcmp(name, "vkMapMemory"))
8024     {
8025         return (void*)entry_vkMapMemory;
8026     }
8027     if (!strcmp(name, "vkUnmapMemory"))
8028     {
8029         return (void*)entry_vkUnmapMemory;
8030     }
8031     if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8032     {
8033         return (void*)entry_vkFlushMappedMemoryRanges;
8034     }
8035     if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8036     {
8037         return (void*)entry_vkInvalidateMappedMemoryRanges;
8038     }
8039     if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8040     {
8041         return (void*)entry_vkGetDeviceMemoryCommitment;
8042     }
8043     if (!strcmp(name, "vkBindBufferMemory"))
8044     {
8045         return (void*)entry_vkBindBufferMemory;
8046     }
8047     if (!strcmp(name, "vkBindImageMemory"))
8048     {
8049         return (void*)entry_vkBindImageMemory;
8050     }
8051     if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8052     {
8053         return (void*)entry_vkGetBufferMemoryRequirements;
8054     }
8055     if (!strcmp(name, "vkGetImageMemoryRequirements"))
8056     {
8057         return (void*)entry_vkGetImageMemoryRequirements;
8058     }
8059     if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8060     {
8061         return (void*)entry_vkGetImageSparseMemoryRequirements;
8062     }
8063     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8064     {
8065         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8066     }
8067     if (!strcmp(name, "vkQueueBindSparse"))
8068     {
8069         return (void*)entry_vkQueueBindSparse;
8070     }
8071     if (!strcmp(name, "vkCreateFence"))
8072     {
8073         return (void*)entry_vkCreateFence;
8074     }
8075     if (!strcmp(name, "vkDestroyFence"))
8076     {
8077         return (void*)entry_vkDestroyFence;
8078     }
8079     if (!strcmp(name, "vkResetFences"))
8080     {
8081         return (void*)entry_vkResetFences;
8082     }
8083     if (!strcmp(name, "vkGetFenceStatus"))
8084     {
8085         return (void*)entry_vkGetFenceStatus;
8086     }
8087     if (!strcmp(name, "vkWaitForFences"))
8088     {
8089         return (void*)entry_vkWaitForFences;
8090     }
8091     if (!strcmp(name, "vkCreateSemaphore"))
8092     {
8093         return (void*)entry_vkCreateSemaphore;
8094     }
8095     if (!strcmp(name, "vkDestroySemaphore"))
8096     {
8097         return (void*)entry_vkDestroySemaphore;
8098     }
8099     if (!strcmp(name, "vkCreateEvent"))
8100     {
8101         return (void*)entry_vkCreateEvent;
8102     }
8103     if (!strcmp(name, "vkDestroyEvent"))
8104     {
8105         return (void*)entry_vkDestroyEvent;
8106     }
8107     if (!strcmp(name, "vkGetEventStatus"))
8108     {
8109         return (void*)entry_vkGetEventStatus;
8110     }
8111     if (!strcmp(name, "vkSetEvent"))
8112     {
8113         return (void*)entry_vkSetEvent;
8114     }
8115     if (!strcmp(name, "vkResetEvent"))
8116     {
8117         return (void*)entry_vkResetEvent;
8118     }
8119     if (!strcmp(name, "vkCreateQueryPool"))
8120     {
8121         return (void*)entry_vkCreateQueryPool;
8122     }
8123     if (!strcmp(name, "vkDestroyQueryPool"))
8124     {
8125         return (void*)entry_vkDestroyQueryPool;
8126     }
8127     if (!strcmp(name, "vkGetQueryPoolResults"))
8128     {
8129         return (void*)entry_vkGetQueryPoolResults;
8130     }
8131     if (!strcmp(name, "vkCreateBuffer"))
8132     {
8133         return (void*)entry_vkCreateBuffer;
8134     }
8135     if (!strcmp(name, "vkDestroyBuffer"))
8136     {
8137         return (void*)entry_vkDestroyBuffer;
8138     }
8139     if (!strcmp(name, "vkCreateBufferView"))
8140     {
8141         return (void*)entry_vkCreateBufferView;
8142     }
8143     if (!strcmp(name, "vkDestroyBufferView"))
8144     {
8145         return (void*)entry_vkDestroyBufferView;
8146     }
8147     if (!strcmp(name, "vkCreateImage"))
8148     {
8149         return (void*)entry_vkCreateImage;
8150     }
8151     if (!strcmp(name, "vkDestroyImage"))
8152     {
8153         return (void*)entry_vkDestroyImage;
8154     }
8155     if (!strcmp(name, "vkGetImageSubresourceLayout"))
8156     {
8157         return (void*)entry_vkGetImageSubresourceLayout;
8158     }
8159     if (!strcmp(name, "vkCreateImageView"))
8160     {
8161         return (void*)entry_vkCreateImageView;
8162     }
8163     if (!strcmp(name, "vkDestroyImageView"))
8164     {
8165         return (void*)entry_vkDestroyImageView;
8166     }
8167     if (!strcmp(name, "vkCreateShaderModule"))
8168     {
8169         return (void*)entry_vkCreateShaderModule;
8170     }
8171     if (!strcmp(name, "vkDestroyShaderModule"))
8172     {
8173         return (void*)entry_vkDestroyShaderModule;
8174     }
8175     if (!strcmp(name, "vkCreatePipelineCache"))
8176     {
8177         return (void*)entry_vkCreatePipelineCache;
8178     }
8179     if (!strcmp(name, "vkDestroyPipelineCache"))
8180     {
8181         return (void*)entry_vkDestroyPipelineCache;
8182     }
8183     if (!strcmp(name, "vkGetPipelineCacheData"))
8184     {
8185         return (void*)entry_vkGetPipelineCacheData;
8186     }
8187     if (!strcmp(name, "vkMergePipelineCaches"))
8188     {
8189         return (void*)entry_vkMergePipelineCaches;
8190     }
8191     if (!strcmp(name, "vkCreateGraphicsPipelines"))
8192     {
8193         return (void*)entry_vkCreateGraphicsPipelines;
8194     }
8195     if (!strcmp(name, "vkCreateComputePipelines"))
8196     {
8197         return (void*)entry_vkCreateComputePipelines;
8198     }
8199     if (!strcmp(name, "vkDestroyPipeline"))
8200     {
8201         return (void*)entry_vkDestroyPipeline;
8202     }
8203     if (!strcmp(name, "vkCreatePipelineLayout"))
8204     {
8205         return (void*)entry_vkCreatePipelineLayout;
8206     }
8207     if (!strcmp(name, "vkDestroyPipelineLayout"))
8208     {
8209         return (void*)entry_vkDestroyPipelineLayout;
8210     }
8211     if (!strcmp(name, "vkCreateSampler"))
8212     {
8213         return (void*)entry_vkCreateSampler;
8214     }
8215     if (!strcmp(name, "vkDestroySampler"))
8216     {
8217         return (void*)entry_vkDestroySampler;
8218     }
8219     if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8220     {
8221         return (void*)entry_vkCreateDescriptorSetLayout;
8222     }
8223     if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8224     {
8225         return (void*)entry_vkDestroyDescriptorSetLayout;
8226     }
8227     if (!strcmp(name, "vkCreateDescriptorPool"))
8228     {
8229         return (void*)entry_vkCreateDescriptorPool;
8230     }
8231     if (!strcmp(name, "vkDestroyDescriptorPool"))
8232     {
8233         return (void*)entry_vkDestroyDescriptorPool;
8234     }
8235     if (!strcmp(name, "vkResetDescriptorPool"))
8236     {
8237         return (void*)entry_vkResetDescriptorPool;
8238     }
8239     if (!strcmp(name, "vkAllocateDescriptorSets"))
8240     {
8241         return (void*)entry_vkAllocateDescriptorSets;
8242     }
8243     if (!strcmp(name, "vkFreeDescriptorSets"))
8244     {
8245         return (void*)entry_vkFreeDescriptorSets;
8246     }
8247     if (!strcmp(name, "vkUpdateDescriptorSets"))
8248     {
8249         return (void*)entry_vkUpdateDescriptorSets;
8250     }
8251     if (!strcmp(name, "vkCreateFramebuffer"))
8252     {
8253         return (void*)entry_vkCreateFramebuffer;
8254     }
8255     if (!strcmp(name, "vkDestroyFramebuffer"))
8256     {
8257         return (void*)entry_vkDestroyFramebuffer;
8258     }
8259     if (!strcmp(name, "vkCreateRenderPass"))
8260     {
8261         return (void*)entry_vkCreateRenderPass;
8262     }
8263     if (!strcmp(name, "vkDestroyRenderPass"))
8264     {
8265         return (void*)entry_vkDestroyRenderPass;
8266     }
8267     if (!strcmp(name, "vkGetRenderAreaGranularity"))
8268     {
8269         return (void*)entry_vkGetRenderAreaGranularity;
8270     }
8271     if (!strcmp(name, "vkCreateCommandPool"))
8272     {
8273         return (void*)entry_vkCreateCommandPool;
8274     }
8275     if (!strcmp(name, "vkDestroyCommandPool"))
8276     {
8277         return (void*)entry_vkDestroyCommandPool;
8278     }
8279     if (!strcmp(name, "vkResetCommandPool"))
8280     {
8281         return (void*)entry_vkResetCommandPool;
8282     }
8283     if (!strcmp(name, "vkAllocateCommandBuffers"))
8284     {
8285         return (void*)entry_vkAllocateCommandBuffers;
8286     }
8287     if (!strcmp(name, "vkFreeCommandBuffers"))
8288     {
8289         return (void*)entry_vkFreeCommandBuffers;
8290     }
8291     if (!strcmp(name, "vkBeginCommandBuffer"))
8292     {
8293         return (void*)entry_vkBeginCommandBuffer;
8294     }
8295     if (!strcmp(name, "vkEndCommandBuffer"))
8296     {
8297         return (void*)entry_vkEndCommandBuffer;
8298     }
8299     if (!strcmp(name, "vkResetCommandBuffer"))
8300     {
8301         return (void*)entry_vkResetCommandBuffer;
8302     }
8303     if (!strcmp(name, "vkCmdBindPipeline"))
8304     {
8305         return (void*)entry_vkCmdBindPipeline;
8306     }
8307     if (!strcmp(name, "vkCmdSetViewport"))
8308     {
8309         return (void*)entry_vkCmdSetViewport;
8310     }
8311     if (!strcmp(name, "vkCmdSetScissor"))
8312     {
8313         return (void*)entry_vkCmdSetScissor;
8314     }
8315     if (!strcmp(name, "vkCmdSetLineWidth"))
8316     {
8317         return (void*)entry_vkCmdSetLineWidth;
8318     }
8319     if (!strcmp(name, "vkCmdSetDepthBias"))
8320     {
8321         return (void*)entry_vkCmdSetDepthBias;
8322     }
8323     if (!strcmp(name, "vkCmdSetBlendConstants"))
8324     {
8325         return (void*)entry_vkCmdSetBlendConstants;
8326     }
8327     if (!strcmp(name, "vkCmdSetDepthBounds"))
8328     {
8329         return (void*)entry_vkCmdSetDepthBounds;
8330     }
8331     if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8332     {
8333         return (void*)entry_vkCmdSetStencilCompareMask;
8334     }
8335     if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8336     {
8337         return (void*)entry_vkCmdSetStencilWriteMask;
8338     }
8339     if (!strcmp(name, "vkCmdSetStencilReference"))
8340     {
8341         return (void*)entry_vkCmdSetStencilReference;
8342     }
8343     if (!strcmp(name, "vkCmdBindDescriptorSets"))
8344     {
8345         return (void*)entry_vkCmdBindDescriptorSets;
8346     }
8347     if (!strcmp(name, "vkCmdBindIndexBuffer"))
8348     {
8349         return (void*)entry_vkCmdBindIndexBuffer;
8350     }
8351     if (!strcmp(name, "vkCmdBindVertexBuffers"))
8352     {
8353         return (void*)entry_vkCmdBindVertexBuffers;
8354     }
8355     if (!strcmp(name, "vkCmdDraw"))
8356     {
8357         return (void*)entry_vkCmdDraw;
8358     }
8359     if (!strcmp(name, "vkCmdDrawIndexed"))
8360     {
8361         return (void*)entry_vkCmdDrawIndexed;
8362     }
8363     if (!strcmp(name, "vkCmdDrawIndirect"))
8364     {
8365         return (void*)entry_vkCmdDrawIndirect;
8366     }
8367     if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8368     {
8369         return (void*)entry_vkCmdDrawIndexedIndirect;
8370     }
8371     if (!strcmp(name, "vkCmdDispatch"))
8372     {
8373         return (void*)entry_vkCmdDispatch;
8374     }
8375     if (!strcmp(name, "vkCmdDispatchIndirect"))
8376     {
8377         return (void*)entry_vkCmdDispatchIndirect;
8378     }
8379     if (!strcmp(name, "vkCmdCopyBuffer"))
8380     {
8381         return (void*)entry_vkCmdCopyBuffer;
8382     }
8383     if (!strcmp(name, "vkCmdCopyImage"))
8384     {
8385         return (void*)entry_vkCmdCopyImage;
8386     }
8387     if (!strcmp(name, "vkCmdBlitImage"))
8388     {
8389         return (void*)entry_vkCmdBlitImage;
8390     }
8391     if (!strcmp(name, "vkCmdCopyBufferToImage"))
8392     {
8393         return (void*)entry_vkCmdCopyBufferToImage;
8394     }
8395     if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8396     {
8397         return (void*)entry_vkCmdCopyImageToBuffer;
8398     }
8399     if (!strcmp(name, "vkCmdUpdateBuffer"))
8400     {
8401         return (void*)entry_vkCmdUpdateBuffer;
8402     }
8403     if (!strcmp(name, "vkCmdFillBuffer"))
8404     {
8405         return (void*)entry_vkCmdFillBuffer;
8406     }
8407     if (!strcmp(name, "vkCmdClearColorImage"))
8408     {
8409         return (void*)entry_vkCmdClearColorImage;
8410     }
8411     if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8412     {
8413         return (void*)entry_vkCmdClearDepthStencilImage;
8414     }
8415     if (!strcmp(name, "vkCmdClearAttachments"))
8416     {
8417         return (void*)entry_vkCmdClearAttachments;
8418     }
8419     if (!strcmp(name, "vkCmdResolveImage"))
8420     {
8421         return (void*)entry_vkCmdResolveImage;
8422     }
8423     if (!strcmp(name, "vkCmdSetEvent"))
8424     {
8425         return (void*)entry_vkCmdSetEvent;
8426     }
8427     if (!strcmp(name, "vkCmdResetEvent"))
8428     {
8429         return (void*)entry_vkCmdResetEvent;
8430     }
8431     if (!strcmp(name, "vkCmdWaitEvents"))
8432     {
8433         return (void*)entry_vkCmdWaitEvents;
8434     }
8435     if (!strcmp(name, "vkCmdPipelineBarrier"))
8436     {
8437         return (void*)entry_vkCmdPipelineBarrier;
8438     }
8439     if (!strcmp(name, "vkCmdBeginQuery"))
8440     {
8441         return (void*)entry_vkCmdBeginQuery;
8442     }
8443     if (!strcmp(name, "vkCmdEndQuery"))
8444     {
8445         return (void*)entry_vkCmdEndQuery;
8446     }
8447     if (!strcmp(name, "vkCmdResetQueryPool"))
8448     {
8449         return (void*)entry_vkCmdResetQueryPool;
8450     }
8451     if (!strcmp(name, "vkCmdWriteTimestamp"))
8452     {
8453         return (void*)entry_vkCmdWriteTimestamp;
8454     }
8455     if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8456     {
8457         return (void*)entry_vkCmdCopyQueryPoolResults;
8458     }
8459     if (!strcmp(name, "vkCmdPushConstants"))
8460     {
8461         return (void*)entry_vkCmdPushConstants;
8462     }
8463     if (!strcmp(name, "vkCmdBeginRenderPass"))
8464     {
8465         return (void*)entry_vkCmdBeginRenderPass;
8466     }
8467     if (!strcmp(name, "vkCmdNextSubpass"))
8468     {
8469         return (void*)entry_vkCmdNextSubpass;
8470     }
8471     if (!strcmp(name, "vkCmdEndRenderPass"))
8472     {
8473         return (void*)entry_vkCmdEndRenderPass;
8474     }
8475     if (!strcmp(name, "vkCmdExecuteCommands"))
8476     {
8477         return (void*)entry_vkCmdExecuteCommands;
8478     }
8479 #endif
8480 #ifdef VK_VERSION_1_1
8481     if (!strcmp(name, "vkEnumerateInstanceVersion"))
8482     {
8483         return nullptr;
8484     }
8485     if (!strcmp(name, "vkBindBufferMemory2"))
8486     {
8487         return nullptr;
8488     }
8489     if (!strcmp(name, "vkBindImageMemory2"))
8490     {
8491         return nullptr;
8492     }
8493     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8494     {
8495         return nullptr;
8496     }
8497     if (!strcmp(name, "vkCmdSetDeviceMask"))
8498     {
8499         return nullptr;
8500     }
8501     if (!strcmp(name, "vkCmdDispatchBase"))
8502     {
8503         return nullptr;
8504     }
8505     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8506     {
8507         return nullptr;
8508     }
8509     if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8510     {
8511         return nullptr;
8512     }
8513     if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8514     {
8515         return nullptr;
8516     }
8517     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8518     {
8519         return nullptr;
8520     }
8521     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8522     {
8523         return nullptr;
8524     }
8525     if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8526     {
8527         return nullptr;
8528     }
8529     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8530     {
8531         return nullptr;
8532     }
8533     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8534     {
8535         return nullptr;
8536     }
8537     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8538     {
8539         return nullptr;
8540     }
8541     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8542     {
8543         return nullptr;
8544     }
8545     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8546     {
8547         return nullptr;
8548     }
8549     if (!strcmp(name, "vkTrimCommandPool"))
8550     {
8551         return nullptr;
8552     }
8553     if (!strcmp(name, "vkGetDeviceQueue2"))
8554     {
8555         return nullptr;
8556     }
8557     if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8558     {
8559         return nullptr;
8560     }
8561     if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8562     {
8563         return nullptr;
8564     }
8565     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8566     {
8567         return nullptr;
8568     }
8569     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8570     {
8571         return nullptr;
8572     }
8573     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8574     {
8575         return nullptr;
8576     }
8577     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8578     {
8579         return nullptr;
8580     }
8581     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8582     {
8583         return nullptr;
8584     }
8585     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8586     {
8587         return nullptr;
8588     }
8589     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8590     {
8591         return nullptr;
8592     }
8593 #endif
8594 #ifdef VK_VERSION_1_2
8595     if (!strcmp(name, "vkCmdDrawIndirectCount"))
8596     {
8597         return nullptr;
8598     }
8599     if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8600     {
8601         return nullptr;
8602     }
8603     if (!strcmp(name, "vkCreateRenderPass2"))
8604     {
8605         return nullptr;
8606     }
8607     if (!strcmp(name, "vkCmdBeginRenderPass2"))
8608     {
8609         return nullptr;
8610     }
8611     if (!strcmp(name, "vkCmdNextSubpass2"))
8612     {
8613         return nullptr;
8614     }
8615     if (!strcmp(name, "vkCmdEndRenderPass2"))
8616     {
8617         return nullptr;
8618     }
8619     if (!strcmp(name, "vkResetQueryPool"))
8620     {
8621         return nullptr;
8622     }
8623     if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8624     {
8625         return nullptr;
8626     }
8627     if (!strcmp(name, "vkWaitSemaphores"))
8628     {
8629         return nullptr;
8630     }
8631     if (!strcmp(name, "vkSignalSemaphore"))
8632     {
8633         return nullptr;
8634     }
8635     if (!strcmp(name, "vkGetBufferDeviceAddress"))
8636     {
8637         return nullptr;
8638     }
8639     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8640     {
8641         return nullptr;
8642     }
8643     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8644     {
8645         return nullptr;
8646     }
8647 #endif
8648 #ifdef VK_KHR_surface
8649     if (!strcmp(name, "vkDestroySurfaceKHR"))
8650     {
8651         return nullptr;
8652     }
8653     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8654     {
8655         return nullptr;
8656     }
8657     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8658     {
8659         return nullptr;
8660     }
8661     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8662     {
8663         return nullptr;
8664     }
8665     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8666     {
8667         return nullptr;
8668     }
8669 #endif
8670 #ifdef VK_KHR_swapchain
8671     if (!strcmp(name, "vkCreateSwapchainKHR"))
8672     {
8673         return nullptr;
8674     }
8675     if (!strcmp(name, "vkDestroySwapchainKHR"))
8676     {
8677         return nullptr;
8678     }
8679     if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8680     {
8681         return nullptr;
8682     }
8683     if (!strcmp(name, "vkAcquireNextImageKHR"))
8684     {
8685         return nullptr;
8686     }
8687     if (!strcmp(name, "vkQueuePresentKHR"))
8688     {
8689         return nullptr;
8690     }
8691     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8692     {
8693         return nullptr;
8694     }
8695     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8696     {
8697         return nullptr;
8698     }
8699     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8700     {
8701         return nullptr;
8702     }
8703     if (!strcmp(name, "vkAcquireNextImage2KHR"))
8704     {
8705         return nullptr;
8706     }
8707 #endif
8708 #ifdef VK_KHR_display
8709     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8710     {
8711         return nullptr;
8712     }
8713     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8714     {
8715         return nullptr;
8716     }
8717     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8718     {
8719         return nullptr;
8720     }
8721     if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8722     {
8723         return nullptr;
8724     }
8725     if (!strcmp(name, "vkCreateDisplayModeKHR"))
8726     {
8727         return nullptr;
8728     }
8729     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8730     {
8731         return nullptr;
8732     }
8733     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8734     {
8735         return nullptr;
8736     }
8737 #endif
8738 #ifdef VK_KHR_display_swapchain
8739     if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8740     {
8741         return nullptr;
8742     }
8743 #endif
8744 #ifdef VK_KHR_xlib_surface
8745     if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8746     {
8747         return nullptr;
8748     }
8749     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8750     {
8751         return nullptr;
8752     }
8753 #endif
8754 #ifdef VK_KHR_xcb_surface
8755     if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8756     {
8757         return nullptr;
8758     }
8759     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
8760     {
8761         return nullptr;
8762     }
8763 #endif
8764 #ifdef VK_KHR_wayland_surface
8765     if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8766     {
8767         return nullptr;
8768     }
8769     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8770     {
8771         return nullptr;
8772     }
8773 #endif
8774 #ifdef VK_KHR_android_surface
8775     if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8776     {
8777         return nullptr;
8778     }
8779 #endif
8780 #ifdef VK_KHR_win32_surface
8781     if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8782     {
8783         return nullptr;
8784     }
8785     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8786     {
8787         return nullptr;
8788     }
8789 #endif
8790 #ifdef VK_KHR_get_physical_device_properties2
8791     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8792     {
8793         return nullptr;
8794     }
8795     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8796     {
8797         return nullptr;
8798     }
8799     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8800     {
8801         return nullptr;
8802     }
8803     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8804     {
8805         return nullptr;
8806     }
8807     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8808     {
8809         return nullptr;
8810     }
8811     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8812     {
8813         return nullptr;
8814     }
8815     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8816     {
8817         return nullptr;
8818     }
8819 #endif
8820 #ifdef VK_KHR_device_group
8821     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8822     {
8823         return nullptr;
8824     }
8825     if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8826     {
8827         return nullptr;
8828     }
8829     if (!strcmp(name, "vkCmdDispatchBaseKHR"))
8830     {
8831         return nullptr;
8832     }
8833 #endif
8834 #ifdef VK_KHR_maintenance1
8835     if (!strcmp(name, "vkTrimCommandPoolKHR"))
8836     {
8837         return nullptr;
8838     }
8839 #endif
8840 #ifdef VK_KHR_device_group_creation
8841     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
8842     {
8843         return nullptr;
8844     }
8845 #endif
8846 #ifdef VK_KHR_external_memory_capabilities
8847     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8848     {
8849         return nullptr;
8850     }
8851 #endif
8852 #ifdef VK_KHR_external_memory_win32
8853     if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8854     {
8855         return nullptr;
8856     }
8857     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
8858     {
8859         return nullptr;
8860     }
8861 #endif
8862 #ifdef VK_KHR_external_memory_fd
8863     if (!strcmp(name, "vkGetMemoryFdKHR"))
8864     {
8865         return nullptr;
8866     }
8867     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
8868     {
8869         return nullptr;
8870     }
8871 #endif
8872 #ifdef VK_KHR_external_semaphore_capabilities
8873     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8874     {
8875         return nullptr;
8876     }
8877 #endif
8878 #ifdef VK_KHR_external_semaphore_win32
8879     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8880     {
8881         return nullptr;
8882     }
8883     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8884     {
8885         return nullptr;
8886     }
8887 #endif
8888 #ifdef VK_KHR_external_semaphore_fd
8889     if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8890     {
8891         return nullptr;
8892     }
8893     if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8894     {
8895         return nullptr;
8896     }
8897 #endif
8898 #ifdef VK_KHR_push_descriptor
8899     if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8900     {
8901         return nullptr;
8902     }
8903     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8904     {
8905         return nullptr;
8906     }
8907 #endif
8908 #ifdef VK_KHR_descriptor_update_template
8909     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8910     {
8911         return nullptr;
8912     }
8913     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8914     {
8915         return nullptr;
8916     }
8917     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8918     {
8919         return nullptr;
8920     }
8921 #endif
8922 #ifdef VK_KHR_create_renderpass2
8923     if (!strcmp(name, "vkCreateRenderPass2KHR"))
8924     {
8925         return nullptr;
8926     }
8927     if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8928     {
8929         return nullptr;
8930     }
8931     if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8932     {
8933         return nullptr;
8934     }
8935     if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8936     {
8937         return nullptr;
8938     }
8939 #endif
8940 #ifdef VK_KHR_shared_presentable_image
8941     if (!strcmp(name, "vkGetSwapchainStatusKHR"))
8942     {
8943         return nullptr;
8944     }
8945 #endif
8946 #ifdef VK_KHR_external_fence_capabilities
8947     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8948     {
8949         return nullptr;
8950     }
8951 #endif
8952 #ifdef VK_KHR_external_fence_win32
8953     if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8954     {
8955         return nullptr;
8956     }
8957     if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8958     {
8959         return nullptr;
8960     }
8961 #endif
8962 #ifdef VK_KHR_external_fence_fd
8963     if (!strcmp(name, "vkImportFenceFdKHR"))
8964     {
8965         return nullptr;
8966     }
8967     if (!strcmp(name, "vkGetFenceFdKHR"))
8968     {
8969         return nullptr;
8970     }
8971 #endif
8972 #ifdef VK_KHR_performance_query
8973     if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8974     {
8975         return nullptr;
8976     }
8977     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8978     {
8979         return nullptr;
8980     }
8981     if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8982     {
8983         return nullptr;
8984     }
8985     if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8986     {
8987         return nullptr;
8988     }
8989 #endif
8990 #ifdef VK_KHR_get_surface_capabilities2
8991     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
8992     {
8993         return nullptr;
8994     }
8995     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
8996     {
8997         return nullptr;
8998     }
8999 #endif
9000 #ifdef VK_KHR_get_display_properties2
9001     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9002     {
9003         return nullptr;
9004     }
9005     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9006     {
9007         return nullptr;
9008     }
9009     if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9010     {
9011         return nullptr;
9012     }
9013     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9014     {
9015         return nullptr;
9016     }
9017 #endif
9018 #ifdef VK_KHR_get_memory_requirements2
9019     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9020     {
9021         return nullptr;
9022     }
9023     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9024     {
9025         return nullptr;
9026     }
9027     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9028     {
9029         return nullptr;
9030     }
9031 #endif
9032 #ifdef VK_KHR_sampler_ycbcr_conversion
9033     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9034     {
9035         return nullptr;
9036     }
9037     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9038     {
9039         return nullptr;
9040     }
9041 #endif
9042 #ifdef VK_KHR_bind_memory2
9043     if (!strcmp(name, "vkBindBufferMemory2KHR"))
9044     {
9045         return nullptr;
9046     }
9047     if (!strcmp(name, "vkBindImageMemory2KHR"))
9048     {
9049         return nullptr;
9050     }
9051 #endif
9052 #ifdef VK_KHR_maintenance3
9053     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9054     {
9055         return nullptr;
9056     }
9057 #endif
9058 #ifdef VK_KHR_draw_indirect_count
9059     if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9060     {
9061         return nullptr;
9062     }
9063     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9064     {
9065         return nullptr;
9066     }
9067 #endif
9068 #ifdef VK_KHR_timeline_semaphore
9069     if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9070     {
9071         return nullptr;
9072     }
9073     if (!strcmp(name, "vkWaitSemaphoresKHR"))
9074     {
9075         return nullptr;
9076     }
9077     if (!strcmp(name, "vkSignalSemaphoreKHR"))
9078     {
9079         return nullptr;
9080     }
9081 #endif
9082 #ifdef VK_KHR_fragment_shading_rate
9083     if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9084     {
9085         return nullptr;
9086     }
9087     if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9088     {
9089         return nullptr;
9090     }
9091 #endif
9092 #ifdef VK_KHR_buffer_device_address
9093     if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9094     {
9095         return nullptr;
9096     }
9097     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9098     {
9099         return nullptr;
9100     }
9101     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9102     {
9103         return nullptr;
9104     }
9105 #endif
9106 #ifdef VK_KHR_deferred_host_operations
9107     if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9108     {
9109         return nullptr;
9110     }
9111     if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9112     {
9113         return nullptr;
9114     }
9115     if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9116     {
9117         return nullptr;
9118     }
9119     if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9120     {
9121         return nullptr;
9122     }
9123     if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9124     {
9125         return nullptr;
9126     }
9127 #endif
9128 #ifdef VK_KHR_pipeline_executable_properties
9129     if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9130     {
9131         return nullptr;
9132     }
9133     if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9134     {
9135         return nullptr;
9136     }
9137     if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9138     {
9139         return nullptr;
9140     }
9141 #endif
9142 #ifdef VK_KHR_copy_commands2
9143     if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9144     {
9145         return nullptr;
9146     }
9147     if (!strcmp(name, "vkCmdCopyImage2KHR"))
9148     {
9149         return nullptr;
9150     }
9151     if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9152     {
9153         return nullptr;
9154     }
9155     if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9156     {
9157         return nullptr;
9158     }
9159     if (!strcmp(name, "vkCmdBlitImage2KHR"))
9160     {
9161         return nullptr;
9162     }
9163     if (!strcmp(name, "vkCmdResolveImage2KHR"))
9164     {
9165         return nullptr;
9166     }
9167 #endif
9168 #ifdef VK_ANDROID_native_buffer
9169     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9170     {
9171         return nullptr;
9172     }
9173     if (!strcmp(name, "vkAcquireImageANDROID"))
9174     {
9175         return nullptr;
9176     }
9177     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9178     {
9179         return nullptr;
9180     }
9181 #endif
9182 #ifdef VK_EXT_debug_report
9183     if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9184     {
9185         return nullptr;
9186     }
9187     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9188     {
9189         return nullptr;
9190     }
9191     if (!strcmp(name, "vkDebugReportMessageEXT"))
9192     {
9193         return nullptr;
9194     }
9195 #endif
9196 #ifdef VK_EXT_debug_marker
9197     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9198     {
9199         return nullptr;
9200     }
9201     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9202     {
9203         return nullptr;
9204     }
9205     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9206     {
9207         return nullptr;
9208     }
9209     if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9210     {
9211         return nullptr;
9212     }
9213     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9214     {
9215         return nullptr;
9216     }
9217 #endif
9218 #ifdef VK_EXT_transform_feedback
9219     if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9220     {
9221         return nullptr;
9222     }
9223     if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9224     {
9225         return nullptr;
9226     }
9227     if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9228     {
9229         return nullptr;
9230     }
9231     if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9232     {
9233         return nullptr;
9234     }
9235     if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9236     {
9237         return nullptr;
9238     }
9239     if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9240     {
9241         return nullptr;
9242     }
9243 #endif
9244 #ifdef VK_NVX_image_view_handle
9245     if (!strcmp(name, "vkGetImageViewHandleNVX"))
9246     {
9247         return nullptr;
9248     }
9249     if (!strcmp(name, "vkGetImageViewAddressNVX"))
9250     {
9251         return nullptr;
9252     }
9253 #endif
9254 #ifdef VK_AMD_draw_indirect_count
9255     if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9256     {
9257         return nullptr;
9258     }
9259     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9260     {
9261         return nullptr;
9262     }
9263 #endif
9264 #ifdef VK_AMD_shader_info
9265     if (!strcmp(name, "vkGetShaderInfoAMD"))
9266     {
9267         return nullptr;
9268     }
9269 #endif
9270 #ifdef VK_GGP_stream_descriptor_surface
9271     if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9272     {
9273         return nullptr;
9274     }
9275 #endif
9276 #ifdef VK_NV_external_memory_capabilities
9277     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9278     {
9279         return nullptr;
9280     }
9281 #endif
9282 #ifdef VK_NV_external_memory_win32
9283     if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9284     {
9285         return nullptr;
9286     }
9287 #endif
9288 #ifdef VK_NN_vi_surface
9289     if (!strcmp(name, "vkCreateViSurfaceNN"))
9290     {
9291         return nullptr;
9292     }
9293 #endif
9294 #ifdef VK_EXT_conditional_rendering
9295     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9296     {
9297         return nullptr;
9298     }
9299     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9300     {
9301         return nullptr;
9302     }
9303 #endif
9304 #ifdef VK_NV_clip_space_w_scaling
9305     if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9306     {
9307         return nullptr;
9308     }
9309 #endif
9310 #ifdef VK_EXT_direct_mode_display
9311     if (!strcmp(name, "vkReleaseDisplayEXT"))
9312     {
9313         return nullptr;
9314     }
9315 #endif
9316 #ifdef VK_EXT_acquire_xlib_display
9317     if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9318     {
9319         return nullptr;
9320     }
9321     if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9322     {
9323         return nullptr;
9324     }
9325 #endif
9326 #ifdef VK_EXT_display_surface_counter
9327     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9328     {
9329         return nullptr;
9330     }
9331 #endif
9332 #ifdef VK_EXT_display_control
9333     if (!strcmp(name, "vkDisplayPowerControlEXT"))
9334     {
9335         return nullptr;
9336     }
9337     if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9338     {
9339         return nullptr;
9340     }
9341     if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9342     {
9343         return nullptr;
9344     }
9345     if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9346     {
9347         return nullptr;
9348     }
9349 #endif
9350 #ifdef VK_GOOGLE_display_timing
9351     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9352     {
9353         return nullptr;
9354     }
9355     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9356     {
9357         return nullptr;
9358     }
9359 #endif
9360 #ifdef VK_EXT_discard_rectangles
9361     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9362     {
9363         return nullptr;
9364     }
9365 #endif
9366 #ifdef VK_EXT_hdr_metadata
9367     if (!strcmp(name, "vkSetHdrMetadataEXT"))
9368     {
9369         return nullptr;
9370     }
9371 #endif
9372 #ifdef VK_MVK_ios_surface
9373     if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9374     {
9375         return nullptr;
9376     }
9377 #endif
9378 #ifdef VK_MVK_macos_surface
9379     if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9380     {
9381         return nullptr;
9382     }
9383 #endif
9384 #ifdef VK_MVK_moltenvk
9385     if (!strcmp(name, "vkGetMTLDeviceMVK"))
9386     {
9387         return nullptr;
9388     }
9389     if (!strcmp(name, "vkSetMTLTextureMVK"))
9390     {
9391         return nullptr;
9392     }
9393     if (!strcmp(name, "vkGetMTLTextureMVK"))
9394     {
9395         return nullptr;
9396     }
9397     if (!strcmp(name, "vkGetMTLBufferMVK"))
9398     {
9399         return nullptr;
9400     }
9401     if (!strcmp(name, "vkUseIOSurfaceMVK"))
9402     {
9403         return nullptr;
9404     }
9405     if (!strcmp(name, "vkGetIOSurfaceMVK"))
9406     {
9407         return nullptr;
9408     }
9409 #endif
9410 #ifdef VK_EXT_debug_utils
9411     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9412     {
9413         return nullptr;
9414     }
9415     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9416     {
9417         return nullptr;
9418     }
9419     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9420     {
9421         return nullptr;
9422     }
9423     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9424     {
9425         return nullptr;
9426     }
9427     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9428     {
9429         return nullptr;
9430     }
9431     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9432     {
9433         return nullptr;
9434     }
9435     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9436     {
9437         return nullptr;
9438     }
9439     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9440     {
9441         return nullptr;
9442     }
9443     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9444     {
9445         return nullptr;
9446     }
9447     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9448     {
9449         return nullptr;
9450     }
9451     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9452     {
9453         return nullptr;
9454     }
9455 #endif
9456 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
9457     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9458     {
9459         return nullptr;
9460     }
9461     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9462     {
9463         return nullptr;
9464     }
9465 #endif
9466 #ifdef VK_EXT_sample_locations
9467     if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9468     {
9469         return nullptr;
9470     }
9471     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9472     {
9473         return nullptr;
9474     }
9475 #endif
9476 #ifdef VK_EXT_image_drm_format_modifier
9477     if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9478     {
9479         return nullptr;
9480     }
9481 #endif
9482 #ifdef VK_EXT_validation_cache
9483     if (!strcmp(name, "vkCreateValidationCacheEXT"))
9484     {
9485         return nullptr;
9486     }
9487     if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9488     {
9489         return nullptr;
9490     }
9491     if (!strcmp(name, "vkMergeValidationCachesEXT"))
9492     {
9493         return nullptr;
9494     }
9495     if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9496     {
9497         return nullptr;
9498     }
9499 #endif
9500 #ifdef VK_NV_shading_rate_image
9501     if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9502     {
9503         return nullptr;
9504     }
9505     if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9506     {
9507         return nullptr;
9508     }
9509     if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9510     {
9511         return nullptr;
9512     }
9513 #endif
9514 #ifdef VK_NV_ray_tracing
9515     if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9516     {
9517         return nullptr;
9518     }
9519     if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9520     {
9521         return nullptr;
9522     }
9523     if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9524     {
9525         return nullptr;
9526     }
9527     if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9528     {
9529         return nullptr;
9530     }
9531     if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9532     {
9533         return nullptr;
9534     }
9535     if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9536     {
9537         return nullptr;
9538     }
9539     if (!strcmp(name, "vkCmdTraceRaysNV"))
9540     {
9541         return nullptr;
9542     }
9543     if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9544     {
9545         return nullptr;
9546     }
9547     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9548     {
9549         return nullptr;
9550     }
9551     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9552     {
9553         return nullptr;
9554     }
9555     if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9556     {
9557         return nullptr;
9558     }
9559     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9560     {
9561         return nullptr;
9562     }
9563     if (!strcmp(name, "vkCompileDeferredNV"))
9564     {
9565         return nullptr;
9566     }
9567 #endif
9568 #ifdef VK_EXT_external_memory_host
9569     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9570     {
9571         return nullptr;
9572     }
9573 #endif
9574 #ifdef VK_AMD_buffer_marker
9575     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9576     {
9577         return nullptr;
9578     }
9579 #endif
9580 #ifdef VK_EXT_calibrated_timestamps
9581     if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9582     {
9583         return nullptr;
9584     }
9585     if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9586     {
9587         return nullptr;
9588     }
9589 #endif
9590 #ifdef VK_NV_mesh_shader
9591     if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9592     {
9593         return nullptr;
9594     }
9595     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9596     {
9597         return nullptr;
9598     }
9599     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9600     {
9601         return nullptr;
9602     }
9603 #endif
9604 #ifdef VK_NV_scissor_exclusive
9605     if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9606     {
9607         return nullptr;
9608     }
9609 #endif
9610 #ifdef VK_NV_device_diagnostic_checkpoints
9611     if (!strcmp(name, "vkCmdSetCheckpointNV"))
9612     {
9613         return nullptr;
9614     }
9615     if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9616     {
9617         return nullptr;
9618     }
9619 #endif
9620 #ifdef VK_INTEL_performance_query
9621     if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9622     {
9623         return nullptr;
9624     }
9625     if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9626     {
9627         return nullptr;
9628     }
9629     if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9630     {
9631         return nullptr;
9632     }
9633     if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9634     {
9635         return nullptr;
9636     }
9637     if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9638     {
9639         return nullptr;
9640     }
9641     if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9642     {
9643         return nullptr;
9644     }
9645     if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9646     {
9647         return nullptr;
9648     }
9649     if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9650     {
9651         return nullptr;
9652     }
9653     if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9654     {
9655         return nullptr;
9656     }
9657 #endif
9658 #ifdef VK_AMD_display_native_hdr
9659     if (!strcmp(name, "vkSetLocalDimmingAMD"))
9660     {
9661         return nullptr;
9662     }
9663 #endif
9664 #ifdef VK_FUCHSIA_imagepipe_surface
9665     if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9666     {
9667         return nullptr;
9668     }
9669 #endif
9670 #ifdef VK_EXT_metal_surface
9671     if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
9672     {
9673         return nullptr;
9674     }
9675 #endif
9676 #ifdef VK_EXT_buffer_device_address
9677     if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9678     {
9679         return nullptr;
9680     }
9681 #endif
9682 #ifdef VK_EXT_tooling_info
9683     if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9684     {
9685         return nullptr;
9686     }
9687 #endif
9688 #ifdef VK_NV_cooperative_matrix
9689     if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9690     {
9691         return nullptr;
9692     }
9693 #endif
9694 #ifdef VK_NV_coverage_reduction_mode
9695     if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9696     {
9697         return nullptr;
9698     }
9699 #endif
9700 #ifdef VK_EXT_full_screen_exclusive
9701     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9702     {
9703         return nullptr;
9704     }
9705     if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9706     {
9707         return nullptr;
9708     }
9709     if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9710     {
9711         return nullptr;
9712     }
9713     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9714     {
9715         return nullptr;
9716     }
9717 #endif
9718 #ifdef VK_EXT_headless_surface
9719     if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9720     {
9721         return nullptr;
9722     }
9723 #endif
9724 #ifdef VK_EXT_line_rasterization
9725     if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9726     {
9727         return nullptr;
9728     }
9729 #endif
9730 #ifdef VK_EXT_host_query_reset
9731     if (!strcmp(name, "vkResetQueryPoolEXT"))
9732     {
9733         return nullptr;
9734     }
9735 #endif
9736 #ifdef VK_EXT_extended_dynamic_state
9737     if (!strcmp(name, "vkCmdSetCullModeEXT"))
9738     {
9739         return nullptr;
9740     }
9741     if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9742     {
9743         return nullptr;
9744     }
9745     if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9746     {
9747         return nullptr;
9748     }
9749     if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9750     {
9751         return nullptr;
9752     }
9753     if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9754     {
9755         return nullptr;
9756     }
9757     if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9758     {
9759         return nullptr;
9760     }
9761     if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9762     {
9763         return nullptr;
9764     }
9765     if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9766     {
9767         return nullptr;
9768     }
9769     if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9770     {
9771         return nullptr;
9772     }
9773     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9774     {
9775         return nullptr;
9776     }
9777     if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9778     {
9779         return nullptr;
9780     }
9781     if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9782     {
9783         return nullptr;
9784     }
9785 #endif
9786 #ifdef VK_NV_device_generated_commands
9787     if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9788     {
9789         return nullptr;
9790     }
9791     if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9792     {
9793         return nullptr;
9794     }
9795     if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9796     {
9797         return nullptr;
9798     }
9799     if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9800     {
9801         return nullptr;
9802     }
9803     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9804     {
9805         return nullptr;
9806     }
9807     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9808     {
9809         return nullptr;
9810     }
9811 #endif
9812 #ifdef VK_EXT_private_data
9813     if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9814     {
9815         return nullptr;
9816     }
9817     if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9818     {
9819         return nullptr;
9820     }
9821     if (!strcmp(name, "vkSetPrivateDataEXT"))
9822     {
9823         return nullptr;
9824     }
9825     if (!strcmp(name, "vkGetPrivateDataEXT"))
9826     {
9827         return nullptr;
9828     }
9829 #endif
9830 #ifdef VK_NV_fragment_shading_rate_enums
9831     if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9832     {
9833         return nullptr;
9834     }
9835 #endif
9836 #ifdef VK_EXT_directfb_surface
9837     if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9838     {
9839         return nullptr;
9840     }
9841     if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9842     {
9843         return nullptr;
9844     }
9845 #endif
9846 #ifdef VK_GOOGLE_gfxstream
9847     if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9848     {
9849         return nullptr;
9850     }
9851     if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9852     {
9853         return nullptr;
9854     }
9855     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9856     {
9857         return nullptr;
9858     }
9859     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9860     {
9861         return nullptr;
9862     }
9863     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9864     {
9865         return nullptr;
9866     }
9867     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9868     {
9869         return nullptr;
9870     }
9871     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9872     {
9873         return nullptr;
9874     }
9875     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9876     {
9877         return nullptr;
9878     }
9879     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9880     {
9881         return nullptr;
9882     }
9883     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9884     {
9885         return nullptr;
9886     }
9887     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9888     {
9889         return nullptr;
9890     }
9891     if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9892     {
9893         return nullptr;
9894     }
9895     if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9896     {
9897         return nullptr;
9898     }
9899     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9900     {
9901         return nullptr;
9902     }
9903     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9904     {
9905         return nullptr;
9906     }
9907     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9908     {
9909         return nullptr;
9910     }
9911     if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9912     {
9913         return nullptr;
9914     }
9915     if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
9916     {
9917         return nullptr;
9918     }
9919     if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
9920     {
9921         return nullptr;
9922     }
9923     if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
9924     {
9925         return nullptr;
9926     }
9927 #endif
9928 #ifdef VK_KHR_acceleration_structure
9929     if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9930     {
9931         return nullptr;
9932     }
9933     if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9934     {
9935         return nullptr;
9936     }
9937     if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9938     {
9939         return nullptr;
9940     }
9941     if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9942     {
9943         return nullptr;
9944     }
9945     if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9946     {
9947         return nullptr;
9948     }
9949     if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9950     {
9951         return nullptr;
9952     }
9953     if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9954     {
9955         return nullptr;
9956     }
9957     if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9958     {
9959         return nullptr;
9960     }
9961     if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9962     {
9963         return nullptr;
9964     }
9965     if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9966     {
9967         return nullptr;
9968     }
9969     if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9970     {
9971         return nullptr;
9972     }
9973     if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9974     {
9975         return nullptr;
9976     }
9977     if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9978     {
9979         return nullptr;
9980     }
9981     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9982     {
9983         return nullptr;
9984     }
9985     if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
9986     {
9987         return nullptr;
9988     }
9989     if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
9990     {
9991         return nullptr;
9992     }
9993 #endif
9994 #ifdef VK_KHR_ray_tracing_pipeline
9995     if (!strcmp(name, "vkCmdTraceRaysKHR"))
9996     {
9997         return nullptr;
9998     }
9999     if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
10000     {
10001         return nullptr;
10002     }
10003     if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
10004     {
10005         return nullptr;
10006     }
10007     if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
10008     {
10009         return nullptr;
10010     }
10011     if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
10012     {
10013         return nullptr;
10014     }
10015     if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
10016     {
10017         return nullptr;
10018     }
10019 #endif
10020     return nullptr;
10021 }
goldfish_vulkan_get_instance_proc_address(VkInstance instance,const char * name)10022 void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
10023     auto resources = ResourceTracker::get();
10024     bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
10025 #ifdef VK_VERSION_1_0
10026     if (!strcmp(name, "vkCreateInstance"))
10027     {
10028         return (void*)entry_vkCreateInstance;
10029     }
10030     if (!strcmp(name, "vkDestroyInstance"))
10031     {
10032         return (void*)entry_vkDestroyInstance;
10033     }
10034     if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10035     {
10036         return (void*)entry_vkEnumeratePhysicalDevices;
10037     }
10038     if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10039     {
10040         return (void*)entry_vkGetPhysicalDeviceFeatures;
10041     }
10042     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10043     {
10044         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10045     }
10046     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10047     {
10048         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10049     }
10050     if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10051     {
10052         return (void*)entry_vkGetPhysicalDeviceProperties;
10053     }
10054     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10055     {
10056         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10057     }
10058     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10059     {
10060         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10061     }
10062     if (!strcmp(name, "vkGetInstanceProcAddr"))
10063     {
10064         return (void*)entry_vkGetInstanceProcAddr;
10065     }
10066     if (!strcmp(name, "vkGetDeviceProcAddr"))
10067     {
10068         return (void*)entry_vkGetDeviceProcAddr;
10069     }
10070     if (!strcmp(name, "vkCreateDevice"))
10071     {
10072         return (void*)entry_vkCreateDevice;
10073     }
10074     if (!strcmp(name, "vkDestroyDevice"))
10075     {
10076         return (void*)entry_vkDestroyDevice;
10077     }
10078     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10079     {
10080         return (void*)entry_vkEnumerateInstanceExtensionProperties;
10081     }
10082     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10083     {
10084         return (void*)entry_vkEnumerateDeviceExtensionProperties;
10085     }
10086     if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10087     {
10088         return (void*)entry_vkEnumerateInstanceLayerProperties;
10089     }
10090     if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10091     {
10092         return (void*)entry_vkEnumerateDeviceLayerProperties;
10093     }
10094     if (!strcmp(name, "vkGetDeviceQueue"))
10095     {
10096         return (void*)entry_vkGetDeviceQueue;
10097     }
10098     if (!strcmp(name, "vkQueueSubmit"))
10099     {
10100         return (void*)entry_vkQueueSubmit;
10101     }
10102     if (!strcmp(name, "vkQueueWaitIdle"))
10103     {
10104         return (void*)entry_vkQueueWaitIdle;
10105     }
10106     if (!strcmp(name, "vkDeviceWaitIdle"))
10107     {
10108         return (void*)entry_vkDeviceWaitIdle;
10109     }
10110     if (!strcmp(name, "vkAllocateMemory"))
10111     {
10112         return (void*)entry_vkAllocateMemory;
10113     }
10114     if (!strcmp(name, "vkFreeMemory"))
10115     {
10116         return (void*)entry_vkFreeMemory;
10117     }
10118     if (!strcmp(name, "vkMapMemory"))
10119     {
10120         return (void*)entry_vkMapMemory;
10121     }
10122     if (!strcmp(name, "vkUnmapMemory"))
10123     {
10124         return (void*)entry_vkUnmapMemory;
10125     }
10126     if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10127     {
10128         return (void*)entry_vkFlushMappedMemoryRanges;
10129     }
10130     if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10131     {
10132         return (void*)entry_vkInvalidateMappedMemoryRanges;
10133     }
10134     if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10135     {
10136         return (void*)entry_vkGetDeviceMemoryCommitment;
10137     }
10138     if (!strcmp(name, "vkBindBufferMemory"))
10139     {
10140         return (void*)entry_vkBindBufferMemory;
10141     }
10142     if (!strcmp(name, "vkBindImageMemory"))
10143     {
10144         return (void*)entry_vkBindImageMemory;
10145     }
10146     if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10147     {
10148         return (void*)entry_vkGetBufferMemoryRequirements;
10149     }
10150     if (!strcmp(name, "vkGetImageMemoryRequirements"))
10151     {
10152         return (void*)entry_vkGetImageMemoryRequirements;
10153     }
10154     if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10155     {
10156         return (void*)entry_vkGetImageSparseMemoryRequirements;
10157     }
10158     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10159     {
10160         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10161     }
10162     if (!strcmp(name, "vkQueueBindSparse"))
10163     {
10164         return (void*)entry_vkQueueBindSparse;
10165     }
10166     if (!strcmp(name, "vkCreateFence"))
10167     {
10168         return (void*)entry_vkCreateFence;
10169     }
10170     if (!strcmp(name, "vkDestroyFence"))
10171     {
10172         return (void*)entry_vkDestroyFence;
10173     }
10174     if (!strcmp(name, "vkResetFences"))
10175     {
10176         return (void*)entry_vkResetFences;
10177     }
10178     if (!strcmp(name, "vkGetFenceStatus"))
10179     {
10180         return (void*)entry_vkGetFenceStatus;
10181     }
10182     if (!strcmp(name, "vkWaitForFences"))
10183     {
10184         return (void*)entry_vkWaitForFences;
10185     }
10186     if (!strcmp(name, "vkCreateSemaphore"))
10187     {
10188         return (void*)entry_vkCreateSemaphore;
10189     }
10190     if (!strcmp(name, "vkDestroySemaphore"))
10191     {
10192         return (void*)entry_vkDestroySemaphore;
10193     }
10194     if (!strcmp(name, "vkCreateEvent"))
10195     {
10196         return (void*)entry_vkCreateEvent;
10197     }
10198     if (!strcmp(name, "vkDestroyEvent"))
10199     {
10200         return (void*)entry_vkDestroyEvent;
10201     }
10202     if (!strcmp(name, "vkGetEventStatus"))
10203     {
10204         return (void*)entry_vkGetEventStatus;
10205     }
10206     if (!strcmp(name, "vkSetEvent"))
10207     {
10208         return (void*)entry_vkSetEvent;
10209     }
10210     if (!strcmp(name, "vkResetEvent"))
10211     {
10212         return (void*)entry_vkResetEvent;
10213     }
10214     if (!strcmp(name, "vkCreateQueryPool"))
10215     {
10216         return (void*)entry_vkCreateQueryPool;
10217     }
10218     if (!strcmp(name, "vkDestroyQueryPool"))
10219     {
10220         return (void*)entry_vkDestroyQueryPool;
10221     }
10222     if (!strcmp(name, "vkGetQueryPoolResults"))
10223     {
10224         return (void*)entry_vkGetQueryPoolResults;
10225     }
10226     if (!strcmp(name, "vkCreateBuffer"))
10227     {
10228         return (void*)entry_vkCreateBuffer;
10229     }
10230     if (!strcmp(name, "vkDestroyBuffer"))
10231     {
10232         return (void*)entry_vkDestroyBuffer;
10233     }
10234     if (!strcmp(name, "vkCreateBufferView"))
10235     {
10236         return (void*)entry_vkCreateBufferView;
10237     }
10238     if (!strcmp(name, "vkDestroyBufferView"))
10239     {
10240         return (void*)entry_vkDestroyBufferView;
10241     }
10242     if (!strcmp(name, "vkCreateImage"))
10243     {
10244         return (void*)entry_vkCreateImage;
10245     }
10246     if (!strcmp(name, "vkDestroyImage"))
10247     {
10248         return (void*)entry_vkDestroyImage;
10249     }
10250     if (!strcmp(name, "vkGetImageSubresourceLayout"))
10251     {
10252         return (void*)entry_vkGetImageSubresourceLayout;
10253     }
10254     if (!strcmp(name, "vkCreateImageView"))
10255     {
10256         return (void*)entry_vkCreateImageView;
10257     }
10258     if (!strcmp(name, "vkDestroyImageView"))
10259     {
10260         return (void*)entry_vkDestroyImageView;
10261     }
10262     if (!strcmp(name, "vkCreateShaderModule"))
10263     {
10264         return (void*)entry_vkCreateShaderModule;
10265     }
10266     if (!strcmp(name, "vkDestroyShaderModule"))
10267     {
10268         return (void*)entry_vkDestroyShaderModule;
10269     }
10270     if (!strcmp(name, "vkCreatePipelineCache"))
10271     {
10272         return (void*)entry_vkCreatePipelineCache;
10273     }
10274     if (!strcmp(name, "vkDestroyPipelineCache"))
10275     {
10276         return (void*)entry_vkDestroyPipelineCache;
10277     }
10278     if (!strcmp(name, "vkGetPipelineCacheData"))
10279     {
10280         return (void*)entry_vkGetPipelineCacheData;
10281     }
10282     if (!strcmp(name, "vkMergePipelineCaches"))
10283     {
10284         return (void*)entry_vkMergePipelineCaches;
10285     }
10286     if (!strcmp(name, "vkCreateGraphicsPipelines"))
10287     {
10288         return (void*)entry_vkCreateGraphicsPipelines;
10289     }
10290     if (!strcmp(name, "vkCreateComputePipelines"))
10291     {
10292         return (void*)entry_vkCreateComputePipelines;
10293     }
10294     if (!strcmp(name, "vkDestroyPipeline"))
10295     {
10296         return (void*)entry_vkDestroyPipeline;
10297     }
10298     if (!strcmp(name, "vkCreatePipelineLayout"))
10299     {
10300         return (void*)entry_vkCreatePipelineLayout;
10301     }
10302     if (!strcmp(name, "vkDestroyPipelineLayout"))
10303     {
10304         return (void*)entry_vkDestroyPipelineLayout;
10305     }
10306     if (!strcmp(name, "vkCreateSampler"))
10307     {
10308         return (void*)entry_vkCreateSampler;
10309     }
10310     if (!strcmp(name, "vkDestroySampler"))
10311     {
10312         return (void*)entry_vkDestroySampler;
10313     }
10314     if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10315     {
10316         return (void*)entry_vkCreateDescriptorSetLayout;
10317     }
10318     if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10319     {
10320         return (void*)entry_vkDestroyDescriptorSetLayout;
10321     }
10322     if (!strcmp(name, "vkCreateDescriptorPool"))
10323     {
10324         return (void*)entry_vkCreateDescriptorPool;
10325     }
10326     if (!strcmp(name, "vkDestroyDescriptorPool"))
10327     {
10328         return (void*)entry_vkDestroyDescriptorPool;
10329     }
10330     if (!strcmp(name, "vkResetDescriptorPool"))
10331     {
10332         return (void*)entry_vkResetDescriptorPool;
10333     }
10334     if (!strcmp(name, "vkAllocateDescriptorSets"))
10335     {
10336         return (void*)entry_vkAllocateDescriptorSets;
10337     }
10338     if (!strcmp(name, "vkFreeDescriptorSets"))
10339     {
10340         return (void*)entry_vkFreeDescriptorSets;
10341     }
10342     if (!strcmp(name, "vkUpdateDescriptorSets"))
10343     {
10344         return (void*)entry_vkUpdateDescriptorSets;
10345     }
10346     if (!strcmp(name, "vkCreateFramebuffer"))
10347     {
10348         return (void*)entry_vkCreateFramebuffer;
10349     }
10350     if (!strcmp(name, "vkDestroyFramebuffer"))
10351     {
10352         return (void*)entry_vkDestroyFramebuffer;
10353     }
10354     if (!strcmp(name, "vkCreateRenderPass"))
10355     {
10356         return (void*)entry_vkCreateRenderPass;
10357     }
10358     if (!strcmp(name, "vkDestroyRenderPass"))
10359     {
10360         return (void*)entry_vkDestroyRenderPass;
10361     }
10362     if (!strcmp(name, "vkGetRenderAreaGranularity"))
10363     {
10364         return (void*)entry_vkGetRenderAreaGranularity;
10365     }
10366     if (!strcmp(name, "vkCreateCommandPool"))
10367     {
10368         return (void*)entry_vkCreateCommandPool;
10369     }
10370     if (!strcmp(name, "vkDestroyCommandPool"))
10371     {
10372         return (void*)entry_vkDestroyCommandPool;
10373     }
10374     if (!strcmp(name, "vkResetCommandPool"))
10375     {
10376         return (void*)entry_vkResetCommandPool;
10377     }
10378     if (!strcmp(name, "vkAllocateCommandBuffers"))
10379     {
10380         return (void*)entry_vkAllocateCommandBuffers;
10381     }
10382     if (!strcmp(name, "vkFreeCommandBuffers"))
10383     {
10384         return (void*)entry_vkFreeCommandBuffers;
10385     }
10386     if (!strcmp(name, "vkBeginCommandBuffer"))
10387     {
10388         return (void*)entry_vkBeginCommandBuffer;
10389     }
10390     if (!strcmp(name, "vkEndCommandBuffer"))
10391     {
10392         return (void*)entry_vkEndCommandBuffer;
10393     }
10394     if (!strcmp(name, "vkResetCommandBuffer"))
10395     {
10396         return (void*)entry_vkResetCommandBuffer;
10397     }
10398     if (!strcmp(name, "vkCmdBindPipeline"))
10399     {
10400         return (void*)entry_vkCmdBindPipeline;
10401     }
10402     if (!strcmp(name, "vkCmdSetViewport"))
10403     {
10404         return (void*)entry_vkCmdSetViewport;
10405     }
10406     if (!strcmp(name, "vkCmdSetScissor"))
10407     {
10408         return (void*)entry_vkCmdSetScissor;
10409     }
10410     if (!strcmp(name, "vkCmdSetLineWidth"))
10411     {
10412         return (void*)entry_vkCmdSetLineWidth;
10413     }
10414     if (!strcmp(name, "vkCmdSetDepthBias"))
10415     {
10416         return (void*)entry_vkCmdSetDepthBias;
10417     }
10418     if (!strcmp(name, "vkCmdSetBlendConstants"))
10419     {
10420         return (void*)entry_vkCmdSetBlendConstants;
10421     }
10422     if (!strcmp(name, "vkCmdSetDepthBounds"))
10423     {
10424         return (void*)entry_vkCmdSetDepthBounds;
10425     }
10426     if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10427     {
10428         return (void*)entry_vkCmdSetStencilCompareMask;
10429     }
10430     if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10431     {
10432         return (void*)entry_vkCmdSetStencilWriteMask;
10433     }
10434     if (!strcmp(name, "vkCmdSetStencilReference"))
10435     {
10436         return (void*)entry_vkCmdSetStencilReference;
10437     }
10438     if (!strcmp(name, "vkCmdBindDescriptorSets"))
10439     {
10440         return (void*)entry_vkCmdBindDescriptorSets;
10441     }
10442     if (!strcmp(name, "vkCmdBindIndexBuffer"))
10443     {
10444         return (void*)entry_vkCmdBindIndexBuffer;
10445     }
10446     if (!strcmp(name, "vkCmdBindVertexBuffers"))
10447     {
10448         return (void*)entry_vkCmdBindVertexBuffers;
10449     }
10450     if (!strcmp(name, "vkCmdDraw"))
10451     {
10452         return (void*)entry_vkCmdDraw;
10453     }
10454     if (!strcmp(name, "vkCmdDrawIndexed"))
10455     {
10456         return (void*)entry_vkCmdDrawIndexed;
10457     }
10458     if (!strcmp(name, "vkCmdDrawIndirect"))
10459     {
10460         return (void*)entry_vkCmdDrawIndirect;
10461     }
10462     if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10463     {
10464         return (void*)entry_vkCmdDrawIndexedIndirect;
10465     }
10466     if (!strcmp(name, "vkCmdDispatch"))
10467     {
10468         return (void*)entry_vkCmdDispatch;
10469     }
10470     if (!strcmp(name, "vkCmdDispatchIndirect"))
10471     {
10472         return (void*)entry_vkCmdDispatchIndirect;
10473     }
10474     if (!strcmp(name, "vkCmdCopyBuffer"))
10475     {
10476         return (void*)entry_vkCmdCopyBuffer;
10477     }
10478     if (!strcmp(name, "vkCmdCopyImage"))
10479     {
10480         return (void*)entry_vkCmdCopyImage;
10481     }
10482     if (!strcmp(name, "vkCmdBlitImage"))
10483     {
10484         return (void*)entry_vkCmdBlitImage;
10485     }
10486     if (!strcmp(name, "vkCmdCopyBufferToImage"))
10487     {
10488         return (void*)entry_vkCmdCopyBufferToImage;
10489     }
10490     if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10491     {
10492         return (void*)entry_vkCmdCopyImageToBuffer;
10493     }
10494     if (!strcmp(name, "vkCmdUpdateBuffer"))
10495     {
10496         return (void*)entry_vkCmdUpdateBuffer;
10497     }
10498     if (!strcmp(name, "vkCmdFillBuffer"))
10499     {
10500         return (void*)entry_vkCmdFillBuffer;
10501     }
10502     if (!strcmp(name, "vkCmdClearColorImage"))
10503     {
10504         return (void*)entry_vkCmdClearColorImage;
10505     }
10506     if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10507     {
10508         return (void*)entry_vkCmdClearDepthStencilImage;
10509     }
10510     if (!strcmp(name, "vkCmdClearAttachments"))
10511     {
10512         return (void*)entry_vkCmdClearAttachments;
10513     }
10514     if (!strcmp(name, "vkCmdResolveImage"))
10515     {
10516         return (void*)entry_vkCmdResolveImage;
10517     }
10518     if (!strcmp(name, "vkCmdSetEvent"))
10519     {
10520         return (void*)entry_vkCmdSetEvent;
10521     }
10522     if (!strcmp(name, "vkCmdResetEvent"))
10523     {
10524         return (void*)entry_vkCmdResetEvent;
10525     }
10526     if (!strcmp(name, "vkCmdWaitEvents"))
10527     {
10528         return (void*)entry_vkCmdWaitEvents;
10529     }
10530     if (!strcmp(name, "vkCmdPipelineBarrier"))
10531     {
10532         return (void*)entry_vkCmdPipelineBarrier;
10533     }
10534     if (!strcmp(name, "vkCmdBeginQuery"))
10535     {
10536         return (void*)entry_vkCmdBeginQuery;
10537     }
10538     if (!strcmp(name, "vkCmdEndQuery"))
10539     {
10540         return (void*)entry_vkCmdEndQuery;
10541     }
10542     if (!strcmp(name, "vkCmdResetQueryPool"))
10543     {
10544         return (void*)entry_vkCmdResetQueryPool;
10545     }
10546     if (!strcmp(name, "vkCmdWriteTimestamp"))
10547     {
10548         return (void*)entry_vkCmdWriteTimestamp;
10549     }
10550     if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10551     {
10552         return (void*)entry_vkCmdCopyQueryPoolResults;
10553     }
10554     if (!strcmp(name, "vkCmdPushConstants"))
10555     {
10556         return (void*)entry_vkCmdPushConstants;
10557     }
10558     if (!strcmp(name, "vkCmdBeginRenderPass"))
10559     {
10560         return (void*)entry_vkCmdBeginRenderPass;
10561     }
10562     if (!strcmp(name, "vkCmdNextSubpass"))
10563     {
10564         return (void*)entry_vkCmdNextSubpass;
10565     }
10566     if (!strcmp(name, "vkCmdEndRenderPass"))
10567     {
10568         return (void*)entry_vkCmdEndRenderPass;
10569     }
10570     if (!strcmp(name, "vkCmdExecuteCommands"))
10571     {
10572         return (void*)entry_vkCmdExecuteCommands;
10573     }
10574 #endif
10575 #ifdef VK_VERSION_1_1
10576     if (!strcmp(name, "vkEnumerateInstanceVersion"))
10577     {
10578         return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10579     }
10580     if (!strcmp(name, "vkBindBufferMemory2"))
10581     {
10582         return (void*)dynCheck_entry_vkBindBufferMemory2;
10583     }
10584     if (!strcmp(name, "vkBindImageMemory2"))
10585     {
10586         return (void*)dynCheck_entry_vkBindImageMemory2;
10587     }
10588     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10589     {
10590         return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
10591     }
10592     if (!strcmp(name, "vkCmdSetDeviceMask"))
10593     {
10594         return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10595     }
10596     if (!strcmp(name, "vkCmdDispatchBase"))
10597     {
10598         return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10599     }
10600     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10601     {
10602         return nullptr;
10603     }
10604     if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10605     {
10606         return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
10607     }
10608     if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10609     {
10610         return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
10611     }
10612     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10613     {
10614         return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
10615     }
10616     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10617     {
10618         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10619     }
10620     if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10621     {
10622         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10623     }
10624     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10625     {
10626         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10627     }
10628     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10629     {
10630         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10631     }
10632     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10633     {
10634         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10635     }
10636     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10637     {
10638         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10639     }
10640     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10641     {
10642         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10643     }
10644     if (!strcmp(name, "vkTrimCommandPool"))
10645     {
10646         return (void*)dynCheck_entry_vkTrimCommandPool;
10647     }
10648     if (!strcmp(name, "vkGetDeviceQueue2"))
10649     {
10650         return (void*)dynCheck_entry_vkGetDeviceQueue2;
10651     }
10652     if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10653     {
10654         return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
10655     }
10656     if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10657     {
10658         return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
10659     }
10660     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10661     {
10662         return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
10663     }
10664     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10665     {
10666         return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
10667     }
10668     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10669     {
10670         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
10671     }
10672     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10673     {
10674         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10675     }
10676     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10677     {
10678         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10679     }
10680     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10681     {
10682         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10683     }
10684     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10685     {
10686         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
10687     }
10688 #endif
10689 #ifdef VK_VERSION_1_2
10690     if (!strcmp(name, "vkCmdDrawIndirectCount"))
10691     {
10692         bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10693         return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10694     }
10695     if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10696     {
10697         bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10698         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10699     }
10700     if (!strcmp(name, "vkCreateRenderPass2"))
10701     {
10702         return (void*)dynCheck_entry_vkCreateRenderPass2;
10703     }
10704     if (!strcmp(name, "vkCmdBeginRenderPass2"))
10705     {
10706         bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10707         return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10708     }
10709     if (!strcmp(name, "vkCmdNextSubpass2"))
10710     {
10711         bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10712         return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10713     }
10714     if (!strcmp(name, "vkCmdEndRenderPass2"))
10715     {
10716         bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10717         return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10718     }
10719     if (!strcmp(name, "vkResetQueryPool"))
10720     {
10721         return (void*)dynCheck_entry_vkResetQueryPool;
10722     }
10723     if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10724     {
10725         return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10726     }
10727     if (!strcmp(name, "vkWaitSemaphores"))
10728     {
10729         return (void*)dynCheck_entry_vkWaitSemaphores;
10730     }
10731     if (!strcmp(name, "vkSignalSemaphore"))
10732     {
10733         return (void*)dynCheck_entry_vkSignalSemaphore;
10734     }
10735     if (!strcmp(name, "vkGetBufferDeviceAddress"))
10736     {
10737         return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10738     }
10739     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10740     {
10741         return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10742     }
10743     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10744     {
10745         return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10746     }
10747 #endif
10748 #ifdef VK_KHR_surface
10749     if (!strcmp(name, "vkDestroySurfaceKHR"))
10750     {
10751         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10752         return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10753     }
10754     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10755     {
10756         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10757         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10758     }
10759     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10760     {
10761         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10762         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10763     }
10764     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10765     {
10766         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10767         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10768     }
10769     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10770     {
10771         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10772         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10773     }
10774 #endif
10775 #ifdef VK_KHR_swapchain
10776     if (!strcmp(name, "vkCreateSwapchainKHR"))
10777     {
10778         return (void*)dynCheck_entry_vkCreateSwapchainKHR;
10779     }
10780     if (!strcmp(name, "vkDestroySwapchainKHR"))
10781     {
10782         return (void*)dynCheck_entry_vkDestroySwapchainKHR;
10783     }
10784     if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10785     {
10786         return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
10787     }
10788     if (!strcmp(name, "vkAcquireNextImageKHR"))
10789     {
10790         return (void*)dynCheck_entry_vkAcquireNextImageKHR;
10791     }
10792     if (!strcmp(name, "vkQueuePresentKHR"))
10793     {
10794         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10795         return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10796     }
10797     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10798     {
10799         return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
10800     }
10801     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10802     {
10803         return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
10804     }
10805     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10806     {
10807         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10808         return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10809     }
10810     if (!strcmp(name, "vkAcquireNextImage2KHR"))
10811     {
10812         return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
10813     }
10814 #endif
10815 #ifdef VK_KHR_display
10816     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10817     {
10818         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10819         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10820     }
10821     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10822     {
10823         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10824         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10825     }
10826     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10827     {
10828         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10829         return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10830     }
10831     if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10832     {
10833         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10834         return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10835     }
10836     if (!strcmp(name, "vkCreateDisplayModeKHR"))
10837     {
10838         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10839         return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10840     }
10841     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10842     {
10843         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10844         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10845     }
10846     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10847     {
10848         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10849         return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10850     }
10851 #endif
10852 #ifdef VK_KHR_display_swapchain
10853     if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10854     {
10855         return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
10856     }
10857 #endif
10858 #ifdef VK_KHR_xlib_surface
10859     if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10860     {
10861         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10862         return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10863     }
10864     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10865     {
10866         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10867         return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10868     }
10869 #endif
10870 #ifdef VK_KHR_xcb_surface
10871     if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10872     {
10873         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10874         return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10875     }
10876     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10877     {
10878         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10879         return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10880     }
10881 #endif
10882 #ifdef VK_KHR_wayland_surface
10883     if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10884     {
10885         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10886         return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10887     }
10888     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10889     {
10890         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10891         return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10892     }
10893 #endif
10894 #ifdef VK_KHR_android_surface
10895     if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10896     {
10897         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10898         return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10899     }
10900 #endif
10901 #ifdef VK_KHR_win32_surface
10902     if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10903     {
10904         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10905         return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10906     }
10907     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10908     {
10909         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10910         return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10911     }
10912 #endif
10913 #ifdef VK_KHR_get_physical_device_properties2
10914     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10915     {
10916         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10917         return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10918     }
10919     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10920     {
10921         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10922         return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10923     }
10924     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10925     {
10926         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10927         return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10928     }
10929     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10930     {
10931         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10932         return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10933     }
10934     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10935     {
10936         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10937         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10938     }
10939     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10940     {
10941         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10942         return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10943     }
10944     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10945     {
10946         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10947         return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10948     }
10949 #endif
10950 #ifdef VK_KHR_device_group
10951     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10952     {
10953         return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
10954     }
10955     if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10956     {
10957         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10958         return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10959     }
10960     if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10961     {
10962         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10963         return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10964     }
10965 #endif
10966 #ifdef VK_KHR_maintenance1
10967     if (!strcmp(name, "vkTrimCommandPoolKHR"))
10968     {
10969         return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
10970     }
10971 #endif
10972 #ifdef VK_KHR_device_group_creation
10973     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10974     {
10975         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10976         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10977     }
10978 #endif
10979 #ifdef VK_KHR_external_memory_capabilities
10980     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10981     {
10982         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10983         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
10984     }
10985 #endif
10986 #ifdef VK_KHR_external_memory_win32
10987     if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10988     {
10989         return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
10990     }
10991     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10992     {
10993         return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
10994     }
10995 #endif
10996 #ifdef VK_KHR_external_memory_fd
10997     if (!strcmp(name, "vkGetMemoryFdKHR"))
10998     {
10999         return (void*)dynCheck_entry_vkGetMemoryFdKHR;
11000     }
11001     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
11002     {
11003         return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
11004     }
11005 #endif
11006 #ifdef VK_KHR_external_semaphore_capabilities
11007     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
11008     {
11009         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
11010         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
11011     }
11012 #endif
11013 #ifdef VK_KHR_external_semaphore_win32
11014     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
11015     {
11016         return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
11017     }
11018     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11019     {
11020         return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
11021     }
11022 #endif
11023 #ifdef VK_KHR_external_semaphore_fd
11024     if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11025     {
11026         return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
11027     }
11028     if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11029     {
11030         return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
11031     }
11032 #endif
11033 #ifdef VK_KHR_push_descriptor
11034     if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11035     {
11036         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11037         return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
11038     }
11039     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11040     {
11041         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11042         return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
11043     }
11044 #endif
11045 #ifdef VK_KHR_descriptor_update_template
11046     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11047     {
11048         return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
11049     }
11050     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11051     {
11052         return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
11053     }
11054     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11055     {
11056         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
11057     }
11058 #endif
11059 #ifdef VK_KHR_create_renderpass2
11060     if (!strcmp(name, "vkCreateRenderPass2KHR"))
11061     {
11062         return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
11063     }
11064     if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11065     {
11066         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11067         return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11068     }
11069     if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11070     {
11071         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11072         return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11073     }
11074     if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11075     {
11076         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11077         return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11078     }
11079 #endif
11080 #ifdef VK_KHR_shared_presentable_image
11081     if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11082     {
11083         return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
11084     }
11085 #endif
11086 #ifdef VK_KHR_external_fence_capabilities
11087     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11088     {
11089         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11090         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11091     }
11092 #endif
11093 #ifdef VK_KHR_external_fence_win32
11094     if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11095     {
11096         return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
11097     }
11098     if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11099     {
11100         return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
11101     }
11102 #endif
11103 #ifdef VK_KHR_external_fence_fd
11104     if (!strcmp(name, "vkImportFenceFdKHR"))
11105     {
11106         return (void*)dynCheck_entry_vkImportFenceFdKHR;
11107     }
11108     if (!strcmp(name, "vkGetFenceFdKHR"))
11109     {
11110         return (void*)dynCheck_entry_vkGetFenceFdKHR;
11111     }
11112 #endif
11113 #ifdef VK_KHR_performance_query
11114     if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11115     {
11116         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11117         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11118     }
11119     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11120     {
11121         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11122         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11123     }
11124     if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11125     {
11126         return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11127     }
11128     if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11129     {
11130         return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11131     }
11132 #endif
11133 #ifdef VK_KHR_get_surface_capabilities2
11134     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11135     {
11136         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11137         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11138     }
11139     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11140     {
11141         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11142         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11143     }
11144 #endif
11145 #ifdef VK_KHR_get_display_properties2
11146     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11147     {
11148         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11149         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11150     }
11151     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11152     {
11153         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11154         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11155     }
11156     if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11157     {
11158         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11159         return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11160     }
11161     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11162     {
11163         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11164         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11165     }
11166 #endif
11167 #ifdef VK_KHR_get_memory_requirements2
11168     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11169     {
11170         return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
11171     }
11172     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11173     {
11174         return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
11175     }
11176     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11177     {
11178         return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
11179     }
11180 #endif
11181 #ifdef VK_KHR_sampler_ycbcr_conversion
11182     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11183     {
11184         return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
11185     }
11186     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11187     {
11188         return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
11189     }
11190 #endif
11191 #ifdef VK_KHR_bind_memory2
11192     if (!strcmp(name, "vkBindBufferMemory2KHR"))
11193     {
11194         return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
11195     }
11196     if (!strcmp(name, "vkBindImageMemory2KHR"))
11197     {
11198         return (void*)dynCheck_entry_vkBindImageMemory2KHR;
11199     }
11200 #endif
11201 #ifdef VK_KHR_maintenance3
11202     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11203     {
11204         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
11205     }
11206 #endif
11207 #ifdef VK_KHR_draw_indirect_count
11208     if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11209     {
11210         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11211         return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11212     }
11213     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11214     {
11215         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11216         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11217     }
11218 #endif
11219 #ifdef VK_KHR_timeline_semaphore
11220     if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11221     {
11222         return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11223     }
11224     if (!strcmp(name, "vkWaitSemaphoresKHR"))
11225     {
11226         return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11227     }
11228     if (!strcmp(name, "vkSignalSemaphoreKHR"))
11229     {
11230         return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11231     }
11232 #endif
11233 #ifdef VK_KHR_fragment_shading_rate
11234     if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11235     {
11236         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11237         return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11238     }
11239     if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11240     {
11241         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11242         return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11243     }
11244 #endif
11245 #ifdef VK_KHR_buffer_device_address
11246     if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11247     {
11248         return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11249     }
11250     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11251     {
11252         return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11253     }
11254     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11255     {
11256         return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11257     }
11258 #endif
11259 #ifdef VK_KHR_deferred_host_operations
11260     if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11261     {
11262         return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11263     }
11264     if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11265     {
11266         return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11267     }
11268     if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11269     {
11270         return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11271     }
11272     if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11273     {
11274         return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11275     }
11276     if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11277     {
11278         return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11279     }
11280 #endif
11281 #ifdef VK_KHR_pipeline_executable_properties
11282     if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11283     {
11284         return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11285     }
11286     if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11287     {
11288         return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11289     }
11290     if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11291     {
11292         return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11293     }
11294 #endif
11295 #ifdef VK_KHR_copy_commands2
11296     if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11297     {
11298         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11299         return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11300     }
11301     if (!strcmp(name, "vkCmdCopyImage2KHR"))
11302     {
11303         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11304         return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11305     }
11306     if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11307     {
11308         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11309         return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11310     }
11311     if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11312     {
11313         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11314         return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11315     }
11316     if (!strcmp(name, "vkCmdBlitImage2KHR"))
11317     {
11318         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11319         return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11320     }
11321     if (!strcmp(name, "vkCmdResolveImage2KHR"))
11322     {
11323         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11324         return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11325     }
11326 #endif
11327 #ifdef VK_ANDROID_native_buffer
11328     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11329     {
11330         return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
11331     }
11332     if (!strcmp(name, "vkAcquireImageANDROID"))
11333     {
11334         return (void*)dynCheck_entry_vkAcquireImageANDROID;
11335     }
11336     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11337     {
11338         bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11339         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11340     }
11341 #endif
11342 #ifdef VK_EXT_debug_report
11343     if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11344     {
11345         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11346         return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11347     }
11348     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11349     {
11350         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11351         return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11352     }
11353     if (!strcmp(name, "vkDebugReportMessageEXT"))
11354     {
11355         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11356         return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11357     }
11358 #endif
11359 #ifdef VK_EXT_debug_marker
11360     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11361     {
11362         return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
11363     }
11364     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11365     {
11366         return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
11367     }
11368     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11369     {
11370         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11371         return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11372     }
11373     if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11374     {
11375         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11376         return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11377     }
11378     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11379     {
11380         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11381         return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11382     }
11383 #endif
11384 #ifdef VK_EXT_transform_feedback
11385     if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11386     {
11387         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11388         return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11389     }
11390     if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11391     {
11392         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11393         return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11394     }
11395     if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11396     {
11397         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11398         return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11399     }
11400     if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11401     {
11402         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11403         return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11404     }
11405     if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11406     {
11407         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11408         return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11409     }
11410     if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11411     {
11412         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11413         return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11414     }
11415 #endif
11416 #ifdef VK_NVX_image_view_handle
11417     if (!strcmp(name, "vkGetImageViewHandleNVX"))
11418     {
11419         return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11420     }
11421     if (!strcmp(name, "vkGetImageViewAddressNVX"))
11422     {
11423         return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11424     }
11425 #endif
11426 #ifdef VK_AMD_draw_indirect_count
11427     if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11428     {
11429         bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11430         return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11431     }
11432     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11433     {
11434         bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11435         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11436     }
11437 #endif
11438 #ifdef VK_AMD_shader_info
11439     if (!strcmp(name, "vkGetShaderInfoAMD"))
11440     {
11441         return (void*)dynCheck_entry_vkGetShaderInfoAMD;
11442     }
11443 #endif
11444 #ifdef VK_GGP_stream_descriptor_surface
11445     if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11446     {
11447         bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11448         return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11449     }
11450 #endif
11451 #ifdef VK_NV_external_memory_capabilities
11452     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11453     {
11454         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11455         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11456     }
11457 #endif
11458 #ifdef VK_NV_external_memory_win32
11459     if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11460     {
11461         return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
11462     }
11463 #endif
11464 #ifdef VK_NN_vi_surface
11465     if (!strcmp(name, "vkCreateViSurfaceNN"))
11466     {
11467         bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11468         return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11469     }
11470 #endif
11471 #ifdef VK_EXT_conditional_rendering
11472     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11473     {
11474         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11475         return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11476     }
11477     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11478     {
11479         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11480         return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11481     }
11482 #endif
11483 #ifdef VK_NV_clip_space_w_scaling
11484     if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11485     {
11486         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11487         return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11488     }
11489 #endif
11490 #ifdef VK_EXT_direct_mode_display
11491     if (!strcmp(name, "vkReleaseDisplayEXT"))
11492     {
11493         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11494         return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11495     }
11496 #endif
11497 #ifdef VK_EXT_acquire_xlib_display
11498     if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11499     {
11500         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11501         return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11502     }
11503     if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11504     {
11505         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11506         return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11507     }
11508 #endif
11509 #ifdef VK_EXT_display_surface_counter
11510     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11511     {
11512         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11513         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11514     }
11515 #endif
11516 #ifdef VK_EXT_display_control
11517     if (!strcmp(name, "vkDisplayPowerControlEXT"))
11518     {
11519         return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
11520     }
11521     if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11522     {
11523         return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
11524     }
11525     if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11526     {
11527         return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
11528     }
11529     if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11530     {
11531         return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
11532     }
11533 #endif
11534 #ifdef VK_GOOGLE_display_timing
11535     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11536     {
11537         return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
11538     }
11539     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11540     {
11541         return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
11542     }
11543 #endif
11544 #ifdef VK_EXT_discard_rectangles
11545     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11546     {
11547         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11548         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11549     }
11550 #endif
11551 #ifdef VK_EXT_hdr_metadata
11552     if (!strcmp(name, "vkSetHdrMetadataEXT"))
11553     {
11554         return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
11555     }
11556 #endif
11557 #ifdef VK_MVK_ios_surface
11558     if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11559     {
11560         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11561         return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11562     }
11563 #endif
11564 #ifdef VK_MVK_macos_surface
11565     if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11566     {
11567         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11568         return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11569     }
11570 #endif
11571 #ifdef VK_MVK_moltenvk
11572     if (!strcmp(name, "vkGetMTLDeviceMVK"))
11573     {
11574         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11575         return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11576     }
11577     if (!strcmp(name, "vkSetMTLTextureMVK"))
11578     {
11579         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11580         return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11581     }
11582     if (!strcmp(name, "vkGetMTLTextureMVK"))
11583     {
11584         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11585         return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11586     }
11587     if (!strcmp(name, "vkGetMTLBufferMVK"))
11588     {
11589         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11590         return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11591     }
11592     if (!strcmp(name, "vkUseIOSurfaceMVK"))
11593     {
11594         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11595         return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11596     }
11597     if (!strcmp(name, "vkGetIOSurfaceMVK"))
11598     {
11599         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11600         return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11601     }
11602 #endif
11603 #ifdef VK_EXT_debug_utils
11604     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11605     {
11606         return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
11607     }
11608     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11609     {
11610         return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
11611     }
11612     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11613     {
11614         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11615         return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11616     }
11617     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11618     {
11619         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11620         return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11621     }
11622     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11623     {
11624         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11625         return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11626     }
11627     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11628     {
11629         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11630         return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11631     }
11632     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11633     {
11634         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11635         return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11636     }
11637     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11638     {
11639         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11640         return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11641     }
11642     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11643     {
11644         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11645         return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11646     }
11647     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11648     {
11649         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11650         return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11651     }
11652     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11653     {
11654         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11655         return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11656     }
11657 #endif
11658 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
11659     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11660     {
11661         return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
11662     }
11663     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11664     {
11665         return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
11666     }
11667 #endif
11668 #ifdef VK_EXT_sample_locations
11669     if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11670     {
11671         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11672         return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11673     }
11674     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11675     {
11676         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11677         return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11678     }
11679 #endif
11680 #ifdef VK_EXT_image_drm_format_modifier
11681     if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11682     {
11683         return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11684     }
11685 #endif
11686 #ifdef VK_EXT_validation_cache
11687     if (!strcmp(name, "vkCreateValidationCacheEXT"))
11688     {
11689         return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
11690     }
11691     if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11692     {
11693         return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
11694     }
11695     if (!strcmp(name, "vkMergeValidationCachesEXT"))
11696     {
11697         return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
11698     }
11699     if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11700     {
11701         return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
11702     }
11703 #endif
11704 #ifdef VK_NV_shading_rate_image
11705     if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11706     {
11707         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11708         return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11709     }
11710     if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11711     {
11712         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11713         return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11714     }
11715     if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11716     {
11717         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11718         return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11719     }
11720 #endif
11721 #ifdef VK_NV_ray_tracing
11722     if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11723     {
11724         return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11725     }
11726     if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11727     {
11728         return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11729     }
11730     if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11731     {
11732         return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11733     }
11734     if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11735     {
11736         return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11737     }
11738     if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11739     {
11740         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11741         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11742     }
11743     if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11744     {
11745         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11746         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11747     }
11748     if (!strcmp(name, "vkCmdTraceRaysNV"))
11749     {
11750         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11751         return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11752     }
11753     if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11754     {
11755         return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11756     }
11757     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11758     {
11759         return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11760     }
11761     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11762     {
11763         return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11764     }
11765     if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11766     {
11767         return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11768     }
11769     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11770     {
11771         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11772         return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11773     }
11774     if (!strcmp(name, "vkCompileDeferredNV"))
11775     {
11776         return (void*)dynCheck_entry_vkCompileDeferredNV;
11777     }
11778 #endif
11779 #ifdef VK_EXT_external_memory_host
11780     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11781     {
11782         return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
11783     }
11784 #endif
11785 #ifdef VK_AMD_buffer_marker
11786     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11787     {
11788         bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11789         return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11790     }
11791 #endif
11792 #ifdef VK_EXT_calibrated_timestamps
11793     if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11794     {
11795         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11796         return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11797     }
11798     if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11799     {
11800         return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11801     }
11802 #endif
11803 #ifdef VK_NV_mesh_shader
11804     if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11805     {
11806         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11807         return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11808     }
11809     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11810     {
11811         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11812         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11813     }
11814     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11815     {
11816         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11817         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11818     }
11819 #endif
11820 #ifdef VK_NV_scissor_exclusive
11821     if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11822     {
11823         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11824         return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11825     }
11826 #endif
11827 #ifdef VK_NV_device_diagnostic_checkpoints
11828     if (!strcmp(name, "vkCmdSetCheckpointNV"))
11829     {
11830         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11831         return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11832     }
11833     if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11834     {
11835         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11836         return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11837     }
11838 #endif
11839 #ifdef VK_INTEL_performance_query
11840     if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
11841     {
11842         return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11843     }
11844     if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11845     {
11846         return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11847     }
11848     if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11849     {
11850         bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11851         return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11852     }
11853     if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11854     {
11855         bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11856         return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11857     }
11858     if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11859     {
11860         bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11861         return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11862     }
11863     if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11864     {
11865         return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11866     }
11867     if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11868     {
11869         return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11870     }
11871     if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11872     {
11873         bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11874         return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11875     }
11876     if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11877     {
11878         return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11879     }
11880 #endif
11881 #ifdef VK_AMD_display_native_hdr
11882     if (!strcmp(name, "vkSetLocalDimmingAMD"))
11883     {
11884         return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11885     }
11886 #endif
11887 #ifdef VK_FUCHSIA_imagepipe_surface
11888     if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11889     {
11890         bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11891         return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11892     }
11893 #endif
11894 #ifdef VK_EXT_metal_surface
11895     if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11896     {
11897         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11898         return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
11899     }
11900 #endif
11901 #ifdef VK_EXT_buffer_device_address
11902     if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11903     {
11904         return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11905     }
11906 #endif
11907 #ifdef VK_EXT_tooling_info
11908     if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11909     {
11910         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11911         return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11912     }
11913 #endif
11914 #ifdef VK_NV_cooperative_matrix
11915     if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11916     {
11917         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11918         return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11919     }
11920 #endif
11921 #ifdef VK_NV_coverage_reduction_mode
11922     if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11923     {
11924         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11925         return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11926     }
11927 #endif
11928 #ifdef VK_EXT_full_screen_exclusive
11929     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11930     {
11931         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11932         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11933     }
11934     if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11935     {
11936         return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11937     }
11938     if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11939     {
11940         return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11941     }
11942     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11943     {
11944         return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11945     }
11946 #endif
11947 #ifdef VK_EXT_headless_surface
11948     if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11949     {
11950         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11951         return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11952     }
11953 #endif
11954 #ifdef VK_EXT_line_rasterization
11955     if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11956     {
11957         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11958         return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11959     }
11960 #endif
11961 #ifdef VK_EXT_host_query_reset
11962     if (!strcmp(name, "vkResetQueryPoolEXT"))
11963     {
11964         return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11965     }
11966 #endif
11967 #ifdef VK_EXT_extended_dynamic_state
11968     if (!strcmp(name, "vkCmdSetCullModeEXT"))
11969     {
11970         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11971         return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11972     }
11973     if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11974     {
11975         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11976         return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11977     }
11978     if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11979     {
11980         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11981         return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11982     }
11983     if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11984     {
11985         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11986         return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
11987     }
11988     if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
11989     {
11990         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11991         return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
11992     }
11993     if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
11994     {
11995         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11996         return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
11997     }
11998     if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
11999     {
12000         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12001         return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
12002     }
12003     if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
12004     {
12005         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12006         return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
12007     }
12008     if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12009     {
12010         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12011         return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
12012     }
12013     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12014     {
12015         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12016         return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
12017     }
12018     if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12019     {
12020         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12021         return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
12022     }
12023     if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12024     {
12025         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12026         return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
12027     }
12028 #endif
12029 #ifdef VK_NV_device_generated_commands
12030     if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12031     {
12032         return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
12033     }
12034     if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12035     {
12036         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12037         return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
12038     }
12039     if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12040     {
12041         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12042         return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12043     }
12044     if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12045     {
12046         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12047         return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12048     }
12049     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12050     {
12051         return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12052     }
12053     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12054     {
12055         return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12056     }
12057 #endif
12058 #ifdef VK_EXT_private_data
12059     if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12060     {
12061         return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12062     }
12063     if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12064     {
12065         return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12066     }
12067     if (!strcmp(name, "vkSetPrivateDataEXT"))
12068     {
12069         return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12070     }
12071     if (!strcmp(name, "vkGetPrivateDataEXT"))
12072     {
12073         return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12074     }
12075 #endif
12076 #ifdef VK_NV_fragment_shading_rate_enums
12077     if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12078     {
12079         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12080         return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12081     }
12082 #endif
12083 #ifdef VK_EXT_directfb_surface
12084     if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12085     {
12086         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12087         return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12088     }
12089     if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12090     {
12091         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12092         return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12093     }
12094 #endif
12095 #ifdef VK_GOOGLE_gfxstream
12096     if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
12097     {
12098         return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
12099     }
12100     if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
12101     {
12102         return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
12103     }
12104     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12105     {
12106         return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12107     }
12108     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12109     {
12110         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
12111     }
12112     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12113     {
12114         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12115         return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12116     }
12117     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12118     {
12119         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12120         return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12121     }
12122     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12123     {
12124         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12125         return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12126     }
12127     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12128     {
12129         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12130         return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12131     }
12132     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12133     {
12134         return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
12135     }
12136     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12137     {
12138         return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
12139     }
12140     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12141     {
12142         return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12143     }
12144     if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12145     {
12146         return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12147     }
12148     if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12149     {
12150         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12151         return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12152     }
12153     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12154     {
12155         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12156         return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12157     }
12158     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12159     {
12160         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12161         return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12162     }
12163     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12164     {
12165         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12166         return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12167     }
12168     if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12169     {
12170         return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12171     }
12172     if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12173     {
12174         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12175         return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12176     }
12177     if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
12178     {
12179         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12180         return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
12181     }
12182     if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
12183     {
12184         return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
12185     }
12186 #endif
12187 #ifdef VK_KHR_acceleration_structure
12188     if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12189     {
12190         return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12191     }
12192     if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12193     {
12194         return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12195     }
12196     if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12197     {
12198         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12199         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12200     }
12201     if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12202     {
12203         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12204         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12205     }
12206     if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12207     {
12208         return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12209     }
12210     if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12211     {
12212         return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12213     }
12214     if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12215     {
12216         return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12217     }
12218     if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12219     {
12220         return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12221     }
12222     if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12223     {
12224         return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12225     }
12226     if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12227     {
12228         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12229         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12230     }
12231     if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12232     {
12233         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12234         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12235     }
12236     if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12237     {
12238         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12239         return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12240     }
12241     if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12242     {
12243         return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12244     }
12245     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12246     {
12247         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12248         return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12249     }
12250     if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12251     {
12252         return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12253     }
12254     if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12255     {
12256         return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12257     }
12258 #endif
12259 #ifdef VK_KHR_ray_tracing_pipeline
12260     if (!strcmp(name, "vkCmdTraceRaysKHR"))
12261     {
12262         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12263         return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12264     }
12265     if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12266     {
12267         return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12268     }
12269     if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12270     {
12271         return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12272     }
12273     if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12274     {
12275         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12276         return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12277     }
12278     if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12279     {
12280         return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12281     }
12282     if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12283     {
12284         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12285         return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12286     }
12287 #endif
12288     return nullptr;
12289 }
goldfish_vulkan_get_device_proc_address(VkDevice device,const char * name)12290 void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12291     auto resources = ResourceTracker::get();
12292     bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12293 #ifdef VK_VERSION_1_0
12294     if (!strcmp(name, "vkCreateInstance"))
12295     {
12296         return (void*)entry_vkCreateInstance;
12297     }
12298     if (!strcmp(name, "vkDestroyInstance"))
12299     {
12300         return (void*)entry_vkDestroyInstance;
12301     }
12302     if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12303     {
12304         return (void*)entry_vkEnumeratePhysicalDevices;
12305     }
12306     if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12307     {
12308         return (void*)entry_vkGetPhysicalDeviceFeatures;
12309     }
12310     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12311     {
12312         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12313     }
12314     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12315     {
12316         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12317     }
12318     if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12319     {
12320         return (void*)entry_vkGetPhysicalDeviceProperties;
12321     }
12322     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12323     {
12324         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12325     }
12326     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12327     {
12328         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12329     }
12330     if (!strcmp(name, "vkGetInstanceProcAddr"))
12331     {
12332         return (void*)entry_vkGetInstanceProcAddr;
12333     }
12334     if (!strcmp(name, "vkGetDeviceProcAddr"))
12335     {
12336         return (void*)entry_vkGetDeviceProcAddr;
12337     }
12338     if (!strcmp(name, "vkCreateDevice"))
12339     {
12340         return (void*)entry_vkCreateDevice;
12341     }
12342     if (!strcmp(name, "vkDestroyDevice"))
12343     {
12344         return (void*)entry_vkDestroyDevice;
12345     }
12346     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12347     {
12348         return (void*)entry_vkEnumerateInstanceExtensionProperties;
12349     }
12350     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12351     {
12352         return (void*)entry_vkEnumerateDeviceExtensionProperties;
12353     }
12354     if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12355     {
12356         return (void*)entry_vkEnumerateInstanceLayerProperties;
12357     }
12358     if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12359     {
12360         return (void*)entry_vkEnumerateDeviceLayerProperties;
12361     }
12362     if (!strcmp(name, "vkGetDeviceQueue"))
12363     {
12364         return (void*)entry_vkGetDeviceQueue;
12365     }
12366     if (!strcmp(name, "vkQueueSubmit"))
12367     {
12368         return (void*)entry_vkQueueSubmit;
12369     }
12370     if (!strcmp(name, "vkQueueWaitIdle"))
12371     {
12372         return (void*)entry_vkQueueWaitIdle;
12373     }
12374     if (!strcmp(name, "vkDeviceWaitIdle"))
12375     {
12376         return (void*)entry_vkDeviceWaitIdle;
12377     }
12378     if (!strcmp(name, "vkAllocateMemory"))
12379     {
12380         return (void*)entry_vkAllocateMemory;
12381     }
12382     if (!strcmp(name, "vkFreeMemory"))
12383     {
12384         return (void*)entry_vkFreeMemory;
12385     }
12386     if (!strcmp(name, "vkMapMemory"))
12387     {
12388         return (void*)entry_vkMapMemory;
12389     }
12390     if (!strcmp(name, "vkUnmapMemory"))
12391     {
12392         return (void*)entry_vkUnmapMemory;
12393     }
12394     if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12395     {
12396         return (void*)entry_vkFlushMappedMemoryRanges;
12397     }
12398     if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12399     {
12400         return (void*)entry_vkInvalidateMappedMemoryRanges;
12401     }
12402     if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12403     {
12404         return (void*)entry_vkGetDeviceMemoryCommitment;
12405     }
12406     if (!strcmp(name, "vkBindBufferMemory"))
12407     {
12408         return (void*)entry_vkBindBufferMemory;
12409     }
12410     if (!strcmp(name, "vkBindImageMemory"))
12411     {
12412         return (void*)entry_vkBindImageMemory;
12413     }
12414     if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12415     {
12416         return (void*)entry_vkGetBufferMemoryRequirements;
12417     }
12418     if (!strcmp(name, "vkGetImageMemoryRequirements"))
12419     {
12420         return (void*)entry_vkGetImageMemoryRequirements;
12421     }
12422     if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12423     {
12424         return (void*)entry_vkGetImageSparseMemoryRequirements;
12425     }
12426     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12427     {
12428         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12429     }
12430     if (!strcmp(name, "vkQueueBindSparse"))
12431     {
12432         return (void*)entry_vkQueueBindSparse;
12433     }
12434     if (!strcmp(name, "vkCreateFence"))
12435     {
12436         return (void*)entry_vkCreateFence;
12437     }
12438     if (!strcmp(name, "vkDestroyFence"))
12439     {
12440         return (void*)entry_vkDestroyFence;
12441     }
12442     if (!strcmp(name, "vkResetFences"))
12443     {
12444         return (void*)entry_vkResetFences;
12445     }
12446     if (!strcmp(name, "vkGetFenceStatus"))
12447     {
12448         return (void*)entry_vkGetFenceStatus;
12449     }
12450     if (!strcmp(name, "vkWaitForFences"))
12451     {
12452         return (void*)entry_vkWaitForFences;
12453     }
12454     if (!strcmp(name, "vkCreateSemaphore"))
12455     {
12456         return (void*)entry_vkCreateSemaphore;
12457     }
12458     if (!strcmp(name, "vkDestroySemaphore"))
12459     {
12460         return (void*)entry_vkDestroySemaphore;
12461     }
12462     if (!strcmp(name, "vkCreateEvent"))
12463     {
12464         return (void*)entry_vkCreateEvent;
12465     }
12466     if (!strcmp(name, "vkDestroyEvent"))
12467     {
12468         return (void*)entry_vkDestroyEvent;
12469     }
12470     if (!strcmp(name, "vkGetEventStatus"))
12471     {
12472         return (void*)entry_vkGetEventStatus;
12473     }
12474     if (!strcmp(name, "vkSetEvent"))
12475     {
12476         return (void*)entry_vkSetEvent;
12477     }
12478     if (!strcmp(name, "vkResetEvent"))
12479     {
12480         return (void*)entry_vkResetEvent;
12481     }
12482     if (!strcmp(name, "vkCreateQueryPool"))
12483     {
12484         return (void*)entry_vkCreateQueryPool;
12485     }
12486     if (!strcmp(name, "vkDestroyQueryPool"))
12487     {
12488         return (void*)entry_vkDestroyQueryPool;
12489     }
12490     if (!strcmp(name, "vkGetQueryPoolResults"))
12491     {
12492         return (void*)entry_vkGetQueryPoolResults;
12493     }
12494     if (!strcmp(name, "vkCreateBuffer"))
12495     {
12496         return (void*)entry_vkCreateBuffer;
12497     }
12498     if (!strcmp(name, "vkDestroyBuffer"))
12499     {
12500         return (void*)entry_vkDestroyBuffer;
12501     }
12502     if (!strcmp(name, "vkCreateBufferView"))
12503     {
12504         return (void*)entry_vkCreateBufferView;
12505     }
12506     if (!strcmp(name, "vkDestroyBufferView"))
12507     {
12508         return (void*)entry_vkDestroyBufferView;
12509     }
12510     if (!strcmp(name, "vkCreateImage"))
12511     {
12512         return (void*)entry_vkCreateImage;
12513     }
12514     if (!strcmp(name, "vkDestroyImage"))
12515     {
12516         return (void*)entry_vkDestroyImage;
12517     }
12518     if (!strcmp(name, "vkGetImageSubresourceLayout"))
12519     {
12520         return (void*)entry_vkGetImageSubresourceLayout;
12521     }
12522     if (!strcmp(name, "vkCreateImageView"))
12523     {
12524         return (void*)entry_vkCreateImageView;
12525     }
12526     if (!strcmp(name, "vkDestroyImageView"))
12527     {
12528         return (void*)entry_vkDestroyImageView;
12529     }
12530     if (!strcmp(name, "vkCreateShaderModule"))
12531     {
12532         return (void*)entry_vkCreateShaderModule;
12533     }
12534     if (!strcmp(name, "vkDestroyShaderModule"))
12535     {
12536         return (void*)entry_vkDestroyShaderModule;
12537     }
12538     if (!strcmp(name, "vkCreatePipelineCache"))
12539     {
12540         return (void*)entry_vkCreatePipelineCache;
12541     }
12542     if (!strcmp(name, "vkDestroyPipelineCache"))
12543     {
12544         return (void*)entry_vkDestroyPipelineCache;
12545     }
12546     if (!strcmp(name, "vkGetPipelineCacheData"))
12547     {
12548         return (void*)entry_vkGetPipelineCacheData;
12549     }
12550     if (!strcmp(name, "vkMergePipelineCaches"))
12551     {
12552         return (void*)entry_vkMergePipelineCaches;
12553     }
12554     if (!strcmp(name, "vkCreateGraphicsPipelines"))
12555     {
12556         return (void*)entry_vkCreateGraphicsPipelines;
12557     }
12558     if (!strcmp(name, "vkCreateComputePipelines"))
12559     {
12560         return (void*)entry_vkCreateComputePipelines;
12561     }
12562     if (!strcmp(name, "vkDestroyPipeline"))
12563     {
12564         return (void*)entry_vkDestroyPipeline;
12565     }
12566     if (!strcmp(name, "vkCreatePipelineLayout"))
12567     {
12568         return (void*)entry_vkCreatePipelineLayout;
12569     }
12570     if (!strcmp(name, "vkDestroyPipelineLayout"))
12571     {
12572         return (void*)entry_vkDestroyPipelineLayout;
12573     }
12574     if (!strcmp(name, "vkCreateSampler"))
12575     {
12576         return (void*)entry_vkCreateSampler;
12577     }
12578     if (!strcmp(name, "vkDestroySampler"))
12579     {
12580         return (void*)entry_vkDestroySampler;
12581     }
12582     if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12583     {
12584         return (void*)entry_vkCreateDescriptorSetLayout;
12585     }
12586     if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12587     {
12588         return (void*)entry_vkDestroyDescriptorSetLayout;
12589     }
12590     if (!strcmp(name, "vkCreateDescriptorPool"))
12591     {
12592         return (void*)entry_vkCreateDescriptorPool;
12593     }
12594     if (!strcmp(name, "vkDestroyDescriptorPool"))
12595     {
12596         return (void*)entry_vkDestroyDescriptorPool;
12597     }
12598     if (!strcmp(name, "vkResetDescriptorPool"))
12599     {
12600         return (void*)entry_vkResetDescriptorPool;
12601     }
12602     if (!strcmp(name, "vkAllocateDescriptorSets"))
12603     {
12604         return (void*)entry_vkAllocateDescriptorSets;
12605     }
12606     if (!strcmp(name, "vkFreeDescriptorSets"))
12607     {
12608         return (void*)entry_vkFreeDescriptorSets;
12609     }
12610     if (!strcmp(name, "vkUpdateDescriptorSets"))
12611     {
12612         return (void*)entry_vkUpdateDescriptorSets;
12613     }
12614     if (!strcmp(name, "vkCreateFramebuffer"))
12615     {
12616         return (void*)entry_vkCreateFramebuffer;
12617     }
12618     if (!strcmp(name, "vkDestroyFramebuffer"))
12619     {
12620         return (void*)entry_vkDestroyFramebuffer;
12621     }
12622     if (!strcmp(name, "vkCreateRenderPass"))
12623     {
12624         return (void*)entry_vkCreateRenderPass;
12625     }
12626     if (!strcmp(name, "vkDestroyRenderPass"))
12627     {
12628         return (void*)entry_vkDestroyRenderPass;
12629     }
12630     if (!strcmp(name, "vkGetRenderAreaGranularity"))
12631     {
12632         return (void*)entry_vkGetRenderAreaGranularity;
12633     }
12634     if (!strcmp(name, "vkCreateCommandPool"))
12635     {
12636         return (void*)entry_vkCreateCommandPool;
12637     }
12638     if (!strcmp(name, "vkDestroyCommandPool"))
12639     {
12640         return (void*)entry_vkDestroyCommandPool;
12641     }
12642     if (!strcmp(name, "vkResetCommandPool"))
12643     {
12644         return (void*)entry_vkResetCommandPool;
12645     }
12646     if (!strcmp(name, "vkAllocateCommandBuffers"))
12647     {
12648         return (void*)entry_vkAllocateCommandBuffers;
12649     }
12650     if (!strcmp(name, "vkFreeCommandBuffers"))
12651     {
12652         return (void*)entry_vkFreeCommandBuffers;
12653     }
12654     if (!strcmp(name, "vkBeginCommandBuffer"))
12655     {
12656         return (void*)entry_vkBeginCommandBuffer;
12657     }
12658     if (!strcmp(name, "vkEndCommandBuffer"))
12659     {
12660         return (void*)entry_vkEndCommandBuffer;
12661     }
12662     if (!strcmp(name, "vkResetCommandBuffer"))
12663     {
12664         return (void*)entry_vkResetCommandBuffer;
12665     }
12666     if (!strcmp(name, "vkCmdBindPipeline"))
12667     {
12668         return (void*)entry_vkCmdBindPipeline;
12669     }
12670     if (!strcmp(name, "vkCmdSetViewport"))
12671     {
12672         return (void*)entry_vkCmdSetViewport;
12673     }
12674     if (!strcmp(name, "vkCmdSetScissor"))
12675     {
12676         return (void*)entry_vkCmdSetScissor;
12677     }
12678     if (!strcmp(name, "vkCmdSetLineWidth"))
12679     {
12680         return (void*)entry_vkCmdSetLineWidth;
12681     }
12682     if (!strcmp(name, "vkCmdSetDepthBias"))
12683     {
12684         return (void*)entry_vkCmdSetDepthBias;
12685     }
12686     if (!strcmp(name, "vkCmdSetBlendConstants"))
12687     {
12688         return (void*)entry_vkCmdSetBlendConstants;
12689     }
12690     if (!strcmp(name, "vkCmdSetDepthBounds"))
12691     {
12692         return (void*)entry_vkCmdSetDepthBounds;
12693     }
12694     if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12695     {
12696         return (void*)entry_vkCmdSetStencilCompareMask;
12697     }
12698     if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12699     {
12700         return (void*)entry_vkCmdSetStencilWriteMask;
12701     }
12702     if (!strcmp(name, "vkCmdSetStencilReference"))
12703     {
12704         return (void*)entry_vkCmdSetStencilReference;
12705     }
12706     if (!strcmp(name, "vkCmdBindDescriptorSets"))
12707     {
12708         return (void*)entry_vkCmdBindDescriptorSets;
12709     }
12710     if (!strcmp(name, "vkCmdBindIndexBuffer"))
12711     {
12712         return (void*)entry_vkCmdBindIndexBuffer;
12713     }
12714     if (!strcmp(name, "vkCmdBindVertexBuffers"))
12715     {
12716         return (void*)entry_vkCmdBindVertexBuffers;
12717     }
12718     if (!strcmp(name, "vkCmdDraw"))
12719     {
12720         return (void*)entry_vkCmdDraw;
12721     }
12722     if (!strcmp(name, "vkCmdDrawIndexed"))
12723     {
12724         return (void*)entry_vkCmdDrawIndexed;
12725     }
12726     if (!strcmp(name, "vkCmdDrawIndirect"))
12727     {
12728         return (void*)entry_vkCmdDrawIndirect;
12729     }
12730     if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12731     {
12732         return (void*)entry_vkCmdDrawIndexedIndirect;
12733     }
12734     if (!strcmp(name, "vkCmdDispatch"))
12735     {
12736         return (void*)entry_vkCmdDispatch;
12737     }
12738     if (!strcmp(name, "vkCmdDispatchIndirect"))
12739     {
12740         return (void*)entry_vkCmdDispatchIndirect;
12741     }
12742     if (!strcmp(name, "vkCmdCopyBuffer"))
12743     {
12744         return (void*)entry_vkCmdCopyBuffer;
12745     }
12746     if (!strcmp(name, "vkCmdCopyImage"))
12747     {
12748         return (void*)entry_vkCmdCopyImage;
12749     }
12750     if (!strcmp(name, "vkCmdBlitImage"))
12751     {
12752         return (void*)entry_vkCmdBlitImage;
12753     }
12754     if (!strcmp(name, "vkCmdCopyBufferToImage"))
12755     {
12756         return (void*)entry_vkCmdCopyBufferToImage;
12757     }
12758     if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12759     {
12760         return (void*)entry_vkCmdCopyImageToBuffer;
12761     }
12762     if (!strcmp(name, "vkCmdUpdateBuffer"))
12763     {
12764         return (void*)entry_vkCmdUpdateBuffer;
12765     }
12766     if (!strcmp(name, "vkCmdFillBuffer"))
12767     {
12768         return (void*)entry_vkCmdFillBuffer;
12769     }
12770     if (!strcmp(name, "vkCmdClearColorImage"))
12771     {
12772         return (void*)entry_vkCmdClearColorImage;
12773     }
12774     if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12775     {
12776         return (void*)entry_vkCmdClearDepthStencilImage;
12777     }
12778     if (!strcmp(name, "vkCmdClearAttachments"))
12779     {
12780         return (void*)entry_vkCmdClearAttachments;
12781     }
12782     if (!strcmp(name, "vkCmdResolveImage"))
12783     {
12784         return (void*)entry_vkCmdResolveImage;
12785     }
12786     if (!strcmp(name, "vkCmdSetEvent"))
12787     {
12788         return (void*)entry_vkCmdSetEvent;
12789     }
12790     if (!strcmp(name, "vkCmdResetEvent"))
12791     {
12792         return (void*)entry_vkCmdResetEvent;
12793     }
12794     if (!strcmp(name, "vkCmdWaitEvents"))
12795     {
12796         return (void*)entry_vkCmdWaitEvents;
12797     }
12798     if (!strcmp(name, "vkCmdPipelineBarrier"))
12799     {
12800         return (void*)entry_vkCmdPipelineBarrier;
12801     }
12802     if (!strcmp(name, "vkCmdBeginQuery"))
12803     {
12804         return (void*)entry_vkCmdBeginQuery;
12805     }
12806     if (!strcmp(name, "vkCmdEndQuery"))
12807     {
12808         return (void*)entry_vkCmdEndQuery;
12809     }
12810     if (!strcmp(name, "vkCmdResetQueryPool"))
12811     {
12812         return (void*)entry_vkCmdResetQueryPool;
12813     }
12814     if (!strcmp(name, "vkCmdWriteTimestamp"))
12815     {
12816         return (void*)entry_vkCmdWriteTimestamp;
12817     }
12818     if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12819     {
12820         return (void*)entry_vkCmdCopyQueryPoolResults;
12821     }
12822     if (!strcmp(name, "vkCmdPushConstants"))
12823     {
12824         return (void*)entry_vkCmdPushConstants;
12825     }
12826     if (!strcmp(name, "vkCmdBeginRenderPass"))
12827     {
12828         return (void*)entry_vkCmdBeginRenderPass;
12829     }
12830     if (!strcmp(name, "vkCmdNextSubpass"))
12831     {
12832         return (void*)entry_vkCmdNextSubpass;
12833     }
12834     if (!strcmp(name, "vkCmdEndRenderPass"))
12835     {
12836         return (void*)entry_vkCmdEndRenderPass;
12837     }
12838     if (!strcmp(name, "vkCmdExecuteCommands"))
12839     {
12840         return (void*)entry_vkCmdExecuteCommands;
12841     }
12842 #endif
12843 #ifdef VK_VERSION_1_1
12844     if (!strcmp(name, "vkEnumerateInstanceVersion"))
12845     {
12846         return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12847     }
12848     if (!strcmp(name, "vkBindBufferMemory2"))
12849     {
12850         return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12851     }
12852     if (!strcmp(name, "vkBindImageMemory2"))
12853     {
12854         return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12855     }
12856     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12857     {
12858         return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12859     }
12860     if (!strcmp(name, "vkCmdSetDeviceMask"))
12861     {
12862         return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12863     }
12864     if (!strcmp(name, "vkCmdDispatchBase"))
12865     {
12866         return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12867     }
12868     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12869     {
12870         return nullptr;
12871     }
12872     if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12873     {
12874         return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12875     }
12876     if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12877     {
12878         return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12879     }
12880     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12881     {
12882         return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12883     }
12884     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12885     {
12886         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12887     }
12888     if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12889     {
12890         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12891     }
12892     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12893     {
12894         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12895     }
12896     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12897     {
12898         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12899     }
12900     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12901     {
12902         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12903     }
12904     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12905     {
12906         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12907     }
12908     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12909     {
12910         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12911     }
12912     if (!strcmp(name, "vkTrimCommandPool"))
12913     {
12914         return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12915     }
12916     if (!strcmp(name, "vkGetDeviceQueue2"))
12917     {
12918         return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12919     }
12920     if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12921     {
12922         return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12923     }
12924     if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12925     {
12926         return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12927     }
12928     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12929     {
12930         return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12931     }
12932     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12933     {
12934         return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12935     }
12936     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12937     {
12938         return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12939     }
12940     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12941     {
12942         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12943     }
12944     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12945     {
12946         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12947     }
12948     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12949     {
12950         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12951     }
12952     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12953     {
12954         return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12955     }
12956 #endif
12957 #ifdef VK_VERSION_1_2
12958     if (!strcmp(name, "vkCmdDrawIndirectCount"))
12959     {
12960         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12961         return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12962     }
12963     if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12964     {
12965         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12966         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12967     }
12968     if (!strcmp(name, "vkCreateRenderPass2"))
12969     {
12970         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12971         return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12972     }
12973     if (!strcmp(name, "vkCmdBeginRenderPass2"))
12974     {
12975         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12976         return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12977     }
12978     if (!strcmp(name, "vkCmdNextSubpass2"))
12979     {
12980         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12981         return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
12982     }
12983     if (!strcmp(name, "vkCmdEndRenderPass2"))
12984     {
12985         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12986         return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
12987     }
12988     if (!strcmp(name, "vkResetQueryPool"))
12989     {
12990         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12991         return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
12992     }
12993     if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12994     {
12995         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12996         return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
12997     }
12998     if (!strcmp(name, "vkWaitSemaphores"))
12999     {
13000         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13001         return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
13002     }
13003     if (!strcmp(name, "vkSignalSemaphore"))
13004     {
13005         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13006         return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
13007     }
13008     if (!strcmp(name, "vkGetBufferDeviceAddress"))
13009     {
13010         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13011         return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
13012     }
13013     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13014     {
13015         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13016         return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
13017     }
13018     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13019     {
13020         bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13021         return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
13022     }
13023 #endif
13024 #ifdef VK_KHR_surface
13025     if (!strcmp(name, "vkDestroySurfaceKHR"))
13026     {
13027         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13028         return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13029     }
13030     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13031     {
13032         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13033         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13034     }
13035     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13036     {
13037         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13038         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13039     }
13040     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13041     {
13042         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13043         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13044     }
13045     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13046     {
13047         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13048         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
13049     }
13050 #endif
13051 #ifdef VK_KHR_swapchain
13052     if (!strcmp(name, "vkCreateSwapchainKHR"))
13053     {
13054         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13055         return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
13056     }
13057     if (!strcmp(name, "vkDestroySwapchainKHR"))
13058     {
13059         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13060         return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13061     }
13062     if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13063     {
13064         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13065         return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13066     }
13067     if (!strcmp(name, "vkAcquireNextImageKHR"))
13068     {
13069         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13070         return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13071     }
13072     if (!strcmp(name, "vkQueuePresentKHR"))
13073     {
13074         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13075         return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13076     }
13077     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13078     {
13079         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13080         return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13081     }
13082     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13083     {
13084         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13085         return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13086     }
13087     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13088     {
13089         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13090         return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13091     }
13092     if (!strcmp(name, "vkAcquireNextImage2KHR"))
13093     {
13094         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13095         return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13096     }
13097 #endif
13098 #ifdef VK_KHR_display
13099     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13100     {
13101         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13102         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13103     }
13104     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13105     {
13106         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13107         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13108     }
13109     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13110     {
13111         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13112         return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13113     }
13114     if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13115     {
13116         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13117         return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13118     }
13119     if (!strcmp(name, "vkCreateDisplayModeKHR"))
13120     {
13121         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13122         return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13123     }
13124     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13125     {
13126         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13127         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13128     }
13129     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13130     {
13131         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13132         return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13133     }
13134 #endif
13135 #ifdef VK_KHR_display_swapchain
13136     if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13137     {
13138         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13139         return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13140     }
13141 #endif
13142 #ifdef VK_KHR_xlib_surface
13143     if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13144     {
13145         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13146         return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13147     }
13148     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13149     {
13150         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13151         return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13152     }
13153 #endif
13154 #ifdef VK_KHR_xcb_surface
13155     if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13156     {
13157         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13158         return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13159     }
13160     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13161     {
13162         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13163         return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13164     }
13165 #endif
13166 #ifdef VK_KHR_wayland_surface
13167     if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13168     {
13169         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13170         return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13171     }
13172     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13173     {
13174         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13175         return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13176     }
13177 #endif
13178 #ifdef VK_KHR_android_surface
13179     if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13180     {
13181         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13182         return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13183     }
13184 #endif
13185 #ifdef VK_KHR_win32_surface
13186     if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13187     {
13188         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13189         return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13190     }
13191     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13192     {
13193         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13194         return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13195     }
13196 #endif
13197 #ifdef VK_KHR_get_physical_device_properties2
13198     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13199     {
13200         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13201         return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13202     }
13203     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13204     {
13205         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13206         return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13207     }
13208     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13209     {
13210         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13211         return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13212     }
13213     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13214     {
13215         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13216         return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13217     }
13218     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13219     {
13220         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13221         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13222     }
13223     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13224     {
13225         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13226         return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13227     }
13228     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13229     {
13230         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13231         return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13232     }
13233 #endif
13234 #ifdef VK_KHR_device_group
13235     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13236     {
13237         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13238         return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13239     }
13240     if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13241     {
13242         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13243         return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13244     }
13245     if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13246     {
13247         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13248         return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13249     }
13250 #endif
13251 #ifdef VK_KHR_maintenance1
13252     if (!strcmp(name, "vkTrimCommandPoolKHR"))
13253     {
13254         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13255         return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13256     }
13257 #endif
13258 #ifdef VK_KHR_device_group_creation
13259     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13260     {
13261         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13262         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13263     }
13264 #endif
13265 #ifdef VK_KHR_external_memory_capabilities
13266     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13267     {
13268         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13269         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13270     }
13271 #endif
13272 #ifdef VK_KHR_external_memory_win32
13273     if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13274     {
13275         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13276         return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13277     }
13278     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13279     {
13280         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13281         return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13282     }
13283 #endif
13284 #ifdef VK_KHR_external_memory_fd
13285     if (!strcmp(name, "vkGetMemoryFdKHR"))
13286     {
13287         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13288         return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13289     }
13290     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13291     {
13292         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13293         return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13294     }
13295 #endif
13296 #ifdef VK_KHR_external_semaphore_capabilities
13297     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13298     {
13299         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13300         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13301     }
13302 #endif
13303 #ifdef VK_KHR_external_semaphore_win32
13304     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13305     {
13306         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13307         return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13308     }
13309     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13310     {
13311         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13312         return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13313     }
13314 #endif
13315 #ifdef VK_KHR_external_semaphore_fd
13316     if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13317     {
13318         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13319         return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13320     }
13321     if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13322     {
13323         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13324         return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13325     }
13326 #endif
13327 #ifdef VK_KHR_push_descriptor
13328     if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13329     {
13330         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13331         return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13332     }
13333     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13334     {
13335         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13336         return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13337     }
13338 #endif
13339 #ifdef VK_KHR_descriptor_update_template
13340     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13341     {
13342         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13343         return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13344     }
13345     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13346     {
13347         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13348         return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13349     }
13350     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13351     {
13352         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13353         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13354     }
13355 #endif
13356 #ifdef VK_KHR_create_renderpass2
13357     if (!strcmp(name, "vkCreateRenderPass2KHR"))
13358     {
13359         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13360         return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13361     }
13362     if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13363     {
13364         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13365         return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13366     }
13367     if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13368     {
13369         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13370         return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13371     }
13372     if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13373     {
13374         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13375         return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13376     }
13377 #endif
13378 #ifdef VK_KHR_shared_presentable_image
13379     if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13380     {
13381         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13382         return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13383     }
13384 #endif
13385 #ifdef VK_KHR_external_fence_capabilities
13386     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13387     {
13388         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13389         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13390     }
13391 #endif
13392 #ifdef VK_KHR_external_fence_win32
13393     if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13394     {
13395         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13396         return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13397     }
13398     if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13399     {
13400         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13401         return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13402     }
13403 #endif
13404 #ifdef VK_KHR_external_fence_fd
13405     if (!strcmp(name, "vkImportFenceFdKHR"))
13406     {
13407         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13408         return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13409     }
13410     if (!strcmp(name, "vkGetFenceFdKHR"))
13411     {
13412         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13413         return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13414     }
13415 #endif
13416 #ifdef VK_KHR_performance_query
13417     if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13418     {
13419         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13420         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13421     }
13422     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13423     {
13424         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13425         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13426     }
13427     if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13428     {
13429         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13430         return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13431     }
13432     if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13433     {
13434         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13435         return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13436     }
13437 #endif
13438 #ifdef VK_KHR_get_surface_capabilities2
13439     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13440     {
13441         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13442         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13443     }
13444     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13445     {
13446         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13447         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13448     }
13449 #endif
13450 #ifdef VK_KHR_get_display_properties2
13451     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13452     {
13453         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13454         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13455     }
13456     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13457     {
13458         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13459         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13460     }
13461     if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13462     {
13463         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13464         return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13465     }
13466     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13467     {
13468         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13469         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13470     }
13471 #endif
13472 #ifdef VK_KHR_get_memory_requirements2
13473     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13474     {
13475         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13476         return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13477     }
13478     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13479     {
13480         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13481         return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13482     }
13483     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13484     {
13485         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13486         return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13487     }
13488 #endif
13489 #ifdef VK_KHR_sampler_ycbcr_conversion
13490     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13491     {
13492         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13493         return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13494     }
13495     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13496     {
13497         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13498         return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13499     }
13500 #endif
13501 #ifdef VK_KHR_bind_memory2
13502     if (!strcmp(name, "vkBindBufferMemory2KHR"))
13503     {
13504         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13505         return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13506     }
13507     if (!strcmp(name, "vkBindImageMemory2KHR"))
13508     {
13509         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13510         return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13511     }
13512 #endif
13513 #ifdef VK_KHR_maintenance3
13514     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13515     {
13516         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13517         return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13518     }
13519 #endif
13520 #ifdef VK_KHR_draw_indirect_count
13521     if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13522     {
13523         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13524         return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13525     }
13526     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13527     {
13528         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13529         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13530     }
13531 #endif
13532 #ifdef VK_KHR_timeline_semaphore
13533     if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13534     {
13535         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13536         return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13537     }
13538     if (!strcmp(name, "vkWaitSemaphoresKHR"))
13539     {
13540         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13541         return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13542     }
13543     if (!strcmp(name, "vkSignalSemaphoreKHR"))
13544     {
13545         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13546         return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13547     }
13548 #endif
13549 #ifdef VK_KHR_fragment_shading_rate
13550     if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13551     {
13552         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13553         return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13554     }
13555     if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13556     {
13557         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13558         return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13559     }
13560 #endif
13561 #ifdef VK_KHR_buffer_device_address
13562     if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13563     {
13564         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13565         return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13566     }
13567     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13568     {
13569         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13570         return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13571     }
13572     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13573     {
13574         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13575         return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13576     }
13577 #endif
13578 #ifdef VK_KHR_deferred_host_operations
13579     if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13580     {
13581         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13582         return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13583     }
13584     if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13585     {
13586         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13587         return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13588     }
13589     if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13590     {
13591         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13592         return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13593     }
13594     if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13595     {
13596         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13597         return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13598     }
13599     if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13600     {
13601         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13602         return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13603     }
13604 #endif
13605 #ifdef VK_KHR_pipeline_executable_properties
13606     if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13607     {
13608         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13609         return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13610     }
13611     if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13612     {
13613         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13614         return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13615     }
13616     if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13617     {
13618         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13619         return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13620     }
13621 #endif
13622 #ifdef VK_KHR_copy_commands2
13623     if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13624     {
13625         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13626         return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13627     }
13628     if (!strcmp(name, "vkCmdCopyImage2KHR"))
13629     {
13630         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13631         return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13632     }
13633     if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13634     {
13635         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13636         return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13637     }
13638     if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13639     {
13640         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13641         return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13642     }
13643     if (!strcmp(name, "vkCmdBlitImage2KHR"))
13644     {
13645         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13646         return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13647     }
13648     if (!strcmp(name, "vkCmdResolveImage2KHR"))
13649     {
13650         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13651         return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13652     }
13653 #endif
13654 #ifdef VK_ANDROID_native_buffer
13655     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13656     {
13657         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13658         return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13659     }
13660     if (!strcmp(name, "vkAcquireImageANDROID"))
13661     {
13662         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13663         return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13664     }
13665     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13666     {
13667         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13668         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13669     }
13670 #endif
13671 #ifdef VK_EXT_debug_report
13672     if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13673     {
13674         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13675         return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13676     }
13677     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13678     {
13679         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13680         return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13681     }
13682     if (!strcmp(name, "vkDebugReportMessageEXT"))
13683     {
13684         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13685         return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13686     }
13687 #endif
13688 #ifdef VK_EXT_debug_marker
13689     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13690     {
13691         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13692         return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13693     }
13694     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13695     {
13696         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13697         return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13698     }
13699     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13700     {
13701         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13702         return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13703     }
13704     if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13705     {
13706         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13707         return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13708     }
13709     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13710     {
13711         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13712         return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13713     }
13714 #endif
13715 #ifdef VK_EXT_transform_feedback
13716     if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13717     {
13718         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13719         return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13720     }
13721     if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13722     {
13723         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13724         return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13725     }
13726     if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13727     {
13728         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13729         return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13730     }
13731     if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13732     {
13733         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13734         return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13735     }
13736     if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13737     {
13738         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13739         return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13740     }
13741     if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13742     {
13743         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13744         return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13745     }
13746 #endif
13747 #ifdef VK_NVX_image_view_handle
13748     if (!strcmp(name, "vkGetImageViewHandleNVX"))
13749     {
13750         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13751         return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13752     }
13753     if (!strcmp(name, "vkGetImageViewAddressNVX"))
13754     {
13755         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13756         return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13757     }
13758 #endif
13759 #ifdef VK_AMD_draw_indirect_count
13760     if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13761     {
13762         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13763         return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13764     }
13765     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13766     {
13767         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13768         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13769     }
13770 #endif
13771 #ifdef VK_AMD_shader_info
13772     if (!strcmp(name, "vkGetShaderInfoAMD"))
13773     {
13774         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13775         return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13776     }
13777 #endif
13778 #ifdef VK_GGP_stream_descriptor_surface
13779     if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13780     {
13781         bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13782         return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13783     }
13784 #endif
13785 #ifdef VK_NV_external_memory_capabilities
13786     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13787     {
13788         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13789         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13790     }
13791 #endif
13792 #ifdef VK_NV_external_memory_win32
13793     if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13794     {
13795         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13796         return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13797     }
13798 #endif
13799 #ifdef VK_NN_vi_surface
13800     if (!strcmp(name, "vkCreateViSurfaceNN"))
13801     {
13802         bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13803         return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13804     }
13805 #endif
13806 #ifdef VK_EXT_conditional_rendering
13807     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13808     {
13809         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13810         return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13811     }
13812     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13813     {
13814         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13815         return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13816     }
13817 #endif
13818 #ifdef VK_NV_clip_space_w_scaling
13819     if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13820     {
13821         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13822         return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13823     }
13824 #endif
13825 #ifdef VK_EXT_direct_mode_display
13826     if (!strcmp(name, "vkReleaseDisplayEXT"))
13827     {
13828         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13829         return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13830     }
13831 #endif
13832 #ifdef VK_EXT_acquire_xlib_display
13833     if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13834     {
13835         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13836         return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13837     }
13838     if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13839     {
13840         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13841         return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13842     }
13843 #endif
13844 #ifdef VK_EXT_display_surface_counter
13845     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13846     {
13847         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13848         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13849     }
13850 #endif
13851 #ifdef VK_EXT_display_control
13852     if (!strcmp(name, "vkDisplayPowerControlEXT"))
13853     {
13854         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13855         return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13856     }
13857     if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13858     {
13859         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13860         return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13861     }
13862     if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13863     {
13864         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13865         return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13866     }
13867     if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13868     {
13869         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13870         return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13871     }
13872 #endif
13873 #ifdef VK_GOOGLE_display_timing
13874     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13875     {
13876         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13877         return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13878     }
13879     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13880     {
13881         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13882         return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13883     }
13884 #endif
13885 #ifdef VK_EXT_discard_rectangles
13886     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13887     {
13888         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13889         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13890     }
13891 #endif
13892 #ifdef VK_EXT_hdr_metadata
13893     if (!strcmp(name, "vkSetHdrMetadataEXT"))
13894     {
13895         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13896         return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13897     }
13898 #endif
13899 #ifdef VK_MVK_ios_surface
13900     if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13901     {
13902         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13903         return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13904     }
13905 #endif
13906 #ifdef VK_MVK_macos_surface
13907     if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13908     {
13909         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13910         return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13911     }
13912 #endif
13913 #ifdef VK_MVK_moltenvk
13914     if (!strcmp(name, "vkGetMTLDeviceMVK"))
13915     {
13916         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13917         return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13918     }
13919     if (!strcmp(name, "vkSetMTLTextureMVK"))
13920     {
13921         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13922         return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13923     }
13924     if (!strcmp(name, "vkGetMTLTextureMVK"))
13925     {
13926         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13927         return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13928     }
13929     if (!strcmp(name, "vkGetMTLBufferMVK"))
13930     {
13931         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13932         return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13933     }
13934     if (!strcmp(name, "vkUseIOSurfaceMVK"))
13935     {
13936         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13937         return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13938     }
13939     if (!strcmp(name, "vkGetIOSurfaceMVK"))
13940     {
13941         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13942         return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13943     }
13944 #endif
13945 #ifdef VK_EXT_debug_utils
13946     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13947     {
13948         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13949         return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13950     }
13951     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13952     {
13953         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13954         return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13955     }
13956     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13957     {
13958         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13959         return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13960     }
13961     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13962     {
13963         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13964         return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13965     }
13966     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13967     {
13968         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13969         return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13970     }
13971     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13972     {
13973         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13974         return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13975     }
13976     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13977     {
13978         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13979         return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
13980     }
13981     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13982     {
13983         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13984         return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
13985     }
13986     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13987     {
13988         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13989         return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13990     }
13991     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13992     {
13993         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13994         return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13995     }
13996     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
13997     {
13998         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13999         return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
14000     }
14001 #endif
14002 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
14003     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
14004     {
14005         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14006         return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
14007     }
14008     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
14009     {
14010         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14011         return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
14012     }
14013 #endif
14014 #ifdef VK_EXT_sample_locations
14015     if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
14016     {
14017         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14018         return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
14019     }
14020     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
14021     {
14022         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14023         return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
14024     }
14025 #endif
14026 #ifdef VK_EXT_image_drm_format_modifier
14027     if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
14028     {
14029         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
14030         return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
14031     }
14032 #endif
14033 #ifdef VK_EXT_validation_cache
14034     if (!strcmp(name, "vkCreateValidationCacheEXT"))
14035     {
14036         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14037         return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
14038     }
14039     if (!strcmp(name, "vkDestroyValidationCacheEXT"))
14040     {
14041         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14042         return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
14043     }
14044     if (!strcmp(name, "vkMergeValidationCachesEXT"))
14045     {
14046         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14047         return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
14048     }
14049     if (!strcmp(name, "vkGetValidationCacheDataEXT"))
14050     {
14051         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14052         return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
14053     }
14054 #endif
14055 #ifdef VK_NV_shading_rate_image
14056     if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
14057     {
14058         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14059         return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14060     }
14061     if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14062     {
14063         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14064         return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14065     }
14066     if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14067     {
14068         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14069         return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14070     }
14071 #endif
14072 #ifdef VK_NV_ray_tracing
14073     if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14074     {
14075         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14076         return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14077     }
14078     if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14079     {
14080         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14081         return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14082     }
14083     if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14084     {
14085         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14086         return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14087     }
14088     if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14089     {
14090         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14091         return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14092     }
14093     if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14094     {
14095         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14096         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14097     }
14098     if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14099     {
14100         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14101         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14102     }
14103     if (!strcmp(name, "vkCmdTraceRaysNV"))
14104     {
14105         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14106         return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14107     }
14108     if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14109     {
14110         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14111         return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14112     }
14113     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14114     {
14115         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14116         return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14117     }
14118     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14119     {
14120         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14121         return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14122     }
14123     if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14124     {
14125         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14126         return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14127     }
14128     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14129     {
14130         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14131         return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14132     }
14133     if (!strcmp(name, "vkCompileDeferredNV"))
14134     {
14135         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14136         return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14137     }
14138 #endif
14139 #ifdef VK_EXT_external_memory_host
14140     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14141     {
14142         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14143         return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14144     }
14145 #endif
14146 #ifdef VK_AMD_buffer_marker
14147     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14148     {
14149         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14150         return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14151     }
14152 #endif
14153 #ifdef VK_EXT_calibrated_timestamps
14154     if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14155     {
14156         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14157         return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14158     }
14159     if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14160     {
14161         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14162         return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14163     }
14164 #endif
14165 #ifdef VK_NV_mesh_shader
14166     if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14167     {
14168         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14169         return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14170     }
14171     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14172     {
14173         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14174         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14175     }
14176     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14177     {
14178         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14179         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14180     }
14181 #endif
14182 #ifdef VK_NV_scissor_exclusive
14183     if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14184     {
14185         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14186         return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14187     }
14188 #endif
14189 #ifdef VK_NV_device_diagnostic_checkpoints
14190     if (!strcmp(name, "vkCmdSetCheckpointNV"))
14191     {
14192         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14193         return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14194     }
14195     if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14196     {
14197         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14198         return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14199     }
14200 #endif
14201 #ifdef VK_INTEL_performance_query
14202     if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
14203     {
14204         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14205         return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14206     }
14207     if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14208     {
14209         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14210         return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14211     }
14212     if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14213     {
14214         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14215         return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14216     }
14217     if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14218     {
14219         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14220         return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14221     }
14222     if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14223     {
14224         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14225         return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14226     }
14227     if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14228     {
14229         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14230         return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14231     }
14232     if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14233     {
14234         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14235         return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14236     }
14237     if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14238     {
14239         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14240         return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14241     }
14242     if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14243     {
14244         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14245         return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14246     }
14247 #endif
14248 #ifdef VK_AMD_display_native_hdr
14249     if (!strcmp(name, "vkSetLocalDimmingAMD"))
14250     {
14251         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14252         return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14253     }
14254 #endif
14255 #ifdef VK_FUCHSIA_imagepipe_surface
14256     if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14257     {
14258         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14259         return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14260     }
14261 #endif
14262 #ifdef VK_EXT_metal_surface
14263     if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14264     {
14265         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14266         return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
14267     }
14268 #endif
14269 #ifdef VK_EXT_buffer_device_address
14270     if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14271     {
14272         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14273         return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14274     }
14275 #endif
14276 #ifdef VK_EXT_tooling_info
14277     if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14278     {
14279         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14280         return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14281     }
14282 #endif
14283 #ifdef VK_NV_cooperative_matrix
14284     if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14285     {
14286         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14287         return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14288     }
14289 #endif
14290 #ifdef VK_NV_coverage_reduction_mode
14291     if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14292     {
14293         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14294         return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14295     }
14296 #endif
14297 #ifdef VK_EXT_full_screen_exclusive
14298     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14299     {
14300         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14301         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14302     }
14303     if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14304     {
14305         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14306         return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14307     }
14308     if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14309     {
14310         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14311         return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14312     }
14313     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14314     {
14315         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14316         return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14317     }
14318 #endif
14319 #ifdef VK_EXT_headless_surface
14320     if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14321     {
14322         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14323         return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14324     }
14325 #endif
14326 #ifdef VK_EXT_line_rasterization
14327     if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14328     {
14329         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14330         return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14331     }
14332 #endif
14333 #ifdef VK_EXT_host_query_reset
14334     if (!strcmp(name, "vkResetQueryPoolEXT"))
14335     {
14336         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14337         return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14338     }
14339 #endif
14340 #ifdef VK_EXT_extended_dynamic_state
14341     if (!strcmp(name, "vkCmdSetCullModeEXT"))
14342     {
14343         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14344         return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14345     }
14346     if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14347     {
14348         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14349         return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14350     }
14351     if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14352     {
14353         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14354         return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14355     }
14356     if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14357     {
14358         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14359         return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14360     }
14361     if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14362     {
14363         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14364         return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14365     }
14366     if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14367     {
14368         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14369         return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14370     }
14371     if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14372     {
14373         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14374         return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14375     }
14376     if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14377     {
14378         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14379         return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14380     }
14381     if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14382     {
14383         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14384         return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14385     }
14386     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14387     {
14388         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14389         return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14390     }
14391     if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14392     {
14393         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14394         return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14395     }
14396     if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14397     {
14398         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14399         return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14400     }
14401 #endif
14402 #ifdef VK_NV_device_generated_commands
14403     if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14404     {
14405         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14406         return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14407     }
14408     if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14409     {
14410         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14411         return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14412     }
14413     if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14414     {
14415         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14416         return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14417     }
14418     if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14419     {
14420         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14421         return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14422     }
14423     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14424     {
14425         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14426         return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14427     }
14428     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14429     {
14430         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14431         return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14432     }
14433 #endif
14434 #ifdef VK_EXT_private_data
14435     if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14436     {
14437         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14438         return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14439     }
14440     if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14441     {
14442         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14443         return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14444     }
14445     if (!strcmp(name, "vkSetPrivateDataEXT"))
14446     {
14447         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14448         return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14449     }
14450     if (!strcmp(name, "vkGetPrivateDataEXT"))
14451     {
14452         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14453         return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14454     }
14455 #endif
14456 #ifdef VK_NV_fragment_shading_rate_enums
14457     if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14458     {
14459         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14460         return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14461     }
14462 #endif
14463 #ifdef VK_EXT_directfb_surface
14464     if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14465     {
14466         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14467         return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14468     }
14469     if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14470     {
14471         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14472         return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14473     }
14474 #endif
14475 #ifdef VK_GOOGLE_gfxstream
14476     if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14477     {
14478         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14479         return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14480     }
14481     if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14482     {
14483         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14484         return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14485     }
14486     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14487     {
14488         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14489         return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14490     }
14491     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14492     {
14493         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14494         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14495     }
14496     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14497     {
14498         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14499         return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14500     }
14501     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14502     {
14503         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14504         return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14505     }
14506     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14507     {
14508         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14509         return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14510     }
14511     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14512     {
14513         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14514         return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14515     }
14516     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14517     {
14518         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14519         return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14520     }
14521     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14522     {
14523         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14524         return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14525     }
14526     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14527     {
14528         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14529         return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14530     }
14531     if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14532     {
14533         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14534         return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14535     }
14536     if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14537     {
14538         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14539         return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14540     }
14541     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14542     {
14543         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14544         return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14545     }
14546     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14547     {
14548         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14549         return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14550     }
14551     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14552     {
14553         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14554         return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14555     }
14556     if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14557     {
14558         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14559         return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14560     }
14561     if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14562     {
14563         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14564         return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14565     }
14566     if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
14567     {
14568         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14569         return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
14570     }
14571     if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
14572     {
14573         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14574         return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
14575     }
14576 #endif
14577 #ifdef VK_KHR_acceleration_structure
14578     if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14579     {
14580         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14581         return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14582     }
14583     if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14584     {
14585         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14586         return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14587     }
14588     if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14589     {
14590         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14591         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14592     }
14593     if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14594     {
14595         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14596         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14597     }
14598     if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14599     {
14600         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14601         return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14602     }
14603     if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14604     {
14605         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14606         return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14607     }
14608     if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14609     {
14610         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14611         return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14612     }
14613     if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14614     {
14615         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14616         return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14617     }
14618     if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14619     {
14620         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14621         return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14622     }
14623     if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14624     {
14625         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14626         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14627     }
14628     if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14629     {
14630         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14631         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14632     }
14633     if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14634     {
14635         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14636         return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14637     }
14638     if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14639     {
14640         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14641         return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14642     }
14643     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14644     {
14645         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14646         return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14647     }
14648     if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14649     {
14650         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14651         return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14652     }
14653     if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14654     {
14655         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14656         return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14657     }
14658 #endif
14659 #ifdef VK_KHR_ray_tracing_pipeline
14660     if (!strcmp(name, "vkCmdTraceRaysKHR"))
14661     {
14662         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14663         return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14664     }
14665     if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14666     {
14667         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14668         return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14669     }
14670     if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14671     {
14672         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14673         return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14674     }
14675     if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14676     {
14677         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14678         return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14679     }
14680     if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14681     {
14682         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14683         return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14684     }
14685     if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14686     {
14687         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14688         return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14689     }
14690 #endif
14691     return nullptr;
14692 }
14693 
14694 } // namespace goldfish_vk
14695