• 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 //
18 // (impl) generated by codegen/vulkan/scripts/genvk.py -registry codegen/vulkan/xml/vk.xml
19 // -registryGfxstream codegen/vulkan/xml/vk_gfxstream.xml cereal -o host/vulkan/cereal
20 //
21 // Please do not modify directly;
22 // re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
23 // or directly from Python by defining:
24 // VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
25 // VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
26 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
27 //
28 // python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o
29 // $CEREAL_OUTPUT_DIR
30 //
31 
32 #include "func_table.h"
33 
34 #include <log/log.h>
35 
36 #include <cstring>
37 
38 #include "../OpenglSystemCommon/HostConnection.h"
39 #include "ResourceTracker.h"
40 #include "VkEncoder.h"
41 #include "goldfish_vk_private_defs.h"
42 
43 // Stuff we are not going to use but if included,
44 // will cause compile errors. These are Android Vulkan
45 // required extensions, but the approach will be to
46 // implement them completely on the guest side.
47 #undef VK_KHR_android_surface
48 #if defined(LINUX_GUEST_BUILD)
49 #undef VK_ANDROID_native_buffer
50 #endif
51 
52 namespace gfxstream {
53 namespace vk {
54 
sOnInvalidDynamicallyCheckedCall(const char * apiname,const char * neededFeature)55 static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature) {
56     ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
57     abort();
58 }
59 #ifdef VK_VERSION_1_0
entry_vkCreateInstance(const VkInstanceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkInstance * pInstance)60 static VkResult entry_vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo,
61                                        const VkAllocationCallbacks* pAllocator,
62                                        VkInstance* pInstance) {
63     AEMU_SCOPED_TRACE("vkCreateInstance");
64     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
65     VkResult vkCreateInstance_VkResult_return = (VkResult)0;
66     vkCreateInstance_VkResult_return =
67         vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
68     return vkCreateInstance_VkResult_return;
69 }
entry_vkDestroyInstance(VkInstance instance,const VkAllocationCallbacks * pAllocator)70 static void entry_vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) {
71     AEMU_SCOPED_TRACE("vkDestroyInstance");
72     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
73     vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
74 }
entry_vkEnumeratePhysicalDevices(VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)75 static VkResult entry_vkEnumeratePhysicalDevices(VkInstance instance,
76                                                  uint32_t* pPhysicalDeviceCount,
77                                                  VkPhysicalDevice* pPhysicalDevices) {
78     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
79     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
80     VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
81     auto resources = ResourceTracker::get();
82     vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(
83         vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
84     return vkEnumeratePhysicalDevices_VkResult_return;
85 }
entry_vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)86 static void entry_vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,
87                                               VkPhysicalDeviceFeatures* pFeatures) {
88     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
89     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
90     vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
91 }
entry_vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)92 static void entry_vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,
93                                                       VkFormat format,
94                                                       VkFormatProperties* pFormatProperties) {
95     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
96     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
97     vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties,
98                                                true /* do lock */);
99 }
entry_vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)100 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
101     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling,
102     VkImageUsageFlags usage, VkImageCreateFlags flags,
103     VkImageFormatProperties* pImageFormatProperties) {
104     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
105     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
106     VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
107     vkGetPhysicalDeviceImageFormatProperties_VkResult_return =
108         vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage,
109                                                         flags, pImageFormatProperties,
110                                                         true /* do lock */);
111     return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
112 }
entry_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)113 static void entry_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
114                                                 VkPhysicalDeviceProperties* pProperties) {
115     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
116     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
117     vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
118 }
entry_vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)119 static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
120     VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount,
121     VkQueueFamilyProperties* pQueueFamilyProperties) {
122     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
123     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
124     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount,
125                                                     pQueueFamilyProperties, true /* do lock */);
126 }
entry_vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)127 static void entry_vkGetPhysicalDeviceMemoryProperties(
128     VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
129     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
130     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
131     vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties,
132                                                true /* do lock */);
133 }
entry_vkGetInstanceProcAddr(VkInstance instance,const char * pName)134 static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(VkInstance instance, const char* pName) {
135     AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
136     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
137     PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
138     vkGetInstanceProcAddr_PFN_vkVoidFunction_return =
139         vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
140     return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
141 }
entry_vkGetDeviceProcAddr(VkDevice device,const char * pName)142 static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(VkDevice device, const char* pName) {
143     AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
144     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
145     PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
146     vkGetDeviceProcAddr_PFN_vkVoidFunction_return =
147         vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
148     return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
149 }
entry_vkCreateDevice(VkPhysicalDevice physicalDevice,const VkDeviceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDevice * pDevice)150 static VkResult entry_vkCreateDevice(VkPhysicalDevice physicalDevice,
151                                      const VkDeviceCreateInfo* pCreateInfo,
152                                      const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) {
153     AEMU_SCOPED_TRACE("vkCreateDevice");
154     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
155     VkResult vkCreateDevice_VkResult_return = (VkResult)0;
156     vkCreateDevice_VkResult_return =
157         vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
158     return vkCreateDevice_VkResult_return;
159 }
entry_vkDestroyDevice(VkDevice device,const VkAllocationCallbacks * pAllocator)160 static void entry_vkDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) {
161     AEMU_SCOPED_TRACE("vkDestroyDevice");
162     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
163     vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
164 }
entry_vkEnumerateInstanceExtensionProperties(const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)165 static VkResult entry_vkEnumerateInstanceExtensionProperties(const char* pLayerName,
166                                                              uint32_t* pPropertyCount,
167                                                              VkExtensionProperties* pProperties) {
168     AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
169     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
170     VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
171     auto resources = ResourceTracker::get();
172     vkEnumerateInstanceExtensionProperties_VkResult_return =
173         resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName,
174                                                              pPropertyCount, pProperties);
175     return vkEnumerateInstanceExtensionProperties_VkResult_return;
176 }
entry_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)177 static VkResult entry_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,
178                                                            const char* pLayerName,
179                                                            uint32_t* pPropertyCount,
180                                                            VkExtensionProperties* pProperties) {
181     AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
182     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
183     VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
184     auto resources = ResourceTracker::get();
185     vkEnumerateDeviceExtensionProperties_VkResult_return =
186         resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice,
187                                                            pLayerName, pPropertyCount, pProperties);
188     return vkEnumerateDeviceExtensionProperties_VkResult_return;
189 }
entry_vkEnumerateInstanceLayerProperties(uint32_t * pPropertyCount,VkLayerProperties * pProperties)190 static VkResult entry_vkEnumerateInstanceLayerProperties(uint32_t* pPropertyCount,
191                                                          VkLayerProperties* pProperties) {
192     AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
193     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
194     VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
195     vkEnumerateInstanceLayerProperties_VkResult_return =
196         vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
197     return vkEnumerateInstanceLayerProperties_VkResult_return;
198 }
entry_vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkLayerProperties * pProperties)199 static VkResult entry_vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,
200                                                        uint32_t* pPropertyCount,
201                                                        VkLayerProperties* pProperties) {
202     AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
203     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
204     VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
205     vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(
206         physicalDevice, pPropertyCount, pProperties, true /* do lock */);
207     return vkEnumerateDeviceLayerProperties_VkResult_return;
208 }
entry_vkGetDeviceQueue(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)209 static void entry_vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex,
210                                    VkQueue* pQueue) {
211     AEMU_SCOPED_TRACE("vkGetDeviceQueue");
212     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
213     vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
214 }
entry_vkQueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)215 static VkResult entry_vkQueueSubmit(VkQueue queue, uint32_t submitCount,
216                                     const VkSubmitInfo* pSubmits, VkFence fence) {
217     AEMU_SCOPED_TRACE("vkQueueSubmit");
218     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
219     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
220     auto resources = ResourceTracker::get();
221     vkQueueSubmit_VkResult_return =
222         resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
223     return vkQueueSubmit_VkResult_return;
224 }
entry_vkQueueWaitIdle(VkQueue queue)225 static VkResult entry_vkQueueWaitIdle(VkQueue queue) {
226     AEMU_SCOPED_TRACE("vkQueueWaitIdle");
227     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
228     VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
229     auto resources = ResourceTracker::get();
230     vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
231     return vkQueueWaitIdle_VkResult_return;
232 }
entry_vkDeviceWaitIdle(VkDevice device)233 static VkResult entry_vkDeviceWaitIdle(VkDevice device) {
234     AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
235     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
236     VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
237     vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
238     return vkDeviceWaitIdle_VkResult_return;
239 }
entry_vkAllocateMemory(VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)240 static VkResult entry_vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo,
241                                        const VkAllocationCallbacks* pAllocator,
242                                        VkDeviceMemory* pMemory) {
243     AEMU_SCOPED_TRACE("vkAllocateMemory");
244     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
245     VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
246     auto resources = ResourceTracker::get();
247     vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(
248         vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
249     return vkAllocateMemory_VkResult_return;
250 }
entry_vkFreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)251 static void entry_vkFreeMemory(VkDevice device, VkDeviceMemory memory,
252                                const VkAllocationCallbacks* pAllocator) {
253     AEMU_SCOPED_TRACE("vkFreeMemory");
254     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
255     auto resources = ResourceTracker::get();
256     resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
257 }
entry_vkMapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)258 static VkResult entry_vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset,
259                                   VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
260     AEMU_SCOPED_TRACE("vkMapMemory");
261     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
262     VkResult vkMapMemory_VkResult_return = (VkResult)0;
263     vkMapMemory_VkResult_return =
264         vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
265     return vkMapMemory_VkResult_return;
266 }
entry_vkUnmapMemory(VkDevice device,VkDeviceMemory memory)267 static void entry_vkUnmapMemory(VkDevice device, VkDeviceMemory memory) {
268     AEMU_SCOPED_TRACE("vkUnmapMemory");
269     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
270     vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
271 }
entry_vkFlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)272 static VkResult entry_vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
273                                                 const VkMappedMemoryRange* pMemoryRanges) {
274     AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
275     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
276     VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
277     vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(
278         device, memoryRangeCount, pMemoryRanges, true /* do lock */);
279     return vkFlushMappedMemoryRanges_VkResult_return;
280 }
entry_vkInvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)281 static VkResult entry_vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
282                                                      const VkMappedMemoryRange* pMemoryRanges) {
283     AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
284     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
285     VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
286     vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(
287         device, memoryRangeCount, pMemoryRanges, true /* do lock */);
288     return vkInvalidateMappedMemoryRanges_VkResult_return;
289 }
entry_vkGetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)290 static void entry_vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory,
291                                               VkDeviceSize* pCommittedMemoryInBytes) {
292     AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
293     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
294     vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
295 }
entry_vkBindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)296 static VkResult entry_vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory,
297                                          VkDeviceSize memoryOffset) {
298     AEMU_SCOPED_TRACE("vkBindBufferMemory");
299     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
300     VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
301     auto resources = ResourceTracker::get();
302     vkBindBufferMemory_VkResult_return =
303         resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
304     return vkBindBufferMemory_VkResult_return;
305 }
entry_vkBindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)306 static VkResult entry_vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory,
307                                         VkDeviceSize memoryOffset) {
308     AEMU_SCOPED_TRACE("vkBindImageMemory");
309     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
310     VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
311     auto resources = ResourceTracker::get();
312     vkBindImageMemory_VkResult_return =
313         resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
314     return vkBindImageMemory_VkResult_return;
315 }
entry_vkGetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)316 static void entry_vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
317                                                 VkMemoryRequirements* pMemoryRequirements) {
318     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
319     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
320     auto resources = ResourceTracker::get();
321     resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
322 }
entry_vkGetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)323 static void entry_vkGetImageMemoryRequirements(VkDevice device, VkImage image,
324                                                VkMemoryRequirements* pMemoryRequirements) {
325     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
326     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
327     auto resources = ResourceTracker::get();
328     resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
329 }
entry_vkGetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)330 static void entry_vkGetImageSparseMemoryRequirements(
331     VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount,
332     VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
333     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
334     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
335     vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount,
336                                               pSparseMemoryRequirements, true /* do lock */);
337 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)338 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
339     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
340     VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling,
341     uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
342     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
343     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
344     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples,
345                                                           usage, tiling, pPropertyCount,
346                                                           pProperties, true /* do lock */);
347 }
entry_vkQueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)348 static VkResult entry_vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount,
349                                         const VkBindSparseInfo* pBindInfo, VkFence fence) {
350     AEMU_SCOPED_TRACE("vkQueueBindSparse");
351     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
352     VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
353     vkQueueBindSparse_VkResult_return =
354         vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
355     return vkQueueBindSparse_VkResult_return;
356 }
entry_vkCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)357 static VkResult entry_vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo,
358                                     const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
359     AEMU_SCOPED_TRACE("vkCreateFence");
360     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
361     VkResult vkCreateFence_VkResult_return = (VkResult)0;
362     auto resources = ResourceTracker::get();
363     vkCreateFence_VkResult_return =
364         resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
365     return vkCreateFence_VkResult_return;
366 }
entry_vkDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)367 static void entry_vkDestroyFence(VkDevice device, VkFence fence,
368                                  const VkAllocationCallbacks* pAllocator) {
369     AEMU_SCOPED_TRACE("vkDestroyFence");
370     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
371     vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
372 }
entry_vkResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)373 static VkResult entry_vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
374     AEMU_SCOPED_TRACE("vkResetFences");
375     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
376     VkResult vkResetFences_VkResult_return = (VkResult)0;
377     auto resources = ResourceTracker::get();
378     vkResetFences_VkResult_return =
379         resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
380     return vkResetFences_VkResult_return;
381 }
entry_vkGetFenceStatus(VkDevice device,VkFence fence)382 static VkResult entry_vkGetFenceStatus(VkDevice device, VkFence fence) {
383     AEMU_SCOPED_TRACE("vkGetFenceStatus");
384     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
385     VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
386     vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
387     return vkGetFenceStatus_VkResult_return;
388 }
entry_vkWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)389 static VkResult entry_vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences,
390                                       VkBool32 waitAll, uint64_t timeout) {
391     AEMU_SCOPED_TRACE("vkWaitForFences");
392     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
393     VkResult vkWaitForFences_VkResult_return = (VkResult)0;
394     auto resources = ResourceTracker::get();
395     vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(
396         vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
397     return vkWaitForFences_VkResult_return;
398 }
entry_vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)399 static VkResult entry_vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo,
400                                         const VkAllocationCallbacks* pAllocator,
401                                         VkSemaphore* pSemaphore) {
402     AEMU_SCOPED_TRACE("vkCreateSemaphore");
403     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
404     VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
405     auto resources = ResourceTracker::get();
406     vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(
407         vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
408     return vkCreateSemaphore_VkResult_return;
409 }
entry_vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)410 static void entry_vkDestroySemaphore(VkDevice device, VkSemaphore semaphore,
411                                      const VkAllocationCallbacks* pAllocator) {
412     AEMU_SCOPED_TRACE("vkDestroySemaphore");
413     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
414     auto resources = ResourceTracker::get();
415     resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
416 }
entry_vkCreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)417 static VkResult entry_vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo,
418                                     const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
419     AEMU_SCOPED_TRACE("vkCreateEvent");
420     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
421     VkResult vkCreateEvent_VkResult_return = (VkResult)0;
422     vkCreateEvent_VkResult_return =
423         vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
424     return vkCreateEvent_VkResult_return;
425 }
entry_vkDestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)426 static void entry_vkDestroyEvent(VkDevice device, VkEvent event,
427                                  const VkAllocationCallbacks* pAllocator) {
428     AEMU_SCOPED_TRACE("vkDestroyEvent");
429     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
430     vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
431 }
entry_vkGetEventStatus(VkDevice device,VkEvent event)432 static VkResult entry_vkGetEventStatus(VkDevice device, VkEvent event) {
433     AEMU_SCOPED_TRACE("vkGetEventStatus");
434     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
435     VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
436     vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
437     return vkGetEventStatus_VkResult_return;
438 }
entry_vkSetEvent(VkDevice device,VkEvent event)439 static VkResult entry_vkSetEvent(VkDevice device, VkEvent event) {
440     AEMU_SCOPED_TRACE("vkSetEvent");
441     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
442     VkResult vkSetEvent_VkResult_return = (VkResult)0;
443     vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
444     return vkSetEvent_VkResult_return;
445 }
entry_vkResetEvent(VkDevice device,VkEvent event)446 static VkResult entry_vkResetEvent(VkDevice device, VkEvent event) {
447     AEMU_SCOPED_TRACE("vkResetEvent");
448     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
449     VkResult vkResetEvent_VkResult_return = (VkResult)0;
450     vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
451     return vkResetEvent_VkResult_return;
452 }
entry_vkCreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)453 static VkResult entry_vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo,
454                                         const VkAllocationCallbacks* pAllocator,
455                                         VkQueryPool* pQueryPool) {
456     AEMU_SCOPED_TRACE("vkCreateQueryPool");
457     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
458     VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
459     vkCreateQueryPool_VkResult_return =
460         vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
461     return vkCreateQueryPool_VkResult_return;
462 }
entry_vkDestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)463 static void entry_vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool,
464                                      const VkAllocationCallbacks* pAllocator) {
465     AEMU_SCOPED_TRACE("vkDestroyQueryPool");
466     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
467     vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
468 }
entry_vkGetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)469 static VkResult entry_vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool,
470                                             uint32_t firstQuery, uint32_t queryCount,
471                                             size_t dataSize, void* pData, VkDeviceSize stride,
472                                             VkQueryResultFlags flags) {
473     AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
474     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
475     VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
476     vkGetQueryPoolResults_VkResult_return =
477         vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData,
478                                      stride, flags, true /* do lock */);
479     return vkGetQueryPoolResults_VkResult_return;
480 }
entry_vkCreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)481 static VkResult entry_vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo,
482                                      const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
483     AEMU_SCOPED_TRACE("vkCreateBuffer");
484     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
485     VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
486     auto resources = ResourceTracker::get();
487     vkCreateBuffer_VkResult_return =
488         resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
489     return vkCreateBuffer_VkResult_return;
490 }
entry_vkDestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)491 static void entry_vkDestroyBuffer(VkDevice device, VkBuffer buffer,
492                                   const VkAllocationCallbacks* pAllocator) {
493     AEMU_SCOPED_TRACE("vkDestroyBuffer");
494     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
495     auto resources = ResourceTracker::get();
496     resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
497 }
entry_vkCreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)498 static VkResult entry_vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo,
499                                          const VkAllocationCallbacks* pAllocator,
500                                          VkBufferView* pView) {
501     AEMU_SCOPED_TRACE("vkCreateBufferView");
502     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
503     VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
504     vkCreateBufferView_VkResult_return =
505         vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
506     return vkCreateBufferView_VkResult_return;
507 }
entry_vkDestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)508 static void entry_vkDestroyBufferView(VkDevice device, VkBufferView bufferView,
509                                       const VkAllocationCallbacks* pAllocator) {
510     AEMU_SCOPED_TRACE("vkDestroyBufferView");
511     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
512     vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
513 }
entry_vkCreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)514 static VkResult entry_vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo,
515                                     const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
516     AEMU_SCOPED_TRACE("vkCreateImage");
517     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
518     VkResult vkCreateImage_VkResult_return = (VkResult)0;
519     auto resources = ResourceTracker::get();
520     vkCreateImage_VkResult_return =
521         resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
522     return vkCreateImage_VkResult_return;
523 }
entry_vkDestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)524 static void entry_vkDestroyImage(VkDevice device, VkImage image,
525                                  const VkAllocationCallbacks* pAllocator) {
526     AEMU_SCOPED_TRACE("vkDestroyImage");
527     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
528     auto resources = ResourceTracker::get();
529     resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
530 }
entry_vkGetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)531 static void entry_vkGetImageSubresourceLayout(VkDevice device, VkImage image,
532                                               const VkImageSubresource* pSubresource,
533                                               VkSubresourceLayout* pLayout) {
534     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
535     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
536     vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
537 }
entry_vkCreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)538 static VkResult entry_vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo,
539                                         const VkAllocationCallbacks* pAllocator,
540                                         VkImageView* pView) {
541     AEMU_SCOPED_TRACE("vkCreateImageView");
542     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
543     VkResult vkCreateImageView_VkResult_return = (VkResult)0;
544     auto resources = ResourceTracker::get();
545     vkCreateImageView_VkResult_return =
546         resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
547     return vkCreateImageView_VkResult_return;
548 }
entry_vkDestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)549 static void entry_vkDestroyImageView(VkDevice device, VkImageView imageView,
550                                      const VkAllocationCallbacks* pAllocator) {
551     AEMU_SCOPED_TRACE("vkDestroyImageView");
552     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
553     vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
554 }
entry_vkCreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)555 static VkResult entry_vkCreateShaderModule(VkDevice device,
556                                            const VkShaderModuleCreateInfo* pCreateInfo,
557                                            const VkAllocationCallbacks* pAllocator,
558                                            VkShaderModule* pShaderModule) {
559     AEMU_SCOPED_TRACE("vkCreateShaderModule");
560     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
561     VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
562     vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(
563         device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
564     return vkCreateShaderModule_VkResult_return;
565 }
entry_vkDestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)566 static void entry_vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule,
567                                         const VkAllocationCallbacks* pAllocator) {
568     AEMU_SCOPED_TRACE("vkDestroyShaderModule");
569     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
570     vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
571 }
entry_vkCreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)572 static VkResult entry_vkCreatePipelineCache(VkDevice device,
573                                             const VkPipelineCacheCreateInfo* pCreateInfo,
574                                             const VkAllocationCallbacks* pAllocator,
575                                             VkPipelineCache* pPipelineCache) {
576     AEMU_SCOPED_TRACE("vkCreatePipelineCache");
577     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
578     VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
579     vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(
580         device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
581     return vkCreatePipelineCache_VkResult_return;
582 }
entry_vkDestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)583 static void entry_vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache,
584                                          const VkAllocationCallbacks* pAllocator) {
585     AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
586     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
587     vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
588 }
entry_vkGetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)589 static VkResult entry_vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache,
590                                              size_t* pDataSize, void* pData) {
591     AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
592     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
593     VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
594     vkGetPipelineCacheData_VkResult_return =
595         vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
596     return vkGetPipelineCacheData_VkResult_return;
597 }
entry_vkMergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)598 static VkResult entry_vkMergePipelineCaches(VkDevice device, VkPipelineCache dstCache,
599                                             uint32_t srcCacheCount,
600                                             const VkPipelineCache* pSrcCaches) {
601     AEMU_SCOPED_TRACE("vkMergePipelineCaches");
602     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
603     VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
604     vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(
605         device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
606     return vkMergePipelineCaches_VkResult_return;
607 }
entry_vkCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)608 static VkResult entry_vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache,
609                                                 uint32_t createInfoCount,
610                                                 const VkGraphicsPipelineCreateInfo* pCreateInfos,
611                                                 const VkAllocationCallbacks* pAllocator,
612                                                 VkPipeline* pPipelines) {
613     AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
614     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
615     VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
616     auto resources = ResourceTracker::get();
617     vkCreateGraphicsPipelines_VkResult_return = resources->on_vkCreateGraphicsPipelines(
618         vkEnc, VK_SUCCESS, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator,
619         pPipelines);
620     return vkCreateGraphicsPipelines_VkResult_return;
621 }
entry_vkCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)622 static VkResult entry_vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache,
623                                                uint32_t createInfoCount,
624                                                const VkComputePipelineCreateInfo* pCreateInfos,
625                                                const VkAllocationCallbacks* pAllocator,
626                                                VkPipeline* pPipelines) {
627     AEMU_SCOPED_TRACE("vkCreateComputePipelines");
628     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
629     VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
630     vkCreateComputePipelines_VkResult_return =
631         vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos,
632                                         pAllocator, pPipelines, true /* do lock */);
633     return vkCreateComputePipelines_VkResult_return;
634 }
entry_vkDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)635 static void entry_vkDestroyPipeline(VkDevice device, VkPipeline pipeline,
636                                     const VkAllocationCallbacks* pAllocator) {
637     AEMU_SCOPED_TRACE("vkDestroyPipeline");
638     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
639     vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
640 }
entry_vkCreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)641 static VkResult entry_vkCreatePipelineLayout(VkDevice device,
642                                              const VkPipelineLayoutCreateInfo* pCreateInfo,
643                                              const VkAllocationCallbacks* pAllocator,
644                                              VkPipelineLayout* pPipelineLayout) {
645     AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
646     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
647     VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
648     vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(
649         device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
650     return vkCreatePipelineLayout_VkResult_return;
651 }
entry_vkDestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)652 static void entry_vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout,
653                                           const VkAllocationCallbacks* pAllocator) {
654     AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
655     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
656     vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
657 }
entry_vkCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)658 static VkResult entry_vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo,
659                                       const VkAllocationCallbacks* pAllocator,
660                                       VkSampler* pSampler) {
661     AEMU_SCOPED_TRACE("vkCreateSampler");
662     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
663     VkResult vkCreateSampler_VkResult_return = (VkResult)0;
664     auto resources = ResourceTracker::get();
665     vkCreateSampler_VkResult_return =
666         resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
667     return vkCreateSampler_VkResult_return;
668 }
entry_vkDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)669 static void entry_vkDestroySampler(VkDevice device, VkSampler sampler,
670                                    const VkAllocationCallbacks* pAllocator) {
671     AEMU_SCOPED_TRACE("vkDestroySampler");
672     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
673     vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
674 }
entry_vkCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)675 static VkResult entry_vkCreateDescriptorSetLayout(
676     VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
677     const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) {
678     AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
679     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
680     VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
681     auto resources = ResourceTracker::get();
682     vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(
683         vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
684     return vkCreateDescriptorSetLayout_VkResult_return;
685 }
entry_vkDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)686 static void entry_vkDestroyDescriptorSetLayout(VkDevice device,
687                                                VkDescriptorSetLayout descriptorSetLayout,
688                                                const VkAllocationCallbacks* pAllocator) {
689     AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
690     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
691     auto resources = ResourceTracker::get();
692     resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
693 }
entry_vkCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)694 static VkResult entry_vkCreateDescriptorPool(VkDevice device,
695                                              const VkDescriptorPoolCreateInfo* pCreateInfo,
696                                              const VkAllocationCallbacks* pAllocator,
697                                              VkDescriptorPool* pDescriptorPool) {
698     AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
699     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
700     VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
701     auto resources = ResourceTracker::get();
702     vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(
703         vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
704     return vkCreateDescriptorPool_VkResult_return;
705 }
entry_vkDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)706 static void entry_vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool,
707                                           const VkAllocationCallbacks* pAllocator) {
708     AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
709     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
710     auto resources = ResourceTracker::get();
711     resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
712 }
entry_vkResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)713 static VkResult entry_vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool,
714                                             VkDescriptorPoolResetFlags flags) {
715     AEMU_SCOPED_TRACE("vkResetDescriptorPool");
716     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
717     VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
718     auto resources = ResourceTracker::get();
719     vkResetDescriptorPool_VkResult_return =
720         resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
721     return vkResetDescriptorPool_VkResult_return;
722 }
entry_vkAllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)723 static VkResult entry_vkAllocateDescriptorSets(VkDevice device,
724                                                const VkDescriptorSetAllocateInfo* pAllocateInfo,
725                                                VkDescriptorSet* pDescriptorSets) {
726     AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
727     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
728     VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
729     auto resources = ResourceTracker::get();
730     vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(
731         vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
732     return vkAllocateDescriptorSets_VkResult_return;
733 }
entry_vkFreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)734 static VkResult entry_vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool,
735                                            uint32_t descriptorSetCount,
736                                            const VkDescriptorSet* pDescriptorSets) {
737     AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
738     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
739     VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
740     auto resources = ResourceTracker::get();
741     vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(
742         vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
743     return vkFreeDescriptorSets_VkResult_return;
744 }
entry_vkUpdateDescriptorSets(VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)745 static void entry_vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount,
746                                          const VkWriteDescriptorSet* pDescriptorWrites,
747                                          uint32_t descriptorCopyCount,
748                                          const VkCopyDescriptorSet* pDescriptorCopies) {
749     AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
750     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
751     auto resources = ResourceTracker::get();
752     resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites,
753                                          descriptorCopyCount, pDescriptorCopies);
754 }
entry_vkCreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)755 static VkResult entry_vkCreateFramebuffer(VkDevice device,
756                                           const VkFramebufferCreateInfo* pCreateInfo,
757                                           const VkAllocationCallbacks* pAllocator,
758                                           VkFramebuffer* pFramebuffer) {
759     AEMU_SCOPED_TRACE("vkCreateFramebuffer");
760     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
761     VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
762     vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(
763         device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
764     return vkCreateFramebuffer_VkResult_return;
765 }
entry_vkDestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)766 static void entry_vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer,
767                                        const VkAllocationCallbacks* pAllocator) {
768     AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
769     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
770     vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
771 }
entry_vkCreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)772 static VkResult entry_vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo,
773                                          const VkAllocationCallbacks* pAllocator,
774                                          VkRenderPass* pRenderPass) {
775     AEMU_SCOPED_TRACE("vkCreateRenderPass");
776     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
777     VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
778     vkCreateRenderPass_VkResult_return =
779         vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
780     return vkCreateRenderPass_VkResult_return;
781 }
entry_vkDestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)782 static void entry_vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass,
783                                       const VkAllocationCallbacks* pAllocator) {
784     AEMU_SCOPED_TRACE("vkDestroyRenderPass");
785     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
786     vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
787 }
entry_vkGetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)788 static void entry_vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass,
789                                              VkExtent2D* pGranularity) {
790     AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
791     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
792     vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
793 }
entry_vkCreateCommandPool(VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)794 static VkResult entry_vkCreateCommandPool(VkDevice device,
795                                           const VkCommandPoolCreateInfo* pCreateInfo,
796                                           const VkAllocationCallbacks* pAllocator,
797                                           VkCommandPool* pCommandPool) {
798     AEMU_SCOPED_TRACE("vkCreateCommandPool");
799     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
800     VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
801     vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(
802         device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
803     return vkCreateCommandPool_VkResult_return;
804 }
entry_vkDestroyCommandPool(VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)805 static void entry_vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool,
806                                        const VkAllocationCallbacks* pAllocator) {
807     AEMU_SCOPED_TRACE("vkDestroyCommandPool");
808     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
809     vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
810 }
entry_vkResetCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)811 static VkResult entry_vkResetCommandPool(VkDevice device, VkCommandPool commandPool,
812                                          VkCommandPoolResetFlags flags) {
813     AEMU_SCOPED_TRACE("vkResetCommandPool");
814     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
815     VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
816     vkResetCommandPool_VkResult_return =
817         vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
818     if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
819         ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
820     }
821     return vkResetCommandPool_VkResult_return;
822 }
entry_vkAllocateCommandBuffers(VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)823 static VkResult entry_vkAllocateCommandBuffers(VkDevice device,
824                                                const VkCommandBufferAllocateInfo* pAllocateInfo,
825                                                VkCommandBuffer* pCommandBuffers) {
826     AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
827     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
828     VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
829     auto resources = ResourceTracker::get();
830     vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(
831         vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
832     if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
833         ResourceTracker::get()->addToCommandPool(
834             pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
835     }
836     return vkAllocateCommandBuffers_VkResult_return;
837 }
entry_vkFreeCommandBuffers(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)838 static void entry_vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool,
839                                        uint32_t commandBufferCount,
840                                        const VkCommandBuffer* pCommandBuffers) {
841     AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
842     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
843     vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers,
844                                 true /* do lock */);
845 }
entry_vkBeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)846 static VkResult entry_vkBeginCommandBuffer(VkCommandBuffer commandBuffer,
847                                            const VkCommandBufferBeginInfo* pBeginInfo) {
848     AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
849     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
850     VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
851     auto resources = ResourceTracker::get();
852     vkBeginCommandBuffer_VkResult_return =
853         resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
854     return vkBeginCommandBuffer_VkResult_return;
855 }
entry_vkEndCommandBuffer(VkCommandBuffer commandBuffer)856 static VkResult entry_vkEndCommandBuffer(VkCommandBuffer commandBuffer) {
857     AEMU_SCOPED_TRACE("vkEndCommandBuffer");
858     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
859     VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
860     auto resources = ResourceTracker::get();
861     vkEndCommandBuffer_VkResult_return =
862         resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
863     return vkEndCommandBuffer_VkResult_return;
864 }
entry_vkResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)865 static VkResult entry_vkResetCommandBuffer(VkCommandBuffer commandBuffer,
866                                            VkCommandBufferResetFlags flags) {
867     AEMU_SCOPED_TRACE("vkResetCommandBuffer");
868     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
869     VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
870     auto resources = ResourceTracker::get();
871     vkResetCommandBuffer_VkResult_return =
872         resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
873     return vkResetCommandBuffer_VkResult_return;
874 }
entry_vkCmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)875 static void entry_vkCmdBindPipeline(VkCommandBuffer commandBuffer,
876                                     VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
877     AEMU_SCOPED_TRACE("vkCmdBindPipeline");
878     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
879     vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
880 }
entry_vkCmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)881 static void entry_vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport,
882                                    uint32_t viewportCount, const VkViewport* pViewports) {
883     AEMU_SCOPED_TRACE("vkCmdSetViewport");
884     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
885     vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports,
886                             true /* do lock */);
887 }
entry_vkCmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)888 static void entry_vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor,
889                                   uint32_t scissorCount, const VkRect2D* pScissors) {
890     AEMU_SCOPED_TRACE("vkCmdSetScissor");
891     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
892     vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors,
893                            true /* do lock */);
894 }
entry_vkCmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)895 static void entry_vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
896     AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
897     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
898     vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
899 }
entry_vkCmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)900 static void entry_vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor,
901                                     float depthBiasClamp, float depthBiasSlopeFactor) {
902     AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
903     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
904     vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp,
905                              depthBiasSlopeFactor, true /* do lock */);
906 }
entry_vkCmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])907 static void entry_vkCmdSetBlendConstants(VkCommandBuffer commandBuffer,
908                                          const float blendConstants[4]) {
909     AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
910     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
911     vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
912 }
entry_vkCmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)913 static void entry_vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds,
914                                       float maxDepthBounds) {
915     AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
916     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
917     vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
918 }
entry_vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)919 static void entry_vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,
920                                              VkStencilFaceFlags faceMask, uint32_t compareMask) {
921     AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
922     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
923     vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
924 }
entry_vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)925 static void entry_vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,
926                                            VkStencilFaceFlags faceMask, uint32_t writeMask) {
927     AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
928     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
929     vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
930 }
entry_vkCmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)931 static void entry_vkCmdSetStencilReference(VkCommandBuffer commandBuffer,
932                                            VkStencilFaceFlags faceMask, uint32_t reference) {
933     AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
934     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
935     vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
936 }
entry_vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)937 static void entry_vkCmdBindDescriptorSets(
938     VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
939     uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets,
940     uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
941     AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
942     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
943     auto resources = ResourceTracker::get();
944     resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet,
945                                           descriptorSetCount, pDescriptorSets, dynamicOffsetCount,
946                                           pDynamicOffsets);
947 }
entry_vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)948 static void entry_vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer,
949                                        VkDeviceSize offset, VkIndexType indexType) {
950     AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
951     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
952     vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
953 }
entry_vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)954 static void entry_vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding,
955                                          uint32_t bindingCount, const VkBuffer* pBuffers,
956                                          const VkDeviceSize* pOffsets) {
957     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
958     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
959     vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets,
960                                   true /* do lock */);
961 }
entry_vkCmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)962 static void entry_vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount,
963                             uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
964     AEMU_SCOPED_TRACE("vkCmdDraw");
965     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
966     vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance,
967                      true /* do lock */);
968 }
entry_vkCmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)969 static void entry_vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount,
970                                    uint32_t instanceCount, uint32_t firstIndex,
971                                    int32_t vertexOffset, uint32_t firstInstance) {
972     AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
973     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
974     vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset,
975                             firstInstance, true /* do lock */);
976 }
entry_vkCmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)977 static void entry_vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer,
978                                     VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
979     AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
980     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
981     vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
982 }
entry_vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)983 static void entry_vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer,
984                                            VkDeviceSize offset, uint32_t drawCount,
985                                            uint32_t stride) {
986     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
987     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
988     vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride,
989                                     true /* do lock */);
990 }
entry_vkCmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)991 static void entry_vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX,
992                                 uint32_t groupCountY, uint32_t groupCountZ) {
993     AEMU_SCOPED_TRACE("vkCmdDispatch");
994     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
995     vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
996 }
entry_vkCmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)997 static void entry_vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer,
998                                         VkDeviceSize offset) {
999     AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
1000     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1001     vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
1002 }
entry_vkCmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)1003 static void entry_vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer,
1004                                   VkBuffer dstBuffer, uint32_t regionCount,
1005                                   const VkBufferCopy* pRegions) {
1006     AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
1007     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1008     vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions,
1009                            true /* do lock */);
1010 }
entry_vkCmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)1011 static void entry_vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage,
1012                                  VkImageLayout srcImageLayout, VkImage dstImage,
1013                                  VkImageLayout dstImageLayout, uint32_t regionCount,
1014                                  const VkImageCopy* pRegions) {
1015     AEMU_SCOPED_TRACE("vkCmdCopyImage");
1016     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1017     vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout,
1018                           regionCount, pRegions, true /* do lock */);
1019 }
entry_vkCmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)1020 static void entry_vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage,
1021                                  VkImageLayout srcImageLayout, VkImage dstImage,
1022                                  VkImageLayout dstImageLayout, uint32_t regionCount,
1023                                  const VkImageBlit* pRegions, VkFilter filter) {
1024     AEMU_SCOPED_TRACE("vkCmdBlitImage");
1025     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1026     vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout,
1027                           regionCount, pRegions, filter, true /* do lock */);
1028 }
entry_vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)1029 static void entry_vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer,
1030                                          VkImage dstImage, VkImageLayout dstImageLayout,
1031                                          uint32_t regionCount, const VkBufferImageCopy* pRegions) {
1032     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
1033     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1034     vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount,
1035                                   pRegions, true /* do lock */);
1036 }
entry_vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)1037 static void entry_vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage,
1038                                          VkImageLayout srcImageLayout, VkBuffer dstBuffer,
1039                                          uint32_t regionCount, const VkBufferImageCopy* pRegions) {
1040     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
1041     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1042     vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount,
1043                                   pRegions, true /* do lock */);
1044 }
entry_vkCmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)1045 static void entry_vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer,
1046                                     VkDeviceSize dstOffset, VkDeviceSize dataSize,
1047                                     const void* pData) {
1048     AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
1049     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1050     vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData,
1051                              true /* do lock */);
1052 }
entry_vkCmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)1053 static void entry_vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer,
1054                                   VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) {
1055     AEMU_SCOPED_TRACE("vkCmdFillBuffer");
1056     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1057     vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
1058 }
entry_vkCmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1059 static void entry_vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image,
1060                                        VkImageLayout imageLayout, const VkClearColorValue* pColor,
1061                                        uint32_t rangeCount,
1062                                        const VkImageSubresourceRange* pRanges) {
1063     AEMU_SCOPED_TRACE("vkCmdClearColorImage");
1064     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1065     vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges,
1066                                 true /* do lock */);
1067 }
entry_vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1068 static void entry_vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image,
1069                                               VkImageLayout imageLayout,
1070                                               const VkClearDepthStencilValue* pDepthStencil,
1071                                               uint32_t rangeCount,
1072                                               const VkImageSubresourceRange* pRanges) {
1073     AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
1074     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1075     vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount,
1076                                        pRanges, true /* do lock */);
1077 }
entry_vkCmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)1078 static void entry_vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount,
1079                                         const VkClearAttachment* pAttachments, uint32_t rectCount,
1080                                         const VkClearRect* pRects) {
1081     AEMU_SCOPED_TRACE("vkCmdClearAttachments");
1082     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1083     vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects,
1084                                  true /* do lock */);
1085 }
entry_vkCmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)1086 static void entry_vkCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage,
1087                                     VkImageLayout srcImageLayout, VkImage dstImage,
1088                                     VkImageLayout dstImageLayout, uint32_t regionCount,
1089                                     const VkImageResolve* pRegions) {
1090     AEMU_SCOPED_TRACE("vkCmdResolveImage");
1091     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1092     vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout,
1093                              regionCount, pRegions, true /* do lock */);
1094 }
entry_vkCmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1095 static void entry_vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event,
1096                                 VkPipelineStageFlags stageMask) {
1097     AEMU_SCOPED_TRACE("vkCmdSetEvent");
1098     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1099     vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
1100 }
entry_vkCmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1101 static void entry_vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event,
1102                                   VkPipelineStageFlags stageMask) {
1103     AEMU_SCOPED_TRACE("vkCmdResetEvent");
1104     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1105     vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
1106 }
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)1107 static void entry_vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount,
1108                                   const VkEvent* pEvents, VkPipelineStageFlags srcStageMask,
1109                                   VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount,
1110                                   const VkMemoryBarrier* pMemoryBarriers,
1111                                   uint32_t bufferMemoryBarrierCount,
1112                                   const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1113                                   uint32_t imageMemoryBarrierCount,
1114                                   const VkImageMemoryBarrier* pImageMemoryBarriers) {
1115     AEMU_SCOPED_TRACE("vkCmdWaitEvents");
1116     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1117     vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask,
1118                            memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount,
1119                            pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers,
1120                            true /* do lock */);
1121 }
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)1122 static void entry_vkCmdPipelineBarrier(
1123     VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask,
1124     VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags,
1125     uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
1126     uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1127     uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) {
1128     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
1129     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1130     auto resources = ResourceTracker::get();
1131     resources->on_vkCmdPipelineBarrier(vkEnc, commandBuffer, srcStageMask, dstStageMask,
1132                                        dependencyFlags, memoryBarrierCount, pMemoryBarriers,
1133                                        bufferMemoryBarrierCount, pBufferMemoryBarriers,
1134                                        imageMemoryBarrierCount, pImageMemoryBarriers);
1135 }
entry_vkCmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)1136 static void entry_vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1137                                   uint32_t query, VkQueryControlFlags flags) {
1138     AEMU_SCOPED_TRACE("vkCmdBeginQuery");
1139     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1140     vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
1141 }
entry_vkCmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)1142 static void entry_vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1143                                 uint32_t query) {
1144     AEMU_SCOPED_TRACE("vkCmdEndQuery");
1145     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1146     vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
1147 }
entry_vkCmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1148 static void entry_vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1149                                       uint32_t firstQuery, uint32_t queryCount) {
1150     AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
1151     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1152     vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount,
1153                                true /* do lock */);
1154 }
entry_vkCmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)1155 static void entry_vkCmdWriteTimestamp(VkCommandBuffer commandBuffer,
1156                                       VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool,
1157                                       uint32_t query) {
1158     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
1159     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1160     vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
1161 }
entry_vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)1162 static void entry_vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1163                                             uint32_t firstQuery, uint32_t queryCount,
1164                                             VkBuffer dstBuffer, VkDeviceSize dstOffset,
1165                                             VkDeviceSize stride, VkQueryResultFlags flags) {
1166     AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
1167     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1168     vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer,
1169                                      dstOffset, stride, flags, true /* do lock */);
1170 }
entry_vkCmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)1171 static void entry_vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout,
1172                                      VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size,
1173                                      const void* pValues) {
1174     AEMU_SCOPED_TRACE("vkCmdPushConstants");
1175     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1176     vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues,
1177                               true /* do lock */);
1178 }
entry_vkCmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)1179 static void entry_vkCmdBeginRenderPass(VkCommandBuffer commandBuffer,
1180                                        const VkRenderPassBeginInfo* pRenderPassBegin,
1181                                        VkSubpassContents contents) {
1182     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
1183     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1184     vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
1185 }
entry_vkCmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)1186 static void entry_vkCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
1187     AEMU_SCOPED_TRACE("vkCmdNextSubpass");
1188     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1189     vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
1190 }
entry_vkCmdEndRenderPass(VkCommandBuffer commandBuffer)1191 static void entry_vkCmdEndRenderPass(VkCommandBuffer commandBuffer) {
1192     AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
1193     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1194     vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
1195 }
entry_vkCmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1196 static void entry_vkCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCount,
1197                                        const VkCommandBuffer* pCommandBuffers) {
1198     AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
1199     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1200     auto resources = ResourceTracker::get();
1201     resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
1202 }
1203 #endif
1204 #ifdef VK_VERSION_1_1
entry_vkEnumerateInstanceVersion(uint32_t * pApiVersion)1205 static VkResult entry_vkEnumerateInstanceVersion(uint32_t* pApiVersion) {
1206     AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
1207     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1208     VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1209     vkEnumerateInstanceVersion_VkResult_return =
1210         vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
1211     return vkEnumerateInstanceVersion_VkResult_return;
1212 }
entry_vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1213 static VkResult entry_vkBindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
1214                                           const VkBindBufferMemoryInfo* pBindInfos) {
1215     AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1216     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1217     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1218     auto resources = ResourceTracker::get();
1219     vkBindBufferMemory2_VkResult_return =
1220         resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1221     return vkBindBufferMemory2_VkResult_return;
1222 }
dynCheck_entry_vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1223 static VkResult dynCheck_entry_vkBindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
1224                                                    const VkBindBufferMemoryInfo* pBindInfos) {
1225     auto resources = ResourceTracker::get();
1226     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1227         sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1228     }
1229     AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1230     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1231     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1232     vkBindBufferMemory2_VkResult_return =
1233         resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1234     return vkBindBufferMemory2_VkResult_return;
1235 }
entry_vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1236 static VkResult entry_vkBindImageMemory2(VkDevice device, uint32_t bindInfoCount,
1237                                          const VkBindImageMemoryInfo* pBindInfos) {
1238     AEMU_SCOPED_TRACE("vkBindImageMemory2");
1239     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1240     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1241     auto resources = ResourceTracker::get();
1242     vkBindImageMemory2_VkResult_return =
1243         resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1244     return vkBindImageMemory2_VkResult_return;
1245 }
dynCheck_entry_vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1246 static VkResult dynCheck_entry_vkBindImageMemory2(VkDevice device, uint32_t bindInfoCount,
1247                                                   const VkBindImageMemoryInfo* pBindInfos) {
1248     auto resources = ResourceTracker::get();
1249     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1250         sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1251     }
1252     AEMU_SCOPED_TRACE("vkBindImageMemory2");
1253     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1254     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1255     vkBindImageMemory2_VkResult_return =
1256         resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1257     return vkBindImageMemory2_VkResult_return;
1258 }
entry_vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1259 static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1260     VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex,
1261     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
1262     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1263     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1264     vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex,
1265                                               remoteDeviceIndex, pPeerMemoryFeatures,
1266                                               true /* do lock */);
1267 }
dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1268 static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1269     VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex,
1270     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
1271     auto resources = ResourceTracker::get();
1272     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1273         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1274     }
1275     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1276     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1277     vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex,
1278                                               remoteDeviceIndex, pPeerMemoryFeatures,
1279                                               true /* do lock */);
1280 }
entry_vkCmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)1281 static void entry_vkCmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask) {
1282     AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
1283     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1284     vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
1285 }
entry_vkCmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1286 static void entry_vkCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX,
1287                                     uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX,
1288                                     uint32_t groupCountY, uint32_t groupCountZ) {
1289     AEMU_SCOPED_TRACE("vkCmdDispatchBase");
1290     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1291     vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX,
1292                              groupCountY, groupCountZ, true /* do lock */);
1293 }
entry_vkEnumeratePhysicalDeviceGroups(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)1294 static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1295     VkInstance instance, uint32_t* pPhysicalDeviceGroupCount,
1296     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
1297     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
1298     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1299     VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1300     vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(
1301         instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
1302     return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1303 }
entry_vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1304 static void entry_vkGetImageMemoryRequirements2(VkDevice device,
1305                                                 const VkImageMemoryRequirementsInfo2* pInfo,
1306                                                 VkMemoryRequirements2* pMemoryRequirements) {
1307     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1308     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1309     auto resources = ResourceTracker::get();
1310     resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1311 }
dynCheck_entry_vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1312 static void dynCheck_entry_vkGetImageMemoryRequirements2(
1313     VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo,
1314     VkMemoryRequirements2* pMemoryRequirements) {
1315     auto resources = ResourceTracker::get();
1316     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1317         sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1318     }
1319     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1320     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1321     resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1322 }
entry_vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1323 static void entry_vkGetBufferMemoryRequirements2(VkDevice device,
1324                                                  const VkBufferMemoryRequirementsInfo2* pInfo,
1325                                                  VkMemoryRequirements2* pMemoryRequirements) {
1326     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1327     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1328     auto resources = ResourceTracker::get();
1329     resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1330 }
dynCheck_entry_vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1331 static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1332     VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo,
1333     VkMemoryRequirements2* pMemoryRequirements) {
1334     auto resources = ResourceTracker::get();
1335     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1336         sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1337     }
1338     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1339     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1340     resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1341 }
entry_vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1342 static void entry_vkGetImageSparseMemoryRequirements2(
1343     VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo,
1344     uint32_t* pSparseMemoryRequirementCount,
1345     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
1346     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1347     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1348     vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount,
1349                                                pSparseMemoryRequirements, true /* do lock */);
1350 }
dynCheck_entry_vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1351 static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1352     VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo,
1353     uint32_t* pSparseMemoryRequirementCount,
1354     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
1355     auto resources = ResourceTracker::get();
1356     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1357         sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1358     }
1359     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1360     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1361     vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount,
1362                                                pSparseMemoryRequirements, true /* do lock */);
1363 }
entry_vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)1364 static void entry_vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
1365                                                VkPhysicalDeviceFeatures2* pFeatures) {
1366     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
1367     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1368     vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
1369 }
entry_vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)1370 static void entry_vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
1371                                                  VkPhysicalDeviceProperties2* pProperties) {
1372     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
1373     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1374     vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
1375 }
entry_vkGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)1376 static void entry_vkGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,
1377                                                        VkFormat format,
1378                                                        VkFormatProperties2* pFormatProperties) {
1379     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
1380     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1381     vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties,
1382                                                 true /* do lock */);
1383 }
entry_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)1384 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1385     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1386     VkImageFormatProperties2* pImageFormatProperties) {
1387     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
1388     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1389     VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
1390     auto resources = ResourceTracker::get();
1391     vkGetPhysicalDeviceImageFormatProperties2_VkResult_return =
1392         resources->on_vkGetPhysicalDeviceImageFormatProperties2(
1393             vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
1394     return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1395 }
entry_vkGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)1396 static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1397     VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount,
1398     VkQueueFamilyProperties2* pQueueFamilyProperties) {
1399     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
1400     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1401     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount,
1402                                                      pQueueFamilyProperties, true /* do lock */);
1403 }
entry_vkGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)1404 static void entry_vkGetPhysicalDeviceMemoryProperties2(
1405     VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
1406     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
1407     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1408     vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties,
1409                                                 true /* do lock */);
1410 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)1411 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1412     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1413     uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) {
1414     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
1415     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1416     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(
1417         physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
1418 }
entry_vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1419 static void entry_vkTrimCommandPool(VkDevice device, VkCommandPool commandPool,
1420                                     VkCommandPoolTrimFlags flags) {
1421     AEMU_SCOPED_TRACE("vkTrimCommandPool");
1422     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1423     vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
1424 }
dynCheck_entry_vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1425 static void dynCheck_entry_vkTrimCommandPool(VkDevice device, VkCommandPool commandPool,
1426                                              VkCommandPoolTrimFlags flags) {
1427     auto resources = ResourceTracker::get();
1428     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1429         sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1430     }
1431     AEMU_SCOPED_TRACE("vkTrimCommandPool");
1432     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1433     vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
1434 }
entry_vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1435 static void entry_vkGetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo,
1436                                     VkQueue* pQueue) {
1437     AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1438     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1439     vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
1440 }
dynCheck_entry_vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1441 static void dynCheck_entry_vkGetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo,
1442                                              VkQueue* pQueue) {
1443     auto resources = ResourceTracker::get();
1444     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1445         sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1446     }
1447     AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1448     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1449     vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
1450 }
entry_vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1451 static VkResult entry_vkCreateSamplerYcbcrConversion(
1452     VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1453     const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) {
1454     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1455     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1456     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1457     auto resources = ResourceTracker::get();
1458     vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(
1459         vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1460     return vkCreateSamplerYcbcrConversion_VkResult_return;
1461 }
dynCheck_entry_vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1462 static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1463     VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1464     const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) {
1465     auto resources = ResourceTracker::get();
1466     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1467         sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1468     }
1469     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1470     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1471     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1472     vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(
1473         vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1474     return vkCreateSamplerYcbcrConversion_VkResult_return;
1475 }
entry_vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1476 static void entry_vkDestroySamplerYcbcrConversion(VkDevice device,
1477                                                   VkSamplerYcbcrConversion ycbcrConversion,
1478                                                   const VkAllocationCallbacks* pAllocator) {
1479     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1480     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1481     auto resources = ResourceTracker::get();
1482     resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1483 }
dynCheck_entry_vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1484 static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1485     VkDevice device, VkSamplerYcbcrConversion ycbcrConversion,
1486     const VkAllocationCallbacks* pAllocator) {
1487     auto resources = ResourceTracker::get();
1488     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1489         sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1490     }
1491     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1492     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1493     resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1494 }
entry_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1495 static VkResult entry_vkCreateDescriptorUpdateTemplate(
1496     VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1497     const VkAllocationCallbacks* pAllocator,
1498     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
1499     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1500     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1501     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1502     vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(
1503         device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
1504     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1505 }
dynCheck_entry_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1506 static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1507     VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1508     const VkAllocationCallbacks* pAllocator,
1509     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
1510     auto resources = ResourceTracker::get();
1511     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1512         sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1513     }
1514     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1515     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1516     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1517     vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(
1518         device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
1519     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1520 }
entry_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1521 static void entry_vkDestroyDescriptorUpdateTemplate(
1522     VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1523     const VkAllocationCallbacks* pAllocator) {
1524     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1525     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1526     vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator,
1527                                              true /* do lock */);
1528 }
dynCheck_entry_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1529 static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1530     VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1531     const VkAllocationCallbacks* pAllocator) {
1532     auto resources = ResourceTracker::get();
1533     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1534         sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1535     }
1536     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1537     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1538     vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator,
1539                                              true /* do lock */);
1540 }
entry_vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)1541 static void entry_vkUpdateDescriptorSetWithTemplate(
1542     VkDevice device, VkDescriptorSet descriptorSet,
1543     VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) {
1544     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
1545     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1546     auto resources = ResourceTracker::get();
1547     resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet,
1548                                                     descriptorUpdateTemplate, pData);
1549 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)1550 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1551     VkDevice device, VkDescriptorSet descriptorSet,
1552     VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) {
1553     auto resources = ResourceTracker::get();
1554     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1555         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1556     }
1557     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
1558     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1559     resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet,
1560                                                     descriptorUpdateTemplate, pData);
1561 }
entry_vkGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)1562 static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1563     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1564     VkExternalBufferProperties* pExternalBufferProperties) {
1565     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
1566     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1567     auto resources = ResourceTracker::get();
1568     resources->on_vkGetPhysicalDeviceExternalBufferProperties(
1569         vkEnc, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
1570 }
entry_vkGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)1571 static void entry_vkGetPhysicalDeviceExternalFenceProperties(
1572     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
1573     VkExternalFenceProperties* pExternalFenceProperties) {
1574     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
1575     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1576     auto resources = ResourceTracker::get();
1577     resources->on_vkGetPhysicalDeviceExternalFenceProperties(
1578         vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
1579 }
entry_vkGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)1580 static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
1581     VkPhysicalDevice physicalDevice,
1582     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
1583     VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
1584     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
1585     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1586     vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(
1587         physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
1588 }
entry_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)1589 static void entry_vkGetDescriptorSetLayoutSupport(
1590     VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1591     VkDescriptorSetLayoutSupport* pSupport) {
1592     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
1593     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1594     vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
1595 }
dynCheck_entry_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)1596 static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
1597     VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1598     VkDescriptorSetLayoutSupport* pSupport) {
1599     auto resources = ResourceTracker::get();
1600     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) {
1601         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
1602     }
1603     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
1604     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1605     vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
1606 }
1607 #endif
1608 #ifdef VK_VERSION_1_2
entry_vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)1609 static void entry_vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer,
1610                                          VkDeviceSize offset, VkBuffer countBuffer,
1611                                          VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
1612                                          uint32_t stride) {
1613     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
1614     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1615     vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset,
1616                                   maxDrawCount, stride, true /* do lock */);
1617 }
entry_vkCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)1618 static void entry_vkCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer,
1619                                                 VkDeviceSize offset, VkBuffer countBuffer,
1620                                                 VkDeviceSize countBufferOffset,
1621                                                 uint32_t maxDrawCount, uint32_t stride) {
1622     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
1623     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1624     vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer,
1625                                          countBufferOffset, maxDrawCount, stride,
1626                                          true /* do lock */);
1627 }
entry_vkCreateRenderPass2(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)1628 static VkResult entry_vkCreateRenderPass2(VkDevice device,
1629                                           const VkRenderPassCreateInfo2* pCreateInfo,
1630                                           const VkAllocationCallbacks* pAllocator,
1631                                           VkRenderPass* pRenderPass) {
1632     AEMU_SCOPED_TRACE("vkCreateRenderPass2");
1633     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1634     VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
1635     vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(
1636         device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
1637     return vkCreateRenderPass2_VkResult_return;
1638 }
dynCheck_entry_vkCreateRenderPass2(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)1639 static VkResult dynCheck_entry_vkCreateRenderPass2(VkDevice device,
1640                                                    const VkRenderPassCreateInfo2* pCreateInfo,
1641                                                    const VkAllocationCallbacks* pAllocator,
1642                                                    VkRenderPass* pRenderPass) {
1643     auto resources = ResourceTracker::get();
1644     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1645         sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
1646     }
1647     AEMU_SCOPED_TRACE("vkCreateRenderPass2");
1648     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1649     VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
1650     vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(
1651         device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
1652     return vkCreateRenderPass2_VkResult_return;
1653 }
entry_vkCmdBeginRenderPass2(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)1654 static void entry_vkCmdBeginRenderPass2(VkCommandBuffer commandBuffer,
1655                                         const VkRenderPassBeginInfo* pRenderPassBegin,
1656                                         const VkSubpassBeginInfo* pSubpassBeginInfo) {
1657     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
1658     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1659     vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo,
1660                                  true /* do lock */);
1661 }
entry_vkCmdNextSubpass2(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)1662 static void entry_vkCmdNextSubpass2(VkCommandBuffer commandBuffer,
1663                                     const VkSubpassBeginInfo* pSubpassBeginInfo,
1664                                     const VkSubpassEndInfo* pSubpassEndInfo) {
1665     AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
1666     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1667     vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
1668 }
entry_vkCmdEndRenderPass2(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)1669 static void entry_vkCmdEndRenderPass2(VkCommandBuffer commandBuffer,
1670                                       const VkSubpassEndInfo* pSubpassEndInfo) {
1671     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
1672     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1673     vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
1674 }
entry_vkResetQueryPool(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1675 static void entry_vkResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
1676                                    uint32_t queryCount) {
1677     AEMU_SCOPED_TRACE("vkResetQueryPool");
1678     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1679     vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
1680 }
dynCheck_entry_vkResetQueryPool(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1681 static void dynCheck_entry_vkResetQueryPool(VkDevice device, VkQueryPool queryPool,
1682                                             uint32_t firstQuery, uint32_t queryCount) {
1683     auto resources = ResourceTracker::get();
1684     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1685         sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
1686     }
1687     AEMU_SCOPED_TRACE("vkResetQueryPool");
1688     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1689     vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
1690 }
entry_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)1691 static VkResult entry_vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore,
1692                                                  uint64_t* pValue) {
1693     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
1694     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1695     VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
1696     vkGetSemaphoreCounterValue_VkResult_return =
1697         vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
1698     return vkGetSemaphoreCounterValue_VkResult_return;
1699 }
dynCheck_entry_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)1700 static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore,
1701                                                           uint64_t* pValue) {
1702     auto resources = ResourceTracker::get();
1703     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1704         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
1705     }
1706     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
1707     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1708     VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
1709     vkGetSemaphoreCounterValue_VkResult_return =
1710         vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
1711     return vkGetSemaphoreCounterValue_VkResult_return;
1712 }
entry_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)1713 static VkResult entry_vkWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo,
1714                                        uint64_t timeout) {
1715     AEMU_SCOPED_TRACE("vkWaitSemaphores");
1716     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1717     VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
1718     vkWaitSemaphores_VkResult_return =
1719         vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
1720     return vkWaitSemaphores_VkResult_return;
1721 }
dynCheck_entry_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)1722 static VkResult dynCheck_entry_vkWaitSemaphores(VkDevice device,
1723                                                 const VkSemaphoreWaitInfo* pWaitInfo,
1724                                                 uint64_t timeout) {
1725     auto resources = ResourceTracker::get();
1726     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1727         sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
1728     }
1729     AEMU_SCOPED_TRACE("vkWaitSemaphores");
1730     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1731     VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
1732     vkWaitSemaphores_VkResult_return =
1733         vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
1734     return vkWaitSemaphores_VkResult_return;
1735 }
entry_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)1736 static VkResult entry_vkSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) {
1737     AEMU_SCOPED_TRACE("vkSignalSemaphore");
1738     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1739     VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
1740     vkSignalSemaphore_VkResult_return =
1741         vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
1742     return vkSignalSemaphore_VkResult_return;
1743 }
dynCheck_entry_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)1744 static VkResult dynCheck_entry_vkSignalSemaphore(VkDevice device,
1745                                                  const VkSemaphoreSignalInfo* pSignalInfo) {
1746     auto resources = ResourceTracker::get();
1747     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1748         sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
1749     }
1750     AEMU_SCOPED_TRACE("vkSignalSemaphore");
1751     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1752     VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
1753     vkSignalSemaphore_VkResult_return =
1754         vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
1755     return vkSignalSemaphore_VkResult_return;
1756 }
entry_vkGetBufferDeviceAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)1757 static VkDeviceAddress entry_vkGetBufferDeviceAddress(VkDevice device,
1758                                                       const VkBufferDeviceAddressInfo* pInfo) {
1759     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
1760     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1761     VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
1762     vkGetBufferDeviceAddress_VkDeviceAddress_return =
1763         vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
1764     return vkGetBufferDeviceAddress_VkDeviceAddress_return;
1765 }
dynCheck_entry_vkGetBufferDeviceAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)1766 static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
1767     VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
1768     auto resources = ResourceTracker::get();
1769     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1770         sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
1771     }
1772     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
1773     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1774     VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
1775     vkGetBufferDeviceAddress_VkDeviceAddress_return =
1776         vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
1777     return vkGetBufferDeviceAddress_VkDeviceAddress_return;
1778 }
entry_vkGetBufferOpaqueCaptureAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)1779 static uint64_t entry_vkGetBufferOpaqueCaptureAddress(VkDevice device,
1780                                                       const VkBufferDeviceAddressInfo* pInfo) {
1781     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
1782     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1783     uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
1784     vkGetBufferOpaqueCaptureAddress_uint64_t_return =
1785         vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
1786     return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
1787 }
dynCheck_entry_vkGetBufferOpaqueCaptureAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)1788 static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
1789     VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
1790     auto resources = ResourceTracker::get();
1791     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1792         sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
1793     }
1794     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
1795     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1796     uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
1797     vkGetBufferOpaqueCaptureAddress_uint64_t_return =
1798         vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
1799     return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
1800 }
entry_vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)1801 static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
1802     VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
1803     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
1804     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1805     uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
1806     vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return =
1807         vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
1808     return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
1809 }
dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)1810 static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
1811     VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
1812     auto resources = ResourceTracker::get();
1813     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_2) {
1814         sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
1815     }
1816     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
1817     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1818     uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
1819     vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return =
1820         vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
1821     return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
1822 }
1823 #endif
1824 #ifdef VK_VERSION_1_3
entry_vkGetPhysicalDeviceToolProperties(VkPhysicalDevice physicalDevice,uint32_t * pToolCount,VkPhysicalDeviceToolProperties * pToolProperties)1825 static VkResult entry_vkGetPhysicalDeviceToolProperties(
1826     VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
1827     VkPhysicalDeviceToolProperties* pToolProperties) {
1828     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolProperties");
1829     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1830     VkResult vkGetPhysicalDeviceToolProperties_VkResult_return = (VkResult)0;
1831     vkGetPhysicalDeviceToolProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceToolProperties(
1832         physicalDevice, pToolCount, pToolProperties, true /* do lock */);
1833     return vkGetPhysicalDeviceToolProperties_VkResult_return;
1834 }
entry_vkCreatePrivateDataSlot(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)1835 static VkResult entry_vkCreatePrivateDataSlot(VkDevice device,
1836                                               const VkPrivateDataSlotCreateInfo* pCreateInfo,
1837                                               const VkAllocationCallbacks* pAllocator,
1838                                               VkPrivateDataSlot* pPrivateDataSlot) {
1839     AEMU_SCOPED_TRACE("vkCreatePrivateDataSlot");
1840     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1841     VkResult vkCreatePrivateDataSlot_VkResult_return = (VkResult)0;
1842     vkCreatePrivateDataSlot_VkResult_return = vkEnc->vkCreatePrivateDataSlot(
1843         device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
1844     return vkCreatePrivateDataSlot_VkResult_return;
1845 }
dynCheck_entry_vkCreatePrivateDataSlot(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)1846 static VkResult dynCheck_entry_vkCreatePrivateDataSlot(
1847     VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo,
1848     const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot) {
1849     auto resources = ResourceTracker::get();
1850     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
1851         sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlot", "VK_VERSION_1_3");
1852     }
1853     AEMU_SCOPED_TRACE("vkCreatePrivateDataSlot");
1854     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1855     VkResult vkCreatePrivateDataSlot_VkResult_return = (VkResult)0;
1856     vkCreatePrivateDataSlot_VkResult_return = vkEnc->vkCreatePrivateDataSlot(
1857         device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
1858     return vkCreatePrivateDataSlot_VkResult_return;
1859 }
entry_vkDestroyPrivateDataSlot(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)1860 static void entry_vkDestroyPrivateDataSlot(VkDevice device, VkPrivateDataSlot privateDataSlot,
1861                                            const VkAllocationCallbacks* pAllocator) {
1862     AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlot");
1863     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1864     vkEnc->vkDestroyPrivateDataSlot(device, privateDataSlot, pAllocator, true /* do lock */);
1865 }
dynCheck_entry_vkDestroyPrivateDataSlot(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)1866 static void dynCheck_entry_vkDestroyPrivateDataSlot(VkDevice device,
1867                                                     VkPrivateDataSlot privateDataSlot,
1868                                                     const VkAllocationCallbacks* pAllocator) {
1869     auto resources = ResourceTracker::get();
1870     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
1871         sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlot", "VK_VERSION_1_3");
1872     }
1873     AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlot");
1874     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1875     vkEnc->vkDestroyPrivateDataSlot(device, privateDataSlot, pAllocator, true /* do lock */);
1876 }
entry_vkSetPrivateData(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)1877 static VkResult entry_vkSetPrivateData(VkDevice device, VkObjectType objectType,
1878                                        uint64_t objectHandle, VkPrivateDataSlot privateDataSlot,
1879                                        uint64_t data) {
1880     AEMU_SCOPED_TRACE("vkSetPrivateData");
1881     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1882     VkResult vkSetPrivateData_VkResult_return = (VkResult)0;
1883     vkSetPrivateData_VkResult_return = vkEnc->vkSetPrivateData(
1884         device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
1885     return vkSetPrivateData_VkResult_return;
1886 }
dynCheck_entry_vkSetPrivateData(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)1887 static VkResult dynCheck_entry_vkSetPrivateData(VkDevice device, VkObjectType objectType,
1888                                                 uint64_t objectHandle,
1889                                                 VkPrivateDataSlot privateDataSlot, uint64_t data) {
1890     auto resources = ResourceTracker::get();
1891     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
1892         sOnInvalidDynamicallyCheckedCall("vkSetPrivateData", "VK_VERSION_1_3");
1893     }
1894     AEMU_SCOPED_TRACE("vkSetPrivateData");
1895     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1896     VkResult vkSetPrivateData_VkResult_return = (VkResult)0;
1897     vkSetPrivateData_VkResult_return = vkEnc->vkSetPrivateData(
1898         device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
1899     return vkSetPrivateData_VkResult_return;
1900 }
entry_vkGetPrivateData(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)1901 static void entry_vkGetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
1902                                    VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
1903     AEMU_SCOPED_TRACE("vkGetPrivateData");
1904     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1905     vkEnc->vkGetPrivateData(device, objectType, objectHandle, privateDataSlot, pData,
1906                             true /* do lock */);
1907 }
dynCheck_entry_vkGetPrivateData(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)1908 static void dynCheck_entry_vkGetPrivateData(VkDevice device, VkObjectType objectType,
1909                                             uint64_t objectHandle,
1910                                             VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
1911     auto resources = ResourceTracker::get();
1912     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
1913         sOnInvalidDynamicallyCheckedCall("vkGetPrivateData", "VK_VERSION_1_3");
1914     }
1915     AEMU_SCOPED_TRACE("vkGetPrivateData");
1916     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
1917     vkEnc->vkGetPrivateData(device, objectType, objectHandle, privateDataSlot, pData,
1918                             true /* do lock */);
1919 }
entry_vkCmdSetEvent2(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)1920 static void entry_vkCmdSetEvent2(VkCommandBuffer commandBuffer, VkEvent event,
1921                                  const VkDependencyInfo* pDependencyInfo) {
1922     AEMU_SCOPED_TRACE("vkCmdSetEvent2");
1923     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1924     vkEnc->vkCmdSetEvent2(commandBuffer, event, pDependencyInfo, true /* do lock */);
1925 }
entry_vkCmdResetEvent2(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)1926 static void entry_vkCmdResetEvent2(VkCommandBuffer commandBuffer, VkEvent event,
1927                                    VkPipelineStageFlags2 stageMask) {
1928     AEMU_SCOPED_TRACE("vkCmdResetEvent2");
1929     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1930     vkEnc->vkCmdResetEvent2(commandBuffer, event, stageMask, true /* do lock */);
1931 }
entry_vkCmdWaitEvents2(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)1932 static void entry_vkCmdWaitEvents2(VkCommandBuffer commandBuffer, uint32_t eventCount,
1933                                    const VkEvent* pEvents,
1934                                    const VkDependencyInfo* pDependencyInfos) {
1935     AEMU_SCOPED_TRACE("vkCmdWaitEvents2");
1936     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1937     vkEnc->vkCmdWaitEvents2(commandBuffer, eventCount, pEvents, pDependencyInfos,
1938                             true /* do lock */);
1939 }
entry_vkCmdPipelineBarrier2(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)1940 static void entry_vkCmdPipelineBarrier2(VkCommandBuffer commandBuffer,
1941                                         const VkDependencyInfo* pDependencyInfo) {
1942     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2");
1943     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1944     vkEnc->vkCmdPipelineBarrier2(commandBuffer, pDependencyInfo, true /* do lock */);
1945 }
entry_vkCmdWriteTimestamp2(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)1946 static void entry_vkCmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
1947                                        VkQueryPool queryPool, uint32_t query) {
1948     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2");
1949     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1950     vkEnc->vkCmdWriteTimestamp2(commandBuffer, stage, queryPool, query, true /* do lock */);
1951 }
entry_vkQueueSubmit2(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)1952 static VkResult entry_vkQueueSubmit2(VkQueue queue, uint32_t submitCount,
1953                                      const VkSubmitInfo2* pSubmits, VkFence fence) {
1954     AEMU_SCOPED_TRACE("vkQueueSubmit2");
1955     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
1956     VkResult vkQueueSubmit2_VkResult_return = (VkResult)0;
1957     auto resources = ResourceTracker::get();
1958     vkQueueSubmit2_VkResult_return =
1959         resources->on_vkQueueSubmit2(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
1960     return vkQueueSubmit2_VkResult_return;
1961 }
entry_vkCmdCopyBuffer2(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)1962 static void entry_vkCmdCopyBuffer2(VkCommandBuffer commandBuffer,
1963                                    const VkCopyBufferInfo2* pCopyBufferInfo) {
1964     AEMU_SCOPED_TRACE("vkCmdCopyBuffer2");
1965     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1966     vkEnc->vkCmdCopyBuffer2(commandBuffer, pCopyBufferInfo, true /* do lock */);
1967 }
entry_vkCmdCopyImage2(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)1968 static void entry_vkCmdCopyImage2(VkCommandBuffer commandBuffer,
1969                                   const VkCopyImageInfo2* pCopyImageInfo) {
1970     AEMU_SCOPED_TRACE("vkCmdCopyImage2");
1971     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1972     vkEnc->vkCmdCopyImage2(commandBuffer, pCopyImageInfo, true /* do lock */);
1973 }
entry_vkCmdCopyBufferToImage2(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)1974 static void entry_vkCmdCopyBufferToImage2(VkCommandBuffer commandBuffer,
1975                                           const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
1976     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2");
1977     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1978     vkEnc->vkCmdCopyBufferToImage2(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
1979 }
entry_vkCmdCopyImageToBuffer2(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)1980 static void entry_vkCmdCopyImageToBuffer2(VkCommandBuffer commandBuffer,
1981                                           const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
1982     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2");
1983     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1984     vkEnc->vkCmdCopyImageToBuffer2(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
1985 }
entry_vkCmdBlitImage2(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)1986 static void entry_vkCmdBlitImage2(VkCommandBuffer commandBuffer,
1987                                   const VkBlitImageInfo2* pBlitImageInfo) {
1988     AEMU_SCOPED_TRACE("vkCmdBlitImage2");
1989     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1990     vkEnc->vkCmdBlitImage2(commandBuffer, pBlitImageInfo, true /* do lock */);
1991 }
entry_vkCmdResolveImage2(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)1992 static void entry_vkCmdResolveImage2(VkCommandBuffer commandBuffer,
1993                                      const VkResolveImageInfo2* pResolveImageInfo) {
1994     AEMU_SCOPED_TRACE("vkCmdResolveImage2");
1995     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1996     vkEnc->vkCmdResolveImage2(commandBuffer, pResolveImageInfo, true /* do lock */);
1997 }
entry_vkCmdBeginRendering(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)1998 static void entry_vkCmdBeginRendering(VkCommandBuffer commandBuffer,
1999                                       const VkRenderingInfo* pRenderingInfo) {
2000     AEMU_SCOPED_TRACE("vkCmdBeginRendering");
2001     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2002     vkEnc->vkCmdBeginRendering(commandBuffer, pRenderingInfo, true /* do lock */);
2003 }
entry_vkCmdEndRendering(VkCommandBuffer commandBuffer)2004 static void entry_vkCmdEndRendering(VkCommandBuffer commandBuffer) {
2005     AEMU_SCOPED_TRACE("vkCmdEndRendering");
2006     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2007     vkEnc->vkCmdEndRendering(commandBuffer, true /* do lock */);
2008 }
entry_vkCmdSetCullMode(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)2009 static void entry_vkCmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) {
2010     AEMU_SCOPED_TRACE("vkCmdSetCullMode");
2011     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2012     vkEnc->vkCmdSetCullMode(commandBuffer, cullMode, true /* do lock */);
2013 }
entry_vkCmdSetFrontFace(VkCommandBuffer commandBuffer,VkFrontFace frontFace)2014 static void entry_vkCmdSetFrontFace(VkCommandBuffer commandBuffer, VkFrontFace frontFace) {
2015     AEMU_SCOPED_TRACE("vkCmdSetFrontFace");
2016     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2017     vkEnc->vkCmdSetFrontFace(commandBuffer, frontFace, true /* do lock */);
2018 }
entry_vkCmdSetPrimitiveTopology(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)2019 static void entry_vkCmdSetPrimitiveTopology(VkCommandBuffer commandBuffer,
2020                                             VkPrimitiveTopology primitiveTopology) {
2021     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopology");
2022     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2023     vkEnc->vkCmdSetPrimitiveTopology(commandBuffer, primitiveTopology, true /* do lock */);
2024 }
entry_vkCmdSetViewportWithCount(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)2025 static void entry_vkCmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount,
2026                                             const VkViewport* pViewports) {
2027     AEMU_SCOPED_TRACE("vkCmdSetViewportWithCount");
2028     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2029     vkEnc->vkCmdSetViewportWithCount(commandBuffer, viewportCount, pViewports, true /* do lock */);
2030 }
entry_vkCmdSetScissorWithCount(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)2031 static void entry_vkCmdSetScissorWithCount(VkCommandBuffer commandBuffer, uint32_t scissorCount,
2032                                            const VkRect2D* pScissors) {
2033     AEMU_SCOPED_TRACE("vkCmdSetScissorWithCount");
2034     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2035     vkEnc->vkCmdSetScissorWithCount(commandBuffer, scissorCount, pScissors, true /* do lock */);
2036 }
entry_vkCmdBindVertexBuffers2(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)2037 static void entry_vkCmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding,
2038                                           uint32_t bindingCount, const VkBuffer* pBuffers,
2039                                           const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes,
2040                                           const VkDeviceSize* pStrides) {
2041     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2");
2042     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2043     vkEnc->vkCmdBindVertexBuffers2(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets,
2044                                    pSizes, pStrides, true /* do lock */);
2045 }
entry_vkCmdSetDepthTestEnable(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)2046 static void entry_vkCmdSetDepthTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) {
2047     AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnable");
2048     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2049     vkEnc->vkCmdSetDepthTestEnable(commandBuffer, depthTestEnable, true /* do lock */);
2050 }
entry_vkCmdSetDepthWriteEnable(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)2051 static void entry_vkCmdSetDepthWriteEnable(VkCommandBuffer commandBuffer,
2052                                            VkBool32 depthWriteEnable) {
2053     AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnable");
2054     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2055     vkEnc->vkCmdSetDepthWriteEnable(commandBuffer, depthWriteEnable, true /* do lock */);
2056 }
entry_vkCmdSetDepthCompareOp(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)2057 static void entry_vkCmdSetDepthCompareOp(VkCommandBuffer commandBuffer,
2058                                          VkCompareOp depthCompareOp) {
2059     AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOp");
2060     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2061     vkEnc->vkCmdSetDepthCompareOp(commandBuffer, depthCompareOp, true /* do lock */);
2062 }
entry_vkCmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)2063 static void entry_vkCmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer,
2064                                                 VkBool32 depthBoundsTestEnable) {
2065     AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnable");
2066     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2067     vkEnc->vkCmdSetDepthBoundsTestEnable(commandBuffer, depthBoundsTestEnable, true /* do lock */);
2068 }
entry_vkCmdSetStencilTestEnable(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)2069 static void entry_vkCmdSetStencilTestEnable(VkCommandBuffer commandBuffer,
2070                                             VkBool32 stencilTestEnable) {
2071     AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnable");
2072     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2073     vkEnc->vkCmdSetStencilTestEnable(commandBuffer, stencilTestEnable, true /* do lock */);
2074 }
entry_vkCmdSetStencilOp(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)2075 static void entry_vkCmdSetStencilOp(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
2076                                     VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp,
2077                                     VkCompareOp compareOp) {
2078     AEMU_SCOPED_TRACE("vkCmdSetStencilOp");
2079     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2080     vkEnc->vkCmdSetStencilOp(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp,
2081                              true /* do lock */);
2082 }
entry_vkCmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)2083 static void entry_vkCmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer,
2084                                                   VkBool32 rasterizerDiscardEnable) {
2085     AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnable");
2086     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2087     vkEnc->vkCmdSetRasterizerDiscardEnable(commandBuffer, rasterizerDiscardEnable,
2088                                            true /* do lock */);
2089 }
entry_vkCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)2090 static void entry_vkCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) {
2091     AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnable");
2092     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2093     vkEnc->vkCmdSetDepthBiasEnable(commandBuffer, depthBiasEnable, true /* do lock */);
2094 }
entry_vkCmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)2095 static void entry_vkCmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer,
2096                                                  VkBool32 primitiveRestartEnable) {
2097     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnable");
2098     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2099     vkEnc->vkCmdSetPrimitiveRestartEnable(commandBuffer, primitiveRestartEnable,
2100                                           true /* do lock */);
2101 }
entry_vkGetDeviceBufferMemoryRequirements(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2102 static void entry_vkGetDeviceBufferMemoryRequirements(VkDevice device,
2103                                                       const VkDeviceBufferMemoryRequirements* pInfo,
2104                                                       VkMemoryRequirements2* pMemoryRequirements) {
2105     AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirements");
2106     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2107     vkEnc->vkGetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements,
2108                                                true /* do lock */);
2109 }
dynCheck_entry_vkGetDeviceBufferMemoryRequirements(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2110 static void dynCheck_entry_vkGetDeviceBufferMemoryRequirements(
2111     VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
2112     VkMemoryRequirements2* pMemoryRequirements) {
2113     auto resources = ResourceTracker::get();
2114     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
2115         sOnInvalidDynamicallyCheckedCall("vkGetDeviceBufferMemoryRequirements", "VK_VERSION_1_3");
2116     }
2117     AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirements");
2118     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2119     vkEnc->vkGetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements,
2120                                                true /* do lock */);
2121 }
entry_vkGetDeviceImageMemoryRequirements(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2122 static void entry_vkGetDeviceImageMemoryRequirements(VkDevice device,
2123                                                      const VkDeviceImageMemoryRequirements* pInfo,
2124                                                      VkMemoryRequirements2* pMemoryRequirements) {
2125     AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirements");
2126     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2127     vkEnc->vkGetDeviceImageMemoryRequirements(device, pInfo, pMemoryRequirements,
2128                                               true /* do lock */);
2129 }
dynCheck_entry_vkGetDeviceImageMemoryRequirements(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2130 static void dynCheck_entry_vkGetDeviceImageMemoryRequirements(
2131     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
2132     VkMemoryRequirements2* pMemoryRequirements) {
2133     auto resources = ResourceTracker::get();
2134     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
2135         sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageMemoryRequirements", "VK_VERSION_1_3");
2136     }
2137     AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirements");
2138     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2139     vkEnc->vkGetDeviceImageMemoryRequirements(device, pInfo, pMemoryRequirements,
2140                                               true /* do lock */);
2141 }
entry_vkGetDeviceImageSparseMemoryRequirements(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)2142 static void entry_vkGetDeviceImageSparseMemoryRequirements(
2143     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
2144     uint32_t* pSparseMemoryRequirementCount,
2145     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
2146     AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirements");
2147     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2148     vkEnc->vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRequirementCount,
2149                                                     pSparseMemoryRequirements, true /* do lock */);
2150 }
dynCheck_entry_vkGetDeviceImageSparseMemoryRequirements(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)2151 static void dynCheck_entry_vkGetDeviceImageSparseMemoryRequirements(
2152     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
2153     uint32_t* pSparseMemoryRequirementCount,
2154     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
2155     auto resources = ResourceTracker::get();
2156     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_3) {
2157         sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageSparseMemoryRequirements",
2158                                          "VK_VERSION_1_3");
2159     }
2160     AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirements");
2161     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2162     vkEnc->vkGetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRequirementCount,
2163                                                     pSparseMemoryRequirements, true /* do lock */);
2164 }
2165 #endif
2166 #ifdef VK_KHR_surface
entry_vkDestroySurfaceKHR(VkInstance instance,VkSurfaceKHR surface,const VkAllocationCallbacks * pAllocator)2167 static void entry_vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
2168                                       const VkAllocationCallbacks* pAllocator) {
2169     AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
2170     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2171     vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
2172 }
entry_vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32 * pSupported)2173 static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
2174                                                            uint32_t queueFamilyIndex,
2175                                                            VkSurfaceKHR surface,
2176                                                            VkBool32* pSupported) {
2177     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
2178     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2179     VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2180     vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return =
2181         vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface,
2182                                                     pSupported, true /* do lock */);
2183     return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2184 }
entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR * pSurfaceCapabilities)2185 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2186     VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
2187     VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
2188     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
2189     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2190     VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2191     vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return =
2192         vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface,
2193                                                          pSurfaceCapabilities, true /* do lock */);
2194     return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2195 }
entry_vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pSurfaceFormatCount,VkSurfaceFormatKHR * pSurfaceFormats)2196 static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,
2197                                                            VkSurfaceKHR surface,
2198                                                            uint32_t* pSurfaceFormatCount,
2199                                                            VkSurfaceFormatKHR* pSurfaceFormats) {
2200     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
2201     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2202     VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2203     vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return =
2204         vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount,
2205                                                     pSurfaceFormats, true /* do lock */);
2206     return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2207 }
entry_vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)2208 static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,
2209                                                                 VkSurfaceKHR surface,
2210                                                                 uint32_t* pPresentModeCount,
2211                                                                 VkPresentModeKHR* pPresentModes) {
2212     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
2213     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2214     VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2215     vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return =
2216         vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount,
2217                                                          pPresentModes, true /* do lock */);
2218     return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2219 }
2220 #endif
2221 #ifdef VK_KHR_swapchain
entry_vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2222 static VkResult entry_vkCreateSwapchainKHR(VkDevice device,
2223                                            const VkSwapchainCreateInfoKHR* pCreateInfo,
2224                                            const VkAllocationCallbacks* pAllocator,
2225                                            VkSwapchainKHR* pSwapchain) {
2226     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2227     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2228     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2229     vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(
2230         device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
2231     return vkCreateSwapchainKHR_VkResult_return;
2232 }
dynCheck_entry_vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2233 static VkResult dynCheck_entry_vkCreateSwapchainKHR(VkDevice device,
2234                                                     const VkSwapchainCreateInfoKHR* pCreateInfo,
2235                                                     const VkAllocationCallbacks* pAllocator,
2236                                                     VkSwapchainKHR* pSwapchain) {
2237     auto resources = ResourceTracker::get();
2238     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2239         sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2240     }
2241     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2242     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2243     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2244     vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(
2245         device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
2246     return vkCreateSwapchainKHR_VkResult_return;
2247 }
entry_vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2248 static void entry_vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain,
2249                                         const VkAllocationCallbacks* pAllocator) {
2250     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2251     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2252     vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
2253 }
dynCheck_entry_vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2254 static void dynCheck_entry_vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain,
2255                                                  const VkAllocationCallbacks* pAllocator) {
2256     auto resources = ResourceTracker::get();
2257     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2258         sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2259     }
2260     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2261     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2262     vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
2263 }
entry_vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2264 static VkResult entry_vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain,
2265                                               uint32_t* pSwapchainImageCount,
2266                                               VkImage* pSwapchainImages) {
2267     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2268     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2269     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2270     vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(
2271         device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
2272     return vkGetSwapchainImagesKHR_VkResult_return;
2273 }
dynCheck_entry_vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2274 static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain,
2275                                                        uint32_t* pSwapchainImageCount,
2276                                                        VkImage* pSwapchainImages) {
2277     auto resources = ResourceTracker::get();
2278     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2279         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2280     }
2281     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2282     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2283     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2284     vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(
2285         device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
2286     return vkGetSwapchainImagesKHR_VkResult_return;
2287 }
entry_vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2288 static VkResult entry_vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain,
2289                                             uint64_t timeout, VkSemaphore semaphore, VkFence fence,
2290                                             uint32_t* pImageIndex) {
2291     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2292     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2293     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2294     vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(
2295         device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
2296     return vkAcquireNextImageKHR_VkResult_return;
2297 }
dynCheck_entry_vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2298 static VkResult dynCheck_entry_vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain,
2299                                                      uint64_t timeout, VkSemaphore semaphore,
2300                                                      VkFence fence, uint32_t* pImageIndex) {
2301     auto resources = ResourceTracker::get();
2302     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2303         sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2304     }
2305     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2306     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2307     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2308     vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(
2309         device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
2310     return vkAcquireNextImageKHR_VkResult_return;
2311 }
entry_vkQueuePresentKHR(VkQueue queue,const VkPresentInfoKHR * pPresentInfo)2312 static VkResult entry_vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo) {
2313     AEMU_SCOPED_TRACE("vkQueuePresentKHR");
2314     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
2315     VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2316     vkQueuePresentKHR_VkResult_return =
2317         vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
2318     return vkQueuePresentKHR_VkResult_return;
2319 }
entry_vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2320 static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2321     VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {
2322     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2323     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2324     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2325     vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return =
2326         vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities,
2327                                                       true /* do lock */);
2328     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2329 }
dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2330 static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2331     VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {
2332     auto resources = ResourceTracker::get();
2333     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2334         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR",
2335                                          "VK_KHR_swapchain");
2336     }
2337     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2338     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2339     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2340     vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return =
2341         vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities,
2342                                                       true /* do lock */);
2343     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2344 }
entry_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2345 static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2346     VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) {
2347     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2348     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2349     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2350     vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return =
2351         vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
2352     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2353 }
dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2354 static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2355     VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) {
2356     auto resources = ResourceTracker::get();
2357     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2358         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR",
2359                                          "VK_KHR_swapchain");
2360     }
2361     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2362     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2363     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2364     vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return =
2365         vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
2366     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2367 }
entry_vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)2368 static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,
2369                                                               VkSurfaceKHR surface,
2370                                                               uint32_t* pRectCount,
2371                                                               VkRect2D* pRects) {
2372     AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
2373     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2374     VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2375     vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return =
2376         vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects,
2377                                                        true /* do lock */);
2378     return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2379 }
entry_vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2380 static VkResult entry_vkAcquireNextImage2KHR(VkDevice device,
2381                                              const VkAcquireNextImageInfoKHR* pAcquireInfo,
2382                                              uint32_t* pImageIndex) {
2383     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2384     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2385     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2386     vkAcquireNextImage2KHR_VkResult_return =
2387         vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
2388     return vkAcquireNextImage2KHR_VkResult_return;
2389 }
dynCheck_entry_vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2390 static VkResult dynCheck_entry_vkAcquireNextImage2KHR(VkDevice device,
2391                                                       const VkAcquireNextImageInfoKHR* pAcquireInfo,
2392                                                       uint32_t* pImageIndex) {
2393     auto resources = ResourceTracker::get();
2394     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) {
2395         sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2396     }
2397     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2398     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2399     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2400     vkAcquireNextImage2KHR_VkResult_return =
2401         vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
2402     return vkAcquireNextImage2KHR_VkResult_return;
2403 }
2404 #endif
2405 #ifdef VK_KHR_display
entry_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPropertiesKHR * pProperties)2406 static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
2407                                                               uint32_t* pPropertyCount,
2408                                                               VkDisplayPropertiesKHR* pProperties) {
2409     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
2410     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2411     VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2412     vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return =
2413         vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties,
2414                                                        true /* do lock */);
2415     return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2416 }
entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlanePropertiesKHR * pProperties)2417 static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2418     VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount,
2419     VkDisplayPlanePropertiesKHR* pProperties) {
2420     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
2421     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2422     VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2423     vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return =
2424         vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount,
2425                                                             pProperties, true /* do lock */);
2426     return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2427 }
entry_vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t * pDisplayCount,VkDisplayKHR * pDisplays)2428 static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,
2429                                                             uint32_t planeIndex,
2430                                                             uint32_t* pDisplayCount,
2431                                                             VkDisplayKHR* pDisplays) {
2432     AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
2433     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2434     VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2435     vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return =
2436         vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount,
2437                                                      pDisplays, true /* do lock */);
2438     return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2439 }
entry_vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModePropertiesKHR * pProperties)2440 static VkResult entry_vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,
2441                                                     VkDisplayKHR display, uint32_t* pPropertyCount,
2442                                                     VkDisplayModePropertiesKHR* pProperties) {
2443     AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
2444     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2445     VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2446     vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(
2447         physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
2448     return vkGetDisplayModePropertiesKHR_VkResult_return;
2449 }
entry_vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const VkDisplayModeCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDisplayModeKHR * pMode)2450 static VkResult entry_vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
2451                                              const VkDisplayModeCreateInfoKHR* pCreateInfo,
2452                                              const VkAllocationCallbacks* pAllocator,
2453                                              VkDisplayModeKHR* pMode) {
2454     AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
2455     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2456     VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2457     vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(
2458         physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
2459     return vkCreateDisplayModeKHR_VkResult_return;
2460 }
entry_vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR * pCapabilities)2461 static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2462     VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex,
2463     VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
2464     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
2465     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2466     VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2467     vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(
2468         physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
2469     return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2470 }
entry_vkCreateDisplayPlaneSurfaceKHR(VkInstance instance,const VkDisplaySurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2471 static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2472     VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2473     const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
2474     AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
2475     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2476     VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2477     vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(
2478         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2479     return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2480 }
2481 #endif
2482 #ifdef VK_KHR_display_swapchain
entry_vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)2483 static VkResult entry_vkCreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
2484                                                   const VkSwapchainCreateInfoKHR* pCreateInfos,
2485                                                   const VkAllocationCallbacks* pAllocator,
2486                                                   VkSwapchainKHR* pSwapchains) {
2487     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2488     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2489     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2490     vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(
2491         device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
2492     return vkCreateSharedSwapchainsKHR_VkResult_return;
2493 }
dynCheck_entry_vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)2494 static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2495     VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos,
2496     const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) {
2497     auto resources = ResourceTracker::get();
2498     if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain")) {
2499         sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2500     }
2501     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2502     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2503     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2504     vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(
2505         device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
2506     return vkCreateSharedSwapchainsKHR_VkResult_return;
2507 }
2508 #endif
2509 #ifdef VK_KHR_xlib_surface
entry_vkCreateXlibSurfaceKHR(VkInstance instance,const VkXlibSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2510 static VkResult entry_vkCreateXlibSurfaceKHR(VkInstance instance,
2511                                              const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2512                                              const VkAllocationCallbacks* pAllocator,
2513                                              VkSurfaceKHR* pSurface) {
2514     AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
2515     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2516     VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2517     vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(
2518         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2519     return vkCreateXlibSurfaceKHR_VkResult_return;
2520 }
entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,Display * dpy,VisualID visualID)2521 static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,
2522                                                                     uint32_t queueFamilyIndex,
2523                                                                     Display* dpy,
2524                                                                     VisualID visualID) {
2525     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
2526     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2527     VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2528     vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return =
2529         vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy,
2530                                                              visualID, true /* do lock */);
2531     return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2532 }
2533 #endif
2534 #ifdef VK_KHR_xcb_surface
entry_vkCreateXcbSurfaceKHR(VkInstance instance,const VkXcbSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2535 static VkResult entry_vkCreateXcbSurfaceKHR(VkInstance instance,
2536                                             const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2537                                             const VkAllocationCallbacks* pAllocator,
2538                                             VkSurfaceKHR* pSurface) {
2539     AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
2540     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2541     VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2542     vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(
2543         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2544     return vkCreateXcbSurfaceKHR_VkResult_return;
2545 }
entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,xcb_connection_t * connection,xcb_visualid_t visual_id)2546 static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,
2547                                                                    uint32_t queueFamilyIndex,
2548                                                                    xcb_connection_t* connection,
2549                                                                    xcb_visualid_t visual_id) {
2550     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
2551     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2552     VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2553     vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return =
2554         vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(
2555             physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
2556     return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2557 }
2558 #endif
2559 #ifdef VK_KHR_wayland_surface
entry_vkCreateWaylandSurfaceKHR(VkInstance instance,const VkWaylandSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2560 static VkResult entry_vkCreateWaylandSurfaceKHR(VkInstance instance,
2561                                                 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2562                                                 const VkAllocationCallbacks* pAllocator,
2563                                                 VkSurfaceKHR* pSurface) {
2564     AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
2565     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2566     VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2567     vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(
2568         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2569     return vkCreateWaylandSurfaceKHR_VkResult_return;
2570 }
entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,wl_display * display)2571 static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2572     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, wl_display* display) {
2573     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
2574     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2575     VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2576     vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return =
2577         vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex,
2578                                                                 display, true /* do lock */);
2579     return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2580 }
2581 #endif
2582 #ifdef VK_KHR_android_surface
entry_vkCreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2583 static VkResult entry_vkCreateAndroidSurfaceKHR(VkInstance instance,
2584                                                 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2585                                                 const VkAllocationCallbacks* pAllocator,
2586                                                 VkSurfaceKHR* pSurface) {
2587     AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
2588     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2589     VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2590     vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(
2591         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2592     return vkCreateAndroidSurfaceKHR_VkResult_return;
2593 }
2594 #endif
2595 #ifdef VK_KHR_win32_surface
entry_vkCreateWin32SurfaceKHR(VkInstance instance,const VkWin32SurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2596 static VkResult entry_vkCreateWin32SurfaceKHR(VkInstance instance,
2597                                               const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2598                                               const VkAllocationCallbacks* pAllocator,
2599                                               VkSurfaceKHR* pSurface) {
2600     AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
2601     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2602     VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2603     vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(
2604         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
2605     return vkCreateWin32SurfaceKHR_VkResult_return;
2606 }
entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex)2607 static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2608     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex) {
2609     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
2610     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2611     VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2612     vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return =
2613         vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex,
2614                                                               true /* do lock */);
2615     return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2616 }
2617 #endif
2618 #ifdef VK_KHR_sampler_mirror_clamp_to_edge
2619 #endif
2620 #ifdef VK_KHR_video_queue
entry_vkGetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)2621 static VkResult entry_vkGetPhysicalDeviceVideoCapabilitiesKHR(
2622     VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile,
2623     VkVideoCapabilitiesKHR* pCapabilities) {
2624     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoCapabilitiesKHR");
2625     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2626     VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = (VkResult)0;
2627     vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return =
2628         vkEnc->vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities,
2629                                                        true /* do lock */);
2630     return vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return;
2631 }
entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)2632 static VkResult entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
2633     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
2634     uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties) {
2635     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
2636     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2637     VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = (VkResult)0;
2638     vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return =
2639         vkEnc->vkGetPhysicalDeviceVideoFormatPropertiesKHR(
2640             physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties,
2641             true /* do lock */);
2642     return vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return;
2643 }
entry_vkCreateVideoSessionKHR(VkDevice device,const VkVideoSessionCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionKHR * pVideoSession)2644 static VkResult entry_vkCreateVideoSessionKHR(VkDevice device,
2645                                               const VkVideoSessionCreateInfoKHR* pCreateInfo,
2646                                               const VkAllocationCallbacks* pAllocator,
2647                                               VkVideoSessionKHR* pVideoSession) {
2648     AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2649     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2650     VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2651     vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(
2652         device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2653     return vkCreateVideoSessionKHR_VkResult_return;
2654 }
dynCheck_entry_vkCreateVideoSessionKHR(VkDevice device,const VkVideoSessionCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionKHR * pVideoSession)2655 static VkResult dynCheck_entry_vkCreateVideoSessionKHR(
2656     VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo,
2657     const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession) {
2658     auto resources = ResourceTracker::get();
2659     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2660         sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionKHR", "VK_KHR_video_queue");
2661     }
2662     AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2663     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2664     VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2665     vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(
2666         device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2667     return vkCreateVideoSessionKHR_VkResult_return;
2668 }
entry_vkDestroyVideoSessionKHR(VkDevice device,VkVideoSessionKHR videoSession,const VkAllocationCallbacks * pAllocator)2669 static void entry_vkDestroyVideoSessionKHR(VkDevice device, VkVideoSessionKHR videoSession,
2670                                            const VkAllocationCallbacks* pAllocator) {
2671     AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2672     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2673     vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2674 }
dynCheck_entry_vkDestroyVideoSessionKHR(VkDevice device,VkVideoSessionKHR videoSession,const VkAllocationCallbacks * pAllocator)2675 static void dynCheck_entry_vkDestroyVideoSessionKHR(VkDevice device, VkVideoSessionKHR videoSession,
2676                                                     const VkAllocationCallbacks* pAllocator) {
2677     auto resources = ResourceTracker::get();
2678     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2679         sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionKHR", "VK_KHR_video_queue");
2680     }
2681     AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2682     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2683     vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2684 }
entry_vkGetVideoSessionMemoryRequirementsKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t * pMemoryRequirementsCount,VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements)2685 static VkResult entry_vkGetVideoSessionMemoryRequirementsKHR(
2686     VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount,
2687     VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements) {
2688     AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
2689     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2690     VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
2691     vkGetVideoSessionMemoryRequirementsKHR_VkResult_return =
2692         vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession,
2693                                                       pMemoryRequirementsCount, pMemoryRequirements,
2694                                                       true /* do lock */);
2695     return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
2696 }
dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t * pMemoryRequirementsCount,VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements)2697 static VkResult dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR(
2698     VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount,
2699     VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements) {
2700     auto resources = ResourceTracker::get();
2701     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2702         sOnInvalidDynamicallyCheckedCall("vkGetVideoSessionMemoryRequirementsKHR",
2703                                          "VK_KHR_video_queue");
2704     }
2705     AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
2706     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2707     VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
2708     vkGetVideoSessionMemoryRequirementsKHR_VkResult_return =
2709         vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession,
2710                                                       pMemoryRequirementsCount, pMemoryRequirements,
2711                                                       true /* do lock */);
2712     return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
2713 }
entry_vkBindVideoSessionMemoryKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t bindSessionMemoryInfoCount,const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos)2714 static VkResult entry_vkBindVideoSessionMemoryKHR(
2715     VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount,
2716     const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos) {
2717     AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
2718     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2719     VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
2720     vkBindVideoSessionMemoryKHR_VkResult_return =
2721         vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount,
2722                                            pBindSessionMemoryInfos, true /* do lock */);
2723     return vkBindVideoSessionMemoryKHR_VkResult_return;
2724 }
dynCheck_entry_vkBindVideoSessionMemoryKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t bindSessionMemoryInfoCount,const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos)2725 static VkResult dynCheck_entry_vkBindVideoSessionMemoryKHR(
2726     VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount,
2727     const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos) {
2728     auto resources = ResourceTracker::get();
2729     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2730         sOnInvalidDynamicallyCheckedCall("vkBindVideoSessionMemoryKHR", "VK_KHR_video_queue");
2731     }
2732     AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
2733     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2734     VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
2735     vkBindVideoSessionMemoryKHR_VkResult_return =
2736         vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount,
2737                                            pBindSessionMemoryInfos, true /* do lock */);
2738     return vkBindVideoSessionMemoryKHR_VkResult_return;
2739 }
entry_vkCreateVideoSessionParametersKHR(VkDevice device,const VkVideoSessionParametersCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionParametersKHR * pVideoSessionParameters)2740 static VkResult entry_vkCreateVideoSessionParametersKHR(
2741     VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2742     const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters) {
2743     AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
2744     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2745     VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2746     vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(
2747         device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
2748     return vkCreateVideoSessionParametersKHR_VkResult_return;
2749 }
dynCheck_entry_vkCreateVideoSessionParametersKHR(VkDevice device,const VkVideoSessionParametersCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionParametersKHR * pVideoSessionParameters)2750 static VkResult dynCheck_entry_vkCreateVideoSessionParametersKHR(
2751     VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2752     const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters) {
2753     auto resources = ResourceTracker::get();
2754     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2755         sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionParametersKHR", "VK_KHR_video_queue");
2756     }
2757     AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
2758     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2759     VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2760     vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(
2761         device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
2762     return vkCreateVideoSessionParametersKHR_VkResult_return;
2763 }
entry_vkUpdateVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo)2764 static VkResult entry_vkUpdateVideoSessionParametersKHR(
2765     VkDevice device, VkVideoSessionParametersKHR videoSessionParameters,
2766     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) {
2767     AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
2768     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2769     VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2770     vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(
2771         device, videoSessionParameters, pUpdateInfo, true /* do lock */);
2772     return vkUpdateVideoSessionParametersKHR_VkResult_return;
2773 }
dynCheck_entry_vkUpdateVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo)2774 static VkResult dynCheck_entry_vkUpdateVideoSessionParametersKHR(
2775     VkDevice device, VkVideoSessionParametersKHR videoSessionParameters,
2776     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) {
2777     auto resources = ResourceTracker::get();
2778     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2779         sOnInvalidDynamicallyCheckedCall("vkUpdateVideoSessionParametersKHR", "VK_KHR_video_queue");
2780     }
2781     AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
2782     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2783     VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2784     vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(
2785         device, videoSessionParameters, pUpdateInfo, true /* do lock */);
2786     return vkUpdateVideoSessionParametersKHR_VkResult_return;
2787 }
entry_vkDestroyVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkAllocationCallbacks * pAllocator)2788 static void entry_vkDestroyVideoSessionParametersKHR(
2789     VkDevice device, VkVideoSessionParametersKHR videoSessionParameters,
2790     const VkAllocationCallbacks* pAllocator) {
2791     AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
2792     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2793     vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator,
2794                                               true /* do lock */);
2795 }
dynCheck_entry_vkDestroyVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkAllocationCallbacks * pAllocator)2796 static void dynCheck_entry_vkDestroyVideoSessionParametersKHR(
2797     VkDevice device, VkVideoSessionParametersKHR videoSessionParameters,
2798     const VkAllocationCallbacks* pAllocator) {
2799     auto resources = ResourceTracker::get();
2800     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2801         sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionParametersKHR",
2802                                          "VK_KHR_video_queue");
2803     }
2804     AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
2805     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2806     vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator,
2807                                               true /* do lock */);
2808 }
entry_vkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoBeginCodingInfoKHR * pBeginInfo)2809 static void entry_vkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,
2810                                            const VkVideoBeginCodingInfoKHR* pBeginInfo) {
2811     AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
2812     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2813     vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
2814 }
dynCheck_entry_vkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoBeginCodingInfoKHR * pBeginInfo)2815 static void dynCheck_entry_vkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,
2816                                                     const VkVideoBeginCodingInfoKHR* pBeginInfo) {
2817     auto resources = ResourceTracker::get();
2818     VkDevice device = resources->getDevice(commandBuffer);
2819     ;
2820     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2821         sOnInvalidDynamicallyCheckedCall("vkCmdBeginVideoCodingKHR", "VK_KHR_video_queue");
2822     }
2823     AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
2824     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2825     vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
2826 }
entry_vkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoEndCodingInfoKHR * pEndCodingInfo)2827 static void entry_vkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,
2828                                          const VkVideoEndCodingInfoKHR* pEndCodingInfo) {
2829     AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
2830     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2831     vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
2832 }
dynCheck_entry_vkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoEndCodingInfoKHR * pEndCodingInfo)2833 static void dynCheck_entry_vkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,
2834                                                   const VkVideoEndCodingInfoKHR* pEndCodingInfo) {
2835     auto resources = ResourceTracker::get();
2836     VkDevice device = resources->getDevice(commandBuffer);
2837     ;
2838     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2839         sOnInvalidDynamicallyCheckedCall("vkCmdEndVideoCodingKHR", "VK_KHR_video_queue");
2840     }
2841     AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
2842     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2843     vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
2844 }
entry_vkCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoCodingControlInfoKHR * pCodingControlInfo)2845 static void entry_vkCmdControlVideoCodingKHR(
2846     VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) {
2847     AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
2848     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2849     vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
2850 }
dynCheck_entry_vkCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoCodingControlInfoKHR * pCodingControlInfo)2851 static void dynCheck_entry_vkCmdControlVideoCodingKHR(
2852     VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) {
2853     auto resources = ResourceTracker::get();
2854     VkDevice device = resources->getDevice(commandBuffer);
2855     ;
2856     if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue")) {
2857         sOnInvalidDynamicallyCheckedCall("vkCmdControlVideoCodingKHR", "VK_KHR_video_queue");
2858     }
2859     AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
2860     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2861     vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
2862 }
2863 #endif
2864 #ifdef VK_KHR_video_decode_queue
entry_vkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoDecodeInfoKHR * pDecodeInfo)2865 static void entry_vkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer,
2866                                       const VkVideoDecodeInfoKHR* pDecodeInfo) {
2867     AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
2868     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2869     vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, true /* do lock */);
2870 }
dynCheck_entry_vkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoDecodeInfoKHR * pDecodeInfo)2871 static void dynCheck_entry_vkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer,
2872                                                const VkVideoDecodeInfoKHR* pDecodeInfo) {
2873     auto resources = ResourceTracker::get();
2874     VkDevice device = resources->getDevice(commandBuffer);
2875     ;
2876     if (!resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue")) {
2877         sOnInvalidDynamicallyCheckedCall("vkCmdDecodeVideoKHR", "VK_KHR_video_decode_queue");
2878     }
2879     AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
2880     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2881     vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo, true /* do lock */);
2882 }
2883 #endif
2884 #ifdef VK_KHR_video_decode_h264
2885 #endif
2886 #ifdef VK_KHR_dynamic_rendering
entry_vkCmdBeginRenderingKHR(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2887 static void entry_vkCmdBeginRenderingKHR(VkCommandBuffer commandBuffer,
2888                                          const VkRenderingInfo* pRenderingInfo) {
2889     AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
2890     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2891     vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
2892 }
dynCheck_entry_vkCmdBeginRenderingKHR(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2893 static void dynCheck_entry_vkCmdBeginRenderingKHR(VkCommandBuffer commandBuffer,
2894                                                   const VkRenderingInfo* pRenderingInfo) {
2895     auto resources = ResourceTracker::get();
2896     VkDevice device = resources->getDevice(commandBuffer);
2897     ;
2898     if (!resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering")) {
2899         sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderingKHR", "VK_KHR_dynamic_rendering");
2900     }
2901     AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
2902     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2903     vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
2904 }
entry_vkCmdEndRenderingKHR(VkCommandBuffer commandBuffer)2905 static void entry_vkCmdEndRenderingKHR(VkCommandBuffer commandBuffer) {
2906     AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
2907     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2908     vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
2909 }
dynCheck_entry_vkCmdEndRenderingKHR(VkCommandBuffer commandBuffer)2910 static void dynCheck_entry_vkCmdEndRenderingKHR(VkCommandBuffer commandBuffer) {
2911     auto resources = ResourceTracker::get();
2912     VkDevice device = resources->getDevice(commandBuffer);
2913     ;
2914     if (!resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering")) {
2915         sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderingKHR", "VK_KHR_dynamic_rendering");
2916     }
2917     AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
2918     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2919     vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
2920 }
2921 #endif
2922 #ifdef VK_KHR_multiview
2923 #endif
2924 #ifdef VK_KHR_get_physical_device_properties2
entry_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)2925 static void entry_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,
2926                                                   VkPhysicalDeviceFeatures2* pFeatures) {
2927     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
2928     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2929     vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
2930 }
entry_vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)2931 static void entry_vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,
2932                                                     VkPhysicalDeviceProperties2* pProperties) {
2933     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
2934     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2935     vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
2936 }
entry_vkGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)2937 static void entry_vkGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,
2938                                                           VkFormat format,
2939                                                           VkFormatProperties2* pFormatProperties) {
2940     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
2941     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2942     vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties,
2943                                                    true /* do lock */);
2944 }
entry_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)2945 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2946     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2947     VkImageFormatProperties2* pImageFormatProperties) {
2948     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
2949     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2950     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
2951     auto resources = ResourceTracker::get();
2952     vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return =
2953         resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(
2954             vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
2955     return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2956 }
entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)2957 static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2958     VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount,
2959     VkQueueFamilyProperties2* pQueueFamilyProperties) {
2960     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
2961     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2962     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount,
2963                                                         pQueueFamilyProperties, true /* do lock */);
2964 }
entry_vkGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)2965 static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2966     VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
2967     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
2968     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2969     vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties,
2970                                                    true /* do lock */);
2971 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)2972 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2973     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2974     uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) {
2975     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
2976     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2977     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2978         physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
2979 }
2980 #endif
2981 #ifdef VK_KHR_device_group
entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2982 static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2983     VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex,
2984     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
2985     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2986     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2987     vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex,
2988                                                  remoteDeviceIndex, pPeerMemoryFeatures,
2989                                                  true /* do lock */);
2990 }
dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2991 static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2992     VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex,
2993     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
2994     auto resources = ResourceTracker::get();
2995     if (!resources->hasDeviceExtension(device, "VK_KHR_device_group")) {
2996         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR",
2997                                          "VK_KHR_device_group");
2998     }
2999     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
3000     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3001     vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex,
3002                                                  remoteDeviceIndex, pPeerMemoryFeatures,
3003                                                  true /* do lock */);
3004 }
entry_vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)3005 static void entry_vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer, uint32_t deviceMask) {
3006     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
3007     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3008     vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
3009 }
dynCheck_entry_vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)3010 static void dynCheck_entry_vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,
3011                                                  uint32_t deviceMask) {
3012     auto resources = ResourceTracker::get();
3013     VkDevice device = resources->getDevice(commandBuffer);
3014     ;
3015     if (!resources->hasDeviceExtension(device, "VK_KHR_device_group")) {
3016         sOnInvalidDynamicallyCheckedCall("vkCmdSetDeviceMaskKHR", "VK_KHR_device_group");
3017     }
3018     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
3019     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3020     vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
3021 }
entry_vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)3022 static void entry_vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX,
3023                                        uint32_t baseGroupY, uint32_t baseGroupZ,
3024                                        uint32_t groupCountX, uint32_t groupCountY,
3025                                        uint32_t groupCountZ) {
3026     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
3027     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3028     vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX,
3029                                 groupCountY, groupCountZ, true /* do lock */);
3030 }
dynCheck_entry_vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)3031 static void dynCheck_entry_vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX,
3032                                                 uint32_t baseGroupY, uint32_t baseGroupZ,
3033                                                 uint32_t groupCountX, uint32_t groupCountY,
3034                                                 uint32_t groupCountZ) {
3035     auto resources = ResourceTracker::get();
3036     VkDevice device = resources->getDevice(commandBuffer);
3037     ;
3038     if (!resources->hasDeviceExtension(device, "VK_KHR_device_group")) {
3039         sOnInvalidDynamicallyCheckedCall("vkCmdDispatchBaseKHR", "VK_KHR_device_group");
3040     }
3041     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
3042     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3043     vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX,
3044                                 groupCountY, groupCountZ, true /* do lock */);
3045 }
3046 #endif
3047 #ifdef VK_KHR_shader_draw_parameters
3048 #endif
3049 #ifdef VK_KHR_maintenance1
entry_vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)3050 static void entry_vkTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool,
3051                                        VkCommandPoolTrimFlags flags) {
3052     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
3053     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3054     vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
3055 }
dynCheck_entry_vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)3056 static void dynCheck_entry_vkTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool,
3057                                                 VkCommandPoolTrimFlags flags) {
3058     auto resources = ResourceTracker::get();
3059     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1")) {
3060         sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
3061     }
3062     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
3063     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3064     vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
3065 }
3066 #endif
3067 #ifdef VK_KHR_device_group_creation
entry_vkEnumeratePhysicalDeviceGroupsKHR(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)3068 static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
3069     VkInstance instance, uint32_t* pPhysicalDeviceGroupCount,
3070     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
3071     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
3072     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3073     VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
3074     vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(
3075         instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
3076     return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
3077 }
3078 #endif
3079 #ifdef VK_KHR_external_memory_capabilities
entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)3080 static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
3081     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3082     VkExternalBufferProperties* pExternalBufferProperties) {
3083     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
3084     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3085     vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(
3086         physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
3087 }
3088 #endif
3089 #ifdef VK_KHR_external_memory
3090 #endif
3091 #ifdef VK_KHR_external_memory_win32
entry_vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3092 static VkResult entry_vkGetMemoryWin32HandleKHR(
3093     VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) {
3094     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
3095     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3096     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
3097     vkGetMemoryWin32HandleKHR_VkResult_return =
3098         vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3099     return vkGetMemoryWin32HandleKHR_VkResult_return;
3100 }
dynCheck_entry_vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3101 static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
3102     VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) {
3103     auto resources = ResourceTracker::get();
3104     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32")) {
3105         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR",
3106                                          "VK_KHR_external_memory_win32");
3107     }
3108     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
3109     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3110     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
3111     vkGetMemoryWin32HandleKHR_VkResult_return =
3112         vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3113     return vkGetMemoryWin32HandleKHR_VkResult_return;
3114 }
entry_vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)3115 static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3116     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle,
3117     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
3118     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
3119     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3120     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
3121     vkGetMemoryWin32HandlePropertiesKHR_VkResult_return =
3122         vkEnc->vkGetMemoryWin32HandlePropertiesKHR(
3123             device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
3124     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3125 }
dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)3126 static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3127     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle,
3128     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
3129     auto resources = ResourceTracker::get();
3130     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32")) {
3131         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR",
3132                                          "VK_KHR_external_memory_win32");
3133     }
3134     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
3135     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3136     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
3137     vkGetMemoryWin32HandlePropertiesKHR_VkResult_return =
3138         vkEnc->vkGetMemoryWin32HandlePropertiesKHR(
3139             device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
3140     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3141 }
3142 #endif
3143 #ifdef VK_KHR_external_memory_fd
entry_vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)3144 static VkResult entry_vkGetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo,
3145                                        int* pFd) {
3146     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
3147     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3148     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
3149     vkGetMemoryFdKHR_VkResult_return =
3150         vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
3151     return vkGetMemoryFdKHR_VkResult_return;
3152 }
dynCheck_entry_vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)3153 static VkResult dynCheck_entry_vkGetMemoryFdKHR(VkDevice device,
3154                                                 const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) {
3155     auto resources = ResourceTracker::get();
3156     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd")) {
3157         sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3158     }
3159     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
3160     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3161     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
3162     vkGetMemoryFdKHR_VkResult_return =
3163         vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
3164     return vkGetMemoryFdKHR_VkResult_return;
3165 }
entry_vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3166 static VkResult entry_vkGetMemoryFdPropertiesKHR(VkDevice device,
3167                                                  VkExternalMemoryHandleTypeFlagBits handleType,
3168                                                  int fd,
3169                                                  VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
3170     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
3171     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3172     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
3173     vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(
3174         device, handleType, fd, pMemoryFdProperties, true /* do lock */);
3175     return vkGetMemoryFdPropertiesKHR_VkResult_return;
3176 }
dynCheck_entry_vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3177 static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3178     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd,
3179     VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
3180     auto resources = ResourceTracker::get();
3181     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd")) {
3182         sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3183     }
3184     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
3185     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3186     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
3187     vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(
3188         device, handleType, fd, pMemoryFdProperties, true /* do lock */);
3189     return vkGetMemoryFdPropertiesKHR_VkResult_return;
3190 }
3191 #endif
3192 #ifdef VK_KHR_win32_keyed_mutex
3193 #endif
3194 #ifdef VK_KHR_external_semaphore_capabilities
entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)3195 static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3196     VkPhysicalDevice physicalDevice,
3197     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3198     VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
3199     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
3200     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3201     vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3202         physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
3203 }
3204 #endif
3205 #ifdef VK_KHR_external_semaphore
3206 #endif
3207 #ifdef VK_KHR_external_semaphore_win32
entry_vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)3208 static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3209     VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
3210     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
3211     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3212     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3213     vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(
3214         device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
3215     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3216 }
dynCheck_entry_vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)3217 static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3218     VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
3219     auto resources = ResourceTracker::get();
3220     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32")) {
3221         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR",
3222                                          "VK_KHR_external_semaphore_win32");
3223     }
3224     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
3225     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3226     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3227     vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(
3228         device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
3229     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3230 }
entry_vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3231 static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3232     VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) {
3233     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
3234     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3235     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3236     vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(
3237         device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3238     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3239 }
dynCheck_entry_vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3240 static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3241     VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) {
3242     auto resources = ResourceTracker::get();
3243     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32")) {
3244         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR",
3245                                          "VK_KHR_external_semaphore_win32");
3246     }
3247     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
3248     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3249     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
3250     vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(
3251         device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3252     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3253 }
3254 #endif
3255 #ifdef VK_KHR_external_semaphore_fd
entry_vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3256 static VkResult entry_vkImportSemaphoreFdKHR(
3257     VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
3258     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
3259     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3260     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3261     auto resources = ResourceTracker::get();
3262     vkImportSemaphoreFdKHR_VkResult_return =
3263         resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3264     return vkImportSemaphoreFdKHR_VkResult_return;
3265 }
dynCheck_entry_vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3266 static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3267     VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
3268     auto resources = ResourceTracker::get();
3269     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd")) {
3270         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3271     }
3272     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
3273     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3274     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3275     vkImportSemaphoreFdKHR_VkResult_return =
3276         resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3277     return vkImportSemaphoreFdKHR_VkResult_return;
3278 }
entry_vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3279 static VkResult entry_vkGetSemaphoreFdKHR(VkDevice device,
3280                                           const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) {
3281     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3282     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3283     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3284     auto resources = ResourceTracker::get();
3285     vkGetSemaphoreFdKHR_VkResult_return =
3286         resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3287     return vkGetSemaphoreFdKHR_VkResult_return;
3288 }
dynCheck_entry_vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3289 static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(VkDevice device,
3290                                                    const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3291                                                    int* pFd) {
3292     auto resources = ResourceTracker::get();
3293     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd")) {
3294         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3295     }
3296     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3297     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3298     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3299     vkGetSemaphoreFdKHR_VkResult_return =
3300         resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3301     return vkGetSemaphoreFdKHR_VkResult_return;
3302 }
3303 #endif
3304 #ifdef VK_KHR_push_descriptor
entry_vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)3305 static void entry_vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,
3306                                             VkPipelineBindPoint pipelineBindPoint,
3307                                             VkPipelineLayout layout, uint32_t set,
3308                                             uint32_t descriptorWriteCount,
3309                                             const VkWriteDescriptorSet* pDescriptorWrites) {
3310     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
3311     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3312     vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set,
3313                                      descriptorWriteCount, pDescriptorWrites, true /* do lock */);
3314 }
dynCheck_entry_vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)3315 static void dynCheck_entry_vkCmdPushDescriptorSetKHR(
3316     VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
3317     uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) {
3318     auto resources = ResourceTracker::get();
3319     VkDevice device = resources->getDevice(commandBuffer);
3320     ;
3321     if (!resources->hasDeviceExtension(device, "VK_KHR_push_descriptor")) {
3322         sOnInvalidDynamicallyCheckedCall("vkCmdPushDescriptorSetKHR", "VK_KHR_push_descriptor");
3323     }
3324     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
3325     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3326     vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set,
3327                                      descriptorWriteCount, pDescriptorWrites, true /* do lock */);
3328 }
entry_vkCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)3329 static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3330     VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3331     VkPipelineLayout layout, uint32_t set, const void* pData) {
3332     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
3333     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3334     vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout,
3335                                                  set, pData, true /* do lock */);
3336 }
dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)3337 static void dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR(
3338     VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3339     VkPipelineLayout layout, uint32_t set, const void* pData) {
3340     auto resources = ResourceTracker::get();
3341     VkDevice device = resources->getDevice(commandBuffer);
3342     ;
3343     if (!resources->hasDeviceExtension(device, "VK_KHR_push_descriptor")) {
3344         sOnInvalidDynamicallyCheckedCall("vkCmdPushDescriptorSetWithTemplateKHR",
3345                                          "VK_KHR_push_descriptor");
3346     }
3347     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
3348     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3349     vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout,
3350                                                  set, pData, true /* do lock */);
3351 }
3352 #endif
3353 #ifdef VK_KHR_shader_float16_int8
3354 #endif
3355 #ifdef VK_KHR_16bit_storage
3356 #endif
3357 #ifdef VK_KHR_incremental_present
3358 #endif
3359 #ifdef VK_KHR_descriptor_update_template
entry_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3360 static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3361     VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3362     const VkAllocationCallbacks* pAllocator,
3363     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
3364     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3365     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3366     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3367     vkCreateDescriptorUpdateTemplateKHR_VkResult_return =
3368         vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator,
3369                                                    pDescriptorUpdateTemplate, true /* do lock */);
3370     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3371 }
dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3372 static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3373     VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3374     const VkAllocationCallbacks* pAllocator,
3375     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
3376     auto resources = ResourceTracker::get();
3377     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template")) {
3378         sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR",
3379                                          "VK_KHR_descriptor_update_template");
3380     }
3381     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3382     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3383     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3384     vkCreateDescriptorUpdateTemplateKHR_VkResult_return =
3385         vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator,
3386                                                    pDescriptorUpdateTemplate, true /* do lock */);
3387     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3388 }
entry_vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3389 static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3390     VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3391     const VkAllocationCallbacks* pAllocator) {
3392     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3393     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3394     vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator,
3395                                                 true /* do lock */);
3396 }
dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3397 static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3398     VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3399     const VkAllocationCallbacks* pAllocator) {
3400     auto resources = ResourceTracker::get();
3401     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template")) {
3402         sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR",
3403                                          "VK_KHR_descriptor_update_template");
3404     }
3405     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3406     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3407     vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator,
3408                                                 true /* do lock */);
3409 }
entry_vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3410 static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3411     VkDevice device, VkDescriptorSet descriptorSet,
3412     VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) {
3413     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3414     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3415     vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate,
3416                                                 pData, true /* do lock */);
3417 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3418 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3419     VkDevice device, VkDescriptorSet descriptorSet,
3420     VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) {
3421     auto resources = ResourceTracker::get();
3422     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template")) {
3423         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR",
3424                                          "VK_KHR_descriptor_update_template");
3425     }
3426     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3427     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3428     vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate,
3429                                                 pData, true /* do lock */);
3430 }
3431 #endif
3432 #ifdef VK_KHR_imageless_framebuffer
3433 #endif
3434 #ifdef VK_KHR_create_renderpass2
entry_vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3435 static VkResult entry_vkCreateRenderPass2KHR(VkDevice device,
3436                                              const VkRenderPassCreateInfo2* pCreateInfo,
3437                                              const VkAllocationCallbacks* pAllocator,
3438                                              VkRenderPass* pRenderPass) {
3439     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3440     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3441     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3442     vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(
3443         device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
3444     return vkCreateRenderPass2KHR_VkResult_return;
3445 }
dynCheck_entry_vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3446 static VkResult dynCheck_entry_vkCreateRenderPass2KHR(VkDevice device,
3447                                                       const VkRenderPassCreateInfo2* pCreateInfo,
3448                                                       const VkAllocationCallbacks* pAllocator,
3449                                                       VkRenderPass* pRenderPass) {
3450     auto resources = ResourceTracker::get();
3451     if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2")) {
3452         sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3453     }
3454     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3455     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3456     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3457     vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(
3458         device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
3459     return vkCreateRenderPass2KHR_VkResult_return;
3460 }
entry_vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)3461 static void entry_vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,
3462                                            const VkRenderPassBeginInfo* pRenderPassBegin,
3463                                            const VkSubpassBeginInfo* pSubpassBeginInfo) {
3464     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
3465     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3466     vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo,
3467                                     true /* do lock */);
3468 }
dynCheck_entry_vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)3469 static void dynCheck_entry_vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,
3470                                                     const VkRenderPassBeginInfo* pRenderPassBegin,
3471                                                     const VkSubpassBeginInfo* pSubpassBeginInfo) {
3472     auto resources = ResourceTracker::get();
3473     VkDevice device = resources->getDevice(commandBuffer);
3474     ;
3475     if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2")) {
3476         sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderPass2KHR", "VK_KHR_create_renderpass2");
3477     }
3478     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
3479     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3480     vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo,
3481                                     true /* do lock */);
3482 }
entry_vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)3483 static void entry_vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,
3484                                        const VkSubpassBeginInfo* pSubpassBeginInfo,
3485                                        const VkSubpassEndInfo* pSubpassEndInfo) {
3486     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
3487     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3488     vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo,
3489                                 true /* do lock */);
3490 }
dynCheck_entry_vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)3491 static void dynCheck_entry_vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,
3492                                                 const VkSubpassBeginInfo* pSubpassBeginInfo,
3493                                                 const VkSubpassEndInfo* pSubpassEndInfo) {
3494     auto resources = ResourceTracker::get();
3495     VkDevice device = resources->getDevice(commandBuffer);
3496     ;
3497     if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2")) {
3498         sOnInvalidDynamicallyCheckedCall("vkCmdNextSubpass2KHR", "VK_KHR_create_renderpass2");
3499     }
3500     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
3501     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3502     vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo,
3503                                 true /* do lock */);
3504 }
entry_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)3505 static void entry_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,
3506                                          const VkSubpassEndInfo* pSubpassEndInfo) {
3507     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
3508     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3509     vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
3510 }
dynCheck_entry_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)3511 static void dynCheck_entry_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,
3512                                                   const VkSubpassEndInfo* pSubpassEndInfo) {
3513     auto resources = ResourceTracker::get();
3514     VkDevice device = resources->getDevice(commandBuffer);
3515     ;
3516     if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2")) {
3517         sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderPass2KHR", "VK_KHR_create_renderpass2");
3518     }
3519     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
3520     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3521     vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
3522 }
3523 #endif
3524 #ifdef VK_KHR_shared_presentable_image
entry_vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3525 static VkResult entry_vkGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) {
3526     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3527     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3528     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3529     vkGetSwapchainStatusKHR_VkResult_return =
3530         vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
3531     return vkGetSwapchainStatusKHR_VkResult_return;
3532 }
dynCheck_entry_vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3533 static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) {
3534     auto resources = ResourceTracker::get();
3535     if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image")) {
3536         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR",
3537                                          "VK_KHR_shared_presentable_image");
3538     }
3539     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3540     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3541     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3542     vkGetSwapchainStatusKHR_VkResult_return =
3543         vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
3544     return vkGetSwapchainStatusKHR_VkResult_return;
3545 }
3546 #endif
3547 #ifdef VK_KHR_external_fence_capabilities
entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)3548 static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3549     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3550     VkExternalFenceProperties* pExternalFenceProperties) {
3551     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
3552     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3553     auto resources = ResourceTracker::get();
3554     resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3555         vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
3556 }
3557 #endif
3558 #ifdef VK_KHR_external_fence
3559 #endif
3560 #ifdef VK_KHR_external_fence_win32
entry_vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3561 static VkResult entry_vkImportFenceWin32HandleKHR(
3562     VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
3563     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3564     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3565     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3566     vkImportFenceWin32HandleKHR_VkResult_return =
3567         vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
3568     return vkImportFenceWin32HandleKHR_VkResult_return;
3569 }
dynCheck_entry_vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3570 static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3571     VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
3572     auto resources = ResourceTracker::get();
3573     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32")) {
3574         sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR",
3575                                          "VK_KHR_external_fence_win32");
3576     }
3577     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3578     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3579     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3580     vkImportFenceWin32HandleKHR_VkResult_return =
3581         vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
3582     return vkImportFenceWin32HandleKHR_VkResult_return;
3583 }
entry_vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3584 static VkResult entry_vkGetFenceWin32HandleKHR(
3585     VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) {
3586     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3587     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3588     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3589     vkGetFenceWin32HandleKHR_VkResult_return =
3590         vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3591     return vkGetFenceWin32HandleKHR_VkResult_return;
3592 }
dynCheck_entry_vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3593 static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3594     VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) {
3595     auto resources = ResourceTracker::get();
3596     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32")) {
3597         sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3598     }
3599     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3600     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3601     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3602     vkGetFenceWin32HandleKHR_VkResult_return =
3603         vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
3604     return vkGetFenceWin32HandleKHR_VkResult_return;
3605 }
3606 #endif
3607 #ifdef VK_KHR_external_fence_fd
entry_vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3608 static VkResult entry_vkImportFenceFdKHR(VkDevice device,
3609                                          const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
3610     AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3611     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3612     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3613     auto resources = ResourceTracker::get();
3614     vkImportFenceFdKHR_VkResult_return =
3615         resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3616     return vkImportFenceFdKHR_VkResult_return;
3617 }
dynCheck_entry_vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3618 static VkResult dynCheck_entry_vkImportFenceFdKHR(
3619     VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
3620     auto resources = ResourceTracker::get();
3621     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd")) {
3622         sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3623     }
3624     AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3625     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3626     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3627     vkImportFenceFdKHR_VkResult_return =
3628         resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3629     return vkImportFenceFdKHR_VkResult_return;
3630 }
entry_vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3631 static VkResult entry_vkGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo,
3632                                       int* pFd) {
3633     AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3634     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3635     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3636     auto resources = ResourceTracker::get();
3637     vkGetFenceFdKHR_VkResult_return =
3638         resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3639     return vkGetFenceFdKHR_VkResult_return;
3640 }
dynCheck_entry_vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3641 static VkResult dynCheck_entry_vkGetFenceFdKHR(VkDevice device,
3642                                                const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) {
3643     auto resources = ResourceTracker::get();
3644     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd")) {
3645         sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3646     }
3647     AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3648     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3649     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3650     vkGetFenceFdKHR_VkResult_return =
3651         resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3652     return vkGetFenceFdKHR_VkResult_return;
3653 }
3654 #endif
3655 #ifdef VK_KHR_performance_query
entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)3656 static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3657     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount,
3658     VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) {
3659     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3660     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3661     VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return =
3662         (VkResult)0;
3663     vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return =
3664         vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3665             physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions,
3666             true /* do lock */);
3667     return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3668 }
entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)3669 static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3670     VkPhysicalDevice physicalDevice,
3671     const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses) {
3672     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3673     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3674     vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3675         physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3676 }
entry_vkAcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)3677 static VkResult entry_vkAcquireProfilingLockKHR(VkDevice device,
3678                                                 const VkAcquireProfilingLockInfoKHR* pInfo) {
3679     AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3680     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3681     VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3682     vkAcquireProfilingLockKHR_VkResult_return =
3683         vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3684     return vkAcquireProfilingLockKHR_VkResult_return;
3685 }
dynCheck_entry_vkAcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)3686 static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3687     VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) {
3688     auto resources = ResourceTracker::get();
3689     if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query")) {
3690         sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3691     }
3692     AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3693     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3694     VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3695     vkAcquireProfilingLockKHR_VkResult_return =
3696         vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3697     return vkAcquireProfilingLockKHR_VkResult_return;
3698 }
entry_vkReleaseProfilingLockKHR(VkDevice device)3699 static void entry_vkReleaseProfilingLockKHR(VkDevice device) {
3700     AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3701     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3702     vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3703 }
dynCheck_entry_vkReleaseProfilingLockKHR(VkDevice device)3704 static void dynCheck_entry_vkReleaseProfilingLockKHR(VkDevice device) {
3705     auto resources = ResourceTracker::get();
3706     if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query")) {
3707         sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3708     }
3709     AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3710     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3711     vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3712 }
3713 #endif
3714 #ifdef VK_KHR_maintenance2
3715 #endif
3716 #ifdef VK_KHR_get_surface_capabilities2
entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkSurfaceCapabilities2KHR * pSurfaceCapabilities)3717 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3718     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3719     VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
3720     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
3721     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3722     VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3723     vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return =
3724         vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo,
3725                                                           pSurfaceCapabilities, true /* do lock */);
3726     return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3727 }
entry_vkGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pSurfaceFormatCount,VkSurfaceFormat2KHR * pSurfaceFormats)3728 static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3729     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3730     uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) {
3731     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
3732     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3733     VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3734     vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return =
3735         vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(
3736             physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
3737     return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3738 }
3739 #endif
3740 #ifdef VK_KHR_variable_pointers
3741 #endif
3742 #ifdef VK_KHR_get_display_properties2
entry_vkGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayProperties2KHR * pProperties)3743 static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3744     VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount,
3745     VkDisplayProperties2KHR* pProperties) {
3746     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
3747     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3748     VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3749     vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return =
3750         vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties,
3751                                                         true /* do lock */);
3752     return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3753 }
entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlaneProperties2KHR * pProperties)3754 static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3755     VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount,
3756     VkDisplayPlaneProperties2KHR* pProperties) {
3757     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
3758     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3759     VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3760     vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return =
3761         vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount,
3762                                                              pProperties, true /* do lock */);
3763     return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3764 }
entry_vkGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModeProperties2KHR * pProperties)3765 static VkResult entry_vkGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,
3766                                                      VkDisplayKHR display, uint32_t* pPropertyCount,
3767                                                      VkDisplayModeProperties2KHR* pProperties) {
3768     AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
3769     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3770     VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3771     vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(
3772         physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
3773     return vkGetDisplayModeProperties2KHR_VkResult_return;
3774 }
entry_vkGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo,VkDisplayPlaneCapabilities2KHR * pCapabilities)3775 static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3776     VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3777     VkDisplayPlaneCapabilities2KHR* pCapabilities) {
3778     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
3779     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3780     VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3781     vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(
3782         physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
3783     return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3784 }
3785 #endif
3786 #ifdef VK_KHR_dedicated_allocation
3787 #endif
3788 #ifdef VK_KHR_storage_buffer_storage_class
3789 #endif
3790 #ifdef VK_KHR_relaxed_block_layout
3791 #endif
3792 #ifdef VK_KHR_get_memory_requirements2
entry_vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3793 static void entry_vkGetImageMemoryRequirements2KHR(VkDevice device,
3794                                                    const VkImageMemoryRequirementsInfo2* pInfo,
3795                                                    VkMemoryRequirements2* pMemoryRequirements) {
3796     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3797     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3798     auto resources = ResourceTracker::get();
3799     resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3800 }
dynCheck_entry_vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3801 static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3802     VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo,
3803     VkMemoryRequirements2* pMemoryRequirements) {
3804     auto resources = ResourceTracker::get();
3805     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2")) {
3806         sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR",
3807                                          "VK_KHR_get_memory_requirements2");
3808     }
3809     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3810     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3811     resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3812 }
entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3813 static void entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,
3814                                                     const VkBufferMemoryRequirementsInfo2* pInfo,
3815                                                     VkMemoryRequirements2* pMemoryRequirements) {
3816     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3817     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3818     auto resources = ResourceTracker::get();
3819     resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3820 }
dynCheck_entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3821 static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3822     VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo,
3823     VkMemoryRequirements2* pMemoryRequirements) {
3824     auto resources = ResourceTracker::get();
3825     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2")) {
3826         sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR",
3827                                          "VK_KHR_get_memory_requirements2");
3828     }
3829     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3830     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3831     resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3832 }
entry_vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3833 static void entry_vkGetImageSparseMemoryRequirements2KHR(
3834     VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo,
3835     uint32_t* pSparseMemoryRequirementCount,
3836     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
3837     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3838     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3839     vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount,
3840                                                   pSparseMemoryRequirements, true /* do lock */);
3841 }
dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3842 static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3843     VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo,
3844     uint32_t* pSparseMemoryRequirementCount,
3845     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
3846     auto resources = ResourceTracker::get();
3847     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2")) {
3848         sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR",
3849                                          "VK_KHR_get_memory_requirements2");
3850     }
3851     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3852     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3853     vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount,
3854                                                   pSparseMemoryRequirements, true /* do lock */);
3855 }
3856 #endif
3857 #ifdef VK_KHR_image_format_list
3858 #endif
3859 #ifdef VK_KHR_sampler_ycbcr_conversion
entry_vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3860 static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3861     VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3862     const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) {
3863     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3864     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3865     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3866     auto resources = ResourceTracker::get();
3867     vkCreateSamplerYcbcrConversionKHR_VkResult_return =
3868         resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo,
3869                                                         pAllocator, pYcbcrConversion);
3870     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3871 }
dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3872 static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3873     VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3874     const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) {
3875     auto resources = ResourceTracker::get();
3876     if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion")) {
3877         sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR",
3878                                          "VK_KHR_sampler_ycbcr_conversion");
3879     }
3880     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3881     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3882     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3883     vkCreateSamplerYcbcrConversionKHR_VkResult_return =
3884         resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo,
3885                                                         pAllocator, pYcbcrConversion);
3886     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3887 }
entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3888 static void entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,
3889                                                      VkSamplerYcbcrConversion ycbcrConversion,
3890                                                      const VkAllocationCallbacks* pAllocator) {
3891     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3892     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3893     auto resources = ResourceTracker::get();
3894     resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3895 }
dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3896 static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3897     VkDevice device, VkSamplerYcbcrConversion ycbcrConversion,
3898     const VkAllocationCallbacks* pAllocator) {
3899     auto resources = ResourceTracker::get();
3900     if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion")) {
3901         sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR",
3902                                          "VK_KHR_sampler_ycbcr_conversion");
3903     }
3904     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3905     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3906     resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3907 }
3908 #endif
3909 #ifdef VK_KHR_bind_memory2
entry_vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3910 static VkResult entry_vkBindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount,
3911                                              const VkBindBufferMemoryInfo* pBindInfos) {
3912     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3913     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3914     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3915     auto resources = ResourceTracker::get();
3916     vkBindBufferMemory2KHR_VkResult_return =
3917         resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3918     return vkBindBufferMemory2KHR_VkResult_return;
3919 }
dynCheck_entry_vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3920 static VkResult dynCheck_entry_vkBindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount,
3921                                                       const VkBindBufferMemoryInfo* pBindInfos) {
3922     auto resources = ResourceTracker::get();
3923     if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2")) {
3924         sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3925     }
3926     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3927     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3928     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3929     vkBindBufferMemory2KHR_VkResult_return =
3930         resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3931     return vkBindBufferMemory2KHR_VkResult_return;
3932 }
entry_vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3933 static VkResult entry_vkBindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount,
3934                                             const VkBindImageMemoryInfo* pBindInfos) {
3935     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3936     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3937     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3938     auto resources = ResourceTracker::get();
3939     vkBindImageMemory2KHR_VkResult_return =
3940         resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3941     return vkBindImageMemory2KHR_VkResult_return;
3942 }
dynCheck_entry_vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3943 static VkResult dynCheck_entry_vkBindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount,
3944                                                      const VkBindImageMemoryInfo* pBindInfos) {
3945     auto resources = ResourceTracker::get();
3946     if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2")) {
3947         sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3948     }
3949     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3950     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3951     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3952     vkBindImageMemory2KHR_VkResult_return =
3953         resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3954     return vkBindImageMemory2KHR_VkResult_return;
3955 }
3956 #endif
3957 #ifdef VK_KHR_portability_subset
3958 #endif
3959 #ifdef VK_KHR_maintenance3
entry_vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3960 static void entry_vkGetDescriptorSetLayoutSupportKHR(
3961     VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3962     VkDescriptorSetLayoutSupport* pSupport) {
3963     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3964     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3965     vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
3966 }
dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3967 static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3968     VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3969     VkDescriptorSetLayoutSupport* pSupport) {
3970     auto resources = ResourceTracker::get();
3971     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3")) {
3972         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR",
3973                                          "VK_KHR_maintenance3");
3974     }
3975     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3976     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3977     vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
3978 }
3979 #endif
3980 #ifdef VK_KHR_draw_indirect_count
entry_vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3981 static void entry_vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer,
3982                                             VkDeviceSize offset, VkBuffer countBuffer,
3983                                             VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
3984                                             uint32_t stride) {
3985     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
3986     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3987     vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset,
3988                                      maxDrawCount, stride, true /* do lock */);
3989 }
dynCheck_entry_vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3990 static void dynCheck_entry_vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer,
3991                                                      VkDeviceSize offset, VkBuffer countBuffer,
3992                                                      VkDeviceSize countBufferOffset,
3993                                                      uint32_t maxDrawCount, uint32_t stride) {
3994     auto resources = ResourceTracker::get();
3995     VkDevice device = resources->getDevice(commandBuffer);
3996     ;
3997     if (!resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count")) {
3998         sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCountKHR", "VK_KHR_draw_indirect_count");
3999     }
4000     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
4001     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4002     vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset,
4003                                      maxDrawCount, stride, true /* do lock */);
4004 }
entry_vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4005 static void entry_vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer,
4006                                                    VkDeviceSize offset, VkBuffer countBuffer,
4007                                                    VkDeviceSize countBufferOffset,
4008                                                    uint32_t maxDrawCount, uint32_t stride) {
4009     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
4010     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4011     vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer,
4012                                             countBufferOffset, maxDrawCount, stride,
4013                                             true /* do lock */);
4014 }
dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4015 static void dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR(
4016     VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer,
4017     VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) {
4018     auto resources = ResourceTracker::get();
4019     VkDevice device = resources->getDevice(commandBuffer);
4020     ;
4021     if (!resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count")) {
4022         sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCountKHR",
4023                                          "VK_KHR_draw_indirect_count");
4024     }
4025     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
4026     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4027     vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer,
4028                                             countBufferOffset, maxDrawCount, stride,
4029                                             true /* do lock */);
4030 }
4031 #endif
4032 #ifdef VK_KHR_shader_subgroup_extended_types
4033 #endif
4034 #ifdef VK_KHR_8bit_storage
4035 #endif
4036 #ifdef VK_KHR_shader_atomic_int64
4037 #endif
4038 #ifdef VK_KHR_shader_clock
4039 #endif
4040 #ifdef VK_KHR_video_decode_h265
4041 #endif
4042 #ifdef VK_KHR_global_priority
4043 #endif
4044 #ifdef VK_KHR_driver_properties
4045 #endif
4046 #ifdef VK_KHR_shader_float_controls
4047 #endif
4048 #ifdef VK_KHR_depth_stencil_resolve
4049 #endif
4050 #ifdef VK_KHR_swapchain_mutable_format
4051 #endif
4052 #ifdef VK_KHR_timeline_semaphore
entry_vkGetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)4053 static VkResult entry_vkGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore,
4054                                                     uint64_t* pValue) {
4055     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4056     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4057     VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4058     vkGetSemaphoreCounterValueKHR_VkResult_return =
4059         vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4060     return vkGetSemaphoreCounterValueKHR_VkResult_return;
4061 }
dynCheck_entry_vkGetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)4062 static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore,
4063                                                              uint64_t* pValue) {
4064     auto resources = ResourceTracker::get();
4065     if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore")) {
4066         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR",
4067                                          "VK_KHR_timeline_semaphore");
4068     }
4069     AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4070     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4071     VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4072     vkGetSemaphoreCounterValueKHR_VkResult_return =
4073         vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4074     return vkGetSemaphoreCounterValueKHR_VkResult_return;
4075 }
entry_vkWaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)4076 static VkResult entry_vkWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo,
4077                                           uint64_t timeout) {
4078     AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4079     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4080     VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4081     vkWaitSemaphoresKHR_VkResult_return =
4082         vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4083     return vkWaitSemaphoresKHR_VkResult_return;
4084 }
dynCheck_entry_vkWaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)4085 static VkResult dynCheck_entry_vkWaitSemaphoresKHR(VkDevice device,
4086                                                    const VkSemaphoreWaitInfo* pWaitInfo,
4087                                                    uint64_t timeout) {
4088     auto resources = ResourceTracker::get();
4089     if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore")) {
4090         sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4091     }
4092     AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4093     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4094     VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4095     vkWaitSemaphoresKHR_VkResult_return =
4096         vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4097     return vkWaitSemaphoresKHR_VkResult_return;
4098 }
entry_vkSignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)4099 static VkResult entry_vkSignalSemaphoreKHR(VkDevice device,
4100                                            const VkSemaphoreSignalInfo* pSignalInfo) {
4101     AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4102     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4103     VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4104     vkSignalSemaphoreKHR_VkResult_return =
4105         vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4106     return vkSignalSemaphoreKHR_VkResult_return;
4107 }
dynCheck_entry_vkSignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)4108 static VkResult dynCheck_entry_vkSignalSemaphoreKHR(VkDevice device,
4109                                                     const VkSemaphoreSignalInfo* pSignalInfo) {
4110     auto resources = ResourceTracker::get();
4111     if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore")) {
4112         sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4113     }
4114     AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4115     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4116     VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4117     vkSignalSemaphoreKHR_VkResult_return =
4118         vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4119     return vkSignalSemaphoreKHR_VkResult_return;
4120 }
4121 #endif
4122 #ifdef VK_KHR_vulkan_memory_model
4123 #endif
4124 #ifdef VK_KHR_shader_terminate_invocation
4125 #endif
4126 #ifdef VK_KHR_fragment_shading_rate
entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)4127 static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4128     VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount,
4129     VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) {
4130     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4131     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4132     VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4133     vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return =
4134         vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(
4135             physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4136     return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4137 }
entry_vkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer,const VkExtent2D * pFragmentSize,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])4138 static void entry_vkCmdSetFragmentShadingRateKHR(
4139     VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize,
4140     const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) {
4141     AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4142     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4143     vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps,
4144                                           true /* do lock */);
4145 }
dynCheck_entry_vkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer,const VkExtent2D * pFragmentSize,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])4146 static void dynCheck_entry_vkCmdSetFragmentShadingRateKHR(
4147     VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize,
4148     const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) {
4149     auto resources = ResourceTracker::get();
4150     VkDevice device = resources->getDevice(commandBuffer);
4151     ;
4152     if (!resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate")) {
4153         sOnInvalidDynamicallyCheckedCall("vkCmdSetFragmentShadingRateKHR",
4154                                          "VK_KHR_fragment_shading_rate");
4155     }
4156     AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4157     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4158     vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps,
4159                                           true /* do lock */);
4160 }
4161 #endif
4162 #ifdef VK_KHR_spirv_1_4
4163 #endif
4164 #ifdef VK_KHR_surface_protected_capabilities
4165 #endif
4166 #ifdef VK_KHR_separate_depth_stencil_layouts
4167 #endif
4168 #ifdef VK_KHR_present_wait
entry_vkWaitForPresentKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t presentId,uint64_t timeout)4169 static VkResult entry_vkWaitForPresentKHR(VkDevice device, VkSwapchainKHR swapchain,
4170                                           uint64_t presentId, uint64_t timeout) {
4171     AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4172     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4173     VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4174     vkWaitForPresentKHR_VkResult_return =
4175         vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4176     return vkWaitForPresentKHR_VkResult_return;
4177 }
dynCheck_entry_vkWaitForPresentKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t presentId,uint64_t timeout)4178 static VkResult dynCheck_entry_vkWaitForPresentKHR(VkDevice device, VkSwapchainKHR swapchain,
4179                                                    uint64_t presentId, uint64_t timeout) {
4180     auto resources = ResourceTracker::get();
4181     if (!resources->hasDeviceExtension(device, "VK_KHR_present_wait")) {
4182         sOnInvalidDynamicallyCheckedCall("vkWaitForPresentKHR", "VK_KHR_present_wait");
4183     }
4184     AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4185     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4186     VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4187     vkWaitForPresentKHR_VkResult_return =
4188         vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4189     return vkWaitForPresentKHR_VkResult_return;
4190 }
4191 #endif
4192 #ifdef VK_KHR_uniform_buffer_standard_layout
4193 #endif
4194 #ifdef VK_KHR_buffer_device_address
entry_vkGetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4195 static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(VkDevice device,
4196                                                          const VkBufferDeviceAddressInfo* pInfo) {
4197     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4198     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4199     VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4200     vkGetBufferDeviceAddressKHR_VkDeviceAddress_return =
4201         vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4202     return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4203 }
dynCheck_entry_vkGetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4204 static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4205     VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
4206     auto resources = ResourceTracker::get();
4207     if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address")) {
4208         sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR",
4209                                          "VK_KHR_buffer_device_address");
4210     }
4211     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4212     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4213     VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4214     vkGetBufferDeviceAddressKHR_VkDeviceAddress_return =
4215         vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4216     return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4217 }
entry_vkGetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4218 static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(VkDevice device,
4219                                                          const VkBufferDeviceAddressInfo* pInfo) {
4220     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4221     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4222     uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4223     vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return =
4224         vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4225     return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4226 }
dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4227 static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4228     VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
4229     auto resources = ResourceTracker::get();
4230     if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address")) {
4231         sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR",
4232                                          "VK_KHR_buffer_device_address");
4233     }
4234     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4235     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4236     uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4237     vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return =
4238         vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4239     return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4240 }
entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)4241 static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4242     VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
4243     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4244     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4245     uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4246     vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return =
4247         vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4248     return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4249 }
dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)4250 static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4251     VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
4252     auto resources = ResourceTracker::get();
4253     if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address")) {
4254         sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR",
4255                                          "VK_KHR_buffer_device_address");
4256     }
4257     AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4258     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4259     uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4260     vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return =
4261         vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4262     return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4263 }
4264 #endif
4265 #ifdef VK_KHR_deferred_host_operations
entry_vkCreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)4266 static VkResult entry_vkCreateDeferredOperationKHR(VkDevice device,
4267                                                    const VkAllocationCallbacks* pAllocator,
4268                                                    VkDeferredOperationKHR* pDeferredOperation) {
4269     AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4270     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4271     VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4272     vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(
4273         device, pAllocator, pDeferredOperation, true /* do lock */);
4274     return vkCreateDeferredOperationKHR_VkResult_return;
4275 }
dynCheck_entry_vkCreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)4276 static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4277     VkDevice device, const VkAllocationCallbacks* pAllocator,
4278     VkDeferredOperationKHR* pDeferredOperation) {
4279     auto resources = ResourceTracker::get();
4280     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations")) {
4281         sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR",
4282                                          "VK_KHR_deferred_host_operations");
4283     }
4284     AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4285     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4286     VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4287     vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(
4288         device, pAllocator, pDeferredOperation, true /* do lock */);
4289     return vkCreateDeferredOperationKHR_VkResult_return;
4290 }
entry_vkDestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)4291 static void entry_vkDestroyDeferredOperationKHR(VkDevice device, VkDeferredOperationKHR operation,
4292                                                 const VkAllocationCallbacks* pAllocator) {
4293     AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4294     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4295     vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4296 }
dynCheck_entry_vkDestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)4297 static void dynCheck_entry_vkDestroyDeferredOperationKHR(VkDevice device,
4298                                                          VkDeferredOperationKHR operation,
4299                                                          const VkAllocationCallbacks* pAllocator) {
4300     auto resources = ResourceTracker::get();
4301     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations")) {
4302         sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR",
4303                                          "VK_KHR_deferred_host_operations");
4304     }
4305     AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4306     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4307     vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4308 }
entry_vkGetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)4309 static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(VkDevice device,
4310                                                               VkDeferredOperationKHR operation) {
4311     AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4312     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4313     uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4314     vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return =
4315         vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4316     return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4317 }
dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)4318 static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4319     VkDevice device, VkDeferredOperationKHR operation) {
4320     auto resources = ResourceTracker::get();
4321     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations")) {
4322         sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR",
4323                                          "VK_KHR_deferred_host_operations");
4324     }
4325     AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4326     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4327     uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4328     vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return =
4329         vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4330     return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4331 }
entry_vkGetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)4332 static VkResult entry_vkGetDeferredOperationResultKHR(VkDevice device,
4333                                                       VkDeferredOperationKHR operation) {
4334     AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4335     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4336     VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4337     vkGetDeferredOperationResultKHR_VkResult_return =
4338         vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4339     return vkGetDeferredOperationResultKHR_VkResult_return;
4340 }
dynCheck_entry_vkGetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)4341 static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(VkDevice device,
4342                                                                VkDeferredOperationKHR operation) {
4343     auto resources = ResourceTracker::get();
4344     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations")) {
4345         sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR",
4346                                          "VK_KHR_deferred_host_operations");
4347     }
4348     AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4349     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4350     VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4351     vkGetDeferredOperationResultKHR_VkResult_return =
4352         vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4353     return vkGetDeferredOperationResultKHR_VkResult_return;
4354 }
entry_vkDeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)4355 static VkResult entry_vkDeferredOperationJoinKHR(VkDevice device,
4356                                                  VkDeferredOperationKHR operation) {
4357     AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4358     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4359     VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4360     vkDeferredOperationJoinKHR_VkResult_return =
4361         vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4362     return vkDeferredOperationJoinKHR_VkResult_return;
4363 }
dynCheck_entry_vkDeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)4364 static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(VkDevice device,
4365                                                           VkDeferredOperationKHR operation) {
4366     auto resources = ResourceTracker::get();
4367     if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations")) {
4368         sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR",
4369                                          "VK_KHR_deferred_host_operations");
4370     }
4371     AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4372     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4373     VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4374     vkDeferredOperationJoinKHR_VkResult_return =
4375         vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4376     return vkDeferredOperationJoinKHR_VkResult_return;
4377 }
4378 #endif
4379 #ifdef VK_KHR_pipeline_executable_properties
entry_vkGetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4380 static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4381     VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount,
4382     VkPipelineExecutablePropertiesKHR* pProperties) {
4383     AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4384     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4385     VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4386     vkGetPipelineExecutablePropertiesKHR_VkResult_return =
4387         vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount,
4388                                                     pProperties, true /* do lock */);
4389     return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4390 }
dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4391 static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4392     VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount,
4393     VkPipelineExecutablePropertiesKHR* pProperties) {
4394     auto resources = ResourceTracker::get();
4395     if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties")) {
4396         sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR",
4397                                          "VK_KHR_pipeline_executable_properties");
4398     }
4399     AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4400     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4401     VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4402     vkGetPipelineExecutablePropertiesKHR_VkResult_return =
4403         vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount,
4404                                                     pProperties, true /* do lock */);
4405     return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4406 }
entry_vkGetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4407 static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4408     VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount,
4409     VkPipelineExecutableStatisticKHR* pStatistics) {
4410     AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4411     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4412     VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4413     vkGetPipelineExecutableStatisticsKHR_VkResult_return =
4414         vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount,
4415                                                     pStatistics, true /* do lock */);
4416     return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4417 }
dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4418 static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4419     VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount,
4420     VkPipelineExecutableStatisticKHR* pStatistics) {
4421     auto resources = ResourceTracker::get();
4422     if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties")) {
4423         sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR",
4424                                          "VK_KHR_pipeline_executable_properties");
4425     }
4426     AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4427     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4428     VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4429     vkGetPipelineExecutableStatisticsKHR_VkResult_return =
4430         vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount,
4431                                                     pStatistics, true /* do lock */);
4432     return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4433 }
entry_vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4434 static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4435     VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo,
4436     uint32_t* pInternalRepresentationCount,
4437     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
4438     AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4439     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4440     VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4441     vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return =
4442         vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(
4443             device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations,
4444             true /* do lock */);
4445     return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4446 }
dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4447 static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4448     VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo,
4449     uint32_t* pInternalRepresentationCount,
4450     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
4451     auto resources = ResourceTracker::get();
4452     if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties")) {
4453         sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR",
4454                                          "VK_KHR_pipeline_executable_properties");
4455     }
4456     AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4457     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4458     VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4459     vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return =
4460         vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(
4461             device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations,
4462             true /* do lock */);
4463     return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4464 }
4465 #endif
4466 #ifdef VK_KHR_map_memory2
entry_vkMapMemory2KHR(VkDevice device,const VkMemoryMapInfoKHR * pMemoryMapInfo,void ** ppData)4467 static VkResult entry_vkMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo,
4468                                       void** ppData) {
4469     AEMU_SCOPED_TRACE("vkMapMemory2KHR");
4470     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4471     VkResult vkMapMemory2KHR_VkResult_return = (VkResult)0;
4472     vkMapMemory2KHR_VkResult_return =
4473         vkEnc->vkMapMemory2KHR(device, pMemoryMapInfo, ppData, true /* do lock */);
4474     return vkMapMemory2KHR_VkResult_return;
4475 }
dynCheck_entry_vkMapMemory2KHR(VkDevice device,const VkMemoryMapInfoKHR * pMemoryMapInfo,void ** ppData)4476 static VkResult dynCheck_entry_vkMapMemory2KHR(VkDevice device,
4477                                                const VkMemoryMapInfoKHR* pMemoryMapInfo,
4478                                                void** ppData) {
4479     auto resources = ResourceTracker::get();
4480     if (!resources->hasDeviceExtension(device, "VK_KHR_map_memory2")) {
4481         sOnInvalidDynamicallyCheckedCall("vkMapMemory2KHR", "VK_KHR_map_memory2");
4482     }
4483     AEMU_SCOPED_TRACE("vkMapMemory2KHR");
4484     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4485     VkResult vkMapMemory2KHR_VkResult_return = (VkResult)0;
4486     vkMapMemory2KHR_VkResult_return =
4487         vkEnc->vkMapMemory2KHR(device, pMemoryMapInfo, ppData, true /* do lock */);
4488     return vkMapMemory2KHR_VkResult_return;
4489 }
entry_vkUnmapMemory2KHR(VkDevice device,const VkMemoryUnmapInfoKHR * pMemoryUnmapInfo)4490 static VkResult entry_vkUnmapMemory2KHR(VkDevice device,
4491                                         const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo) {
4492     AEMU_SCOPED_TRACE("vkUnmapMemory2KHR");
4493     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4494     VkResult vkUnmapMemory2KHR_VkResult_return = (VkResult)0;
4495     vkUnmapMemory2KHR_VkResult_return =
4496         vkEnc->vkUnmapMemory2KHR(device, pMemoryUnmapInfo, true /* do lock */);
4497     return vkUnmapMemory2KHR_VkResult_return;
4498 }
dynCheck_entry_vkUnmapMemory2KHR(VkDevice device,const VkMemoryUnmapInfoKHR * pMemoryUnmapInfo)4499 static VkResult dynCheck_entry_vkUnmapMemory2KHR(VkDevice device,
4500                                                  const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo) {
4501     auto resources = ResourceTracker::get();
4502     if (!resources->hasDeviceExtension(device, "VK_KHR_map_memory2")) {
4503         sOnInvalidDynamicallyCheckedCall("vkUnmapMemory2KHR", "VK_KHR_map_memory2");
4504     }
4505     AEMU_SCOPED_TRACE("vkUnmapMemory2KHR");
4506     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4507     VkResult vkUnmapMemory2KHR_VkResult_return = (VkResult)0;
4508     vkUnmapMemory2KHR_VkResult_return =
4509         vkEnc->vkUnmapMemory2KHR(device, pMemoryUnmapInfo, true /* do lock */);
4510     return vkUnmapMemory2KHR_VkResult_return;
4511 }
4512 #endif
4513 #ifdef VK_KHR_shader_integer_dot_product
4514 #endif
4515 #ifdef VK_KHR_pipeline_library
4516 #endif
4517 #ifdef VK_KHR_shader_non_semantic_info
4518 #endif
4519 #ifdef VK_KHR_present_id
4520 #endif
4521 #ifdef VK_KHR_video_encode_queue
entry_vkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoEncodeInfoKHR * pEncodeInfo)4522 static void entry_vkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer,
4523                                       const VkVideoEncodeInfoKHR* pEncodeInfo) {
4524     AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
4525     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4526     vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
4527 }
dynCheck_entry_vkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoEncodeInfoKHR * pEncodeInfo)4528 static void dynCheck_entry_vkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer,
4529                                                const VkVideoEncodeInfoKHR* pEncodeInfo) {
4530     auto resources = ResourceTracker::get();
4531     VkDevice device = resources->getDevice(commandBuffer);
4532     ;
4533     if (!resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue")) {
4534         sOnInvalidDynamicallyCheckedCall("vkCmdEncodeVideoKHR", "VK_KHR_video_encode_queue");
4535     }
4536     AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
4537     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4538     vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
4539 }
4540 #endif
4541 #ifdef VK_KHR_synchronization2
entry_vkCmdSetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)4542 static void entry_vkCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
4543                                     const VkDependencyInfo* pDependencyInfo) {
4544     AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
4545     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4546     vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
4547 }
dynCheck_entry_vkCmdSetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)4548 static void dynCheck_entry_vkCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
4549                                              const VkDependencyInfo* pDependencyInfo) {
4550     auto resources = ResourceTracker::get();
4551     VkDevice device = resources->getDevice(commandBuffer);
4552     ;
4553     if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2")) {
4554         sOnInvalidDynamicallyCheckedCall("vkCmdSetEvent2KHR", "VK_KHR_synchronization2");
4555     }
4556     AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
4557     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4558     vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
4559 }
entry_vkCmdResetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)4560 static void entry_vkCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
4561                                       VkPipelineStageFlags2 stageMask) {
4562     AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
4563     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4564     vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
4565 }
dynCheck_entry_vkCmdResetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)4566 static void dynCheck_entry_vkCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
4567                                                VkPipelineStageFlags2 stageMask) {
4568     auto resources = ResourceTracker::get();
4569     VkDevice device = resources->getDevice(commandBuffer);
4570     ;
4571     if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2")) {
4572         sOnInvalidDynamicallyCheckedCall("vkCmdResetEvent2KHR", "VK_KHR_synchronization2");
4573     }
4574     AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
4575     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4576     vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
4577 }
entry_vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)4578 static void entry_vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount,
4579                                       const VkEvent* pEvents,
4580                                       const VkDependencyInfo* pDependencyInfos) {
4581     AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
4582     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4583     vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos,
4584                                true /* do lock */);
4585 }
dynCheck_entry_vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)4586 static void dynCheck_entry_vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount,
4587                                                const VkEvent* pEvents,
4588                                                const VkDependencyInfo* pDependencyInfos) {
4589     auto resources = ResourceTracker::get();
4590     VkDevice device = resources->getDevice(commandBuffer);
4591     ;
4592     if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2")) {
4593         sOnInvalidDynamicallyCheckedCall("vkCmdWaitEvents2KHR", "VK_KHR_synchronization2");
4594     }
4595     AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
4596     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4597     vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos,
4598                                true /* do lock */);
4599 }
entry_vkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)4600 static void entry_vkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,
4601                                            const VkDependencyInfo* pDependencyInfo) {
4602     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
4603     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4604     vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
4605 }
dynCheck_entry_vkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)4606 static void dynCheck_entry_vkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,
4607                                                     const VkDependencyInfo* pDependencyInfo) {
4608     auto resources = ResourceTracker::get();
4609     VkDevice device = resources->getDevice(commandBuffer);
4610     ;
4611     if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2")) {
4612         sOnInvalidDynamicallyCheckedCall("vkCmdPipelineBarrier2KHR", "VK_KHR_synchronization2");
4613     }
4614     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
4615     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4616     vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
4617 }
entry_vkCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)4618 static void entry_vkCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,
4619                                           VkPipelineStageFlags2 stage, VkQueryPool queryPool,
4620                                           uint32_t query) {
4621     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
4622     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4623     vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
4624 }
dynCheck_entry_vkCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)4625 static void dynCheck_entry_vkCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,
4626                                                    VkPipelineStageFlags2 stage,
4627                                                    VkQueryPool queryPool, uint32_t query) {
4628     auto resources = ResourceTracker::get();
4629     VkDevice device = resources->getDevice(commandBuffer);
4630     ;
4631     if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2")) {
4632         sOnInvalidDynamicallyCheckedCall("vkCmdWriteTimestamp2KHR", "VK_KHR_synchronization2");
4633     }
4634     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
4635     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4636     vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
4637 }
entry_vkQueueSubmit2KHR(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)4638 static VkResult entry_vkQueueSubmit2KHR(VkQueue queue, uint32_t submitCount,
4639                                         const VkSubmitInfo2* pSubmits, VkFence fence) {
4640     AEMU_SCOPED_TRACE("vkQueueSubmit2KHR");
4641     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4642     VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
4643     vkQueueSubmit2KHR_VkResult_return =
4644         vkEnc->vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, true /* do lock */);
4645     return vkQueueSubmit2KHR_VkResult_return;
4646 }
entry_vkCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)4647 static void entry_vkCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,
4648                                              VkPipelineStageFlags2 stage, VkBuffer dstBuffer,
4649                                              VkDeviceSize dstOffset, uint32_t marker) {
4650     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
4651     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4652     vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker,
4653                                       true /* do lock */);
4654 }
dynCheck_entry_vkCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)4655 static void dynCheck_entry_vkCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,
4656                                                       VkPipelineStageFlags2 stage,
4657                                                       VkBuffer dstBuffer, VkDeviceSize dstOffset,
4658                                                       uint32_t marker) {
4659     auto resources = ResourceTracker::get();
4660     VkDevice device = resources->getDevice(commandBuffer);
4661     ;
4662     if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2")) {
4663         sOnInvalidDynamicallyCheckedCall("vkCmdWriteBufferMarker2AMD", "VK_KHR_synchronization2");
4664     }
4665     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
4666     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4667     vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker,
4668                                       true /* do lock */);
4669 }
entry_vkGetQueueCheckpointData2NV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointData2NV * pCheckpointData)4670 static void entry_vkGetQueueCheckpointData2NV(VkQueue queue, uint32_t* pCheckpointDataCount,
4671                                               VkCheckpointData2NV* pCheckpointData) {
4672     AEMU_SCOPED_TRACE("vkGetQueueCheckpointData2NV");
4673     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4674     vkEnc->vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData,
4675                                        true /* do lock */);
4676 }
4677 #endif
4678 #ifdef VK_KHR_fragment_shader_barycentric
4679 #endif
4680 #ifdef VK_KHR_shader_subgroup_uniform_control_flow
4681 #endif
4682 #ifdef VK_KHR_zero_initialize_workgroup_memory
4683 #endif
4684 #ifdef VK_KHR_workgroup_memory_explicit_layout
4685 #endif
4686 #ifdef VK_KHR_copy_commands2
entry_vkCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)4687 static void entry_vkCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,
4688                                       const VkCopyBufferInfo2* pCopyBufferInfo) {
4689     AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4690     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4691     vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4692 }
dynCheck_entry_vkCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)4693 static void dynCheck_entry_vkCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,
4694                                                const VkCopyBufferInfo2* pCopyBufferInfo) {
4695     auto resources = ResourceTracker::get();
4696     VkDevice device = resources->getDevice(commandBuffer);
4697     ;
4698     if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2")) {
4699         sOnInvalidDynamicallyCheckedCall("vkCmdCopyBuffer2KHR", "VK_KHR_copy_commands2");
4700     }
4701     AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4702     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4703     vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4704 }
entry_vkCmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)4705 static void entry_vkCmdCopyImage2KHR(VkCommandBuffer commandBuffer,
4706                                      const VkCopyImageInfo2* pCopyImageInfo) {
4707     AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4708     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4709     vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4710 }
dynCheck_entry_vkCmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)4711 static void dynCheck_entry_vkCmdCopyImage2KHR(VkCommandBuffer commandBuffer,
4712                                               const VkCopyImageInfo2* pCopyImageInfo) {
4713     auto resources = ResourceTracker::get();
4714     VkDevice device = resources->getDevice(commandBuffer);
4715     ;
4716     if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2")) {
4717         sOnInvalidDynamicallyCheckedCall("vkCmdCopyImage2KHR", "VK_KHR_copy_commands2");
4718     }
4719     AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4720     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4721     vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4722 }
entry_vkCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)4723 static void entry_vkCmdCopyBufferToImage2KHR(
4724     VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
4725     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4726     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4727     vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4728 }
dynCheck_entry_vkCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)4729 static void dynCheck_entry_vkCmdCopyBufferToImage2KHR(
4730     VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
4731     auto resources = ResourceTracker::get();
4732     VkDevice device = resources->getDevice(commandBuffer);
4733     ;
4734     if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2")) {
4735         sOnInvalidDynamicallyCheckedCall("vkCmdCopyBufferToImage2KHR", "VK_KHR_copy_commands2");
4736     }
4737     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4738     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4739     vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4740 }
entry_vkCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)4741 static void entry_vkCmdCopyImageToBuffer2KHR(
4742     VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
4743     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4744     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4745     vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4746 }
dynCheck_entry_vkCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)4747 static void dynCheck_entry_vkCmdCopyImageToBuffer2KHR(
4748     VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
4749     auto resources = ResourceTracker::get();
4750     VkDevice device = resources->getDevice(commandBuffer);
4751     ;
4752     if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2")) {
4753         sOnInvalidDynamicallyCheckedCall("vkCmdCopyImageToBuffer2KHR", "VK_KHR_copy_commands2");
4754     }
4755     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4756     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4757     vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4758 }
entry_vkCmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)4759 static void entry_vkCmdBlitImage2KHR(VkCommandBuffer commandBuffer,
4760                                      const VkBlitImageInfo2* pBlitImageInfo) {
4761     AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4762     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4763     vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4764 }
dynCheck_entry_vkCmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)4765 static void dynCheck_entry_vkCmdBlitImage2KHR(VkCommandBuffer commandBuffer,
4766                                               const VkBlitImageInfo2* pBlitImageInfo) {
4767     auto resources = ResourceTracker::get();
4768     VkDevice device = resources->getDevice(commandBuffer);
4769     ;
4770     if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2")) {
4771         sOnInvalidDynamicallyCheckedCall("vkCmdBlitImage2KHR", "VK_KHR_copy_commands2");
4772     }
4773     AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4774     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4775     vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4776 }
entry_vkCmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)4777 static void entry_vkCmdResolveImage2KHR(VkCommandBuffer commandBuffer,
4778                                         const VkResolveImageInfo2* pResolveImageInfo) {
4779     AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4780     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4781     vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4782 }
dynCheck_entry_vkCmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)4783 static void dynCheck_entry_vkCmdResolveImage2KHR(VkCommandBuffer commandBuffer,
4784                                                  const VkResolveImageInfo2* pResolveImageInfo) {
4785     auto resources = ResourceTracker::get();
4786     VkDevice device = resources->getDevice(commandBuffer);
4787     ;
4788     if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2")) {
4789         sOnInvalidDynamicallyCheckedCall("vkCmdResolveImage2KHR", "VK_KHR_copy_commands2");
4790     }
4791     AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4792     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4793     vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4794 }
4795 #endif
4796 #ifdef VK_KHR_format_feature_flags2
4797 #endif
4798 #ifdef VK_KHR_ray_tracing_maintenance1
entry_vkCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,VkDeviceAddress indirectDeviceAddress)4799 static void entry_vkCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,
4800                                              VkDeviceAddress indirectDeviceAddress) {
4801     AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirect2KHR");
4802     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4803     vkEnc->vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, true /* do lock */);
4804 }
dynCheck_entry_vkCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,VkDeviceAddress indirectDeviceAddress)4805 static void dynCheck_entry_vkCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,
4806                                                       VkDeviceAddress indirectDeviceAddress) {
4807     auto resources = ResourceTracker::get();
4808     VkDevice device = resources->getDevice(commandBuffer);
4809     ;
4810     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_maintenance1")) {
4811         sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysIndirect2KHR",
4812                                          "VK_KHR_ray_tracing_maintenance1");
4813     }
4814     AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirect2KHR");
4815     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4816     vkEnc->vkCmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress, true /* do lock */);
4817 }
4818 #endif
4819 #ifdef VK_KHR_portability_enumeration
4820 #endif
4821 #ifdef VK_KHR_maintenance4
entry_vkGetDeviceBufferMemoryRequirementsKHR(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4822 static void entry_vkGetDeviceBufferMemoryRequirementsKHR(
4823     VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
4824     VkMemoryRequirements2* pMemoryRequirements) {
4825     AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
4826     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4827     vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements,
4828                                                   true /* do lock */);
4829 }
dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4830 static void dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR(
4831     VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
4832     VkMemoryRequirements2* pMemoryRequirements) {
4833     auto resources = ResourceTracker::get();
4834     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4")) {
4835         sOnInvalidDynamicallyCheckedCall("vkGetDeviceBufferMemoryRequirementsKHR",
4836                                          "VK_KHR_maintenance4");
4837     }
4838     AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
4839     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4840     vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements,
4841                                                   true /* do lock */);
4842 }
entry_vkGetDeviceImageMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4843 static void entry_vkGetDeviceImageMemoryRequirementsKHR(
4844     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
4845     VkMemoryRequirements2* pMemoryRequirements) {
4846     AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
4847     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4848     vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements,
4849                                                  true /* do lock */);
4850 }
dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4851 static void dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR(
4852     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
4853     VkMemoryRequirements2* pMemoryRequirements) {
4854     auto resources = ResourceTracker::get();
4855     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4")) {
4856         sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageMemoryRequirementsKHR",
4857                                          "VK_KHR_maintenance4");
4858     }
4859     AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
4860     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4861     vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements,
4862                                                  true /* do lock */);
4863 }
entry_vkGetDeviceImageSparseMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4864 static void entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
4865     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
4866     uint32_t* pSparseMemoryRequirementCount,
4867     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
4868     AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
4869     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4870     vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount,
4871                                                        pSparseMemoryRequirements,
4872                                                        true /* do lock */);
4873 }
dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4874 static void dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
4875     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
4876     uint32_t* pSparseMemoryRequirementCount,
4877     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
4878     auto resources = ResourceTracker::get();
4879     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4")) {
4880         sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageSparseMemoryRequirementsKHR",
4881                                          "VK_KHR_maintenance4");
4882     }
4883     AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
4884     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4885     vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount,
4886                                                        pSparseMemoryRequirements,
4887                                                        true /* do lock */);
4888 }
4889 #endif
4890 #ifdef VK_KHR_ray_tracing_position_fetch
4891 #endif
4892 #ifdef VK_ANDROID_native_buffer
entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)4893 static VkResult entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format,
4894                                                         VkImageUsageFlags imageUsage,
4895                                                         int* grallocUsage) {
4896     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
4897     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4898     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
4899     vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(
4900         device, format, imageUsage, grallocUsage, true /* do lock */);
4901     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4902 }
dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)4903 static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format,
4904                                                                  VkImageUsageFlags imageUsage,
4905                                                                  int* grallocUsage) {
4906     auto resources = ResourceTracker::get();
4907     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer")) {
4908         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID",
4909                                          "VK_ANDROID_native_buffer");
4910     }
4911     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
4912     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4913     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
4914     vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(
4915         device, format, imageUsage, grallocUsage, true /* do lock */);
4916     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4917 }
entry_vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)4918 static VkResult entry_vkAcquireImageANDROID(VkDevice device, VkImage image, int nativeFenceFd,
4919                                             VkSemaphore semaphore, VkFence fence) {
4920     AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
4921     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4922     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
4923     vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(
4924         device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
4925     return vkAcquireImageANDROID_VkResult_return;
4926 }
dynCheck_entry_vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)4927 static VkResult dynCheck_entry_vkAcquireImageANDROID(VkDevice device, VkImage image,
4928                                                      int nativeFenceFd, VkSemaphore semaphore,
4929                                                      VkFence fence) {
4930     auto resources = ResourceTracker::get();
4931     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer")) {
4932         sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4933     }
4934     AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
4935     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4936     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
4937     vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(
4938         device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
4939     return vkAcquireImageANDROID_VkResult_return;
4940 }
entry_vkQueueSignalReleaseImageANDROID(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int * pNativeFenceFd)4941 static VkResult entry_vkQueueSignalReleaseImageANDROID(VkQueue queue, uint32_t waitSemaphoreCount,
4942                                                        const VkSemaphore* pWaitSemaphores,
4943                                                        VkImage image, int* pNativeFenceFd) {
4944     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
4945     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4946     VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
4947     auto resources = ResourceTracker::get();
4948     vkQueueSignalReleaseImageANDROID_VkResult_return =
4949         resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, queue, waitSemaphoreCount,
4950                                                        pWaitSemaphores, image, pNativeFenceFd);
4951     return vkQueueSignalReleaseImageANDROID_VkResult_return;
4952 }
entry_vkGetSwapchainGrallocUsage2ANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,uint64_t * grallocConsumerUsage,uint64_t * grallocProducerUsage)4953 static VkResult entry_vkGetSwapchainGrallocUsage2ANDROID(
4954     VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
4955     VkSwapchainImageUsageFlagsANDROID swapchainImageUsage, uint64_t* grallocConsumerUsage,
4956     uint64_t* grallocProducerUsage) {
4957     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsage2ANDROID");
4958     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4959     VkResult vkGetSwapchainGrallocUsage2ANDROID_VkResult_return = (VkResult)0;
4960     vkGetSwapchainGrallocUsage2ANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsage2ANDROID(
4961         device, format, imageUsage, swapchainImageUsage, grallocConsumerUsage, grallocProducerUsage,
4962         true /* do lock */);
4963     return vkGetSwapchainGrallocUsage2ANDROID_VkResult_return;
4964 }
dynCheck_entry_vkGetSwapchainGrallocUsage2ANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,uint64_t * grallocConsumerUsage,uint64_t * grallocProducerUsage)4965 static VkResult dynCheck_entry_vkGetSwapchainGrallocUsage2ANDROID(
4966     VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
4967     VkSwapchainImageUsageFlagsANDROID swapchainImageUsage, uint64_t* grallocConsumerUsage,
4968     uint64_t* grallocProducerUsage) {
4969     auto resources = ResourceTracker::get();
4970     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer")) {
4971         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsage2ANDROID",
4972                                          "VK_ANDROID_native_buffer");
4973     }
4974     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsage2ANDROID");
4975     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4976     VkResult vkGetSwapchainGrallocUsage2ANDROID_VkResult_return = (VkResult)0;
4977     vkGetSwapchainGrallocUsage2ANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsage2ANDROID(
4978         device, format, imageUsage, swapchainImageUsage, grallocConsumerUsage, grallocProducerUsage,
4979         true /* do lock */);
4980     return vkGetSwapchainGrallocUsage2ANDROID_VkResult_return;
4981 }
4982 #endif
4983 #ifdef VK_EXT_debug_report
entry_vkCreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugReportCallbackEXT * pCallback)4984 static VkResult entry_vkCreateDebugReportCallbackEXT(
4985     VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4986     const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) {
4987     AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
4988     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4989     VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
4990     vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(
4991         instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
4992     return vkCreateDebugReportCallbackEXT_VkResult_return;
4993 }
entry_vkDestroyDebugReportCallbackEXT(VkInstance instance,VkDebugReportCallbackEXT callback,const VkAllocationCallbacks * pAllocator)4994 static void entry_vkDestroyDebugReportCallbackEXT(VkInstance instance,
4995                                                   VkDebugReportCallbackEXT callback,
4996                                                   const VkAllocationCallbacks* pAllocator) {
4997     AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
4998     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4999     vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
5000 }
entry_vkDebugReportMessageEXT(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const char * pLayerPrefix,const char * pMessage)5001 static void entry_vkDebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags,
5002                                           VkDebugReportObjectTypeEXT objectType, uint64_t object,
5003                                           size_t location, int32_t messageCode,
5004                                           const char* pLayerPrefix, const char* pMessage) {
5005     AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
5006     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5007     vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode,
5008                                    pLayerPrefix, pMessage, true /* do lock */);
5009 }
5010 #endif
5011 #ifdef VK_NV_glsl_shader
5012 #endif
5013 #ifdef VK_EXT_depth_range_unrestricted
5014 #endif
5015 #ifdef VK_IMG_filter_cubic
5016 #endif
5017 #ifdef VK_AMD_rasterization_order
5018 #endif
5019 #ifdef VK_AMD_shader_trinary_minmax
5020 #endif
5021 #ifdef VK_AMD_shader_explicit_vertex_parameter
5022 #endif
5023 #ifdef VK_EXT_debug_marker
entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)5024 static VkResult entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,
5025                                                    const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
5026     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
5027     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5028     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
5029     vkDebugMarkerSetObjectTagEXT_VkResult_return =
5030         vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
5031     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5032 }
dynCheck_entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)5033 static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
5034     VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
5035     auto resources = ResourceTracker::get();
5036     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) {
5037         sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
5038     }
5039     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
5040     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5041     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
5042     vkDebugMarkerSetObjectTagEXT_VkResult_return =
5043         vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
5044     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5045 }
entry_vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)5046 static VkResult entry_vkDebugMarkerSetObjectNameEXT(
5047     VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
5048     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
5049     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5050     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
5051     vkDebugMarkerSetObjectNameEXT_VkResult_return =
5052         vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
5053     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5054 }
dynCheck_entry_vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)5055 static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
5056     VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
5057     auto resources = ResourceTracker::get();
5058     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) {
5059         sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
5060     }
5061     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
5062     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5063     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
5064     vkDebugMarkerSetObjectNameEXT_VkResult_return =
5065         vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
5066     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5067 }
entry_vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5068 static void entry_vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,
5069                                            const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
5070     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
5071     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5072     vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
5073 }
dynCheck_entry_vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5074 static void dynCheck_entry_vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,
5075                                                     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
5076     auto resources = ResourceTracker::get();
5077     VkDevice device = resources->getDevice(commandBuffer);
5078     ;
5079     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) {
5080         sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerBeginEXT", "VK_EXT_debug_marker");
5081     }
5082     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
5083     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5084     vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
5085 }
entry_vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)5086 static void entry_vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer) {
5087     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
5088     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5089     vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
5090 }
dynCheck_entry_vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)5091 static void dynCheck_entry_vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer) {
5092     auto resources = ResourceTracker::get();
5093     VkDevice device = resources->getDevice(commandBuffer);
5094     ;
5095     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) {
5096         sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerEndEXT", "VK_EXT_debug_marker");
5097     }
5098     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
5099     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5100     vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
5101 }
entry_vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5102 static void entry_vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,
5103                                             const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
5104     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
5105     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5106     vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
5107 }
dynCheck_entry_vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5108 static void dynCheck_entry_vkCmdDebugMarkerInsertEXT(
5109     VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
5110     auto resources = ResourceTracker::get();
5111     VkDevice device = resources->getDevice(commandBuffer);
5112     ;
5113     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) {
5114         sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerInsertEXT", "VK_EXT_debug_marker");
5115     }
5116     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
5117     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5118     vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
5119 }
5120 #endif
5121 #ifdef VK_AMD_gcn_shader
5122 #endif
5123 #ifdef VK_NV_dedicated_allocation
5124 #endif
5125 #ifdef VK_EXT_transform_feedback
entry_vkCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)5126 static void entry_vkCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,
5127                                                        uint32_t firstBinding, uint32_t bindingCount,
5128                                                        const VkBuffer* pBuffers,
5129                                                        const VkDeviceSize* pOffsets,
5130                                                        const VkDeviceSize* pSizes) {
5131     AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
5132     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5133     vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers,
5134                                                 pOffsets, pSizes, true /* do lock */);
5135 }
dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)5136 static void dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT(
5137     VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount,
5138     const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) {
5139     auto resources = ResourceTracker::get();
5140     VkDevice device = resources->getDevice(commandBuffer);
5141     ;
5142     if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback")) {
5143         sOnInvalidDynamicallyCheckedCall("vkCmdBindTransformFeedbackBuffersEXT",
5144                                          "VK_EXT_transform_feedback");
5145     }
5146     AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
5147     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5148     vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers,
5149                                                 pOffsets, pSizes, true /* do lock */);
5150 }
entry_vkCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5151 static void entry_vkCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,
5152                                                  uint32_t firstCounterBuffer,
5153                                                  uint32_t counterBufferCount,
5154                                                  const VkBuffer* pCounterBuffers,
5155                                                  const VkDeviceSize* pCounterBufferOffsets) {
5156     AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
5157     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5158     vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount,
5159                                           pCounterBuffers, pCounterBufferOffsets,
5160                                           true /* do lock */);
5161 }
dynCheck_entry_vkCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5162 static void dynCheck_entry_vkCmdBeginTransformFeedbackEXT(
5163     VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount,
5164     const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) {
5165     auto resources = ResourceTracker::get();
5166     VkDevice device = resources->getDevice(commandBuffer);
5167     ;
5168     if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback")) {
5169         sOnInvalidDynamicallyCheckedCall("vkCmdBeginTransformFeedbackEXT",
5170                                          "VK_EXT_transform_feedback");
5171     }
5172     AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
5173     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5174     vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount,
5175                                           pCounterBuffers, pCounterBufferOffsets,
5176                                           true /* do lock */);
5177 }
entry_vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5178 static void entry_vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,
5179                                                uint32_t firstCounterBuffer,
5180                                                uint32_t counterBufferCount,
5181                                                const VkBuffer* pCounterBuffers,
5182                                                const VkDeviceSize* pCounterBufferOffsets) {
5183     AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
5184     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5185     vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount,
5186                                         pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5187 }
dynCheck_entry_vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5188 static void dynCheck_entry_vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,
5189                                                         uint32_t firstCounterBuffer,
5190                                                         uint32_t counterBufferCount,
5191                                                         const VkBuffer* pCounterBuffers,
5192                                                         const VkDeviceSize* pCounterBufferOffsets) {
5193     auto resources = ResourceTracker::get();
5194     VkDevice device = resources->getDevice(commandBuffer);
5195     ;
5196     if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback")) {
5197         sOnInvalidDynamicallyCheckedCall("vkCmdEndTransformFeedbackEXT",
5198                                          "VK_EXT_transform_feedback");
5199     }
5200     AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
5201     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5202     vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount,
5203                                         pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5204 }
entry_vkCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)5205 static void entry_vkCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
5206                                             uint32_t query, VkQueryControlFlags flags,
5207                                             uint32_t index) {
5208     AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
5209     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5210     vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index,
5211                                      true /* do lock */);
5212 }
dynCheck_entry_vkCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)5213 static void dynCheck_entry_vkCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,
5214                                                      VkQueryPool queryPool, uint32_t query,
5215                                                      VkQueryControlFlags flags, uint32_t index) {
5216     auto resources = ResourceTracker::get();
5217     VkDevice device = resources->getDevice(commandBuffer);
5218     ;
5219     if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback")) {
5220         sOnInvalidDynamicallyCheckedCall("vkCmdBeginQueryIndexedEXT", "VK_EXT_transform_feedback");
5221     }
5222     AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
5223     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5224     vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index,
5225                                      true /* do lock */);
5226 }
entry_vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)5227 static void entry_vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
5228                                           uint32_t query, uint32_t index) {
5229     AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
5230     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5231     vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
5232 }
dynCheck_entry_vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)5233 static void dynCheck_entry_vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,
5234                                                    VkQueryPool queryPool, uint32_t query,
5235                                                    uint32_t index) {
5236     auto resources = ResourceTracker::get();
5237     VkDevice device = resources->getDevice(commandBuffer);
5238     ;
5239     if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback")) {
5240         sOnInvalidDynamicallyCheckedCall("vkCmdEndQueryIndexedEXT", "VK_EXT_transform_feedback");
5241     }
5242     AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
5243     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5244     vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
5245 }
entry_vkCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)5246 static void entry_vkCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,
5247                                                 uint32_t instanceCount, uint32_t firstInstance,
5248                                                 VkBuffer counterBuffer,
5249                                                 VkDeviceSize counterBufferOffset,
5250                                                 uint32_t counterOffset, uint32_t vertexStride) {
5251     AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
5252     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5253     vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer,
5254                                          counterBufferOffset, counterOffset, vertexStride,
5255                                          true /* do lock */);
5256 }
dynCheck_entry_vkCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)5257 static void dynCheck_entry_vkCmdDrawIndirectByteCountEXT(
5258     VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
5259     VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset,
5260     uint32_t vertexStride) {
5261     auto resources = ResourceTracker::get();
5262     VkDevice device = resources->getDevice(commandBuffer);
5263     ;
5264     if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback")) {
5265         sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectByteCountEXT",
5266                                          "VK_EXT_transform_feedback");
5267     }
5268     AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
5269     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5270     vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer,
5271                                          counterBufferOffset, counterOffset, vertexStride,
5272                                          true /* do lock */);
5273 }
5274 #endif
5275 #ifdef VK_NVX_binary_import
entry_vkCreateCuModuleNVX(VkDevice device,const VkCuModuleCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuModuleNVX * pModule)5276 static VkResult entry_vkCreateCuModuleNVX(VkDevice device,
5277                                           const VkCuModuleCreateInfoNVX* pCreateInfo,
5278                                           const VkAllocationCallbacks* pAllocator,
5279                                           VkCuModuleNVX* pModule) {
5280     AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5281     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5282     VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5283     vkCreateCuModuleNVX_VkResult_return =
5284         vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5285     return vkCreateCuModuleNVX_VkResult_return;
5286 }
dynCheck_entry_vkCreateCuModuleNVX(VkDevice device,const VkCuModuleCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuModuleNVX * pModule)5287 static VkResult dynCheck_entry_vkCreateCuModuleNVX(VkDevice device,
5288                                                    const VkCuModuleCreateInfoNVX* pCreateInfo,
5289                                                    const VkAllocationCallbacks* pAllocator,
5290                                                    VkCuModuleNVX* pModule) {
5291     auto resources = ResourceTracker::get();
5292     if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import")) {
5293         sOnInvalidDynamicallyCheckedCall("vkCreateCuModuleNVX", "VK_NVX_binary_import");
5294     }
5295     AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5296     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5297     VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5298     vkCreateCuModuleNVX_VkResult_return =
5299         vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5300     return vkCreateCuModuleNVX_VkResult_return;
5301 }
entry_vkCreateCuFunctionNVX(VkDevice device,const VkCuFunctionCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuFunctionNVX * pFunction)5302 static VkResult entry_vkCreateCuFunctionNVX(VkDevice device,
5303                                             const VkCuFunctionCreateInfoNVX* pCreateInfo,
5304                                             const VkAllocationCallbacks* pAllocator,
5305                                             VkCuFunctionNVX* pFunction) {
5306     AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5307     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5308     VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5309     vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(
5310         device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5311     return vkCreateCuFunctionNVX_VkResult_return;
5312 }
dynCheck_entry_vkCreateCuFunctionNVX(VkDevice device,const VkCuFunctionCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuFunctionNVX * pFunction)5313 static VkResult dynCheck_entry_vkCreateCuFunctionNVX(VkDevice device,
5314                                                      const VkCuFunctionCreateInfoNVX* pCreateInfo,
5315                                                      const VkAllocationCallbacks* pAllocator,
5316                                                      VkCuFunctionNVX* pFunction) {
5317     auto resources = ResourceTracker::get();
5318     if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import")) {
5319         sOnInvalidDynamicallyCheckedCall("vkCreateCuFunctionNVX", "VK_NVX_binary_import");
5320     }
5321     AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5322     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5323     VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5324     vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(
5325         device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5326     return vkCreateCuFunctionNVX_VkResult_return;
5327 }
entry_vkDestroyCuModuleNVX(VkDevice device,VkCuModuleNVX module,const VkAllocationCallbacks * pAllocator)5328 static void entry_vkDestroyCuModuleNVX(VkDevice device, VkCuModuleNVX module,
5329                                        const VkAllocationCallbacks* pAllocator) {
5330     AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5331     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5332     vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5333 }
dynCheck_entry_vkDestroyCuModuleNVX(VkDevice device,VkCuModuleNVX module,const VkAllocationCallbacks * pAllocator)5334 static void dynCheck_entry_vkDestroyCuModuleNVX(VkDevice device, VkCuModuleNVX module,
5335                                                 const VkAllocationCallbacks* pAllocator) {
5336     auto resources = ResourceTracker::get();
5337     if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import")) {
5338         sOnInvalidDynamicallyCheckedCall("vkDestroyCuModuleNVX", "VK_NVX_binary_import");
5339     }
5340     AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5341     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5342     vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5343 }
entry_vkDestroyCuFunctionNVX(VkDevice device,VkCuFunctionNVX function,const VkAllocationCallbacks * pAllocator)5344 static void entry_vkDestroyCuFunctionNVX(VkDevice device, VkCuFunctionNVX function,
5345                                          const VkAllocationCallbacks* pAllocator) {
5346     AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5347     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5348     vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5349 }
dynCheck_entry_vkDestroyCuFunctionNVX(VkDevice device,VkCuFunctionNVX function,const VkAllocationCallbacks * pAllocator)5350 static void dynCheck_entry_vkDestroyCuFunctionNVX(VkDevice device, VkCuFunctionNVX function,
5351                                                   const VkAllocationCallbacks* pAllocator) {
5352     auto resources = ResourceTracker::get();
5353     if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import")) {
5354         sOnInvalidDynamicallyCheckedCall("vkDestroyCuFunctionNVX", "VK_NVX_binary_import");
5355     }
5356     AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5357     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5358     vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5359 }
entry_vkCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,const VkCuLaunchInfoNVX * pLaunchInfo)5360 static void entry_vkCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,
5361                                          const VkCuLaunchInfoNVX* pLaunchInfo) {
5362     AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
5363     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5364     vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
5365 }
dynCheck_entry_vkCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,const VkCuLaunchInfoNVX * pLaunchInfo)5366 static void dynCheck_entry_vkCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,
5367                                                   const VkCuLaunchInfoNVX* pLaunchInfo) {
5368     auto resources = ResourceTracker::get();
5369     VkDevice device = resources->getDevice(commandBuffer);
5370     ;
5371     if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import")) {
5372         sOnInvalidDynamicallyCheckedCall("vkCmdCuLaunchKernelNVX", "VK_NVX_binary_import");
5373     }
5374     AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
5375     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5376     vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
5377 }
5378 #endif
5379 #ifdef VK_NVX_image_view_handle
entry_vkGetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)5380 static uint32_t entry_vkGetImageViewHandleNVX(VkDevice device,
5381                                               const VkImageViewHandleInfoNVX* pInfo) {
5382     AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
5383     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5384     uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
5385     vkGetImageViewHandleNVX_uint32_t_return =
5386         vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
5387     return vkGetImageViewHandleNVX_uint32_t_return;
5388 }
dynCheck_entry_vkGetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)5389 static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(VkDevice device,
5390                                                        const VkImageViewHandleInfoNVX* pInfo) {
5391     auto resources = ResourceTracker::get();
5392     if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle")) {
5393         sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
5394     }
5395     AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
5396     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5397     uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
5398     vkGetImageViewHandleNVX_uint32_t_return =
5399         vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
5400     return vkGetImageViewHandleNVX_uint32_t_return;
5401 }
entry_vkGetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)5402 static VkResult entry_vkGetImageViewAddressNVX(VkDevice device, VkImageView imageView,
5403                                                VkImageViewAddressPropertiesNVX* pProperties) {
5404     AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
5405     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5406     VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
5407     vkGetImageViewAddressNVX_VkResult_return =
5408         vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
5409     return vkGetImageViewAddressNVX_VkResult_return;
5410 }
dynCheck_entry_vkGetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)5411 static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
5412     VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties) {
5413     auto resources = ResourceTracker::get();
5414     if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle")) {
5415         sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
5416     }
5417     AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
5418     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5419     VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
5420     vkGetImageViewAddressNVX_VkResult_return =
5421         vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
5422     return vkGetImageViewAddressNVX_VkResult_return;
5423 }
5424 #endif
5425 #ifdef VK_AMD_draw_indirect_count
entry_vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5426 static void entry_vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer,
5427                                             VkDeviceSize offset, VkBuffer countBuffer,
5428                                             VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
5429                                             uint32_t stride) {
5430     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
5431     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5432     vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset,
5433                                      maxDrawCount, stride, true /* do lock */);
5434 }
dynCheck_entry_vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5435 static void dynCheck_entry_vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer,
5436                                                      VkDeviceSize offset, VkBuffer countBuffer,
5437                                                      VkDeviceSize countBufferOffset,
5438                                                      uint32_t maxDrawCount, uint32_t stride) {
5439     auto resources = ResourceTracker::get();
5440     VkDevice device = resources->getDevice(commandBuffer);
5441     ;
5442     if (!resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count")) {
5443         sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCountAMD", "VK_AMD_draw_indirect_count");
5444     }
5445     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
5446     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5447     vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset,
5448                                      maxDrawCount, stride, true /* do lock */);
5449 }
entry_vkCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5450 static void entry_vkCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer,
5451                                                    VkDeviceSize offset, VkBuffer countBuffer,
5452                                                    VkDeviceSize countBufferOffset,
5453                                                    uint32_t maxDrawCount, uint32_t stride) {
5454     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
5455     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5456     vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer,
5457                                             countBufferOffset, maxDrawCount, stride,
5458                                             true /* do lock */);
5459 }
dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5460 static void dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD(
5461     VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer,
5462     VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) {
5463     auto resources = ResourceTracker::get();
5464     VkDevice device = resources->getDevice(commandBuffer);
5465     ;
5466     if (!resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count")) {
5467         sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCountAMD",
5468                                          "VK_AMD_draw_indirect_count");
5469     }
5470     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
5471     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5472     vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer,
5473                                             countBufferOffset, maxDrawCount, stride,
5474                                             true /* do lock */);
5475 }
5476 #endif
5477 #ifdef VK_AMD_negative_viewport_height
5478 #endif
5479 #ifdef VK_AMD_gpu_shader_half_float
5480 #endif
5481 #ifdef VK_AMD_shader_ballot
5482 #endif
5483 #ifdef VK_EXT_video_encode_h264
5484 #endif
5485 #ifdef VK_EXT_video_encode_h265
5486 #endif
5487 #ifdef VK_AMD_texture_gather_bias_lod
5488 #endif
5489 #ifdef VK_AMD_shader_info
entry_vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)5490 static VkResult entry_vkGetShaderInfoAMD(VkDevice device, VkPipeline pipeline,
5491                                          VkShaderStageFlagBits shaderStage,
5492                                          VkShaderInfoTypeAMD infoType, size_t* pInfoSize,
5493                                          void* pInfo) {
5494     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
5495     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5496     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
5497     vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(
5498         device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
5499     return vkGetShaderInfoAMD_VkResult_return;
5500 }
dynCheck_entry_vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)5501 static VkResult dynCheck_entry_vkGetShaderInfoAMD(VkDevice device, VkPipeline pipeline,
5502                                                   VkShaderStageFlagBits shaderStage,
5503                                                   VkShaderInfoTypeAMD infoType, size_t* pInfoSize,
5504                                                   void* pInfo) {
5505     auto resources = ResourceTracker::get();
5506     if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info")) {
5507         sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
5508     }
5509     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
5510     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5511     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
5512     vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(
5513         device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
5514     return vkGetShaderInfoAMD_VkResult_return;
5515 }
5516 #endif
5517 #ifdef VK_AMD_shader_image_load_store_lod
5518 #endif
5519 #ifdef VK_GGP_stream_descriptor_surface
entry_vkCreateStreamDescriptorSurfaceGGP(VkInstance instance,const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5520 static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
5521     VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
5522     const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
5523     AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
5524     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5525     VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
5526     vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(
5527         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5528     return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
5529 }
5530 #endif
5531 #ifdef VK_NV_corner_sampled_image
5532 #endif
5533 #ifdef VK_IMG_format_pvrtc
5534 #endif
5535 #ifdef VK_NV_external_memory_capabilities
entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkExternalMemoryHandleTypeFlagsNV externalHandleType,VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties)5536 static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
5537     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling,
5538     VkImageUsageFlags usage, VkImageCreateFlags flags,
5539     VkExternalMemoryHandleTypeFlagsNV externalHandleType,
5540     VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
5541     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
5542     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5543     VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
5544     vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return =
5545         vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
5546             physicalDevice, format, type, tiling, usage, flags, externalHandleType,
5547             pExternalImageFormatProperties, true /* do lock */);
5548     return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
5549 }
5550 #endif
5551 #ifdef VK_NV_external_memory
5552 #endif
5553 #ifdef VK_NV_external_memory_win32
entry_vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)5554 static VkResult entry_vkGetMemoryWin32HandleNV(VkDevice device, VkDeviceMemory memory,
5555                                                VkExternalMemoryHandleTypeFlagsNV handleType,
5556                                                HANDLE* pHandle) {
5557     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
5558     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5559     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
5560     vkGetMemoryWin32HandleNV_VkResult_return =
5561         vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
5562     return vkGetMemoryWin32HandleNV_VkResult_return;
5563 }
dynCheck_entry_vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)5564 static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
5565     VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType,
5566     HANDLE* pHandle) {
5567     auto resources = ResourceTracker::get();
5568     if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32")) {
5569         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
5570     }
5571     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
5572     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5573     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
5574     vkGetMemoryWin32HandleNV_VkResult_return =
5575         vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
5576     return vkGetMemoryWin32HandleNV_VkResult_return;
5577 }
5578 #endif
5579 #ifdef VK_NV_win32_keyed_mutex
5580 #endif
5581 #ifdef VK_EXT_validation_flags
5582 #endif
5583 #ifdef VK_NN_vi_surface
entry_vkCreateViSurfaceNN(VkInstance instance,const VkViSurfaceCreateInfoNN * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5584 static VkResult entry_vkCreateViSurfaceNN(VkInstance instance,
5585                                           const VkViSurfaceCreateInfoNN* pCreateInfo,
5586                                           const VkAllocationCallbacks* pAllocator,
5587                                           VkSurfaceKHR* pSurface) {
5588     AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
5589     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5590     VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
5591     vkCreateViSurfaceNN_VkResult_return =
5592         vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5593     return vkCreateViSurfaceNN_VkResult_return;
5594 }
5595 #endif
5596 #ifdef VK_EXT_shader_subgroup_ballot
5597 #endif
5598 #ifdef VK_EXT_shader_subgroup_vote
5599 #endif
5600 #ifdef VK_EXT_texture_compression_astc_hdr
5601 #endif
5602 #ifdef VK_EXT_astc_decode_mode
5603 #endif
5604 #ifdef VK_EXT_pipeline_robustness
5605 #endif
5606 #ifdef VK_EXT_conditional_rendering
entry_vkCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)5607 static void entry_vkCmdBeginConditionalRenderingEXT(
5608     VkCommandBuffer commandBuffer,
5609     const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) {
5610     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
5611     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5612     vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin,
5613                                              true /* do lock */);
5614 }
dynCheck_entry_vkCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)5615 static void dynCheck_entry_vkCmdBeginConditionalRenderingEXT(
5616     VkCommandBuffer commandBuffer,
5617     const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) {
5618     auto resources = ResourceTracker::get();
5619     VkDevice device = resources->getDevice(commandBuffer);
5620     ;
5621     if (!resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering")) {
5622         sOnInvalidDynamicallyCheckedCall("vkCmdBeginConditionalRenderingEXT",
5623                                          "VK_EXT_conditional_rendering");
5624     }
5625     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
5626     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5627     vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin,
5628                                              true /* do lock */);
5629 }
entry_vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)5630 static void entry_vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer) {
5631     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
5632     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5633     vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
5634 }
dynCheck_entry_vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)5635 static void dynCheck_entry_vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer) {
5636     auto resources = ResourceTracker::get();
5637     VkDevice device = resources->getDevice(commandBuffer);
5638     ;
5639     if (!resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering")) {
5640         sOnInvalidDynamicallyCheckedCall("vkCmdEndConditionalRenderingEXT",
5641                                          "VK_EXT_conditional_rendering");
5642     }
5643     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
5644     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5645     vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
5646 }
5647 #endif
5648 #ifdef VK_NV_clip_space_w_scaling
entry_vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)5649 static void entry_vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
5650                                              uint32_t viewportCount,
5651                                              const VkViewportWScalingNV* pViewportWScalings) {
5652     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
5653     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5654     vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount,
5655                                       pViewportWScalings, true /* do lock */);
5656 }
dynCheck_entry_vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)5657 static void dynCheck_entry_vkCmdSetViewportWScalingNV(
5658     VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount,
5659     const VkViewportWScalingNV* pViewportWScalings) {
5660     auto resources = ResourceTracker::get();
5661     VkDevice device = resources->getDevice(commandBuffer);
5662     ;
5663     if (!resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling")) {
5664         sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWScalingNV",
5665                                          "VK_NV_clip_space_w_scaling");
5666     }
5667     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
5668     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5669     vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount,
5670                                       pViewportWScalings, true /* do lock */);
5671 }
5672 #endif
5673 #ifdef VK_EXT_direct_mode_display
entry_vkReleaseDisplayEXT(VkPhysicalDevice physicalDevice,VkDisplayKHR display)5674 static VkResult entry_vkReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
5675     AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
5676     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5677     VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
5678     vkReleaseDisplayEXT_VkResult_return =
5679         vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
5680     return vkReleaseDisplayEXT_VkResult_return;
5681 }
5682 #endif
5683 #ifdef VK_EXT_acquire_xlib_display
entry_vkAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,VkDisplayKHR display)5684 static VkResult entry_vkAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy,
5685                                               VkDisplayKHR display) {
5686     AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
5687     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5688     VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
5689     vkAcquireXlibDisplayEXT_VkResult_return =
5690         vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
5691     return vkAcquireXlibDisplayEXT_VkResult_return;
5692 }
entry_vkGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,RROutput rrOutput,VkDisplayKHR * pDisplay)5693 static VkResult entry_vkGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy,
5694                                                  RROutput rrOutput, VkDisplayKHR* pDisplay) {
5695     AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
5696     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5697     VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
5698     vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(
5699         physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
5700     return vkGetRandROutputDisplayEXT_VkResult_return;
5701 }
5702 #endif
5703 #ifdef VK_EXT_display_surface_counter
entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilities2EXT * pSurfaceCapabilities)5704 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
5705     VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
5706     VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
5707     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
5708     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5709     VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
5710     vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return =
5711         vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface,
5712                                                           pSurfaceCapabilities, true /* do lock */);
5713     return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
5714 }
5715 #endif
5716 #ifdef VK_EXT_display_control
entry_vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)5717 static VkResult entry_vkDisplayPowerControlEXT(VkDevice device, VkDisplayKHR display,
5718                                                const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
5719     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
5720     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5721     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
5722     vkDisplayPowerControlEXT_VkResult_return =
5723         vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
5724     return vkDisplayPowerControlEXT_VkResult_return;
5725 }
dynCheck_entry_vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)5726 static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5727     VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
5728     auto resources = ResourceTracker::get();
5729     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) {
5730         sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5731     }
5732     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
5733     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5734     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
5735     vkDisplayPowerControlEXT_VkResult_return =
5736         vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
5737     return vkDisplayPowerControlEXT_VkResult_return;
5738 }
entry_vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5739 static VkResult entry_vkRegisterDeviceEventEXT(VkDevice device,
5740                                                const VkDeviceEventInfoEXT* pDeviceEventInfo,
5741                                                const VkAllocationCallbacks* pAllocator,
5742                                                VkFence* pFence) {
5743     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
5744     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5745     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
5746     vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(
5747         device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
5748     return vkRegisterDeviceEventEXT_VkResult_return;
5749 }
dynCheck_entry_vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5750 static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5751     VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo,
5752     const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
5753     auto resources = ResourceTracker::get();
5754     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) {
5755         sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5756     }
5757     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
5758     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5759     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
5760     vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(
5761         device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
5762     return vkRegisterDeviceEventEXT_VkResult_return;
5763 }
entry_vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5764 static VkResult entry_vkRegisterDisplayEventEXT(VkDevice device, VkDisplayKHR display,
5765                                                 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5766                                                 const VkAllocationCallbacks* pAllocator,
5767                                                 VkFence* pFence) {
5768     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
5769     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5770     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
5771     vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(
5772         device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
5773     return vkRegisterDisplayEventEXT_VkResult_return;
5774 }
dynCheck_entry_vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5775 static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5776     VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo,
5777     const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
5778     auto resources = ResourceTracker::get();
5779     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) {
5780         sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5781     }
5782     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
5783     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5784     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
5785     vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(
5786         device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
5787     return vkRegisterDisplayEventEXT_VkResult_return;
5788 }
entry_vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5789 static VkResult entry_vkGetSwapchainCounterEXT(VkDevice device, VkSwapchainKHR swapchain,
5790                                                VkSurfaceCounterFlagBitsEXT counter,
5791                                                uint64_t* pCounterValue) {
5792     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
5793     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5794     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
5795     vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(
5796         device, swapchain, counter, pCounterValue, true /* do lock */);
5797     return vkGetSwapchainCounterEXT_VkResult_return;
5798 }
dynCheck_entry_vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5799 static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(VkDevice device, VkSwapchainKHR swapchain,
5800                                                         VkSurfaceCounterFlagBitsEXT counter,
5801                                                         uint64_t* pCounterValue) {
5802     auto resources = ResourceTracker::get();
5803     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) {
5804         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5805     }
5806     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
5807     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5808     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
5809     vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(
5810         device, swapchain, counter, pCounterValue, true /* do lock */);
5811     return vkGetSwapchainCounterEXT_VkResult_return;
5812 }
5813 #endif
5814 #ifdef VK_GOOGLE_display_timing
entry_vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5815 static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5816     VkDevice device, VkSwapchainKHR swapchain,
5817     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
5818     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
5819     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5820     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
5821     vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(
5822         device, swapchain, pDisplayTimingProperties, true /* do lock */);
5823     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5824 }
dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5825 static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5826     VkDevice device, VkSwapchainKHR swapchain,
5827     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
5828     auto resources = ResourceTracker::get();
5829     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing")) {
5830         sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE",
5831                                          "VK_GOOGLE_display_timing");
5832     }
5833     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
5834     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5835     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
5836     vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(
5837         device, swapchain, pDisplayTimingProperties, true /* do lock */);
5838     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5839 }
entry_vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5840 static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5841     VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount,
5842     VkPastPresentationTimingGOOGLE* pPresentationTimings) {
5843     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
5844     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5845     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
5846     vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(
5847         device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
5848     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5849 }
dynCheck_entry_vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5850 static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5851     VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount,
5852     VkPastPresentationTimingGOOGLE* pPresentationTimings) {
5853     auto resources = ResourceTracker::get();
5854     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing")) {
5855         sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE",
5856                                          "VK_GOOGLE_display_timing");
5857     }
5858     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
5859     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5860     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
5861     vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(
5862         device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
5863     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5864 }
5865 #endif
5866 #ifdef VK_NV_sample_mask_override_coverage
5867 #endif
5868 #ifdef VK_NV_geometry_shader_passthrough
5869 #endif
5870 #ifdef VK_NV_viewport_array2
5871 #endif
5872 #ifdef VK_NVX_multiview_per_view_attributes
5873 #endif
5874 #ifdef VK_NV_viewport_swizzle
5875 #endif
5876 #ifdef VK_EXT_discard_rectangles
entry_vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)5877 static void entry_vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,
5878                                               uint32_t firstDiscardRectangle,
5879                                               uint32_t discardRectangleCount,
5880                                               const VkRect2D* pDiscardRectangles) {
5881     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
5882     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5883     vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount,
5884                                        pDiscardRectangles, true /* do lock */);
5885 }
dynCheck_entry_vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)5886 static void dynCheck_entry_vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,
5887                                                        uint32_t firstDiscardRectangle,
5888                                                        uint32_t discardRectangleCount,
5889                                                        const VkRect2D* pDiscardRectangles) {
5890     auto resources = ResourceTracker::get();
5891     VkDevice device = resources->getDevice(commandBuffer);
5892     ;
5893     if (!resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles")) {
5894         sOnInvalidDynamicallyCheckedCall("vkCmdSetDiscardRectangleEXT",
5895                                          "VK_EXT_discard_rectangles");
5896     }
5897     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
5898     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5899     vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount,
5900                                        pDiscardRectangles, true /* do lock */);
5901 }
entry_vkCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 discardRectangleEnable)5902 static void entry_vkCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer,
5903                                                     VkBool32 discardRectangleEnable) {
5904     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEnableEXT");
5905     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5906     vkEnc->vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable,
5907                                              true /* do lock */);
5908 }
dynCheck_entry_vkCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 discardRectangleEnable)5909 static void dynCheck_entry_vkCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer,
5910                                                              VkBool32 discardRectangleEnable) {
5911     auto resources = ResourceTracker::get();
5912     VkDevice device = resources->getDevice(commandBuffer);
5913     ;
5914     if (!resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles")) {
5915         sOnInvalidDynamicallyCheckedCall("vkCmdSetDiscardRectangleEnableEXT",
5916                                          "VK_EXT_discard_rectangles");
5917     }
5918     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEnableEXT");
5919     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5920     vkEnc->vkCmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable,
5921                                              true /* do lock */);
5922 }
entry_vkCmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,VkDiscardRectangleModeEXT discardRectangleMode)5923 static void entry_vkCmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,
5924                                                   VkDiscardRectangleModeEXT discardRectangleMode) {
5925     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleModeEXT");
5926     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5927     vkEnc->vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, true /* do lock */);
5928 }
dynCheck_entry_vkCmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,VkDiscardRectangleModeEXT discardRectangleMode)5929 static void dynCheck_entry_vkCmdSetDiscardRectangleModeEXT(
5930     VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode) {
5931     auto resources = ResourceTracker::get();
5932     VkDevice device = resources->getDevice(commandBuffer);
5933     ;
5934     if (!resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles")) {
5935         sOnInvalidDynamicallyCheckedCall("vkCmdSetDiscardRectangleModeEXT",
5936                                          "VK_EXT_discard_rectangles");
5937     }
5938     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleModeEXT");
5939     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5940     vkEnc->vkCmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode, true /* do lock */);
5941 }
5942 #endif
5943 #ifdef VK_EXT_conservative_rasterization
5944 #endif
5945 #ifdef VK_EXT_depth_clip_enable
5946 #endif
5947 #ifdef VK_EXT_swapchain_colorspace
5948 #endif
5949 #ifdef VK_EXT_hdr_metadata
entry_vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5950 static void entry_vkSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount,
5951                                       const VkSwapchainKHR* pSwapchains,
5952                                       const VkHdrMetadataEXT* pMetadata) {
5953     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
5954     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5955     vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
5956 }
dynCheck_entry_vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5957 static void dynCheck_entry_vkSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount,
5958                                                const VkSwapchainKHR* pSwapchains,
5959                                                const VkHdrMetadataEXT* pMetadata) {
5960     auto resources = ResourceTracker::get();
5961     if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata")) {
5962         sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5963     }
5964     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
5965     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5966     vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
5967 }
5968 #endif
5969 #ifdef VK_MVK_ios_surface
entry_vkCreateIOSSurfaceMVK(VkInstance instance,const VkIOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5970 static VkResult entry_vkCreateIOSSurfaceMVK(VkInstance instance,
5971                                             const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5972                                             const VkAllocationCallbacks* pAllocator,
5973                                             VkSurfaceKHR* pSurface) {
5974     AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
5975     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5976     VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
5977     vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(
5978         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5979     return vkCreateIOSSurfaceMVK_VkResult_return;
5980 }
5981 #endif
5982 #ifdef VK_MVK_macos_surface
entry_vkCreateMacOSSurfaceMVK(VkInstance instance,const VkMacOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5983 static VkResult entry_vkCreateMacOSSurfaceMVK(VkInstance instance,
5984                                               const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5985                                               const VkAllocationCallbacks* pAllocator,
5986                                               VkSurfaceKHR* pSurface) {
5987     AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
5988     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5989     VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
5990     vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(
5991         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5992     return vkCreateMacOSSurfaceMVK_VkResult_return;
5993 }
5994 #endif
5995 #ifdef VK_EXT_external_memory_dma_buf
5996 #endif
5997 #ifdef VK_EXT_queue_family_foreign
5998 #endif
5999 #ifdef VK_EXT_debug_utils
entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)6000 static VkResult entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,
6001                                                    const VkDebugUtilsObjectNameInfoEXT* pNameInfo) {
6002     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
6003     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6004     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
6005     vkSetDebugUtilsObjectNameEXT_VkResult_return =
6006         vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
6007     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
6008 }
dynCheck_entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)6009 static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
6010     VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) {
6011     auto resources = ResourceTracker::get();
6012     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils")) {
6013         sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
6014     }
6015     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
6016     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6017     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
6018     vkSetDebugUtilsObjectNameEXT_VkResult_return =
6019         vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
6020     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
6021 }
entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)6022 static VkResult entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,
6023                                                   const VkDebugUtilsObjectTagInfoEXT* pTagInfo) {
6024     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
6025     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6026     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
6027     vkSetDebugUtilsObjectTagEXT_VkResult_return =
6028         vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
6029     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
6030 }
dynCheck_entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)6031 static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
6032     VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) {
6033     auto resources = ResourceTracker::get();
6034     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils")) {
6035         sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
6036     }
6037     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
6038     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6039     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
6040     vkSetDebugUtilsObjectTagEXT_VkResult_return =
6041         vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
6042     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
6043 }
entry_vkQueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)6044 static void entry_vkQueueBeginDebugUtilsLabelEXT(VkQueue queue,
6045                                                  const VkDebugUtilsLabelEXT* pLabelInfo) {
6046     AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
6047     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6048     vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
6049 }
entry_vkQueueEndDebugUtilsLabelEXT(VkQueue queue)6050 static void entry_vkQueueEndDebugUtilsLabelEXT(VkQueue queue) {
6051     AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
6052     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6053     vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
6054 }
entry_vkQueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)6055 static void entry_vkQueueInsertDebugUtilsLabelEXT(VkQueue queue,
6056                                                   const VkDebugUtilsLabelEXT* pLabelInfo) {
6057     AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
6058     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6059     vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
6060 }
entry_vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)6061 static void entry_vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,
6062                                                const VkDebugUtilsLabelEXT* pLabelInfo) {
6063     AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
6064     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6065     vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
6066 }
entry_vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)6067 static void entry_vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) {
6068     AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
6069     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6070     vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
6071 }
entry_vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)6072 static void entry_vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,
6073                                                 const VkDebugUtilsLabelEXT* pLabelInfo) {
6074     AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
6075     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6076     vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
6077 }
entry_vkCreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugUtilsMessengerEXT * pMessenger)6078 static VkResult entry_vkCreateDebugUtilsMessengerEXT(
6079     VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
6080     const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) {
6081     AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
6082     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6083     VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
6084     vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(
6085         instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
6086     return vkCreateDebugUtilsMessengerEXT_VkResult_return;
6087 }
entry_vkDestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT messenger,const VkAllocationCallbacks * pAllocator)6088 static void entry_vkDestroyDebugUtilsMessengerEXT(VkInstance instance,
6089                                                   VkDebugUtilsMessengerEXT messenger,
6090                                                   const VkAllocationCallbacks* pAllocator) {
6091     AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
6092     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6093     vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
6094 }
entry_vkSubmitDebugUtilsMessageEXT(VkInstance instance,VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)6095 static void entry_vkSubmitDebugUtilsMessageEXT(
6096     VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
6097     VkDebugUtilsMessageTypeFlagsEXT messageTypes,
6098     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) {
6099     AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
6100     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6101     vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData,
6102                                         true /* do lock */);
6103 }
6104 #endif
6105 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
entry_vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)6106 static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6107     VkDevice device, const AHardwareBuffer* buffer,
6108     VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
6109     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
6110     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6111     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
6112     auto resources = ResourceTracker::get();
6113     vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return =
6114         resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer,
6115                                                                   pProperties);
6116     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6117 }
dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)6118 static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6119     VkDevice device, const AHardwareBuffer* buffer,
6120     VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
6121     auto resources = ResourceTracker::get();
6122     if (!resources->hasDeviceExtension(device,
6123                                        "VK_ANDROID_external_memory_android_hardware_buffer")) {
6124         sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID",
6125                                          "VK_ANDROID_external_memory_android_hardware_buffer");
6126     }
6127     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
6128     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6129     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
6130     vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return =
6131         resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer,
6132                                                                   pProperties);
6133     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6134 }
entry_vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)6135 static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
6136     VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6137     AHardwareBuffer** pBuffer) {
6138     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
6139     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6140     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
6141     auto resources = ResourceTracker::get();
6142     vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return =
6143         resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo,
6144                                                               pBuffer);
6145     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6146 }
dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)6147 static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
6148     VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6149     AHardwareBuffer** pBuffer) {
6150     auto resources = ResourceTracker::get();
6151     if (!resources->hasDeviceExtension(device,
6152                                        "VK_ANDROID_external_memory_android_hardware_buffer")) {
6153         sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID",
6154                                          "VK_ANDROID_external_memory_android_hardware_buffer");
6155     }
6156     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
6157     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6158     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
6159     vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return =
6160         resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo,
6161                                                               pBuffer);
6162     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6163 }
6164 #endif
6165 #ifdef VK_EXT_sampler_filter_minmax
6166 #endif
6167 #ifdef VK_AMD_gpu_shader_int16
6168 #endif
6169 #ifdef VK_AMD_mixed_attachment_samples
6170 #endif
6171 #ifdef VK_AMD_shader_fragment_mask
6172 #endif
6173 #ifdef VK_EXT_inline_uniform_block
6174 #endif
6175 #ifdef VK_EXT_shader_stencil_export
6176 #endif
6177 #ifdef VK_EXT_sample_locations
entry_vkCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)6178 static void entry_vkCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,
6179                                              const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
6180     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
6181     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6182     vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
6183 }
dynCheck_entry_vkCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)6184 static void dynCheck_entry_vkCmdSetSampleLocationsEXT(
6185     VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
6186     auto resources = ResourceTracker::get();
6187     VkDevice device = resources->getDevice(commandBuffer);
6188     ;
6189     if (!resources->hasDeviceExtension(device, "VK_EXT_sample_locations")) {
6190         sOnInvalidDynamicallyCheckedCall("vkCmdSetSampleLocationsEXT", "VK_EXT_sample_locations");
6191     }
6192     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
6193     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6194     vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
6195 }
entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)6196 static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
6197     VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples,
6198     VkMultisamplePropertiesEXT* pMultisampleProperties) {
6199     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
6200     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6201     vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples,
6202                                                        pMultisampleProperties, true /* do lock */);
6203 }
6204 #endif
6205 #ifdef VK_EXT_blend_operation_advanced
6206 #endif
6207 #ifdef VK_NV_fragment_coverage_to_color
6208 #endif
6209 #ifdef VK_NV_framebuffer_mixed_samples
6210 #endif
6211 #ifdef VK_NV_fill_rectangle
6212 #endif
6213 #ifdef VK_NV_shader_sm_builtins
6214 #endif
6215 #ifdef VK_EXT_post_depth_coverage
6216 #endif
6217 #ifdef VK_EXT_image_drm_format_modifier
entry_vkGetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)6218 static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
6219     VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) {
6220     AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
6221     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6222     VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
6223     vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return =
6224         vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties,
6225                                                         true /* do lock */);
6226     return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
6227 }
dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)6228 static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
6229     VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) {
6230     auto resources = ResourceTracker::get();
6231     if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier")) {
6232         sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT",
6233                                          "VK_EXT_image_drm_format_modifier");
6234     }
6235     AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
6236     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6237     VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
6238     vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return =
6239         vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties,
6240                                                         true /* do lock */);
6241     return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
6242 }
6243 #endif
6244 #ifdef VK_EXT_validation_cache
entry_vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)6245 static VkResult entry_vkCreateValidationCacheEXT(VkDevice device,
6246                                                  const VkValidationCacheCreateInfoEXT* pCreateInfo,
6247                                                  const VkAllocationCallbacks* pAllocator,
6248                                                  VkValidationCacheEXT* pValidationCache) {
6249     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
6250     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6251     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
6252     vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(
6253         device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
6254     return vkCreateValidationCacheEXT_VkResult_return;
6255 }
dynCheck_entry_vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)6256 static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
6257     VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo,
6258     const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) {
6259     auto resources = ResourceTracker::get();
6260     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) {
6261         sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
6262     }
6263     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
6264     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6265     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
6266     vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(
6267         device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
6268     return vkCreateValidationCacheEXT_VkResult_return;
6269 }
entry_vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)6270 static void entry_vkDestroyValidationCacheEXT(VkDevice device, VkValidationCacheEXT validationCache,
6271                                               const VkAllocationCallbacks* pAllocator) {
6272     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
6273     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6274     vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
6275 }
dynCheck_entry_vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)6276 static void dynCheck_entry_vkDestroyValidationCacheEXT(VkDevice device,
6277                                                        VkValidationCacheEXT validationCache,
6278                                                        const VkAllocationCallbacks* pAllocator) {
6279     auto resources = ResourceTracker::get();
6280     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) {
6281         sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
6282     }
6283     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
6284     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6285     vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
6286 }
entry_vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)6287 static VkResult entry_vkMergeValidationCachesEXT(VkDevice device, VkValidationCacheEXT dstCache,
6288                                                  uint32_t srcCacheCount,
6289                                                  const VkValidationCacheEXT* pSrcCaches) {
6290     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
6291     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6292     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
6293     vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(
6294         device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
6295     return vkMergeValidationCachesEXT_VkResult_return;
6296 }
dynCheck_entry_vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)6297 static VkResult dynCheck_entry_vkMergeValidationCachesEXT(VkDevice device,
6298                                                           VkValidationCacheEXT dstCache,
6299                                                           uint32_t srcCacheCount,
6300                                                           const VkValidationCacheEXT* pSrcCaches) {
6301     auto resources = ResourceTracker::get();
6302     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) {
6303         sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
6304     }
6305     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
6306     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6307     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
6308     vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(
6309         device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
6310     return vkMergeValidationCachesEXT_VkResult_return;
6311 }
entry_vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)6312 static VkResult entry_vkGetValidationCacheDataEXT(VkDevice device,
6313                                                   VkValidationCacheEXT validationCache,
6314                                                   size_t* pDataSize, void* pData) {
6315     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
6316     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6317     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
6318     vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(
6319         device, validationCache, pDataSize, pData, true /* do lock */);
6320     return vkGetValidationCacheDataEXT_VkResult_return;
6321 }
dynCheck_entry_vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)6322 static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(VkDevice device,
6323                                                            VkValidationCacheEXT validationCache,
6324                                                            size_t* pDataSize, void* pData) {
6325     auto resources = ResourceTracker::get();
6326     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) {
6327         sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
6328     }
6329     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
6330     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6331     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
6332     vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(
6333         device, validationCache, pDataSize, pData, true /* do lock */);
6334     return vkGetValidationCacheDataEXT_VkResult_return;
6335 }
6336 #endif
6337 #ifdef VK_EXT_descriptor_indexing
6338 #endif
6339 #ifdef VK_EXT_shader_viewport_index_layer
6340 #endif
6341 #ifdef VK_NV_shading_rate_image
entry_vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)6342 static void entry_vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView,
6343                                               VkImageLayout imageLayout) {
6344     AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
6345     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6346     vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
6347 }
dynCheck_entry_vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)6348 static void dynCheck_entry_vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,
6349                                                        VkImageView imageView,
6350                                                        VkImageLayout imageLayout) {
6351     auto resources = ResourceTracker::get();
6352     VkDevice device = resources->getDevice(commandBuffer);
6353     ;
6354     if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image")) {
6355         sOnInvalidDynamicallyCheckedCall("vkCmdBindShadingRateImageNV", "VK_NV_shading_rate_image");
6356     }
6357     AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
6358     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6359     vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
6360 }
entry_vkCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)6361 static void entry_vkCmdSetViewportShadingRatePaletteNV(
6362     VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount,
6363     const VkShadingRatePaletteNV* pShadingRatePalettes) {
6364     AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
6365     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6366     vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount,
6367                                                 pShadingRatePalettes, true /* do lock */);
6368 }
dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)6369 static void dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV(
6370     VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount,
6371     const VkShadingRatePaletteNV* pShadingRatePalettes) {
6372     auto resources = ResourceTracker::get();
6373     VkDevice device = resources->getDevice(commandBuffer);
6374     ;
6375     if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image")) {
6376         sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportShadingRatePaletteNV",
6377                                          "VK_NV_shading_rate_image");
6378     }
6379     AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
6380     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6381     vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount,
6382                                                 pShadingRatePalettes, true /* do lock */);
6383 }
entry_vkCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)6384 static void entry_vkCmdSetCoarseSampleOrderNV(
6385     VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType,
6386     uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) {
6387     AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
6388     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6389     vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount,
6390                                        pCustomSampleOrders, true /* do lock */);
6391 }
dynCheck_entry_vkCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)6392 static void dynCheck_entry_vkCmdSetCoarseSampleOrderNV(
6393     VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType,
6394     uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) {
6395     auto resources = ResourceTracker::get();
6396     VkDevice device = resources->getDevice(commandBuffer);
6397     ;
6398     if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image")) {
6399         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoarseSampleOrderNV", "VK_NV_shading_rate_image");
6400     }
6401     AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
6402     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6403     vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount,
6404                                        pCustomSampleOrders, true /* do lock */);
6405 }
6406 #endif
6407 #ifdef VK_NV_ray_tracing
entry_vkCreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)6408 static VkResult entry_vkCreateAccelerationStructureNV(
6409     VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6410     const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) {
6411     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
6412     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6413     VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
6414     vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(
6415         device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
6416     return vkCreateAccelerationStructureNV_VkResult_return;
6417 }
dynCheck_entry_vkCreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)6418 static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
6419     VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6420     const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) {
6421     auto resources = ResourceTracker::get();
6422     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6423         sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
6424     }
6425     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
6426     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6427     VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
6428     vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(
6429         device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
6430     return vkCreateAccelerationStructureNV_VkResult_return;
6431 }
entry_vkDestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)6432 static void entry_vkDestroyAccelerationStructureNV(VkDevice device,
6433                                                    VkAccelerationStructureNV accelerationStructure,
6434                                                    const VkAllocationCallbacks* pAllocator) {
6435     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
6436     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6437     vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator,
6438                                             true /* do lock */);
6439 }
dynCheck_entry_vkDestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)6440 static void dynCheck_entry_vkDestroyAccelerationStructureNV(
6441     VkDevice device, VkAccelerationStructureNV accelerationStructure,
6442     const VkAllocationCallbacks* pAllocator) {
6443     auto resources = ResourceTracker::get();
6444     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6445         sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
6446     }
6447     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
6448     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6449     vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator,
6450                                             true /* do lock */);
6451 }
entry_vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)6452 static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
6453     VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6454     VkMemoryRequirements2KHR* pMemoryRequirements) {
6455     AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
6456     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6457     vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements,
6458                                                           true /* do lock */);
6459 }
dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)6460 static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
6461     VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6462     VkMemoryRequirements2KHR* pMemoryRequirements) {
6463     auto resources = ResourceTracker::get();
6464     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6465         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV",
6466                                          "VK_NV_ray_tracing");
6467     }
6468     AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
6469     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6470     vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements,
6471                                                           true /* do lock */);
6472 }
entry_vkBindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)6473 static VkResult entry_vkBindAccelerationStructureMemoryNV(
6474     VkDevice device, uint32_t bindInfoCount,
6475     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
6476     AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
6477     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6478     VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
6479     vkBindAccelerationStructureMemoryNV_VkResult_return =
6480         vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos,
6481                                                    true /* do lock */);
6482     return vkBindAccelerationStructureMemoryNV_VkResult_return;
6483 }
dynCheck_entry_vkBindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)6484 static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
6485     VkDevice device, uint32_t bindInfoCount,
6486     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
6487     auto resources = ResourceTracker::get();
6488     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6489         sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV",
6490                                          "VK_NV_ray_tracing");
6491     }
6492     AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
6493     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6494     VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
6495     vkBindAccelerationStructureMemoryNV_VkResult_return =
6496         vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos,
6497                                                    true /* do lock */);
6498     return vkBindAccelerationStructureMemoryNV_VkResult_return;
6499 }
entry_vkCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)6500 static void entry_vkCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,
6501                                                     const VkAccelerationStructureInfoNV* pInfo,
6502                                                     VkBuffer instanceData,
6503                                                     VkDeviceSize instanceOffset, VkBool32 update,
6504                                                     VkAccelerationStructureNV dst,
6505                                                     VkAccelerationStructureNV src, VkBuffer scratch,
6506                                                     VkDeviceSize scratchOffset) {
6507     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
6508     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6509     vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset,
6510                                              update, dst, src, scratch, scratchOffset,
6511                                              true /* do lock */);
6512 }
dynCheck_entry_vkCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)6513 static void dynCheck_entry_vkCmdBuildAccelerationStructureNV(
6514     VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo,
6515     VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update,
6516     VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch,
6517     VkDeviceSize scratchOffset) {
6518     auto resources = ResourceTracker::get();
6519     VkDevice device = resources->getDevice(commandBuffer);
6520     ;
6521     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6522         sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructureNV", "VK_NV_ray_tracing");
6523     }
6524     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
6525     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6526     vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset,
6527                                              update, dst, src, scratch, scratchOffset,
6528                                              true /* do lock */);
6529 }
entry_vkCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeKHR mode)6530 static void entry_vkCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,
6531                                                    VkAccelerationStructureNV dst,
6532                                                    VkAccelerationStructureNV src,
6533                                                    VkCopyAccelerationStructureModeKHR mode) {
6534     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
6535     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6536     vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
6537 }
dynCheck_entry_vkCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeKHR mode)6538 static void dynCheck_entry_vkCmdCopyAccelerationStructureNV(
6539     VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src,
6540     VkCopyAccelerationStructureModeKHR mode) {
6541     auto resources = ResourceTracker::get();
6542     VkDevice device = resources->getDevice(commandBuffer);
6543     ;
6544     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6545         sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureNV", "VK_NV_ray_tracing");
6546     }
6547     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
6548     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6549     vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
6550 }
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)6551 static void entry_vkCmdTraceRaysNV(
6552     VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
6553     VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
6554     VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
6555     VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
6556     VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
6557     VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
6558     uint32_t width, uint32_t height, uint32_t depth) {
6559     AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
6560     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6561     vkEnc->vkCmdTraceRaysNV(
6562         commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset,
6563         missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride,
6564         hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride,
6565         callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride,
6566         width, height, depth, true /* do lock */);
6567 }
dynCheck_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)6568 static void dynCheck_entry_vkCmdTraceRaysNV(
6569     VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
6570     VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
6571     VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
6572     VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
6573     VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
6574     VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
6575     uint32_t width, uint32_t height, uint32_t depth) {
6576     auto resources = ResourceTracker::get();
6577     VkDevice device = resources->getDevice(commandBuffer);
6578     ;
6579     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6580         sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysNV", "VK_NV_ray_tracing");
6581     }
6582     AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
6583     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6584     vkEnc->vkCmdTraceRaysNV(
6585         commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset,
6586         missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride,
6587         hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride,
6588         callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride,
6589         width, height, depth, true /* do lock */);
6590 }
entry_vkCreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6591 static VkResult entry_vkCreateRayTracingPipelinesNV(
6592     VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
6593     const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator,
6594     VkPipeline* pPipelines) {
6595     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
6596     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6597     VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
6598     vkCreateRayTracingPipelinesNV_VkResult_return =
6599         vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos,
6600                                              pAllocator, pPipelines, true /* do lock */);
6601     return vkCreateRayTracingPipelinesNV_VkResult_return;
6602 }
dynCheck_entry_vkCreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6603 static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
6604     VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
6605     const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator,
6606     VkPipeline* pPipelines) {
6607     auto resources = ResourceTracker::get();
6608     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6609         sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
6610     }
6611     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
6612     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6613     VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
6614     vkCreateRayTracingPipelinesNV_VkResult_return =
6615         vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos,
6616                                              pAllocator, pPipelines, true /* do lock */);
6617     return vkCreateRayTracingPipelinesNV_VkResult_return;
6618 }
entry_vkGetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6619 static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline,
6620                                                            uint32_t firstGroup, uint32_t groupCount,
6621                                                            size_t dataSize, void* pData) {
6622     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
6623     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6624     VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
6625     vkGetRayTracingShaderGroupHandlesKHR_VkResult_return =
6626         vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount,
6627                                                     dataSize, pData, true /* do lock */);
6628     return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
6629 }
dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6630 static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(VkDevice device,
6631                                                                     VkPipeline pipeline,
6632                                                                     uint32_t firstGroup,
6633                                                                     uint32_t groupCount,
6634                                                                     size_t dataSize, void* pData) {
6635     auto resources = ResourceTracker::get();
6636     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6637         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR",
6638                                          "VK_NV_ray_tracing");
6639     }
6640     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
6641     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6642     VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
6643     vkGetRayTracingShaderGroupHandlesKHR_VkResult_return =
6644         vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount,
6645                                                     dataSize, pData, true /* do lock */);
6646     return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
6647 }
entry_vkGetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6648 static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(VkDevice device, VkPipeline pipeline,
6649                                                           uint32_t firstGroup, uint32_t groupCount,
6650                                                           size_t dataSize, void* pData) {
6651     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
6652     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6653     VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
6654     vkGetRayTracingShaderGroupHandlesNV_VkResult_return =
6655         vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount,
6656                                                    dataSize, pData, true /* do lock */);
6657     return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
6658 }
dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6659 static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(VkDevice device,
6660                                                                    VkPipeline pipeline,
6661                                                                    uint32_t firstGroup,
6662                                                                    uint32_t groupCount,
6663                                                                    size_t dataSize, void* pData) {
6664     auto resources = ResourceTracker::get();
6665     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6666         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV",
6667                                          "VK_NV_ray_tracing");
6668     }
6669     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
6670     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6671     VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
6672     vkGetRayTracingShaderGroupHandlesNV_VkResult_return =
6673         vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount,
6674                                                    dataSize, pData, true /* do lock */);
6675     return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
6676 }
entry_vkGetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)6677 static VkResult entry_vkGetAccelerationStructureHandleNV(
6678     VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize,
6679     void* pData) {
6680     AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
6681     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6682     VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
6683     vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(
6684         device, accelerationStructure, dataSize, pData, true /* do lock */);
6685     return vkGetAccelerationStructureHandleNV_VkResult_return;
6686 }
dynCheck_entry_vkGetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)6687 static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
6688     VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize,
6689     void* pData) {
6690     auto resources = ResourceTracker::get();
6691     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6692         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
6693     }
6694     AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
6695     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6696     VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
6697     vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(
6698         device, accelerationStructure, dataSize, pData, true /* do lock */);
6699     return vkGetAccelerationStructureHandleNV_VkResult_return;
6700 }
entry_vkCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)6701 static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
6702     VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount,
6703     const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType,
6704     VkQueryPool queryPool, uint32_t firstQuery) {
6705     AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6706     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6707     vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount,
6708                                                         pAccelerationStructures, queryType,
6709                                                         queryPool, firstQuery, true /* do lock */);
6710 }
dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)6711 static void dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV(
6712     VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount,
6713     const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType,
6714     VkQueryPool queryPool, uint32_t firstQuery) {
6715     auto resources = ResourceTracker::get();
6716     VkDevice device = resources->getDevice(commandBuffer);
6717     ;
6718     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6719         sOnInvalidDynamicallyCheckedCall("vkCmdWriteAccelerationStructuresPropertiesNV",
6720                                          "VK_NV_ray_tracing");
6721     }
6722     AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6723     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6724     vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount,
6725                                                         pAccelerationStructures, queryType,
6726                                                         queryPool, firstQuery, true /* do lock */);
6727 }
entry_vkCompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6728 static VkResult entry_vkCompileDeferredNV(VkDevice device, VkPipeline pipeline, uint32_t shader) {
6729     AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6730     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6731     VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6732     vkCompileDeferredNV_VkResult_return =
6733         vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6734     return vkCompileDeferredNV_VkResult_return;
6735 }
dynCheck_entry_vkCompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6736 static VkResult dynCheck_entry_vkCompileDeferredNV(VkDevice device, VkPipeline pipeline,
6737                                                    uint32_t shader) {
6738     auto resources = ResourceTracker::get();
6739     if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing")) {
6740         sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6741     }
6742     AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6743     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6744     VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6745     vkCompileDeferredNV_VkResult_return =
6746         vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6747     return vkCompileDeferredNV_VkResult_return;
6748 }
6749 #endif
6750 #ifdef VK_NV_representative_fragment_test
6751 #endif
6752 #ifdef VK_EXT_filter_cubic
6753 #endif
6754 #ifdef VK_QCOM_render_pass_shader_resolve
6755 #endif
6756 #ifdef VK_EXT_global_priority
6757 #endif
6758 #ifdef VK_EXT_external_memory_host
entry_vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6759 static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6760     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer,
6761     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) {
6762     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
6763     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6764     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
6765     vkGetMemoryHostPointerPropertiesEXT_VkResult_return =
6766         vkEnc->vkGetMemoryHostPointerPropertiesEXT(
6767             device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
6768     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6769 }
dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6770 static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6771     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer,
6772     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) {
6773     auto resources = ResourceTracker::get();
6774     if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host")) {
6775         sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT",
6776                                          "VK_EXT_external_memory_host");
6777     }
6778     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
6779     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6780     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
6781     vkGetMemoryHostPointerPropertiesEXT_VkResult_return =
6782         vkEnc->vkGetMemoryHostPointerPropertiesEXT(
6783             device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
6784     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6785 }
6786 #endif
6787 #ifdef VK_AMD_buffer_marker
entry_vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6788 static void entry_vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,
6789                                             VkPipelineStageFlagBits pipelineStage,
6790                                             VkBuffer dstBuffer, VkDeviceSize dstOffset,
6791                                             uint32_t marker) {
6792     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
6793     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6794     vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker,
6795                                      true /* do lock */);
6796 }
dynCheck_entry_vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6797 static void dynCheck_entry_vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,
6798                                                      VkPipelineStageFlagBits pipelineStage,
6799                                                      VkBuffer dstBuffer, VkDeviceSize dstOffset,
6800                                                      uint32_t marker) {
6801     auto resources = ResourceTracker::get();
6802     VkDevice device = resources->getDevice(commandBuffer);
6803     ;
6804     if (!resources->hasDeviceExtension(device, "VK_AMD_buffer_marker")) {
6805         sOnInvalidDynamicallyCheckedCall("vkCmdWriteBufferMarkerAMD", "VK_AMD_buffer_marker");
6806     }
6807     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
6808     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6809     vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker,
6810                                      true /* do lock */);
6811 }
6812 #endif
6813 #ifdef VK_AMD_pipeline_compiler_control
6814 #endif
6815 #ifdef VK_EXT_calibrated_timestamps
entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainEXT * pTimeDomains)6816 static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6817     VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) {
6818     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6819     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6820     VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6821     vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return =
6822         vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount,
6823                                                               pTimeDomains, true /* do lock */);
6824     return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6825 }
entry_vkGetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6826 static VkResult entry_vkGetCalibratedTimestampsEXT(
6827     VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6828     uint64_t* pTimestamps, uint64_t* pMaxDeviation) {
6829     AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6830     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6831     VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6832     vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(
6833         device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6834     return vkGetCalibratedTimestampsEXT_VkResult_return;
6835 }
dynCheck_entry_vkGetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6836 static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6837     VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6838     uint64_t* pTimestamps, uint64_t* pMaxDeviation) {
6839     auto resources = ResourceTracker::get();
6840     if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps")) {
6841         sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT",
6842                                          "VK_EXT_calibrated_timestamps");
6843     }
6844     AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6845     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6846     VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6847     vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(
6848         device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6849     return vkGetCalibratedTimestampsEXT_VkResult_return;
6850 }
6851 #endif
6852 #ifdef VK_AMD_shader_core_properties
6853 #endif
6854 #ifdef VK_AMD_memory_overallocation_behavior
6855 #endif
6856 #ifdef VK_EXT_vertex_attribute_divisor
6857 #endif
6858 #ifdef VK_GGP_frame_token
6859 #endif
6860 #ifdef VK_EXT_pipeline_creation_feedback
6861 #endif
6862 #ifdef VK_NV_shader_subgroup_partitioned
6863 #endif
6864 #ifdef VK_NV_compute_shader_derivatives
6865 #endif
6866 #ifdef VK_NV_mesh_shader
entry_vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)6867 static void entry_vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount,
6868                                        uint32_t firstTask) {
6869     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6870     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6871     vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6872 }
dynCheck_entry_vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)6873 static void dynCheck_entry_vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount,
6874                                                 uint32_t firstTask) {
6875     auto resources = ResourceTracker::get();
6876     VkDevice device = resources->getDevice(commandBuffer);
6877     ;
6878     if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader")) {
6879         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksNV", "VK_NV_mesh_shader");
6880     }
6881     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6882     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6883     vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6884 }
entry_vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)6885 static void entry_vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer,
6886                                                VkDeviceSize offset, uint32_t drawCount,
6887                                                uint32_t stride) {
6888     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6889     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6890     vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride,
6891                                         true /* do lock */);
6892 }
dynCheck_entry_vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)6893 static void dynCheck_entry_vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,
6894                                                         VkBuffer buffer, VkDeviceSize offset,
6895                                                         uint32_t drawCount, uint32_t stride) {
6896     auto resources = ResourceTracker::get();
6897     VkDevice device = resources->getDevice(commandBuffer);
6898     ;
6899     if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader")) {
6900         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectNV", "VK_NV_mesh_shader");
6901     }
6902     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6903     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6904     vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride,
6905                                         true /* do lock */);
6906 }
entry_vkCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)6907 static void entry_vkCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer,
6908                                                     VkDeviceSize offset, VkBuffer countBuffer,
6909                                                     VkDeviceSize countBufferOffset,
6910                                                     uint32_t maxDrawCount, uint32_t stride) {
6911     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6912     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6913     vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer,
6914                                              countBufferOffset, maxDrawCount, stride,
6915                                              true /* do lock */);
6916 }
dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)6917 static void dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV(
6918     VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer,
6919     VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) {
6920     auto resources = ResourceTracker::get();
6921     VkDevice device = resources->getDevice(commandBuffer);
6922     ;
6923     if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader")) {
6924         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectCountNV", "VK_NV_mesh_shader");
6925     }
6926     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6927     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6928     vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer,
6929                                              countBufferOffset, maxDrawCount, stride,
6930                                              true /* do lock */);
6931 }
6932 #endif
6933 #ifdef VK_NV_fragment_shader_barycentric
6934 #endif
6935 #ifdef VK_NV_shader_image_footprint
6936 #endif
6937 #ifdef VK_NV_scissor_exclusive
entry_vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkBool32 * pExclusiveScissorEnables)6938 static void entry_vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer,
6939                                                    uint32_t firstExclusiveScissor,
6940                                                    uint32_t exclusiveScissorCount,
6941                                                    const VkBool32* pExclusiveScissorEnables) {
6942     AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorEnableNV");
6943     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6944     vkEnc->vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor,
6945                                             exclusiveScissorCount, pExclusiveScissorEnables,
6946                                             true /* do lock */);
6947 }
dynCheck_entry_vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkBool32 * pExclusiveScissorEnables)6948 static void dynCheck_entry_vkCmdSetExclusiveScissorEnableNV(
6949     VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount,
6950     const VkBool32* pExclusiveScissorEnables) {
6951     auto resources = ResourceTracker::get();
6952     VkDevice device = resources->getDevice(commandBuffer);
6953     ;
6954     if (!resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive")) {
6955         sOnInvalidDynamicallyCheckedCall("vkCmdSetExclusiveScissorEnableNV",
6956                                          "VK_NV_scissor_exclusive");
6957     }
6958     AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorEnableNV");
6959     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6960     vkEnc->vkCmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor,
6961                                             exclusiveScissorCount, pExclusiveScissorEnables,
6962                                             true /* do lock */);
6963 }
entry_vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)6964 static void entry_vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,
6965                                              uint32_t firstExclusiveScissor,
6966                                              uint32_t exclusiveScissorCount,
6967                                              const VkRect2D* pExclusiveScissors) {
6968     AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6969     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6970     vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount,
6971                                       pExclusiveScissors, true /* do lock */);
6972 }
dynCheck_entry_vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)6973 static void dynCheck_entry_vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,
6974                                                       uint32_t firstExclusiveScissor,
6975                                                       uint32_t exclusiveScissorCount,
6976                                                       const VkRect2D* pExclusiveScissors) {
6977     auto resources = ResourceTracker::get();
6978     VkDevice device = resources->getDevice(commandBuffer);
6979     ;
6980     if (!resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive")) {
6981         sOnInvalidDynamicallyCheckedCall("vkCmdSetExclusiveScissorNV", "VK_NV_scissor_exclusive");
6982     }
6983     AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6984     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6985     vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount,
6986                                       pExclusiveScissors, true /* do lock */);
6987 }
6988 #endif
6989 #ifdef VK_NV_device_diagnostic_checkpoints
entry_vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)6990 static void entry_vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,
6991                                        const void* pCheckpointMarker) {
6992     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
6993     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6994     vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
6995 }
dynCheck_entry_vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)6996 static void dynCheck_entry_vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,
6997                                                 const void* pCheckpointMarker) {
6998     auto resources = ResourceTracker::get();
6999     VkDevice device = resources->getDevice(commandBuffer);
7000     ;
7001     if (!resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints")) {
7002         sOnInvalidDynamicallyCheckedCall("vkCmdSetCheckpointNV",
7003                                          "VK_NV_device_diagnostic_checkpoints");
7004     }
7005     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
7006     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7007     vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
7008 }
entry_vkGetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)7009 static void entry_vkGetQueueCheckpointDataNV(VkQueue queue, uint32_t* pCheckpointDataCount,
7010                                              VkCheckpointDataNV* pCheckpointData) {
7011     AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
7012     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7013     vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData,
7014                                       true /* do lock */);
7015 }
7016 #endif
7017 #ifdef VK_INTEL_shader_integer_functions2
7018 #endif
7019 #ifdef VK_INTEL_performance_query
entry_vkInitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)7020 static VkResult entry_vkInitializePerformanceApiINTEL(
7021     VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) {
7022     AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
7023     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7024     VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
7025     vkInitializePerformanceApiINTEL_VkResult_return =
7026         vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
7027     return vkInitializePerformanceApiINTEL_VkResult_return;
7028 }
dynCheck_entry_vkInitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)7029 static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
7030     VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) {
7031     auto resources = ResourceTracker::get();
7032     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7033         sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL",
7034                                          "VK_INTEL_performance_query");
7035     }
7036     AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
7037     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7038     VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
7039     vkInitializePerformanceApiINTEL_VkResult_return =
7040         vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
7041     return vkInitializePerformanceApiINTEL_VkResult_return;
7042 }
entry_vkUninitializePerformanceApiINTEL(VkDevice device)7043 static void entry_vkUninitializePerformanceApiINTEL(VkDevice device) {
7044     AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
7045     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7046     vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
7047 }
dynCheck_entry_vkUninitializePerformanceApiINTEL(VkDevice device)7048 static void dynCheck_entry_vkUninitializePerformanceApiINTEL(VkDevice device) {
7049     auto resources = ResourceTracker::get();
7050     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7051         sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL",
7052                                          "VK_INTEL_performance_query");
7053     }
7054     AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
7055     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7056     vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
7057 }
entry_vkCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)7058 static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
7059     VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) {
7060     AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
7061     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7062     VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
7063     vkCmdSetPerformanceMarkerINTEL_VkResult_return =
7064         vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7065     return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
7066 }
dynCheck_entry_vkCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)7067 static VkResult dynCheck_entry_vkCmdSetPerformanceMarkerINTEL(
7068     VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) {
7069     auto resources = ResourceTracker::get();
7070     VkDevice device = resources->getDevice(commandBuffer);
7071     ;
7072     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7073         sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceMarkerINTEL",
7074                                          "VK_INTEL_performance_query");
7075     }
7076     AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
7077     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7078     VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
7079     vkCmdSetPerformanceMarkerINTEL_VkResult_return =
7080         vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7081     return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
7082 }
entry_vkCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)7083 static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
7084     VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) {
7085     AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
7086     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7087     VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
7088     vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return =
7089         vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7090     return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
7091 }
dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)7092 static VkResult dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL(
7093     VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) {
7094     auto resources = ResourceTracker::get();
7095     VkDevice device = resources->getDevice(commandBuffer);
7096     ;
7097     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7098         sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceStreamMarkerINTEL",
7099                                          "VK_INTEL_performance_query");
7100     }
7101     AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
7102     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7103     VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
7104     vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return =
7105         vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7106     return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
7107 }
entry_vkCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)7108 static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
7109     VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) {
7110     AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
7111     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7112     VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
7113     vkCmdSetPerformanceOverrideINTEL_VkResult_return =
7114         vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
7115     return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
7116 }
dynCheck_entry_vkCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)7117 static VkResult dynCheck_entry_vkCmdSetPerformanceOverrideINTEL(
7118     VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) {
7119     auto resources = ResourceTracker::get();
7120     VkDevice device = resources->getDevice(commandBuffer);
7121     ;
7122     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7123         sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceOverrideINTEL",
7124                                          "VK_INTEL_performance_query");
7125     }
7126     AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
7127     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7128     VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
7129     vkCmdSetPerformanceOverrideINTEL_VkResult_return =
7130         vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
7131     return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
7132 }
entry_vkAcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)7133 static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
7134     VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
7135     VkPerformanceConfigurationINTEL* pConfiguration) {
7136     AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
7137     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7138     VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
7139     vkAcquirePerformanceConfigurationINTEL_VkResult_return =
7140         vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration,
7141                                                       true /* do lock */);
7142     return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
7143 }
dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)7144 static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
7145     VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
7146     VkPerformanceConfigurationINTEL* pConfiguration) {
7147     auto resources = ResourceTracker::get();
7148     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7149         sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL",
7150                                          "VK_INTEL_performance_query");
7151     }
7152     AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
7153     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7154     VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
7155     vkAcquirePerformanceConfigurationINTEL_VkResult_return =
7156         vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration,
7157                                                       true /* do lock */);
7158     return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
7159 }
entry_vkReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)7160 static VkResult entry_vkReleasePerformanceConfigurationINTEL(
7161     VkDevice device, VkPerformanceConfigurationINTEL configuration) {
7162     AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
7163     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7164     VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
7165     vkReleasePerformanceConfigurationINTEL_VkResult_return =
7166         vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
7167     return vkReleasePerformanceConfigurationINTEL_VkResult_return;
7168 }
dynCheck_entry_vkReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)7169 static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
7170     VkDevice device, VkPerformanceConfigurationINTEL configuration) {
7171     auto resources = ResourceTracker::get();
7172     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7173         sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL",
7174                                          "VK_INTEL_performance_query");
7175     }
7176     AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
7177     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7178     VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
7179     vkReleasePerformanceConfigurationINTEL_VkResult_return =
7180         vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
7181     return vkReleasePerformanceConfigurationINTEL_VkResult_return;
7182 }
entry_vkQueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)7183 static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
7184     VkQueue queue, VkPerformanceConfigurationINTEL configuration) {
7185     AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
7186     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7187     VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
7188     vkQueueSetPerformanceConfigurationINTEL_VkResult_return =
7189         vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
7190     return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
7191 }
entry_vkGetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)7192 static VkResult entry_vkGetPerformanceParameterINTEL(VkDevice device,
7193                                                      VkPerformanceParameterTypeINTEL parameter,
7194                                                      VkPerformanceValueINTEL* pValue) {
7195     AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
7196     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7197     VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
7198     vkGetPerformanceParameterINTEL_VkResult_return =
7199         vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
7200     return vkGetPerformanceParameterINTEL_VkResult_return;
7201 }
dynCheck_entry_vkGetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)7202 static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
7203     VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) {
7204     auto resources = ResourceTracker::get();
7205     if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query")) {
7206         sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL",
7207                                          "VK_INTEL_performance_query");
7208     }
7209     AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
7210     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7211     VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
7212     vkGetPerformanceParameterINTEL_VkResult_return =
7213         vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
7214     return vkGetPerformanceParameterINTEL_VkResult_return;
7215 }
7216 #endif
7217 #ifdef VK_EXT_pci_bus_info
7218 #endif
7219 #ifdef VK_AMD_display_native_hdr
entry_vkSetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)7220 static void entry_vkSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain,
7221                                        VkBool32 localDimmingEnable) {
7222     AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
7223     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7224     vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
7225 }
dynCheck_entry_vkSetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)7226 static void dynCheck_entry_vkSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain,
7227                                                 VkBool32 localDimmingEnable) {
7228     auto resources = ResourceTracker::get();
7229     if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr")) {
7230         sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
7231     }
7232     AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
7233     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7234     vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
7235 }
7236 #endif
7237 #ifdef VK_FUCHSIA_imagepipe_surface
entry_vkCreateImagePipeSurfaceFUCHSIA(VkInstance instance,const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)7238 static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
7239     VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
7240     const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
7241     AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
7242     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7243     VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
7244     vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(
7245         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7246     return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
7247 }
7248 #endif
7249 #ifdef VK_EXT_metal_surface
entry_vkCreateMetalSurfaceEXT(VkInstance instance,const VkMetalSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)7250 static VkResult entry_vkCreateMetalSurfaceEXT(VkInstance instance,
7251                                               const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
7252                                               const VkAllocationCallbacks* pAllocator,
7253                                               VkSurfaceKHR* pSurface) {
7254     AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
7255     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7256     VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
7257     vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(
7258         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7259     return vkCreateMetalSurfaceEXT_VkResult_return;
7260 }
7261 #endif
7262 #ifdef VK_EXT_fragment_density_map
7263 #endif
7264 #ifdef VK_EXT_scalar_block_layout
7265 #endif
7266 #ifdef VK_GOOGLE_hlsl_functionality1
7267 #endif
7268 #ifdef VK_GOOGLE_decorate_string
7269 #endif
7270 #ifdef VK_EXT_subgroup_size_control
7271 #endif
7272 #ifdef VK_AMD_shader_core_properties2
7273 #endif
7274 #ifdef VK_AMD_device_coherent_memory
7275 #endif
7276 #ifdef VK_EXT_shader_image_atomic_int64
7277 #endif
7278 #ifdef VK_EXT_memory_budget
7279 #endif
7280 #ifdef VK_EXT_memory_priority
7281 #endif
7282 #ifdef VK_NV_dedicated_allocation_image_aliasing
7283 #endif
7284 #ifdef VK_EXT_buffer_device_address
entry_vkGetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)7285 static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(VkDevice device,
7286                                                          const VkBufferDeviceAddressInfo* pInfo) {
7287     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
7288     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7289     VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
7290     vkGetBufferDeviceAddressEXT_VkDeviceAddress_return =
7291         vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
7292     return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
7293 }
dynCheck_entry_vkGetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)7294 static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
7295     VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {
7296     auto resources = ResourceTracker::get();
7297     if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address")) {
7298         sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT",
7299                                          "VK_EXT_buffer_device_address");
7300     }
7301     AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
7302     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7303     VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
7304     vkGetBufferDeviceAddressEXT_VkDeviceAddress_return =
7305         vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
7306     return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
7307 }
7308 #endif
7309 #ifdef VK_EXT_tooling_info
entry_vkGetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice,uint32_t * pToolCount,VkPhysicalDeviceToolProperties * pToolProperties)7310 static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
7311     VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
7312     VkPhysicalDeviceToolProperties* pToolProperties) {
7313     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
7314     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7315     VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
7316     vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return =
7317         vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties,
7318                                                     true /* do lock */);
7319     return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
7320 }
7321 #endif
7322 #ifdef VK_EXT_separate_stencil_usage
7323 #endif
7324 #ifdef VK_EXT_validation_features
7325 #endif
7326 #ifdef VK_NV_cooperative_matrix
entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)7327 static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
7328     VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount,
7329     VkCooperativeMatrixPropertiesNV* pProperties) {
7330     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
7331     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7332     VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
7333     vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return =
7334         vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount,
7335                                                                 pProperties, true /* do lock */);
7336     return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
7337 }
7338 #endif
7339 #ifdef VK_NV_coverage_reduction_mode
entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)7340 static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
7341     VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount,
7342     VkFramebufferMixedSamplesCombinationNV* pCombinations) {
7343     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
7344     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7345     VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return =
7346         (VkResult)0;
7347     vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return =
7348         vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
7349             physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
7350     return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
7351 }
7352 #endif
7353 #ifdef VK_EXT_fragment_shader_interlock
7354 #endif
7355 #ifdef VK_EXT_ycbcr_image_arrays
7356 #endif
7357 #ifdef VK_EXT_provoking_vertex
7358 #endif
7359 #ifdef VK_EXT_full_screen_exclusive
entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)7360 static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
7361     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7362     uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) {
7363     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
7364     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7365     VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7366     vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return =
7367         vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(
7368             physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
7369     return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
7370 }
entry_vkAcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)7371 static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(VkDevice device,
7372                                                           VkSwapchainKHR swapchain) {
7373     AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
7374     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7375     VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7376     vkAcquireFullScreenExclusiveModeEXT_VkResult_return =
7377         vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7378     return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
7379 }
dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)7380 static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(VkDevice device,
7381                                                                    VkSwapchainKHR swapchain) {
7382     auto resources = ResourceTracker::get();
7383     if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive")) {
7384         sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT",
7385                                          "VK_EXT_full_screen_exclusive");
7386     }
7387     AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
7388     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7389     VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7390     vkAcquireFullScreenExclusiveModeEXT_VkResult_return =
7391         vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7392     return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
7393 }
entry_vkReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)7394 static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(VkDevice device,
7395                                                           VkSwapchainKHR swapchain) {
7396     AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
7397     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7398     VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7399     vkReleaseFullScreenExclusiveModeEXT_VkResult_return =
7400         vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7401     return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
7402 }
dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)7403 static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(VkDevice device,
7404                                                                    VkSwapchainKHR swapchain) {
7405     auto resources = ResourceTracker::get();
7406     if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive")) {
7407         sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT",
7408                                          "VK_EXT_full_screen_exclusive");
7409     }
7410     AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
7411     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7412     VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7413     vkReleaseFullScreenExclusiveModeEXT_VkResult_return =
7414         vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7415     return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
7416 }
entry_vkGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkDeviceGroupPresentModeFlagsKHR * pModes)7417 static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
7418     VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7419     VkDeviceGroupPresentModeFlagsKHR* pModes) {
7420     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
7421     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7422     VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7423     vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return =
7424         vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes,
7425                                                        true /* do lock */);
7426     return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
7427 }
dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkDeviceGroupPresentModeFlagsKHR * pModes)7428 static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
7429     VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7430     VkDeviceGroupPresentModeFlagsKHR* pModes) {
7431     auto resources = ResourceTracker::get();
7432     if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive")) {
7433         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT",
7434                                          "VK_EXT_full_screen_exclusive");
7435     }
7436     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
7437     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7438     VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7439     vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return =
7440         vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes,
7441                                                        true /* do lock */);
7442     return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
7443 }
7444 #endif
7445 #ifdef VK_EXT_headless_surface
entry_vkCreateHeadlessSurfaceEXT(VkInstance instance,const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)7446 static VkResult entry_vkCreateHeadlessSurfaceEXT(VkInstance instance,
7447                                                  const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
7448                                                  const VkAllocationCallbacks* pAllocator,
7449                                                  VkSurfaceKHR* pSurface) {
7450     AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
7451     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7452     VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
7453     vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(
7454         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7455     return vkCreateHeadlessSurfaceEXT_VkResult_return;
7456 }
7457 #endif
7458 #ifdef VK_EXT_line_rasterization
entry_vkCmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)7459 static void entry_vkCmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor,
7460                                          uint16_t lineStipplePattern) {
7461     AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
7462     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7463     vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern,
7464                                   true /* do lock */);
7465 }
dynCheck_entry_vkCmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)7466 static void dynCheck_entry_vkCmdSetLineStippleEXT(VkCommandBuffer commandBuffer,
7467                                                   uint32_t lineStippleFactor,
7468                                                   uint16_t lineStipplePattern) {
7469     auto resources = ResourceTracker::get();
7470     VkDevice device = resources->getDevice(commandBuffer);
7471     ;
7472     if (!resources->hasDeviceExtension(device, "VK_EXT_line_rasterization")) {
7473         sOnInvalidDynamicallyCheckedCall("vkCmdSetLineStippleEXT", "VK_EXT_line_rasterization");
7474     }
7475     AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
7476     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7477     vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern,
7478                                   true /* do lock */);
7479 }
7480 #endif
7481 #ifdef VK_EXT_shader_atomic_float
7482 #endif
7483 #ifdef VK_EXT_host_query_reset
entry_vkResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)7484 static void entry_vkResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
7485                                       uint32_t queryCount) {
7486     AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
7487     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7488     vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
7489 }
dynCheck_entry_vkResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)7490 static void dynCheck_entry_vkResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool,
7491                                                uint32_t firstQuery, uint32_t queryCount) {
7492     auto resources = ResourceTracker::get();
7493     if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset")) {
7494         sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
7495     }
7496     AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
7497     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7498     vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
7499 }
7500 #endif
7501 #ifdef VK_EXT_index_type_uint8
7502 #endif
7503 #ifdef VK_EXT_extended_dynamic_state
entry_vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)7504 static void entry_vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) {
7505     AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
7506     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7507     vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
7508 }
dynCheck_entry_vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)7509 static void dynCheck_entry_vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer,
7510                                                VkCullModeFlags cullMode) {
7511     auto resources = ResourceTracker::get();
7512     VkDevice device = resources->getDevice(commandBuffer);
7513     ;
7514     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7515         sOnInvalidDynamicallyCheckedCall("vkCmdSetCullModeEXT", "VK_EXT_extended_dynamic_state");
7516     }
7517     AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
7518     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7519     vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
7520 }
entry_vkCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)7521 static void entry_vkCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace) {
7522     AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
7523     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7524     vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
7525 }
dynCheck_entry_vkCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)7526 static void dynCheck_entry_vkCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,
7527                                                 VkFrontFace frontFace) {
7528     auto resources = ResourceTracker::get();
7529     VkDevice device = resources->getDevice(commandBuffer);
7530     ;
7531     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7532         sOnInvalidDynamicallyCheckedCall("vkCmdSetFrontFaceEXT", "VK_EXT_extended_dynamic_state");
7533     }
7534     AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
7535     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7536     vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
7537 }
entry_vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)7538 static void entry_vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,
7539                                                VkPrimitiveTopology primitiveTopology) {
7540     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
7541     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7542     vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
7543 }
dynCheck_entry_vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)7544 static void dynCheck_entry_vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,
7545                                                         VkPrimitiveTopology primitiveTopology) {
7546     auto resources = ResourceTracker::get();
7547     VkDevice device = resources->getDevice(commandBuffer);
7548     ;
7549     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7550         sOnInvalidDynamicallyCheckedCall("vkCmdSetPrimitiveTopologyEXT",
7551                                          "VK_EXT_extended_dynamic_state");
7552     }
7553     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
7554     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7555     vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
7556 }
entry_vkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)7557 static void entry_vkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,
7558                                                uint32_t viewportCount,
7559                                                const VkViewport* pViewports) {
7560     AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
7561     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7562     vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports,
7563                                         true /* do lock */);
7564 }
dynCheck_entry_vkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)7565 static void dynCheck_entry_vkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,
7566                                                         uint32_t viewportCount,
7567                                                         const VkViewport* pViewports) {
7568     auto resources = ResourceTracker::get();
7569     VkDevice device = resources->getDevice(commandBuffer);
7570     ;
7571     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7572         sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWithCountEXT",
7573                                          "VK_EXT_extended_dynamic_state");
7574     }
7575     AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
7576     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7577     vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports,
7578                                         true /* do lock */);
7579 }
entry_vkCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)7580 static void entry_vkCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, uint32_t scissorCount,
7581                                               const VkRect2D* pScissors) {
7582     AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
7583     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7584     vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
7585 }
dynCheck_entry_vkCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)7586 static void dynCheck_entry_vkCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,
7587                                                        uint32_t scissorCount,
7588                                                        const VkRect2D* pScissors) {
7589     auto resources = ResourceTracker::get();
7590     VkDevice device = resources->getDevice(commandBuffer);
7591     ;
7592     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7593         sOnInvalidDynamicallyCheckedCall("vkCmdSetScissorWithCountEXT",
7594                                          "VK_EXT_extended_dynamic_state");
7595     }
7596     AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
7597     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7598     vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
7599 }
entry_vkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)7600 static void entry_vkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding,
7601                                              uint32_t bindingCount, const VkBuffer* pBuffers,
7602                                              const VkDeviceSize* pOffsets,
7603                                              const VkDeviceSize* pSizes,
7604                                              const VkDeviceSize* pStrides) {
7605     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
7606     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7607     vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets,
7608                                       pSizes, pStrides, true /* do lock */);
7609 }
dynCheck_entry_vkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)7610 static void dynCheck_entry_vkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,
7611                                                       uint32_t firstBinding, uint32_t bindingCount,
7612                                                       const VkBuffer* pBuffers,
7613                                                       const VkDeviceSize* pOffsets,
7614                                                       const VkDeviceSize* pSizes,
7615                                                       const VkDeviceSize* pStrides) {
7616     auto resources = ResourceTracker::get();
7617     VkDevice device = resources->getDevice(commandBuffer);
7618     ;
7619     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7620         sOnInvalidDynamicallyCheckedCall("vkCmdBindVertexBuffers2EXT",
7621                                          "VK_EXT_extended_dynamic_state");
7622     }
7623     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
7624     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7625     vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets,
7626                                       pSizes, pStrides, true /* do lock */);
7627 }
entry_vkCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)7628 static void entry_vkCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,
7629                                              VkBool32 depthTestEnable) {
7630     AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
7631     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7632     vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
7633 }
dynCheck_entry_vkCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)7634 static void dynCheck_entry_vkCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,
7635                                                       VkBool32 depthTestEnable) {
7636     auto resources = ResourceTracker::get();
7637     VkDevice device = resources->getDevice(commandBuffer);
7638     ;
7639     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7640         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthTestEnableEXT",
7641                                          "VK_EXT_extended_dynamic_state");
7642     }
7643     AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
7644     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7645     vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
7646 }
entry_vkCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)7647 static void entry_vkCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,
7648                                               VkBool32 depthWriteEnable) {
7649     AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
7650     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7651     vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
7652 }
dynCheck_entry_vkCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)7653 static void dynCheck_entry_vkCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,
7654                                                        VkBool32 depthWriteEnable) {
7655     auto resources = ResourceTracker::get();
7656     VkDevice device = resources->getDevice(commandBuffer);
7657     ;
7658     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7659         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthWriteEnableEXT",
7660                                          "VK_EXT_extended_dynamic_state");
7661     }
7662     AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
7663     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7664     vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
7665 }
entry_vkCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)7666 static void entry_vkCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,
7667                                             VkCompareOp depthCompareOp) {
7668     AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
7669     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7670     vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
7671 }
dynCheck_entry_vkCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)7672 static void dynCheck_entry_vkCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,
7673                                                      VkCompareOp depthCompareOp) {
7674     auto resources = ResourceTracker::get();
7675     VkDevice device = resources->getDevice(commandBuffer);
7676     ;
7677     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7678         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthCompareOpEXT",
7679                                          "VK_EXT_extended_dynamic_state");
7680     }
7681     AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
7682     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7683     vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
7684 }
entry_vkCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)7685 static void entry_vkCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,
7686                                                    VkBool32 depthBoundsTestEnable) {
7687     AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
7688     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7689     vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable,
7690                                             true /* do lock */);
7691 }
dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)7692 static void dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,
7693                                                             VkBool32 depthBoundsTestEnable) {
7694     auto resources = ResourceTracker::get();
7695     VkDevice device = resources->getDevice(commandBuffer);
7696     ;
7697     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7698         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthBoundsTestEnableEXT",
7699                                          "VK_EXT_extended_dynamic_state");
7700     }
7701     AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
7702     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7703     vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable,
7704                                             true /* do lock */);
7705 }
entry_vkCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)7706 static void entry_vkCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,
7707                                                VkBool32 stencilTestEnable) {
7708     AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
7709     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7710     vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
7711 }
dynCheck_entry_vkCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)7712 static void dynCheck_entry_vkCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,
7713                                                         VkBool32 stencilTestEnable) {
7714     auto resources = ResourceTracker::get();
7715     VkDevice device = resources->getDevice(commandBuffer);
7716     ;
7717     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7718         sOnInvalidDynamicallyCheckedCall("vkCmdSetStencilTestEnableEXT",
7719                                          "VK_EXT_extended_dynamic_state");
7720     }
7721     AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
7722     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7723     vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
7724 }
entry_vkCmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)7725 static void entry_vkCmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
7726                                        VkStencilOp failOp, VkStencilOp passOp,
7727                                        VkStencilOp depthFailOp, VkCompareOp compareOp) {
7728     AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
7729     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7730     vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp,
7731                                 true /* do lock */);
7732 }
dynCheck_entry_vkCmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)7733 static void dynCheck_entry_vkCmdSetStencilOpEXT(VkCommandBuffer commandBuffer,
7734                                                 VkStencilFaceFlags faceMask, VkStencilOp failOp,
7735                                                 VkStencilOp passOp, VkStencilOp depthFailOp,
7736                                                 VkCompareOp compareOp) {
7737     auto resources = ResourceTracker::get();
7738     VkDevice device = resources->getDevice(commandBuffer);
7739     ;
7740     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state")) {
7741         sOnInvalidDynamicallyCheckedCall("vkCmdSetStencilOpEXT", "VK_EXT_extended_dynamic_state");
7742     }
7743     AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
7744     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7745     vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp,
7746                                 true /* do lock */);
7747 }
7748 #endif
7749 #ifdef VK_EXT_shader_atomic_float2
7750 #endif
7751 #ifdef VK_EXT_surface_maintenance1
7752 #endif
7753 #ifdef VK_EXT_swapchain_maintenance1
entry_vkReleaseSwapchainImagesEXT(VkDevice device,const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo)7754 static VkResult entry_vkReleaseSwapchainImagesEXT(
7755     VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) {
7756     AEMU_SCOPED_TRACE("vkReleaseSwapchainImagesEXT");
7757     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7758     VkResult vkReleaseSwapchainImagesEXT_VkResult_return = (VkResult)0;
7759     vkReleaseSwapchainImagesEXT_VkResult_return =
7760         vkEnc->vkReleaseSwapchainImagesEXT(device, pReleaseInfo, true /* do lock */);
7761     return vkReleaseSwapchainImagesEXT_VkResult_return;
7762 }
dynCheck_entry_vkReleaseSwapchainImagesEXT(VkDevice device,const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo)7763 static VkResult dynCheck_entry_vkReleaseSwapchainImagesEXT(
7764     VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) {
7765     auto resources = ResourceTracker::get();
7766     if (!resources->hasDeviceExtension(device, "VK_EXT_swapchain_maintenance1")) {
7767         sOnInvalidDynamicallyCheckedCall("vkReleaseSwapchainImagesEXT",
7768                                          "VK_EXT_swapchain_maintenance1");
7769     }
7770     AEMU_SCOPED_TRACE("vkReleaseSwapchainImagesEXT");
7771     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7772     VkResult vkReleaseSwapchainImagesEXT_VkResult_return = (VkResult)0;
7773     vkReleaseSwapchainImagesEXT_VkResult_return =
7774         vkEnc->vkReleaseSwapchainImagesEXT(device, pReleaseInfo, true /* do lock */);
7775     return vkReleaseSwapchainImagesEXT_VkResult_return;
7776 }
7777 #endif
7778 #ifdef VK_EXT_shader_demote_to_helper_invocation
7779 #endif
7780 #ifdef VK_NV_device_generated_commands
entry_vkGetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)7781 static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
7782     VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7783     VkMemoryRequirements2* pMemoryRequirements) {
7784     AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
7785     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7786     vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements,
7787                                                       true /* do lock */);
7788 }
dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)7789 static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
7790     VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7791     VkMemoryRequirements2* pMemoryRequirements) {
7792     auto resources = ResourceTracker::get();
7793     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands")) {
7794         sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV",
7795                                          "VK_NV_device_generated_commands");
7796     }
7797     AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
7798     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7799     vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements,
7800                                                       true /* do lock */);
7801 }
entry_vkCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7802 static void entry_vkCmdPreprocessGeneratedCommandsNV(
7803     VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) {
7804     AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
7805     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7806     vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo,
7807                                               true /* do lock */);
7808 }
dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7809 static void dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV(
7810     VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) {
7811     auto resources = ResourceTracker::get();
7812     VkDevice device = resources->getDevice(commandBuffer);
7813     ;
7814     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands")) {
7815         sOnInvalidDynamicallyCheckedCall("vkCmdPreprocessGeneratedCommandsNV",
7816                                          "VK_NV_device_generated_commands");
7817     }
7818     AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
7819     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7820     vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo,
7821                                               true /* do lock */);
7822 }
entry_vkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7823 static void entry_vkCmdExecuteGeneratedCommandsNV(
7824     VkCommandBuffer commandBuffer, VkBool32 isPreprocessed,
7825     const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) {
7826     AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
7827     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7828     vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo,
7829                                            true /* do lock */);
7830 }
dynCheck_entry_vkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7831 static void dynCheck_entry_vkCmdExecuteGeneratedCommandsNV(
7832     VkCommandBuffer commandBuffer, VkBool32 isPreprocessed,
7833     const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) {
7834     auto resources = ResourceTracker::get();
7835     VkDevice device = resources->getDevice(commandBuffer);
7836     ;
7837     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands")) {
7838         sOnInvalidDynamicallyCheckedCall("vkCmdExecuteGeneratedCommandsNV",
7839                                          "VK_NV_device_generated_commands");
7840     }
7841     AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
7842     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7843     vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo,
7844                                            true /* do lock */);
7845 }
entry_vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline,uint32_t groupIndex)7846 static void entry_vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,
7847                                                  VkPipelineBindPoint pipelineBindPoint,
7848                                                  VkPipeline pipeline, uint32_t groupIndex) {
7849     AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
7850     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7851     vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex,
7852                                           true /* do lock */);
7853 }
dynCheck_entry_vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline,uint32_t groupIndex)7854 static void dynCheck_entry_vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,
7855                                                           VkPipelineBindPoint pipelineBindPoint,
7856                                                           VkPipeline pipeline,
7857                                                           uint32_t groupIndex) {
7858     auto resources = ResourceTracker::get();
7859     VkDevice device = resources->getDevice(commandBuffer);
7860     ;
7861     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands")) {
7862         sOnInvalidDynamicallyCheckedCall("vkCmdBindPipelineShaderGroupNV",
7863                                          "VK_NV_device_generated_commands");
7864     }
7865     AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
7866     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7867     vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex,
7868                                           true /* do lock */);
7869 }
entry_vkCreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)7870 static VkResult entry_vkCreateIndirectCommandsLayoutNV(
7871     VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7872     const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) {
7873     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
7874     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7875     VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
7876     vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(
7877         device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
7878     return vkCreateIndirectCommandsLayoutNV_VkResult_return;
7879 }
dynCheck_entry_vkCreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)7880 static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
7881     VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7882     const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) {
7883     auto resources = ResourceTracker::get();
7884     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands")) {
7885         sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV",
7886                                          "VK_NV_device_generated_commands");
7887     }
7888     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
7889     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7890     VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
7891     vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(
7892         device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
7893     return vkCreateIndirectCommandsLayoutNV_VkResult_return;
7894 }
entry_vkDestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)7895 static void entry_vkDestroyIndirectCommandsLayoutNV(
7896     VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout,
7897     const VkAllocationCallbacks* pAllocator) {
7898     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
7899     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7900     vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator,
7901                                              true /* do lock */);
7902 }
dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)7903 static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
7904     VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout,
7905     const VkAllocationCallbacks* pAllocator) {
7906     auto resources = ResourceTracker::get();
7907     if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands")) {
7908         sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV",
7909                                          "VK_NV_device_generated_commands");
7910     }
7911     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
7912     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7913     vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator,
7914                                              true /* do lock */);
7915 }
7916 #endif
7917 #ifdef VK_NV_inherited_viewport_scissor
7918 #endif
7919 #ifdef VK_EXT_texel_buffer_alignment
7920 #endif
7921 #ifdef VK_QCOM_render_pass_transform
7922 #endif
7923 #ifdef VK_EXT_device_memory_report
7924 #endif
7925 #ifdef VK_EXT_acquire_drm_display
entry_vkAcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)7926 static VkResult entry_vkAcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd,
7927                                              VkDisplayKHR display) {
7928     AEMU_SCOPED_TRACE("vkAcquireDrmDisplayEXT");
7929     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7930     VkResult vkAcquireDrmDisplayEXT_VkResult_return = (VkResult)0;
7931     vkAcquireDrmDisplayEXT_VkResult_return =
7932         vkEnc->vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, true /* do lock */);
7933     return vkAcquireDrmDisplayEXT_VkResult_return;
7934 }
entry_vkGetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)7935 static VkResult entry_vkGetDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd,
7936                                          uint32_t connectorId, VkDisplayKHR* display) {
7937     AEMU_SCOPED_TRACE("vkGetDrmDisplayEXT");
7938     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7939     VkResult vkGetDrmDisplayEXT_VkResult_return = (VkResult)0;
7940     vkGetDrmDisplayEXT_VkResult_return =
7941         vkEnc->vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, true /* do lock */);
7942     return vkGetDrmDisplayEXT_VkResult_return;
7943 }
7944 #endif
7945 #ifdef VK_EXT_robustness2
7946 #endif
7947 #ifdef VK_EXT_custom_border_color
7948 #endif
7949 #ifdef VK_GOOGLE_user_type
7950 #endif
7951 #ifdef VK_NV_present_barrier
7952 #endif
7953 #ifdef VK_EXT_private_data
entry_vkCreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)7954 static VkResult entry_vkCreatePrivateDataSlotEXT(VkDevice device,
7955                                                  const VkPrivateDataSlotCreateInfo* pCreateInfo,
7956                                                  const VkAllocationCallbacks* pAllocator,
7957                                                  VkPrivateDataSlot* pPrivateDataSlot) {
7958     AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
7959     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7960     VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
7961     vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(
7962         device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
7963     return vkCreatePrivateDataSlotEXT_VkResult_return;
7964 }
dynCheck_entry_vkCreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)7965 static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
7966     VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo,
7967     const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot) {
7968     auto resources = ResourceTracker::get();
7969     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data")) {
7970         sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
7971     }
7972     AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
7973     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7974     VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
7975     vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(
7976         device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
7977     return vkCreatePrivateDataSlotEXT_VkResult_return;
7978 }
entry_vkDestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)7979 static void entry_vkDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlot privateDataSlot,
7980                                               const VkAllocationCallbacks* pAllocator) {
7981     AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7982     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7983     vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7984 }
dynCheck_entry_vkDestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)7985 static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(VkDevice device,
7986                                                        VkPrivateDataSlot privateDataSlot,
7987                                                        const VkAllocationCallbacks* pAllocator) {
7988     auto resources = ResourceTracker::get();
7989     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data")) {
7990         sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
7991     }
7992     AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7993     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7994     vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7995 }
entry_vkSetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)7996 static VkResult entry_vkSetPrivateDataEXT(VkDevice device, VkObjectType objectType,
7997                                           uint64_t objectHandle, VkPrivateDataSlot privateDataSlot,
7998                                           uint64_t data) {
7999     AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
8000     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8001     VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
8002     vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(
8003         device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
8004     return vkSetPrivateDataEXT_VkResult_return;
8005 }
dynCheck_entry_vkSetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)8006 static VkResult dynCheck_entry_vkSetPrivateDataEXT(VkDevice device, VkObjectType objectType,
8007                                                    uint64_t objectHandle,
8008                                                    VkPrivateDataSlot privateDataSlot,
8009                                                    uint64_t data) {
8010     auto resources = ResourceTracker::get();
8011     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data")) {
8012         sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
8013     }
8014     AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
8015     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8016     VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
8017     vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(
8018         device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
8019     return vkSetPrivateDataEXT_VkResult_return;
8020 }
entry_vkGetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)8021 static void entry_vkGetPrivateDataEXT(VkDevice device, VkObjectType objectType,
8022                                       uint64_t objectHandle, VkPrivateDataSlot privateDataSlot,
8023                                       uint64_t* pData) {
8024     AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
8025     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8026     vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData,
8027                                true /* do lock */);
8028 }
dynCheck_entry_vkGetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)8029 static void dynCheck_entry_vkGetPrivateDataEXT(VkDevice device, VkObjectType objectType,
8030                                                uint64_t objectHandle,
8031                                                VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
8032     auto resources = ResourceTracker::get();
8033     if (!resources->hasDeviceExtension(device, "VK_EXT_private_data")) {
8034         sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
8035     }
8036     AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
8037     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8038     vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData,
8039                                true /* do lock */);
8040 }
8041 #endif
8042 #ifdef VK_EXT_pipeline_creation_cache_control
8043 #endif
8044 #ifdef VK_NV_device_diagnostics_config
8045 #endif
8046 #ifdef VK_QCOM_render_pass_store_ops
8047 #endif
8048 #ifdef VK_NV_low_latency
8049 #endif
8050 #ifdef VK_EXT_metal_objects
entry_vkExportMetalObjectsEXT(VkDevice device,VkExportMetalObjectsInfoEXT * pMetalObjectsInfo)8051 static void entry_vkExportMetalObjectsEXT(VkDevice device,
8052                                           VkExportMetalObjectsInfoEXT* pMetalObjectsInfo) {
8053     AEMU_SCOPED_TRACE("vkExportMetalObjectsEXT");
8054     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8055     vkEnc->vkExportMetalObjectsEXT(device, pMetalObjectsInfo, true /* do lock */);
8056 }
dynCheck_entry_vkExportMetalObjectsEXT(VkDevice device,VkExportMetalObjectsInfoEXT * pMetalObjectsInfo)8057 static void dynCheck_entry_vkExportMetalObjectsEXT(VkDevice device,
8058                                                    VkExportMetalObjectsInfoEXT* pMetalObjectsInfo) {
8059     auto resources = ResourceTracker::get();
8060     if (!resources->hasDeviceExtension(device, "VK_EXT_metal_objects")) {
8061         sOnInvalidDynamicallyCheckedCall("vkExportMetalObjectsEXT", "VK_EXT_metal_objects");
8062     }
8063     AEMU_SCOPED_TRACE("vkExportMetalObjectsEXT");
8064     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8065     vkEnc->vkExportMetalObjectsEXT(device, pMetalObjectsInfo, true /* do lock */);
8066 }
8067 #endif
8068 #ifdef VK_EXT_descriptor_buffer
entry_vkGetDescriptorSetLayoutSizeEXT(VkDevice device,VkDescriptorSetLayout layout,VkDeviceSize * pLayoutSizeInBytes)8069 static void entry_vkGetDescriptorSetLayoutSizeEXT(VkDevice device, VkDescriptorSetLayout layout,
8070                                                   VkDeviceSize* pLayoutSizeInBytes) {
8071     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSizeEXT");
8072     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8073     vkEnc->vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, true /* do lock */);
8074 }
dynCheck_entry_vkGetDescriptorSetLayoutSizeEXT(VkDevice device,VkDescriptorSetLayout layout,VkDeviceSize * pLayoutSizeInBytes)8075 static void dynCheck_entry_vkGetDescriptorSetLayoutSizeEXT(VkDevice device,
8076                                                            VkDescriptorSetLayout layout,
8077                                                            VkDeviceSize* pLayoutSizeInBytes) {
8078     auto resources = ResourceTracker::get();
8079     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8080         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSizeEXT",
8081                                          "VK_EXT_descriptor_buffer");
8082     }
8083     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSizeEXT");
8084     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8085     vkEnc->vkGetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes, true /* do lock */);
8086 }
entry_vkGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device,VkDescriptorSetLayout layout,uint32_t binding,VkDeviceSize * pOffset)8087 static void entry_vkGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device,
8088                                                            VkDescriptorSetLayout layout,
8089                                                            uint32_t binding,
8090                                                            VkDeviceSize* pOffset) {
8091     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutBindingOffsetEXT");
8092     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8093     vkEnc->vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset,
8094                                                     true /* do lock */);
8095 }
dynCheck_entry_vkGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device,VkDescriptorSetLayout layout,uint32_t binding,VkDeviceSize * pOffset)8096 static void dynCheck_entry_vkGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device,
8097                                                                     VkDescriptorSetLayout layout,
8098                                                                     uint32_t binding,
8099                                                                     VkDeviceSize* pOffset) {
8100     auto resources = ResourceTracker::get();
8101     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8102         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutBindingOffsetEXT",
8103                                          "VK_EXT_descriptor_buffer");
8104     }
8105     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutBindingOffsetEXT");
8106     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8107     vkEnc->vkGetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset,
8108                                                     true /* do lock */);
8109 }
entry_vkGetDescriptorEXT(VkDevice device,const VkDescriptorGetInfoEXT * pDescriptorInfo,size_t dataSize,void * pDescriptor)8110 static void entry_vkGetDescriptorEXT(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo,
8111                                      size_t dataSize, void* pDescriptor) {
8112     AEMU_SCOPED_TRACE("vkGetDescriptorEXT");
8113     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8114     vkEnc->vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, true /* do lock */);
8115 }
dynCheck_entry_vkGetDescriptorEXT(VkDevice device,const VkDescriptorGetInfoEXT * pDescriptorInfo,size_t dataSize,void * pDescriptor)8116 static void dynCheck_entry_vkGetDescriptorEXT(VkDevice device,
8117                                               const VkDescriptorGetInfoEXT* pDescriptorInfo,
8118                                               size_t dataSize, void* pDescriptor) {
8119     auto resources = ResourceTracker::get();
8120     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8121         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorEXT", "VK_EXT_descriptor_buffer");
8122     }
8123     AEMU_SCOPED_TRACE("vkGetDescriptorEXT");
8124     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8125     vkEnc->vkGetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor, true /* do lock */);
8126 }
entry_vkCmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer,uint32_t bufferCount,const VkDescriptorBufferBindingInfoEXT * pBindingInfos)8127 static void entry_vkCmdBindDescriptorBuffersEXT(
8128     VkCommandBuffer commandBuffer, uint32_t bufferCount,
8129     const VkDescriptorBufferBindingInfoEXT* pBindingInfos) {
8130     AEMU_SCOPED_TRACE("vkCmdBindDescriptorBuffersEXT");
8131     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8132     vkEnc->vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos,
8133                                          true /* do lock */);
8134 }
dynCheck_entry_vkCmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer,uint32_t bufferCount,const VkDescriptorBufferBindingInfoEXT * pBindingInfos)8135 static void dynCheck_entry_vkCmdBindDescriptorBuffersEXT(
8136     VkCommandBuffer commandBuffer, uint32_t bufferCount,
8137     const VkDescriptorBufferBindingInfoEXT* pBindingInfos) {
8138     auto resources = ResourceTracker::get();
8139     VkDevice device = resources->getDevice(commandBuffer);
8140     ;
8141     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8142         sOnInvalidDynamicallyCheckedCall("vkCmdBindDescriptorBuffersEXT",
8143                                          "VK_EXT_descriptor_buffer");
8144     }
8145     AEMU_SCOPED_TRACE("vkCmdBindDescriptorBuffersEXT");
8146     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8147     vkEnc->vkCmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos,
8148                                          true /* do lock */);
8149 }
entry_vkCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t setCount,const uint32_t * pBufferIndices,const VkDeviceSize * pOffsets)8150 static void entry_vkCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,
8151                                                      VkPipelineBindPoint pipelineBindPoint,
8152                                                      VkPipelineLayout layout, uint32_t firstSet,
8153                                                      uint32_t setCount,
8154                                                      const uint32_t* pBufferIndices,
8155                                                      const VkDeviceSize* pOffsets) {
8156     AEMU_SCOPED_TRACE("vkCmdSetDescriptorBufferOffsetsEXT");
8157     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8158     vkEnc->vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet,
8159                                               setCount, pBufferIndices, pOffsets,
8160                                               true /* do lock */);
8161 }
dynCheck_entry_vkCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t setCount,const uint32_t * pBufferIndices,const VkDeviceSize * pOffsets)8162 static void dynCheck_entry_vkCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,
8163                                                               VkPipelineBindPoint pipelineBindPoint,
8164                                                               VkPipelineLayout layout,
8165                                                               uint32_t firstSet, uint32_t setCount,
8166                                                               const uint32_t* pBufferIndices,
8167                                                               const VkDeviceSize* pOffsets) {
8168     auto resources = ResourceTracker::get();
8169     VkDevice device = resources->getDevice(commandBuffer);
8170     ;
8171     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8172         sOnInvalidDynamicallyCheckedCall("vkCmdSetDescriptorBufferOffsetsEXT",
8173                                          "VK_EXT_descriptor_buffer");
8174     }
8175     AEMU_SCOPED_TRACE("vkCmdSetDescriptorBufferOffsetsEXT");
8176     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8177     vkEnc->vkCmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet,
8178                                               setCount, pBufferIndices, pOffsets,
8179                                               true /* do lock */);
8180 }
entry_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set)8181 static void entry_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(
8182     VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
8183     uint32_t set) {
8184     AEMU_SCOPED_TRACE("vkCmdBindDescriptorBufferEmbeddedSamplersEXT");
8185     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8186     vkEnc->vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout,
8187                                                         set, true /* do lock */);
8188 }
dynCheck_entry_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set)8189 static void dynCheck_entry_vkCmdBindDescriptorBufferEmbeddedSamplersEXT(
8190     VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
8191     uint32_t set) {
8192     auto resources = ResourceTracker::get();
8193     VkDevice device = resources->getDevice(commandBuffer);
8194     ;
8195     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8196         sOnInvalidDynamicallyCheckedCall("vkCmdBindDescriptorBufferEmbeddedSamplersEXT",
8197                                          "VK_EXT_descriptor_buffer");
8198     }
8199     AEMU_SCOPED_TRACE("vkCmdBindDescriptorBufferEmbeddedSamplersEXT");
8200     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8201     vkEnc->vkCmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout,
8202                                                         set, true /* do lock */);
8203 }
entry_vkGetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkBufferCaptureDescriptorDataInfoEXT * pInfo,void * pData)8204 static VkResult entry_vkGetBufferOpaqueCaptureDescriptorDataEXT(
8205     VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8206     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureDescriptorDataEXT");
8207     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8208     VkResult vkGetBufferOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8209     vkGetBufferOpaqueCaptureDescriptorDataEXT_VkResult_return =
8210         vkEnc->vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, true /* do lock */);
8211     return vkGetBufferOpaqueCaptureDescriptorDataEXT_VkResult_return;
8212 }
dynCheck_entry_vkGetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkBufferCaptureDescriptorDataInfoEXT * pInfo,void * pData)8213 static VkResult dynCheck_entry_vkGetBufferOpaqueCaptureDescriptorDataEXT(
8214     VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8215     auto resources = ResourceTracker::get();
8216     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8217         sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureDescriptorDataEXT",
8218                                          "VK_EXT_descriptor_buffer");
8219     }
8220     AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureDescriptorDataEXT");
8221     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8222     VkResult vkGetBufferOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8223     vkGetBufferOpaqueCaptureDescriptorDataEXT_VkResult_return =
8224         vkEnc->vkGetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, true /* do lock */);
8225     return vkGetBufferOpaqueCaptureDescriptorDataEXT_VkResult_return;
8226 }
entry_vkGetImageOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageCaptureDescriptorDataInfoEXT * pInfo,void * pData)8227 static VkResult entry_vkGetImageOpaqueCaptureDescriptorDataEXT(
8228     VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8229     AEMU_SCOPED_TRACE("vkGetImageOpaqueCaptureDescriptorDataEXT");
8230     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8231     VkResult vkGetImageOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8232     vkGetImageOpaqueCaptureDescriptorDataEXT_VkResult_return =
8233         vkEnc->vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, true /* do lock */);
8234     return vkGetImageOpaqueCaptureDescriptorDataEXT_VkResult_return;
8235 }
dynCheck_entry_vkGetImageOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageCaptureDescriptorDataInfoEXT * pInfo,void * pData)8236 static VkResult dynCheck_entry_vkGetImageOpaqueCaptureDescriptorDataEXT(
8237     VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8238     auto resources = ResourceTracker::get();
8239     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8240         sOnInvalidDynamicallyCheckedCall("vkGetImageOpaqueCaptureDescriptorDataEXT",
8241                                          "VK_EXT_descriptor_buffer");
8242     }
8243     AEMU_SCOPED_TRACE("vkGetImageOpaqueCaptureDescriptorDataEXT");
8244     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8245     VkResult vkGetImageOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8246     vkGetImageOpaqueCaptureDescriptorDataEXT_VkResult_return =
8247         vkEnc->vkGetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, true /* do lock */);
8248     return vkGetImageOpaqueCaptureDescriptorDataEXT_VkResult_return;
8249 }
entry_vkGetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageViewCaptureDescriptorDataInfoEXT * pInfo,void * pData)8250 static VkResult entry_vkGetImageViewOpaqueCaptureDescriptorDataEXT(
8251     VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8252     AEMU_SCOPED_TRACE("vkGetImageViewOpaqueCaptureDescriptorDataEXT");
8253     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8254     VkResult vkGetImageViewOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8255     vkGetImageViewOpaqueCaptureDescriptorDataEXT_VkResult_return =
8256         vkEnc->vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData,
8257                                                             true /* do lock */);
8258     return vkGetImageViewOpaqueCaptureDescriptorDataEXT_VkResult_return;
8259 }
dynCheck_entry_vkGetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageViewCaptureDescriptorDataInfoEXT * pInfo,void * pData)8260 static VkResult dynCheck_entry_vkGetImageViewOpaqueCaptureDescriptorDataEXT(
8261     VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8262     auto resources = ResourceTracker::get();
8263     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8264         sOnInvalidDynamicallyCheckedCall("vkGetImageViewOpaqueCaptureDescriptorDataEXT",
8265                                          "VK_EXT_descriptor_buffer");
8266     }
8267     AEMU_SCOPED_TRACE("vkGetImageViewOpaqueCaptureDescriptorDataEXT");
8268     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8269     VkResult vkGetImageViewOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8270     vkGetImageViewOpaqueCaptureDescriptorDataEXT_VkResult_return =
8271         vkEnc->vkGetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData,
8272                                                             true /* do lock */);
8273     return vkGetImageViewOpaqueCaptureDescriptorDataEXT_VkResult_return;
8274 }
entry_vkGetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkSamplerCaptureDescriptorDataInfoEXT * pInfo,void * pData)8275 static VkResult entry_vkGetSamplerOpaqueCaptureDescriptorDataEXT(
8276     VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8277     AEMU_SCOPED_TRACE("vkGetSamplerOpaqueCaptureDescriptorDataEXT");
8278     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8279     VkResult vkGetSamplerOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8280     vkGetSamplerOpaqueCaptureDescriptorDataEXT_VkResult_return =
8281         vkEnc->vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, true /* do lock */);
8282     return vkGetSamplerOpaqueCaptureDescriptorDataEXT_VkResult_return;
8283 }
dynCheck_entry_vkGetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkSamplerCaptureDescriptorDataInfoEXT * pInfo,void * pData)8284 static VkResult dynCheck_entry_vkGetSamplerOpaqueCaptureDescriptorDataEXT(
8285     VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, void* pData) {
8286     auto resources = ResourceTracker::get();
8287     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8288         sOnInvalidDynamicallyCheckedCall("vkGetSamplerOpaqueCaptureDescriptorDataEXT",
8289                                          "VK_EXT_descriptor_buffer");
8290     }
8291     AEMU_SCOPED_TRACE("vkGetSamplerOpaqueCaptureDescriptorDataEXT");
8292     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8293     VkResult vkGetSamplerOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8294     vkGetSamplerOpaqueCaptureDescriptorDataEXT_VkResult_return =
8295         vkEnc->vkGetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData, true /* do lock */);
8296     return vkGetSamplerOpaqueCaptureDescriptorDataEXT_VkResult_return;
8297 }
entry_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo,void * pData)8298 static VkResult entry_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
8299     VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo,
8300     void* pData) {
8301     AEMU_SCOPED_TRACE("vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT");
8302     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8303     VkResult vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8304     vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_VkResult_return =
8305         vkEnc->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData,
8306                                                                         true /* do lock */);
8307     return vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_VkResult_return;
8308 }
dynCheck_entry_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo,void * pData)8309 static VkResult dynCheck_entry_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
8310     VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo,
8311     void* pData) {
8312     auto resources = ResourceTracker::get();
8313     if (!resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer")) {
8314         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT",
8315                                          "VK_EXT_descriptor_buffer");
8316     }
8317     AEMU_SCOPED_TRACE("vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT");
8318     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8319     VkResult vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_VkResult_return = (VkResult)0;
8320     vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_VkResult_return =
8321         vkEnc->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData,
8322                                                                         true /* do lock */);
8323     return vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT_VkResult_return;
8324 }
8325 #endif
8326 #ifdef VK_EXT_graphics_pipeline_library
8327 #endif
8328 #ifdef VK_AMD_shader_early_and_late_fragment_tests
8329 #endif
8330 #ifdef VK_NV_fragment_shading_rate_enums
entry_vkCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer,VkFragmentShadingRateNV shadingRate,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])8331 static void entry_vkCmdSetFragmentShadingRateEnumNV(
8332     VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate,
8333     const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) {
8334     AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
8335     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8336     vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps,
8337                                              true /* do lock */);
8338 }
dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer,VkFragmentShadingRateNV shadingRate,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])8339 static void dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV(
8340     VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate,
8341     const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) {
8342     auto resources = ResourceTracker::get();
8343     VkDevice device = resources->getDevice(commandBuffer);
8344     ;
8345     if (!resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums")) {
8346         sOnInvalidDynamicallyCheckedCall("vkCmdSetFragmentShadingRateEnumNV",
8347                                          "VK_NV_fragment_shading_rate_enums");
8348     }
8349     AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
8350     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8351     vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps,
8352                                              true /* do lock */);
8353 }
8354 #endif
8355 #ifdef VK_NV_ray_tracing_motion_blur
8356 #endif
8357 #ifdef VK_EXT_ycbcr_2plane_444_formats
8358 #endif
8359 #ifdef VK_EXT_fragment_density_map2
8360 #endif
8361 #ifdef VK_QCOM_rotated_copy_commands
8362 #endif
8363 #ifdef VK_EXT_image_robustness
8364 #endif
8365 #ifdef VK_EXT_image_compression_control
entry_vkGetImageSubresourceLayout2EXT(VkDevice device,VkImage image,const VkImageSubresource2EXT * pSubresource,VkSubresourceLayout2EXT * pLayout)8366 static void entry_vkGetImageSubresourceLayout2EXT(VkDevice device, VkImage image,
8367                                                   const VkImageSubresource2EXT* pSubresource,
8368                                                   VkSubresourceLayout2EXT* pLayout) {
8369     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout2EXT");
8370     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8371     vkEnc->vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout,
8372                                            true /* do lock */);
8373 }
dynCheck_entry_vkGetImageSubresourceLayout2EXT(VkDevice device,VkImage image,const VkImageSubresource2EXT * pSubresource,VkSubresourceLayout2EXT * pLayout)8374 static void dynCheck_entry_vkGetImageSubresourceLayout2EXT(
8375     VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource,
8376     VkSubresourceLayout2EXT* pLayout) {
8377     auto resources = ResourceTracker::get();
8378     if (!resources->hasDeviceExtension(device, "VK_EXT_image_compression_control")) {
8379         sOnInvalidDynamicallyCheckedCall("vkGetImageSubresourceLayout2EXT",
8380                                          "VK_EXT_image_compression_control");
8381     }
8382     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout2EXT");
8383     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8384     vkEnc->vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout,
8385                                            true /* do lock */);
8386 }
8387 #endif
8388 #ifdef VK_EXT_attachment_feedback_loop_layout
8389 #endif
8390 #ifdef VK_EXT_4444_formats
8391 #endif
8392 #ifdef VK_EXT_device_fault
entry_vkGetDeviceFaultInfoEXT(VkDevice device,VkDeviceFaultCountsEXT * pFaultCounts,VkDeviceFaultInfoEXT * pFaultInfo)8393 static VkResult entry_vkGetDeviceFaultInfoEXT(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts,
8394                                               VkDeviceFaultInfoEXT* pFaultInfo) {
8395     AEMU_SCOPED_TRACE("vkGetDeviceFaultInfoEXT");
8396     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8397     VkResult vkGetDeviceFaultInfoEXT_VkResult_return = (VkResult)0;
8398     vkGetDeviceFaultInfoEXT_VkResult_return =
8399         vkEnc->vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, true /* do lock */);
8400     return vkGetDeviceFaultInfoEXT_VkResult_return;
8401 }
dynCheck_entry_vkGetDeviceFaultInfoEXT(VkDevice device,VkDeviceFaultCountsEXT * pFaultCounts,VkDeviceFaultInfoEXT * pFaultInfo)8402 static VkResult dynCheck_entry_vkGetDeviceFaultInfoEXT(VkDevice device,
8403                                                        VkDeviceFaultCountsEXT* pFaultCounts,
8404                                                        VkDeviceFaultInfoEXT* pFaultInfo) {
8405     auto resources = ResourceTracker::get();
8406     if (!resources->hasDeviceExtension(device, "VK_EXT_device_fault")) {
8407         sOnInvalidDynamicallyCheckedCall("vkGetDeviceFaultInfoEXT", "VK_EXT_device_fault");
8408     }
8409     AEMU_SCOPED_TRACE("vkGetDeviceFaultInfoEXT");
8410     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8411     VkResult vkGetDeviceFaultInfoEXT_VkResult_return = (VkResult)0;
8412     vkGetDeviceFaultInfoEXT_VkResult_return =
8413         vkEnc->vkGetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo, true /* do lock */);
8414     return vkGetDeviceFaultInfoEXT_VkResult_return;
8415 }
8416 #endif
8417 #ifdef VK_ARM_rasterization_order_attachment_access
8418 #endif
8419 #ifdef VK_EXT_rgba10x6_formats
8420 #endif
8421 #ifdef VK_NV_acquire_winrt_display
entry_vkAcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)8422 static VkResult entry_vkAcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,
8423                                               VkDisplayKHR display) {
8424     AEMU_SCOPED_TRACE("vkAcquireWinrtDisplayNV");
8425     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8426     VkResult vkAcquireWinrtDisplayNV_VkResult_return = (VkResult)0;
8427     vkAcquireWinrtDisplayNV_VkResult_return =
8428         vkEnc->vkAcquireWinrtDisplayNV(physicalDevice, display, true /* do lock */);
8429     return vkAcquireWinrtDisplayNV_VkResult_return;
8430 }
entry_vkGetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)8431 static VkResult entry_vkGetWinrtDisplayNV(VkPhysicalDevice physicalDevice,
8432                                           uint32_t deviceRelativeId, VkDisplayKHR* pDisplay) {
8433     AEMU_SCOPED_TRACE("vkGetWinrtDisplayNV");
8434     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8435     VkResult vkGetWinrtDisplayNV_VkResult_return = (VkResult)0;
8436     vkGetWinrtDisplayNV_VkResult_return =
8437         vkEnc->vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, true /* do lock */);
8438     return vkGetWinrtDisplayNV_VkResult_return;
8439 }
8440 #endif
8441 #ifdef VK_EXT_directfb_surface
entry_vkCreateDirectFBSurfaceEXT(VkInstance instance,const VkDirectFBSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)8442 static VkResult entry_vkCreateDirectFBSurfaceEXT(VkInstance instance,
8443                                                  const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
8444                                                  const VkAllocationCallbacks* pAllocator,
8445                                                  VkSurfaceKHR* pSurface) {
8446     AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
8447     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8448     VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
8449     vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(
8450         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8451     return vkCreateDirectFBSurfaceEXT_VkResult_return;
8452 }
entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,IDirectFB * dfb)8453 static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
8454     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb) {
8455     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
8456     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8457     VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
8458     vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return =
8459         vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex,
8460                                                                  dfb, true /* do lock */);
8461     return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
8462 }
8463 #endif
8464 #ifdef VK_VALVE_mutable_descriptor_type
8465 #endif
8466 #ifdef VK_EXT_vertex_input_dynamic_state
entry_vkCmdSetVertexInputEXT(VkCommandBuffer commandBuffer,uint32_t vertexBindingDescriptionCount,const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions,uint32_t vertexAttributeDescriptionCount,const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions)8467 static void entry_vkCmdSetVertexInputEXT(
8468     VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount,
8469     const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
8470     uint32_t vertexAttributeDescriptionCount,
8471     const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) {
8472     AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
8473     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8474     vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount,
8475                                   pVertexBindingDescriptions, vertexAttributeDescriptionCount,
8476                                   pVertexAttributeDescriptions, true /* do lock */);
8477 }
dynCheck_entry_vkCmdSetVertexInputEXT(VkCommandBuffer commandBuffer,uint32_t vertexBindingDescriptionCount,const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions,uint32_t vertexAttributeDescriptionCount,const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions)8478 static void dynCheck_entry_vkCmdSetVertexInputEXT(
8479     VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount,
8480     const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
8481     uint32_t vertexAttributeDescriptionCount,
8482     const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) {
8483     auto resources = ResourceTracker::get();
8484     VkDevice device = resources->getDevice(commandBuffer);
8485     ;
8486     if (!resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state")) {
8487         sOnInvalidDynamicallyCheckedCall("vkCmdSetVertexInputEXT",
8488                                          "VK_EXT_vertex_input_dynamic_state");
8489     }
8490     AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
8491     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8492     vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount,
8493                                   pVertexBindingDescriptions, vertexAttributeDescriptionCount,
8494                                   pVertexAttributeDescriptions, true /* do lock */);
8495 }
8496 #endif
8497 #ifdef VK_EXT_physical_device_drm
8498 #endif
8499 #ifdef VK_EXT_device_address_binding_report
8500 #endif
8501 #ifdef VK_EXT_depth_clip_control
8502 #endif
8503 #ifdef VK_EXT_primitive_topology_list_restart
8504 #endif
8505 #ifdef VK_FUCHSIA_external_memory
entry_vkGetMemoryZirconHandleFUCHSIA(VkDevice device,const VkMemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)8506 static VkResult entry_vkGetMemoryZirconHandleFUCHSIA(
8507     VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
8508     zx_handle_t* pZirconHandle) {
8509     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
8510     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8511     VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
8512     vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(
8513         device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
8514     return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
8515 }
dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(VkDevice device,const VkMemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)8516 static VkResult dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(
8517     VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
8518     zx_handle_t* pZirconHandle) {
8519     auto resources = ResourceTracker::get();
8520     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory")) {
8521         sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandleFUCHSIA",
8522                                          "VK_FUCHSIA_external_memory");
8523     }
8524     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
8525     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8526     VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
8527     vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(
8528         device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
8529     return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
8530 }
entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle,VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties)8531 static VkResult entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
8532     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle,
8533     VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) {
8534     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
8535     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8536     VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
8537     vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return =
8538         vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(
8539             device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
8540     return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
8541 }
dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle,VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties)8542 static VkResult dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
8543     VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle,
8544     VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) {
8545     auto resources = ResourceTracker::get();
8546     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory")) {
8547         sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandlePropertiesFUCHSIA",
8548                                          "VK_FUCHSIA_external_memory");
8549     }
8550     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
8551     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8552     VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
8553     vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return =
8554         vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(
8555             device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
8556     return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
8557 }
8558 #endif
8559 #ifdef VK_FUCHSIA_external_semaphore
entry_vkImportSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo)8560 static VkResult entry_vkImportSemaphoreZirconHandleFUCHSIA(
8561     VkDevice device,
8562     const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) {
8563     AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
8564     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8565     VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
8566     vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return =
8567         vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo,
8568                                                     true /* do lock */);
8569     return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
8570 }
dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo)8571 static VkResult dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(
8572     VkDevice device,
8573     const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) {
8574     auto resources = ResourceTracker::get();
8575     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore")) {
8576         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreZirconHandleFUCHSIA",
8577                                          "VK_FUCHSIA_external_semaphore");
8578     }
8579     AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
8580     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8581     VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
8582     vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return =
8583         vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo,
8584                                                     true /* do lock */);
8585     return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
8586 }
entry_vkGetSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkSemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)8587 static VkResult entry_vkGetSemaphoreZirconHandleFUCHSIA(
8588     VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
8589     zx_handle_t* pZirconHandle) {
8590     AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
8591     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8592     VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
8593     vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(
8594         device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
8595     return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
8596 }
dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkSemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)8597 static VkResult dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(
8598     VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
8599     zx_handle_t* pZirconHandle) {
8600     auto resources = ResourceTracker::get();
8601     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore")) {
8602         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreZirconHandleFUCHSIA",
8603                                          "VK_FUCHSIA_external_semaphore");
8604     }
8605     AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
8606     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8607     VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
8608     vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(
8609         device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
8610     return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
8611 }
8612 #endif
8613 #ifdef VK_FUCHSIA_buffer_collection
entry_vkCreateBufferCollectionFUCHSIA(VkDevice device,const VkBufferCollectionCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferCollectionFUCHSIA * pCollection)8614 static VkResult entry_vkCreateBufferCollectionFUCHSIA(
8615     VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
8616     const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection) {
8617     AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
8618     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8619     VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
8620     vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(
8621         device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
8622     return vkCreateBufferCollectionFUCHSIA_VkResult_return;
8623 }
dynCheck_entry_vkCreateBufferCollectionFUCHSIA(VkDevice device,const VkBufferCollectionCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferCollectionFUCHSIA * pCollection)8624 static VkResult dynCheck_entry_vkCreateBufferCollectionFUCHSIA(
8625     VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
8626     const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection) {
8627     auto resources = ResourceTracker::get();
8628     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection")) {
8629         sOnInvalidDynamicallyCheckedCall("vkCreateBufferCollectionFUCHSIA",
8630                                          "VK_FUCHSIA_buffer_collection");
8631     }
8632     AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
8633     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8634     VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
8635     vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(
8636         device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
8637     return vkCreateBufferCollectionFUCHSIA_VkResult_return;
8638 }
entry_vkSetBufferCollectionImageConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkImageConstraintsInfoFUCHSIA * pImageConstraintsInfo)8639 static VkResult entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
8640     VkDevice device, VkBufferCollectionFUCHSIA collection,
8641     const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo) {
8642     AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
8643     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8644     VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
8645     vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return =
8646         vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(
8647             device, collection, pImageConstraintsInfo, true /* do lock */);
8648     return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
8649 }
dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkImageConstraintsInfoFUCHSIA * pImageConstraintsInfo)8650 static VkResult dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
8651     VkDevice device, VkBufferCollectionFUCHSIA collection,
8652     const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo) {
8653     auto resources = ResourceTracker::get();
8654     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection")) {
8655         sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionImageConstraintsFUCHSIA",
8656                                          "VK_FUCHSIA_buffer_collection");
8657     }
8658     AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
8659     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8660     VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
8661     vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return =
8662         vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(
8663             device, collection, pImageConstraintsInfo, true /* do lock */);
8664     return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
8665 }
entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkBufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo)8666 static VkResult entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
8667     VkDevice device, VkBufferCollectionFUCHSIA collection,
8668     const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) {
8669     AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
8670     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8671     VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
8672     vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return =
8673         vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(
8674             device, collection, pBufferConstraintsInfo, true /* do lock */);
8675     return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
8676 }
dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkBufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo)8677 static VkResult dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
8678     VkDevice device, VkBufferCollectionFUCHSIA collection,
8679     const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) {
8680     auto resources = ResourceTracker::get();
8681     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection")) {
8682         sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionBufferConstraintsFUCHSIA",
8683                                          "VK_FUCHSIA_buffer_collection");
8684     }
8685     AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
8686     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8687     VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
8688     vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return =
8689         vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(
8690             device, collection, pBufferConstraintsInfo, true /* do lock */);
8691     return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
8692 }
entry_vkDestroyBufferCollectionFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkAllocationCallbacks * pAllocator)8693 static void entry_vkDestroyBufferCollectionFUCHSIA(VkDevice device,
8694                                                    VkBufferCollectionFUCHSIA collection,
8695                                                    const VkAllocationCallbacks* pAllocator) {
8696     AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
8697     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8698     vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
8699 }
dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkAllocationCallbacks * pAllocator)8700 static void dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(
8701     VkDevice device, VkBufferCollectionFUCHSIA collection,
8702     const VkAllocationCallbacks* pAllocator) {
8703     auto resources = ResourceTracker::get();
8704     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection")) {
8705         sOnInvalidDynamicallyCheckedCall("vkDestroyBufferCollectionFUCHSIA",
8706                                          "VK_FUCHSIA_buffer_collection");
8707     }
8708     AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
8709     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8710     vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
8711 }
entry_vkGetBufferCollectionPropertiesFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,VkBufferCollectionPropertiesFUCHSIA * pProperties)8712 static VkResult entry_vkGetBufferCollectionPropertiesFUCHSIA(
8713     VkDevice device, VkBufferCollectionFUCHSIA collection,
8714     VkBufferCollectionPropertiesFUCHSIA* pProperties) {
8715     AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
8716     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8717     VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
8718     vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return =
8719         vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties,
8720                                                       true /* do lock */);
8721     return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
8722 }
dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,VkBufferCollectionPropertiesFUCHSIA * pProperties)8723 static VkResult dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(
8724     VkDevice device, VkBufferCollectionFUCHSIA collection,
8725     VkBufferCollectionPropertiesFUCHSIA* pProperties) {
8726     auto resources = ResourceTracker::get();
8727     if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection")) {
8728         sOnInvalidDynamicallyCheckedCall("vkGetBufferCollectionPropertiesFUCHSIA",
8729                                          "VK_FUCHSIA_buffer_collection");
8730     }
8731     AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
8732     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8733     VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
8734     vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return =
8735         vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties,
8736                                                       true /* do lock */);
8737     return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
8738 }
8739 #endif
8740 #ifdef VK_HUAWEI_subpass_shading
entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device,VkRenderPass renderpass,VkExtent2D * pMaxWorkgroupSize)8741 static VkResult entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8742     VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) {
8743     AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
8744     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8745     VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
8746     vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return =
8747         vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8748             device, renderpass, pMaxWorkgroupSize, true /* do lock */);
8749     return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
8750 }
dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device,VkRenderPass renderpass,VkExtent2D * pMaxWorkgroupSize)8751 static VkResult dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8752     VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) {
8753     auto resources = ResourceTracker::get();
8754     if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading")) {
8755         sOnInvalidDynamicallyCheckedCall("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI",
8756                                          "VK_HUAWEI_subpass_shading");
8757     }
8758     AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
8759     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8760     VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
8761     vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return =
8762         vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8763             device, renderpass, pMaxWorkgroupSize, true /* do lock */);
8764     return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
8765 }
entry_vkCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer)8766 static void entry_vkCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer) {
8767     AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
8768     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8769     vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
8770 }
dynCheck_entry_vkCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer)8771 static void dynCheck_entry_vkCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer) {
8772     auto resources = ResourceTracker::get();
8773     VkDevice device = resources->getDevice(commandBuffer);
8774     ;
8775     if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading")) {
8776         sOnInvalidDynamicallyCheckedCall("vkCmdSubpassShadingHUAWEI", "VK_HUAWEI_subpass_shading");
8777     }
8778     AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
8779     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8780     vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
8781 }
8782 #endif
8783 #ifdef VK_HUAWEI_invocation_mask
entry_vkCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)8784 static void entry_vkCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,
8785                                                 VkImageView imageView, VkImageLayout imageLayout) {
8786     AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
8787     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8788     vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
8789 }
dynCheck_entry_vkCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)8790 static void dynCheck_entry_vkCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,
8791                                                          VkImageView imageView,
8792                                                          VkImageLayout imageLayout) {
8793     auto resources = ResourceTracker::get();
8794     VkDevice device = resources->getDevice(commandBuffer);
8795     ;
8796     if (!resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask")) {
8797         sOnInvalidDynamicallyCheckedCall("vkCmdBindInvocationMaskHUAWEI",
8798                                          "VK_HUAWEI_invocation_mask");
8799     }
8800     AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
8801     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8802     vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
8803 }
8804 #endif
8805 #ifdef VK_NV_external_memory_rdma
entry_vkGetMemoryRemoteAddressNV(VkDevice device,const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo,VkRemoteAddressNV * pAddress)8806 static VkResult entry_vkGetMemoryRemoteAddressNV(
8807     VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
8808     VkRemoteAddressNV* pAddress) {
8809     AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
8810     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8811     VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
8812     vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(
8813         device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
8814     return vkGetMemoryRemoteAddressNV_VkResult_return;
8815 }
dynCheck_entry_vkGetMemoryRemoteAddressNV(VkDevice device,const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo,VkRemoteAddressNV * pAddress)8816 static VkResult dynCheck_entry_vkGetMemoryRemoteAddressNV(
8817     VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
8818     VkRemoteAddressNV* pAddress) {
8819     auto resources = ResourceTracker::get();
8820     if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma")) {
8821         sOnInvalidDynamicallyCheckedCall("vkGetMemoryRemoteAddressNV",
8822                                          "VK_NV_external_memory_rdma");
8823     }
8824     AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
8825     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8826     VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
8827     vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(
8828         device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
8829     return vkGetMemoryRemoteAddressNV_VkResult_return;
8830 }
8831 #endif
8832 #ifdef VK_EXT_pipeline_properties
entry_vkGetPipelinePropertiesEXT(VkDevice device,const VkPipelineInfoEXT * pPipelineInfo,VkBaseOutStructure * pPipelineProperties)8833 static VkResult entry_vkGetPipelinePropertiesEXT(VkDevice device,
8834                                                  const VkPipelineInfoEXT* pPipelineInfo,
8835                                                  VkBaseOutStructure* pPipelineProperties) {
8836     AEMU_SCOPED_TRACE("vkGetPipelinePropertiesEXT");
8837     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8838     VkResult vkGetPipelinePropertiesEXT_VkResult_return = (VkResult)0;
8839     vkGetPipelinePropertiesEXT_VkResult_return = vkEnc->vkGetPipelinePropertiesEXT(
8840         device, pPipelineInfo, pPipelineProperties, true /* do lock */);
8841     return vkGetPipelinePropertiesEXT_VkResult_return;
8842 }
dynCheck_entry_vkGetPipelinePropertiesEXT(VkDevice device,const VkPipelineInfoEXT * pPipelineInfo,VkBaseOutStructure * pPipelineProperties)8843 static VkResult dynCheck_entry_vkGetPipelinePropertiesEXT(VkDevice device,
8844                                                           const VkPipelineInfoEXT* pPipelineInfo,
8845                                                           VkBaseOutStructure* pPipelineProperties) {
8846     auto resources = ResourceTracker::get();
8847     if (!resources->hasDeviceExtension(device, "VK_EXT_pipeline_properties")) {
8848         sOnInvalidDynamicallyCheckedCall("vkGetPipelinePropertiesEXT",
8849                                          "VK_EXT_pipeline_properties");
8850     }
8851     AEMU_SCOPED_TRACE("vkGetPipelinePropertiesEXT");
8852     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8853     VkResult vkGetPipelinePropertiesEXT_VkResult_return = (VkResult)0;
8854     vkGetPipelinePropertiesEXT_VkResult_return = vkEnc->vkGetPipelinePropertiesEXT(
8855         device, pPipelineInfo, pPipelineProperties, true /* do lock */);
8856     return vkGetPipelinePropertiesEXT_VkResult_return;
8857 }
8858 #endif
8859 #ifdef VK_EXT_multisampled_render_to_single_sampled
8860 #endif
8861 #ifdef VK_EXT_extended_dynamic_state2
entry_vkCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,uint32_t patchControlPoints)8862 static void entry_vkCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,
8863                                                 uint32_t patchControlPoints) {
8864     AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
8865     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8866     vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
8867 }
dynCheck_entry_vkCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,uint32_t patchControlPoints)8868 static void dynCheck_entry_vkCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,
8869                                                          uint32_t patchControlPoints) {
8870     auto resources = ResourceTracker::get();
8871     VkDevice device = resources->getDevice(commandBuffer);
8872     ;
8873     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2")) {
8874         sOnInvalidDynamicallyCheckedCall("vkCmdSetPatchControlPointsEXT",
8875                                          "VK_EXT_extended_dynamic_state2");
8876     }
8877     AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
8878     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8879     vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
8880 }
entry_vkCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)8881 static void entry_vkCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,
8882                                                      VkBool32 rasterizerDiscardEnable) {
8883     AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
8884     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8885     vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable,
8886                                               true /* do lock */);
8887 }
dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)8888 static void dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,
8889                                                               VkBool32 rasterizerDiscardEnable) {
8890     auto resources = ResourceTracker::get();
8891     VkDevice device = resources->getDevice(commandBuffer);
8892     ;
8893     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2")) {
8894         sOnInvalidDynamicallyCheckedCall("vkCmdSetRasterizerDiscardEnableEXT",
8895                                          "VK_EXT_extended_dynamic_state2");
8896     }
8897     AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
8898     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8899     vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable,
8900                                               true /* do lock */);
8901 }
entry_vkCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)8902 static void entry_vkCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,
8903                                              VkBool32 depthBiasEnable) {
8904     AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
8905     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8906     vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
8907 }
dynCheck_entry_vkCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)8908 static void dynCheck_entry_vkCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,
8909                                                       VkBool32 depthBiasEnable) {
8910     auto resources = ResourceTracker::get();
8911     VkDevice device = resources->getDevice(commandBuffer);
8912     ;
8913     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2")) {
8914         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthBiasEnableEXT",
8915                                          "VK_EXT_extended_dynamic_state2");
8916     }
8917     AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
8918     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8919     vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
8920 }
entry_vkCmdSetLogicOpEXT(VkCommandBuffer commandBuffer,VkLogicOp logicOp)8921 static void entry_vkCmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp) {
8922     AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
8923     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8924     vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
8925 }
dynCheck_entry_vkCmdSetLogicOpEXT(VkCommandBuffer commandBuffer,VkLogicOp logicOp)8926 static void dynCheck_entry_vkCmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp) {
8927     auto resources = ResourceTracker::get();
8928     VkDevice device = resources->getDevice(commandBuffer);
8929     ;
8930     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2")) {
8931         sOnInvalidDynamicallyCheckedCall("vkCmdSetLogicOpEXT", "VK_EXT_extended_dynamic_state2");
8932     }
8933     AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
8934     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8935     vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
8936 }
entry_vkCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)8937 static void entry_vkCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,
8938                                                     VkBool32 primitiveRestartEnable) {
8939     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
8940     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8941     vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable,
8942                                              true /* do lock */);
8943 }
dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)8944 static void dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,
8945                                                              VkBool32 primitiveRestartEnable) {
8946     auto resources = ResourceTracker::get();
8947     VkDevice device = resources->getDevice(commandBuffer);
8948     ;
8949     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2")) {
8950         sOnInvalidDynamicallyCheckedCall("vkCmdSetPrimitiveRestartEnableEXT",
8951                                          "VK_EXT_extended_dynamic_state2");
8952     }
8953     AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
8954     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8955     vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable,
8956                                              true /* do lock */);
8957 }
8958 #endif
8959 #ifdef VK_QNX_screen_surface
entry_vkCreateScreenSurfaceQNX(VkInstance instance,const VkScreenSurfaceCreateInfoQNX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)8960 static VkResult entry_vkCreateScreenSurfaceQNX(VkInstance instance,
8961                                                const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
8962                                                const VkAllocationCallbacks* pAllocator,
8963                                                VkSurfaceKHR* pSurface) {
8964     AEMU_SCOPED_TRACE("vkCreateScreenSurfaceQNX");
8965     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8966     VkResult vkCreateScreenSurfaceQNX_VkResult_return = (VkResult)0;
8967     vkCreateScreenSurfaceQNX_VkResult_return = vkEnc->vkCreateScreenSurfaceQNX(
8968         instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8969     return vkCreateScreenSurfaceQNX_VkResult_return;
8970 }
entry_vkGetPhysicalDeviceScreenPresentationSupportQNX(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,_screen_window * window)8971 static VkBool32 entry_vkGetPhysicalDeviceScreenPresentationSupportQNX(
8972     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, _screen_window* window) {
8973     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceScreenPresentationSupportQNX");
8974     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8975     VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = (VkBool32)0;
8976     vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return =
8977         vkEnc->vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex,
8978                                                                window, true /* do lock */);
8979     return vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return;
8980 }
8981 #endif
8982 #ifdef VK_EXT_color_write_enable
entry_vkCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkBool32 * pColorWriteEnables)8983 static void entry_vkCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,
8984                                               uint32_t attachmentCount,
8985                                               const VkBool32* pColorWriteEnables) {
8986     AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
8987     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8988     vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables,
8989                                        true /* do lock */);
8990 }
dynCheck_entry_vkCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkBool32 * pColorWriteEnables)8991 static void dynCheck_entry_vkCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,
8992                                                        uint32_t attachmentCount,
8993                                                        const VkBool32* pColorWriteEnables) {
8994     auto resources = ResourceTracker::get();
8995     VkDevice device = resources->getDevice(commandBuffer);
8996     ;
8997     if (!resources->hasDeviceExtension(device, "VK_EXT_color_write_enable")) {
8998         sOnInvalidDynamicallyCheckedCall("vkCmdSetColorWriteEnableEXT",
8999                                          "VK_EXT_color_write_enable");
9000     }
9001     AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
9002     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9003     vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables,
9004                                        true /* do lock */);
9005 }
9006 #endif
9007 #ifdef VK_EXT_primitives_generated_query
9008 #endif
9009 #ifdef VK_GOOGLE_gfxstream
entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)9010 static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device, VkDeviceMemory memory,
9011                                                         uint64_t* pAddress) {
9012     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
9013     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9014     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
9015     vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return =
9016         vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
9017     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
9018 }
dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)9019 static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,
9020                                                                  VkDeviceMemory memory,
9021                                                                  uint64_t* pAddress) {
9022     auto resources = ResourceTracker::get();
9023     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9024         sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE",
9025                                          "VK_GOOGLE_gfxstream");
9026     }
9027     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
9028     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9029     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
9030     vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return =
9031         vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
9032     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
9033 }
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)9034 static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
9035     VkDevice device, VkDescriptorSet descriptorSet,
9036     VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
9037     uint32_t bufferInfoCount, uint32_t bufferViewCount, const uint32_t* pImageInfoEntryIndices,
9038     const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices,
9039     const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos,
9040     const VkBufferView* pBufferViews) {
9041     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
9042     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9043     vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
9044         device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount,
9045         bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices,
9046         pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
9047 }
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)9048 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
9049     VkDevice device, VkDescriptorSet descriptorSet,
9050     VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
9051     uint32_t bufferInfoCount, uint32_t bufferViewCount, const uint32_t* pImageInfoEntryIndices,
9052     const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices,
9053     const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos,
9054     const VkBufferView* pBufferViews) {
9055     auto resources = ResourceTracker::get();
9056     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9057         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE",
9058                                          "VK_GOOGLE_gfxstream");
9059     }
9060     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
9061     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9062     vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
9063         device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount,
9064         bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices,
9065         pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
9066 }
entry_vkBeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)9067 static void entry_vkBeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,
9068                                                   const VkCommandBufferBeginInfo* pBeginInfo) {
9069     AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
9070     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9071     vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
9072 }
entry_vkEndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer)9073 static void entry_vkEndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer) {
9074     AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
9075     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9076     vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
9077 }
entry_vkResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)9078 static void entry_vkResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,
9079                                                   VkCommandBufferResetFlags flags) {
9080     AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
9081     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9082     vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
9083 }
entry_vkCommandBufferHostSyncGOOGLE(VkCommandBuffer commandBuffer,uint32_t needHostSync,uint32_t sequenceNumber)9084 static void entry_vkCommandBufferHostSyncGOOGLE(VkCommandBuffer commandBuffer,
9085                                                 uint32_t needHostSync, uint32_t sequenceNumber) {
9086     AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
9087     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9088     vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber,
9089                                          true /* do lock */);
9090 }
entry_vkCreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)9091 static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
9092     VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
9093     VkImage* pImage, VkMemoryRequirements* pMemoryRequirements) {
9094     AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
9095     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9096     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
9097     vkCreateImageWithRequirementsGOOGLE_VkResult_return =
9098         vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage,
9099                                                    pMemoryRequirements, true /* do lock */);
9100     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
9101 }
dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)9102 static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
9103     VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
9104     VkImage* pImage, VkMemoryRequirements* pMemoryRequirements) {
9105     auto resources = ResourceTracker::get();
9106     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9107         sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE",
9108                                          "VK_GOOGLE_gfxstream");
9109     }
9110     AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
9111     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9112     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
9113     vkCreateImageWithRequirementsGOOGLE_VkResult_return =
9114         vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage,
9115                                                    pMemoryRequirements, true /* do lock */);
9116     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
9117 }
entry_vkCreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)9118 static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
9119     VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
9120     VkBuffer* pBuffer, VkMemoryRequirements* pMemoryRequirements) {
9121     AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
9122     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9123     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
9124     vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
9125         vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer,
9126                                                     pMemoryRequirements, true /* do lock */);
9127     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
9128 }
dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)9129 static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
9130     VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
9131     VkBuffer* pBuffer, VkMemoryRequirements* pMemoryRequirements) {
9132     auto resources = ResourceTracker::get();
9133     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9134         sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE",
9135                                          "VK_GOOGLE_gfxstream");
9136     }
9137     AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
9138     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9139     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
9140     vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
9141         vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer,
9142                                                     pMemoryRequirements, true /* do lock */);
9143     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
9144 }
entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)9145 static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device, VkDeviceMemory memory,
9146                                                        uint64_t* pAddress, uint64_t* pSize,
9147                                                        uint64_t* pHostmemId) {
9148     AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
9149     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9150     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
9151     vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(
9152         device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
9153     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
9154 }
dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)9155 static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,
9156                                                                 VkDeviceMemory memory,
9157                                                                 uint64_t* pAddress, uint64_t* pSize,
9158                                                                 uint64_t* pHostmemId) {
9159     auto resources = ResourceTracker::get();
9160     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9161         sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
9162     }
9163     AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
9164     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9165     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
9166     vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(
9167         device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
9168     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
9169 }
entry_vkFreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)9170 static VkResult entry_vkFreeMemorySyncGOOGLE(VkDevice device, VkDeviceMemory memory,
9171                                              const VkAllocationCallbacks* pAllocator) {
9172     AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
9173     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9174     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
9175     vkFreeMemorySyncGOOGLE_VkResult_return =
9176         vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
9177     return vkFreeMemorySyncGOOGLE_VkResult_return;
9178 }
dynCheck_entry_vkFreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)9179 static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(VkDevice device, VkDeviceMemory memory,
9180                                                       const VkAllocationCallbacks* pAllocator) {
9181     auto resources = ResourceTracker::get();
9182     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9183         sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
9184     }
9185     AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
9186     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9187     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
9188     vkFreeMemorySyncGOOGLE_VkResult_return =
9189         vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
9190     return vkFreeMemorySyncGOOGLE_VkResult_return;
9191 }
entry_vkQueueHostSyncGOOGLE(VkQueue queue,uint32_t needHostSync,uint32_t sequenceNumber)9192 static void entry_vkQueueHostSyncGOOGLE(VkQueue queue, uint32_t needHostSync,
9193                                         uint32_t sequenceNumber) {
9194     AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
9195     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9196     vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
9197 }
entry_vkQueueSubmitAsyncGOOGLE(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)9198 static void entry_vkQueueSubmitAsyncGOOGLE(VkQueue queue, uint32_t submitCount,
9199                                            const VkSubmitInfo* pSubmits, VkFence fence) {
9200     AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
9201     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9202     vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
9203 }
entry_vkQueueWaitIdleAsyncGOOGLE(VkQueue queue)9204 static void entry_vkQueueWaitIdleAsyncGOOGLE(VkQueue queue) {
9205     AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
9206     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9207     vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
9208 }
entry_vkQueueBindSparseAsyncGOOGLE(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)9209 static void entry_vkQueueBindSparseAsyncGOOGLE(VkQueue queue, uint32_t bindInfoCount,
9210                                                const VkBindSparseInfo* pBindInfo, VkFence fence) {
9211     AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
9212     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9213     vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
9214 }
entry_vkGetLinearImageLayoutGOOGLE(VkDevice device,VkFormat format,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)9215 static void entry_vkGetLinearImageLayoutGOOGLE(VkDevice device, VkFormat format,
9216                                                VkDeviceSize* pOffset,
9217                                                VkDeviceSize* pRowPitchAlignment) {
9218     AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
9219     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9220     vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment,
9221                                         true /* do lock */);
9222 }
dynCheck_entry_vkGetLinearImageLayoutGOOGLE(VkDevice device,VkFormat format,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)9223 static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(VkDevice device, VkFormat format,
9224                                                         VkDeviceSize* pOffset,
9225                                                         VkDeviceSize* pRowPitchAlignment) {
9226     auto resources = ResourceTracker::get();
9227     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9228         sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
9229     }
9230     AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
9231     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9232     vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment,
9233                                         true /* do lock */);
9234 }
entry_vkGetLinearImageLayout2GOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)9235 static void entry_vkGetLinearImageLayout2GOOGLE(VkDevice device,
9236                                                 const VkImageCreateInfo* pCreateInfo,
9237                                                 VkDeviceSize* pOffset,
9238                                                 VkDeviceSize* pRowPitchAlignment) {
9239     AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
9240     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9241     vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment,
9242                                          true /* do lock */);
9243 }
dynCheck_entry_vkGetLinearImageLayout2GOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)9244 static void dynCheck_entry_vkGetLinearImageLayout2GOOGLE(VkDevice device,
9245                                                          const VkImageCreateInfo* pCreateInfo,
9246                                                          VkDeviceSize* pOffset,
9247                                                          VkDeviceSize* pRowPitchAlignment) {
9248     auto resources = ResourceTracker::get();
9249     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9250         sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayout2GOOGLE", "VK_GOOGLE_gfxstream");
9251     }
9252     AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
9253     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9254     vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment,
9255                                          true /* do lock */);
9256 }
entry_vkQueueFlushCommandsGOOGLE(VkQueue queue,VkCommandBuffer commandBuffer,VkDeviceSize dataSize,const void * pData)9257 static void entry_vkQueueFlushCommandsGOOGLE(VkQueue queue, VkCommandBuffer commandBuffer,
9258                                              VkDeviceSize dataSize, const void* pData) {
9259     AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
9260     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9261     vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
9262 }
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)9263 static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
9264     VkQueue queue, uint32_t descriptorPoolCount, const VkDescriptorPool* pDescriptorPools,
9265     uint32_t descriptorSetCount, const VkDescriptorSetLayout* pSetLayouts,
9266     const uint64_t* pDescriptorSetPoolIds, const uint32_t* pDescriptorSetWhichPool,
9267     const uint32_t* pDescriptorSetPendingAllocation,
9268     const uint32_t* pDescriptorWriteStartingIndices, uint32_t pendingDescriptorWriteCount,
9269     const VkWriteDescriptorSet* pPendingDescriptorWrites) {
9270     AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
9271     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9272     vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(
9273         queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts,
9274         pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation,
9275         pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites,
9276         true /* do lock */);
9277 }
entry_vkCollectDescriptorPoolIdsGOOGLE(VkDevice device,VkDescriptorPool descriptorPool,uint32_t * pPoolIdCount,uint64_t * pPoolIds)9278 static void entry_vkCollectDescriptorPoolIdsGOOGLE(VkDevice device, VkDescriptorPool descriptorPool,
9279                                                    uint32_t* pPoolIdCount, uint64_t* pPoolIds) {
9280     AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
9281     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9282     vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds,
9283                                             true /* do lock */);
9284 }
dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(VkDevice device,VkDescriptorPool descriptorPool,uint32_t * pPoolIdCount,uint64_t * pPoolIds)9285 static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(VkDevice device,
9286                                                             VkDescriptorPool descriptorPool,
9287                                                             uint32_t* pPoolIdCount,
9288                                                             uint64_t* pPoolIds) {
9289     auto resources = ResourceTracker::get();
9290     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9291         sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
9292     }
9293     AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
9294     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9295     vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds,
9296                                             true /* do lock */);
9297 }
entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image)9298 static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(VkQueue queue,
9299                                                               uint32_t waitSemaphoreCount,
9300                                                               const VkSemaphore* pWaitSemaphores,
9301                                                               VkImage image) {
9302     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
9303     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9304     vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores,
9305                                                        image, true /* do lock */);
9306 }
entry_vkQueueFlushCommandsFromAuxMemoryGOOGLE(VkQueue queue,VkCommandBuffer commandBuffer,VkDeviceMemory deviceMemory,VkDeviceSize dataOffset,VkDeviceSize dataSize)9307 static void entry_vkQueueFlushCommandsFromAuxMemoryGOOGLE(VkQueue queue,
9308                                                           VkCommandBuffer commandBuffer,
9309                                                           VkDeviceMemory deviceMemory,
9310                                                           VkDeviceSize dataOffset,
9311                                                           VkDeviceSize dataSize) {
9312     AEMU_SCOPED_TRACE("vkQueueFlushCommandsFromAuxMemoryGOOGLE");
9313     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9314     vkEnc->vkQueueFlushCommandsFromAuxMemoryGOOGLE(queue, commandBuffer, deviceMemory, dataOffset,
9315                                                    dataSize, true /* do lock */);
9316 }
entry_vkGetBlobGOOGLE(VkDevice device,VkDeviceMemory memory)9317 static VkResult entry_vkGetBlobGOOGLE(VkDevice device, VkDeviceMemory memory) {
9318     AEMU_SCOPED_TRACE("vkGetBlobGOOGLE");
9319     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9320     VkResult vkGetBlobGOOGLE_VkResult_return = (VkResult)0;
9321     vkGetBlobGOOGLE_VkResult_return = vkEnc->vkGetBlobGOOGLE(device, memory, true /* do lock */);
9322     return vkGetBlobGOOGLE_VkResult_return;
9323 }
dynCheck_entry_vkGetBlobGOOGLE(VkDevice device,VkDeviceMemory memory)9324 static VkResult dynCheck_entry_vkGetBlobGOOGLE(VkDevice device, VkDeviceMemory memory) {
9325     auto resources = ResourceTracker::get();
9326     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9327         sOnInvalidDynamicallyCheckedCall("vkGetBlobGOOGLE", "VK_GOOGLE_gfxstream");
9328     }
9329     AEMU_SCOPED_TRACE("vkGetBlobGOOGLE");
9330     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9331     VkResult vkGetBlobGOOGLE_VkResult_return = (VkResult)0;
9332     vkGetBlobGOOGLE_VkResult_return = vkEnc->vkGetBlobGOOGLE(device, memory, true /* do lock */);
9333     return vkGetBlobGOOGLE_VkResult_return;
9334 }
entry_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,uint32_t inlineUniformBlockCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews,const uint8_t * pInlineUniformBlockData)9335 static void entry_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
9336     VkDevice device, VkDescriptorSet descriptorSet,
9337     VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
9338     uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
9339     const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
9340     const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
9341     const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
9342     const uint8_t* pInlineUniformBlockData) {
9343     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
9344     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9345     vkEnc->vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
9346         device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount,
9347         bufferViewCount, inlineUniformBlockCount, pImageInfoEntryIndices, pBufferInfoEntryIndices,
9348         pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, pInlineUniformBlockData,
9349         true /* do lock */);
9350 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,uint32_t inlineUniformBlockCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews,const uint8_t * pInlineUniformBlockData)9351 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
9352     VkDevice device, VkDescriptorSet descriptorSet,
9353     VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
9354     uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
9355     const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
9356     const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
9357     const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
9358     const uint8_t* pInlineUniformBlockData) {
9359     auto resources = ResourceTracker::get();
9360     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream")) {
9361         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSized2GOOGLE",
9362                                          "VK_GOOGLE_gfxstream");
9363     }
9364     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
9365     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9366     vkEnc->vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
9367         device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount,
9368         bufferViewCount, inlineUniformBlockCount, pImageInfoEntryIndices, pBufferInfoEntryIndices,
9369         pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, pInlineUniformBlockData,
9370         true /* do lock */);
9371 }
entry_vkQueueSubmitAsync2GOOGLE(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)9372 static void entry_vkQueueSubmitAsync2GOOGLE(VkQueue queue, uint32_t submitCount,
9373                                             const VkSubmitInfo2* pSubmits, VkFence fence) {
9374     AEMU_SCOPED_TRACE("vkQueueSubmitAsync2GOOGLE");
9375     auto vkEnc = ResourceTracker::getQueueEncoder(queue);
9376     vkEnc->vkQueueSubmitAsync2GOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
9377 }
9378 #endif
9379 #ifdef VK_EXT_global_priority_query
9380 #endif
9381 #ifdef VK_EXT_image_view_min_lod
9382 #endif
9383 #ifdef VK_EXT_multi_draw
entry_vkCmdDrawMultiEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawInfoEXT * pVertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride)9384 static void entry_vkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
9385                                     const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount,
9386                                     uint32_t firstInstance, uint32_t stride) {
9387     AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
9388     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9389     vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance,
9390                              stride, true /* do lock */);
9391 }
dynCheck_entry_vkCmdDrawMultiEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawInfoEXT * pVertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride)9392 static void dynCheck_entry_vkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
9393                                              const VkMultiDrawInfoEXT* pVertexInfo,
9394                                              uint32_t instanceCount, uint32_t firstInstance,
9395                                              uint32_t stride) {
9396     auto resources = ResourceTracker::get();
9397     VkDevice device = resources->getDevice(commandBuffer);
9398     ;
9399     if (!resources->hasDeviceExtension(device, "VK_EXT_multi_draw")) {
9400         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMultiEXT", "VK_EXT_multi_draw");
9401     }
9402     AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
9403     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9404     vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance,
9405                              stride, true /* do lock */);
9406 }
entry_vkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawIndexedInfoEXT * pIndexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,const int32_t * pVertexOffset)9407 static void entry_vkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, uint32_t drawCount,
9408                                            const VkMultiDrawIndexedInfoEXT* pIndexInfo,
9409                                            uint32_t instanceCount, uint32_t firstInstance,
9410                                            uint32_t stride, const int32_t* pVertexOffset) {
9411     AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
9412     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9413     vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount,
9414                                     firstInstance, stride, pVertexOffset, true /* do lock */);
9415 }
dynCheck_entry_vkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawIndexedInfoEXT * pIndexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,const int32_t * pVertexOffset)9416 static void dynCheck_entry_vkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,
9417                                                     uint32_t drawCount,
9418                                                     const VkMultiDrawIndexedInfoEXT* pIndexInfo,
9419                                                     uint32_t instanceCount, uint32_t firstInstance,
9420                                                     uint32_t stride, const int32_t* pVertexOffset) {
9421     auto resources = ResourceTracker::get();
9422     VkDevice device = resources->getDevice(commandBuffer);
9423     ;
9424     if (!resources->hasDeviceExtension(device, "VK_EXT_multi_draw")) {
9425         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMultiIndexedEXT", "VK_EXT_multi_draw");
9426     }
9427     AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
9428     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9429     vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount,
9430                                     firstInstance, stride, pVertexOffset, true /* do lock */);
9431 }
9432 #endif
9433 #ifdef VK_EXT_image_2d_view_of_3d
9434 #endif
9435 #ifdef VK_EXT_shader_tile_image
9436 #endif
9437 #ifdef VK_EXT_opacity_micromap
entry_vkCreateMicromapEXT(VkDevice device,const VkMicromapCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkMicromapEXT * pMicromap)9438 static VkResult entry_vkCreateMicromapEXT(VkDevice device,
9439                                           const VkMicromapCreateInfoEXT* pCreateInfo,
9440                                           const VkAllocationCallbacks* pAllocator,
9441                                           VkMicromapEXT* pMicromap) {
9442     AEMU_SCOPED_TRACE("vkCreateMicromapEXT");
9443     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9444     VkResult vkCreateMicromapEXT_VkResult_return = (VkResult)0;
9445     vkCreateMicromapEXT_VkResult_return =
9446         vkEnc->vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, true /* do lock */);
9447     return vkCreateMicromapEXT_VkResult_return;
9448 }
dynCheck_entry_vkCreateMicromapEXT(VkDevice device,const VkMicromapCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkMicromapEXT * pMicromap)9449 static VkResult dynCheck_entry_vkCreateMicromapEXT(VkDevice device,
9450                                                    const VkMicromapCreateInfoEXT* pCreateInfo,
9451                                                    const VkAllocationCallbacks* pAllocator,
9452                                                    VkMicromapEXT* pMicromap) {
9453     auto resources = ResourceTracker::get();
9454     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9455         sOnInvalidDynamicallyCheckedCall("vkCreateMicromapEXT", "VK_EXT_opacity_micromap");
9456     }
9457     AEMU_SCOPED_TRACE("vkCreateMicromapEXT");
9458     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9459     VkResult vkCreateMicromapEXT_VkResult_return = (VkResult)0;
9460     vkCreateMicromapEXT_VkResult_return =
9461         vkEnc->vkCreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap, true /* do lock */);
9462     return vkCreateMicromapEXT_VkResult_return;
9463 }
entry_vkDestroyMicromapEXT(VkDevice device,VkMicromapEXT micromap,const VkAllocationCallbacks * pAllocator)9464 static void entry_vkDestroyMicromapEXT(VkDevice device, VkMicromapEXT micromap,
9465                                        const VkAllocationCallbacks* pAllocator) {
9466     AEMU_SCOPED_TRACE("vkDestroyMicromapEXT");
9467     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9468     vkEnc->vkDestroyMicromapEXT(device, micromap, pAllocator, true /* do lock */);
9469 }
dynCheck_entry_vkDestroyMicromapEXT(VkDevice device,VkMicromapEXT micromap,const VkAllocationCallbacks * pAllocator)9470 static void dynCheck_entry_vkDestroyMicromapEXT(VkDevice device, VkMicromapEXT micromap,
9471                                                 const VkAllocationCallbacks* pAllocator) {
9472     auto resources = ResourceTracker::get();
9473     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9474         sOnInvalidDynamicallyCheckedCall("vkDestroyMicromapEXT", "VK_EXT_opacity_micromap");
9475     }
9476     AEMU_SCOPED_TRACE("vkDestroyMicromapEXT");
9477     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9478     vkEnc->vkDestroyMicromapEXT(device, micromap, pAllocator, true /* do lock */);
9479 }
entry_vkCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)9480 static void entry_vkCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer, uint32_t infoCount,
9481                                          const VkMicromapBuildInfoEXT* pInfos) {
9482     AEMU_SCOPED_TRACE("vkCmdBuildMicromapsEXT");
9483     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9484     vkEnc->vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, true /* do lock */);
9485 }
dynCheck_entry_vkCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)9486 static void dynCheck_entry_vkCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer, uint32_t infoCount,
9487                                                   const VkMicromapBuildInfoEXT* pInfos) {
9488     auto resources = ResourceTracker::get();
9489     VkDevice device = resources->getDevice(commandBuffer);
9490     ;
9491     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9492         sOnInvalidDynamicallyCheckedCall("vkCmdBuildMicromapsEXT", "VK_EXT_opacity_micromap");
9493     }
9494     AEMU_SCOPED_TRACE("vkCmdBuildMicromapsEXT");
9495     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9496     vkEnc->vkCmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos, true /* do lock */);
9497 }
entry_vkBuildMicromapsEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)9498 static VkResult entry_vkBuildMicromapsEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
9499                                           uint32_t infoCount,
9500                                           const VkMicromapBuildInfoEXT* pInfos) {
9501     AEMU_SCOPED_TRACE("vkBuildMicromapsEXT");
9502     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9503     VkResult vkBuildMicromapsEXT_VkResult_return = (VkResult)0;
9504     vkBuildMicromapsEXT_VkResult_return = vkEnc->vkBuildMicromapsEXT(
9505         device, deferredOperation, infoCount, pInfos, true /* do lock */);
9506     return vkBuildMicromapsEXT_VkResult_return;
9507 }
dynCheck_entry_vkBuildMicromapsEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)9508 static VkResult dynCheck_entry_vkBuildMicromapsEXT(VkDevice device,
9509                                                    VkDeferredOperationKHR deferredOperation,
9510                                                    uint32_t infoCount,
9511                                                    const VkMicromapBuildInfoEXT* pInfos) {
9512     auto resources = ResourceTracker::get();
9513     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9514         sOnInvalidDynamicallyCheckedCall("vkBuildMicromapsEXT", "VK_EXT_opacity_micromap");
9515     }
9516     AEMU_SCOPED_TRACE("vkBuildMicromapsEXT");
9517     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9518     VkResult vkBuildMicromapsEXT_VkResult_return = (VkResult)0;
9519     vkBuildMicromapsEXT_VkResult_return = vkEnc->vkBuildMicromapsEXT(
9520         device, deferredOperation, infoCount, pInfos, true /* do lock */);
9521     return vkBuildMicromapsEXT_VkResult_return;
9522 }
entry_vkCopyMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapInfoEXT * pInfo)9523 static VkResult entry_vkCopyMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation,
9524                                         const VkCopyMicromapInfoEXT* pInfo) {
9525     AEMU_SCOPED_TRACE("vkCopyMicromapEXT");
9526     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9527     VkResult vkCopyMicromapEXT_VkResult_return = (VkResult)0;
9528     vkCopyMicromapEXT_VkResult_return =
9529         vkEnc->vkCopyMicromapEXT(device, deferredOperation, pInfo, true /* do lock */);
9530     return vkCopyMicromapEXT_VkResult_return;
9531 }
dynCheck_entry_vkCopyMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapInfoEXT * pInfo)9532 static VkResult dynCheck_entry_vkCopyMicromapEXT(VkDevice device,
9533                                                  VkDeferredOperationKHR deferredOperation,
9534                                                  const VkCopyMicromapInfoEXT* pInfo) {
9535     auto resources = ResourceTracker::get();
9536     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9537         sOnInvalidDynamicallyCheckedCall("vkCopyMicromapEXT", "VK_EXT_opacity_micromap");
9538     }
9539     AEMU_SCOPED_TRACE("vkCopyMicromapEXT");
9540     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9541     VkResult vkCopyMicromapEXT_VkResult_return = (VkResult)0;
9542     vkCopyMicromapEXT_VkResult_return =
9543         vkEnc->vkCopyMicromapEXT(device, deferredOperation, pInfo, true /* do lock */);
9544     return vkCopyMicromapEXT_VkResult_return;
9545 }
entry_vkCopyMicromapToMemoryEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapToMemoryInfoEXT * pInfo)9546 static VkResult entry_vkCopyMicromapToMemoryEXT(VkDevice device,
9547                                                 VkDeferredOperationKHR deferredOperation,
9548                                                 const VkCopyMicromapToMemoryInfoEXT* pInfo) {
9549     AEMU_SCOPED_TRACE("vkCopyMicromapToMemoryEXT");
9550     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9551     VkResult vkCopyMicromapToMemoryEXT_VkResult_return = (VkResult)0;
9552     vkCopyMicromapToMemoryEXT_VkResult_return =
9553         vkEnc->vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, true /* do lock */);
9554     return vkCopyMicromapToMemoryEXT_VkResult_return;
9555 }
dynCheck_entry_vkCopyMicromapToMemoryEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapToMemoryInfoEXT * pInfo)9556 static VkResult dynCheck_entry_vkCopyMicromapToMemoryEXT(
9557     VkDevice device, VkDeferredOperationKHR deferredOperation,
9558     const VkCopyMicromapToMemoryInfoEXT* pInfo) {
9559     auto resources = ResourceTracker::get();
9560     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9561         sOnInvalidDynamicallyCheckedCall("vkCopyMicromapToMemoryEXT", "VK_EXT_opacity_micromap");
9562     }
9563     AEMU_SCOPED_TRACE("vkCopyMicromapToMemoryEXT");
9564     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9565     VkResult vkCopyMicromapToMemoryEXT_VkResult_return = (VkResult)0;
9566     vkCopyMicromapToMemoryEXT_VkResult_return =
9567         vkEnc->vkCopyMicromapToMemoryEXT(device, deferredOperation, pInfo, true /* do lock */);
9568     return vkCopyMicromapToMemoryEXT_VkResult_return;
9569 }
entry_vkCopyMemoryToMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToMicromapInfoEXT * pInfo)9570 static VkResult entry_vkCopyMemoryToMicromapEXT(VkDevice device,
9571                                                 VkDeferredOperationKHR deferredOperation,
9572                                                 const VkCopyMemoryToMicromapInfoEXT* pInfo) {
9573     AEMU_SCOPED_TRACE("vkCopyMemoryToMicromapEXT");
9574     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9575     VkResult vkCopyMemoryToMicromapEXT_VkResult_return = (VkResult)0;
9576     vkCopyMemoryToMicromapEXT_VkResult_return =
9577         vkEnc->vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, true /* do lock */);
9578     return vkCopyMemoryToMicromapEXT_VkResult_return;
9579 }
dynCheck_entry_vkCopyMemoryToMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToMicromapInfoEXT * pInfo)9580 static VkResult dynCheck_entry_vkCopyMemoryToMicromapEXT(
9581     VkDevice device, VkDeferredOperationKHR deferredOperation,
9582     const VkCopyMemoryToMicromapInfoEXT* pInfo) {
9583     auto resources = ResourceTracker::get();
9584     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9585         sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToMicromapEXT", "VK_EXT_opacity_micromap");
9586     }
9587     AEMU_SCOPED_TRACE("vkCopyMemoryToMicromapEXT");
9588     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9589     VkResult vkCopyMemoryToMicromapEXT_VkResult_return = (VkResult)0;
9590     vkCopyMemoryToMicromapEXT_VkResult_return =
9591         vkEnc->vkCopyMemoryToMicromapEXT(device, deferredOperation, pInfo, true /* do lock */);
9592     return vkCopyMemoryToMicromapEXT_VkResult_return;
9593 }
entry_vkWriteMicromapsPropertiesEXT(VkDevice device,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)9594 static VkResult entry_vkWriteMicromapsPropertiesEXT(VkDevice device, uint32_t micromapCount,
9595                                                     const VkMicromapEXT* pMicromaps,
9596                                                     VkQueryType queryType, size_t dataSize,
9597                                                     void* pData, size_t stride) {
9598     AEMU_SCOPED_TRACE("vkWriteMicromapsPropertiesEXT");
9599     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9600     VkResult vkWriteMicromapsPropertiesEXT_VkResult_return = (VkResult)0;
9601     vkWriteMicromapsPropertiesEXT_VkResult_return = vkEnc->vkWriteMicromapsPropertiesEXT(
9602         device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, true /* do lock */);
9603     return vkWriteMicromapsPropertiesEXT_VkResult_return;
9604 }
dynCheck_entry_vkWriteMicromapsPropertiesEXT(VkDevice device,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)9605 static VkResult dynCheck_entry_vkWriteMicromapsPropertiesEXT(VkDevice device,
9606                                                              uint32_t micromapCount,
9607                                                              const VkMicromapEXT* pMicromaps,
9608                                                              VkQueryType queryType, size_t dataSize,
9609                                                              void* pData, size_t stride) {
9610     auto resources = ResourceTracker::get();
9611     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9612         sOnInvalidDynamicallyCheckedCall("vkWriteMicromapsPropertiesEXT",
9613                                          "VK_EXT_opacity_micromap");
9614     }
9615     AEMU_SCOPED_TRACE("vkWriteMicromapsPropertiesEXT");
9616     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9617     VkResult vkWriteMicromapsPropertiesEXT_VkResult_return = (VkResult)0;
9618     vkWriteMicromapsPropertiesEXT_VkResult_return = vkEnc->vkWriteMicromapsPropertiesEXT(
9619         device, micromapCount, pMicromaps, queryType, dataSize, pData, stride, true /* do lock */);
9620     return vkWriteMicromapsPropertiesEXT_VkResult_return;
9621 }
entry_vkCmdCopyMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapInfoEXT * pInfo)9622 static void entry_vkCmdCopyMicromapEXT(VkCommandBuffer commandBuffer,
9623                                        const VkCopyMicromapInfoEXT* pInfo) {
9624     AEMU_SCOPED_TRACE("vkCmdCopyMicromapEXT");
9625     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9626     vkEnc->vkCmdCopyMicromapEXT(commandBuffer, pInfo, true /* do lock */);
9627 }
dynCheck_entry_vkCmdCopyMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapInfoEXT * pInfo)9628 static void dynCheck_entry_vkCmdCopyMicromapEXT(VkCommandBuffer commandBuffer,
9629                                                 const VkCopyMicromapInfoEXT* pInfo) {
9630     auto resources = ResourceTracker::get();
9631     VkDevice device = resources->getDevice(commandBuffer);
9632     ;
9633     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9634         sOnInvalidDynamicallyCheckedCall("vkCmdCopyMicromapEXT", "VK_EXT_opacity_micromap");
9635     }
9636     AEMU_SCOPED_TRACE("vkCmdCopyMicromapEXT");
9637     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9638     vkEnc->vkCmdCopyMicromapEXT(commandBuffer, pInfo, true /* do lock */);
9639 }
entry_vkCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapToMemoryInfoEXT * pInfo)9640 static void entry_vkCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,
9641                                                const VkCopyMicromapToMemoryInfoEXT* pInfo) {
9642     AEMU_SCOPED_TRACE("vkCmdCopyMicromapToMemoryEXT");
9643     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9644     vkEnc->vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, true /* do lock */);
9645 }
dynCheck_entry_vkCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapToMemoryInfoEXT * pInfo)9646 static void dynCheck_entry_vkCmdCopyMicromapToMemoryEXT(
9647     VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo) {
9648     auto resources = ResourceTracker::get();
9649     VkDevice device = resources->getDevice(commandBuffer);
9650     ;
9651     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9652         sOnInvalidDynamicallyCheckedCall("vkCmdCopyMicromapToMemoryEXT", "VK_EXT_opacity_micromap");
9653     }
9654     AEMU_SCOPED_TRACE("vkCmdCopyMicromapToMemoryEXT");
9655     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9656     vkEnc->vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo, true /* do lock */);
9657 }
entry_vkCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMemoryToMicromapInfoEXT * pInfo)9658 static void entry_vkCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,
9659                                                const VkCopyMemoryToMicromapInfoEXT* pInfo) {
9660     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToMicromapEXT");
9661     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9662     vkEnc->vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, true /* do lock */);
9663 }
dynCheck_entry_vkCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMemoryToMicromapInfoEXT * pInfo)9664 static void dynCheck_entry_vkCmdCopyMemoryToMicromapEXT(
9665     VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo) {
9666     auto resources = ResourceTracker::get();
9667     VkDevice device = resources->getDevice(commandBuffer);
9668     ;
9669     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9670         sOnInvalidDynamicallyCheckedCall("vkCmdCopyMemoryToMicromapEXT", "VK_EXT_opacity_micromap");
9671     }
9672     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToMicromapEXT");
9673     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9674     vkEnc->vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo, true /* do lock */);
9675 }
entry_vkCmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)9676 static void entry_vkCmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer,
9677                                                    uint32_t micromapCount,
9678                                                    const VkMicromapEXT* pMicromaps,
9679                                                    VkQueryType queryType, VkQueryPool queryPool,
9680                                                    uint32_t firstQuery) {
9681     AEMU_SCOPED_TRACE("vkCmdWriteMicromapsPropertiesEXT");
9682     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9683     vkEnc->vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType,
9684                                             queryPool, firstQuery, true /* do lock */);
9685 }
dynCheck_entry_vkCmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)9686 static void dynCheck_entry_vkCmdWriteMicromapsPropertiesEXT(
9687     VkCommandBuffer commandBuffer, uint32_t micromapCount, const VkMicromapEXT* pMicromaps,
9688     VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) {
9689     auto resources = ResourceTracker::get();
9690     VkDevice device = resources->getDevice(commandBuffer);
9691     ;
9692     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9693         sOnInvalidDynamicallyCheckedCall("vkCmdWriteMicromapsPropertiesEXT",
9694                                          "VK_EXT_opacity_micromap");
9695     }
9696     AEMU_SCOPED_TRACE("vkCmdWriteMicromapsPropertiesEXT");
9697     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9698     vkEnc->vkCmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType,
9699                                             queryPool, firstQuery, true /* do lock */);
9700 }
entry_vkGetDeviceMicromapCompatibilityEXT(VkDevice device,const VkMicromapVersionInfoEXT * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)9701 static void entry_vkGetDeviceMicromapCompatibilityEXT(
9702     VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo,
9703     VkAccelerationStructureCompatibilityKHR* pCompatibility) {
9704     AEMU_SCOPED_TRACE("vkGetDeviceMicromapCompatibilityEXT");
9705     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9706     vkEnc->vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility,
9707                                                true /* do lock */);
9708 }
dynCheck_entry_vkGetDeviceMicromapCompatibilityEXT(VkDevice device,const VkMicromapVersionInfoEXT * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)9709 static void dynCheck_entry_vkGetDeviceMicromapCompatibilityEXT(
9710     VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo,
9711     VkAccelerationStructureCompatibilityKHR* pCompatibility) {
9712     auto resources = ResourceTracker::get();
9713     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9714         sOnInvalidDynamicallyCheckedCall("vkGetDeviceMicromapCompatibilityEXT",
9715                                          "VK_EXT_opacity_micromap");
9716     }
9717     AEMU_SCOPED_TRACE("vkGetDeviceMicromapCompatibilityEXT");
9718     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9719     vkEnc->vkGetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility,
9720                                                true /* do lock */);
9721 }
entry_vkGetMicromapBuildSizesEXT(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkMicromapBuildInfoEXT * pBuildInfo,VkMicromapBuildSizesInfoEXT * pSizeInfo)9722 static void entry_vkGetMicromapBuildSizesEXT(VkDevice device,
9723                                              VkAccelerationStructureBuildTypeKHR buildType,
9724                                              const VkMicromapBuildInfoEXT* pBuildInfo,
9725                                              VkMicromapBuildSizesInfoEXT* pSizeInfo) {
9726     AEMU_SCOPED_TRACE("vkGetMicromapBuildSizesEXT");
9727     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9728     vkEnc->vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, true /* do lock */);
9729 }
dynCheck_entry_vkGetMicromapBuildSizesEXT(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkMicromapBuildInfoEXT * pBuildInfo,VkMicromapBuildSizesInfoEXT * pSizeInfo)9730 static void dynCheck_entry_vkGetMicromapBuildSizesEXT(VkDevice device,
9731                                                       VkAccelerationStructureBuildTypeKHR buildType,
9732                                                       const VkMicromapBuildInfoEXT* pBuildInfo,
9733                                                       VkMicromapBuildSizesInfoEXT* pSizeInfo) {
9734     auto resources = ResourceTracker::get();
9735     if (!resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap")) {
9736         sOnInvalidDynamicallyCheckedCall("vkGetMicromapBuildSizesEXT", "VK_EXT_opacity_micromap");
9737     }
9738     AEMU_SCOPED_TRACE("vkGetMicromapBuildSizesEXT");
9739     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9740     vkEnc->vkGetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo, true /* do lock */);
9741 }
9742 #endif
9743 #ifdef VK_NV_displacement_micromap
9744 #endif
9745 #ifdef VK_EXT_load_store_op_none
9746 #endif
9747 #ifdef VK_HUAWEI_cluster_culling_shader
entry_vkCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)9748 static void entry_vkCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer, uint32_t groupCountX,
9749                                          uint32_t groupCountY, uint32_t groupCountZ) {
9750     AEMU_SCOPED_TRACE("vkCmdDrawClusterHUAWEI");
9751     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9752     vkEnc->vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ,
9753                                   true /* do lock */);
9754 }
dynCheck_entry_vkCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)9755 static void dynCheck_entry_vkCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer,
9756                                                   uint32_t groupCountX, uint32_t groupCountY,
9757                                                   uint32_t groupCountZ) {
9758     auto resources = ResourceTracker::get();
9759     VkDevice device = resources->getDevice(commandBuffer);
9760     ;
9761     if (!resources->hasDeviceExtension(device, "VK_HUAWEI_cluster_culling_shader")) {
9762         sOnInvalidDynamicallyCheckedCall("vkCmdDrawClusterHUAWEI",
9763                                          "VK_HUAWEI_cluster_culling_shader");
9764     }
9765     AEMU_SCOPED_TRACE("vkCmdDrawClusterHUAWEI");
9766     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9767     vkEnc->vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ,
9768                                   true /* do lock */);
9769 }
entry_vkCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)9770 static void entry_vkCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer, VkBuffer buffer,
9771                                                  VkDeviceSize offset) {
9772     AEMU_SCOPED_TRACE("vkCmdDrawClusterIndirectHUAWEI");
9773     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9774     vkEnc->vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, true /* do lock */);
9775 }
dynCheck_entry_vkCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)9776 static void dynCheck_entry_vkCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer,
9777                                                           VkBuffer buffer, VkDeviceSize offset) {
9778     auto resources = ResourceTracker::get();
9779     VkDevice device = resources->getDevice(commandBuffer);
9780     ;
9781     if (!resources->hasDeviceExtension(device, "VK_HUAWEI_cluster_culling_shader")) {
9782         sOnInvalidDynamicallyCheckedCall("vkCmdDrawClusterIndirectHUAWEI",
9783                                          "VK_HUAWEI_cluster_culling_shader");
9784     }
9785     AEMU_SCOPED_TRACE("vkCmdDrawClusterIndirectHUAWEI");
9786     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9787     vkEnc->vkCmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset, true /* do lock */);
9788 }
9789 #endif
9790 #ifdef VK_EXT_border_color_swizzle
9791 #endif
9792 #ifdef VK_EXT_pageable_device_local_memory
entry_vkSetDeviceMemoryPriorityEXT(VkDevice device,VkDeviceMemory memory,float priority)9793 static void entry_vkSetDeviceMemoryPriorityEXT(VkDevice device, VkDeviceMemory memory,
9794                                                float priority) {
9795     AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
9796     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9797     vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
9798 }
dynCheck_entry_vkSetDeviceMemoryPriorityEXT(VkDevice device,VkDeviceMemory memory,float priority)9799 static void dynCheck_entry_vkSetDeviceMemoryPriorityEXT(VkDevice device, VkDeviceMemory memory,
9800                                                         float priority) {
9801     auto resources = ResourceTracker::get();
9802     if (!resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory")) {
9803         sOnInvalidDynamicallyCheckedCall("vkSetDeviceMemoryPriorityEXT",
9804                                          "VK_EXT_pageable_device_local_memory");
9805     }
9806     AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
9807     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9808     vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
9809 }
9810 #endif
9811 #ifdef VK_ARM_shader_core_properties
9812 #endif
9813 #ifdef VK_EXT_image_sliced_view_of_3d
9814 #endif
9815 #ifdef VK_VALVE_descriptor_set_host_mapping
entry_vkGetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device,const VkDescriptorSetBindingReferenceVALVE * pBindingReference,VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping)9816 static void entry_vkGetDescriptorSetLayoutHostMappingInfoVALVE(
9817     VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
9818     VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) {
9819     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutHostMappingInfoVALVE");
9820     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9821     vkEnc->vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping,
9822                                                         true /* do lock */);
9823 }
dynCheck_entry_vkGetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device,const VkDescriptorSetBindingReferenceVALVE * pBindingReference,VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping)9824 static void dynCheck_entry_vkGetDescriptorSetLayoutHostMappingInfoVALVE(
9825     VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
9826     VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) {
9827     auto resources = ResourceTracker::get();
9828     if (!resources->hasDeviceExtension(device, "VK_VALVE_descriptor_set_host_mapping")) {
9829         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutHostMappingInfoVALVE",
9830                                          "VK_VALVE_descriptor_set_host_mapping");
9831     }
9832     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutHostMappingInfoVALVE");
9833     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9834     vkEnc->vkGetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping,
9835                                                         true /* do lock */);
9836 }
entry_vkGetDescriptorSetHostMappingVALVE(VkDevice device,VkDescriptorSet descriptorSet,void ** ppData)9837 static void entry_vkGetDescriptorSetHostMappingVALVE(VkDevice device, VkDescriptorSet descriptorSet,
9838                                                      void** ppData) {
9839     AEMU_SCOPED_TRACE("vkGetDescriptorSetHostMappingVALVE");
9840     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9841     vkEnc->vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, true /* do lock */);
9842 }
dynCheck_entry_vkGetDescriptorSetHostMappingVALVE(VkDevice device,VkDescriptorSet descriptorSet,void ** ppData)9843 static void dynCheck_entry_vkGetDescriptorSetHostMappingVALVE(VkDevice device,
9844                                                               VkDescriptorSet descriptorSet,
9845                                                               void** ppData) {
9846     auto resources = ResourceTracker::get();
9847     if (!resources->hasDeviceExtension(device, "VK_VALVE_descriptor_set_host_mapping")) {
9848         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetHostMappingVALVE",
9849                                          "VK_VALVE_descriptor_set_host_mapping");
9850     }
9851     AEMU_SCOPED_TRACE("vkGetDescriptorSetHostMappingVALVE");
9852     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9853     vkEnc->vkGetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData, true /* do lock */);
9854 }
9855 #endif
9856 #ifdef VK_EXT_depth_clamp_zero_one
9857 #endif
9858 #ifdef VK_EXT_non_seamless_cube_map
9859 #endif
9860 #ifdef VK_QCOM_fragment_density_map_offset
9861 #endif
9862 #ifdef VK_NV_copy_memory_indirect
entry_vkCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride)9863 static void entry_vkCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer,
9864                                             VkDeviceAddress copyBufferAddress, uint32_t copyCount,
9865                                             uint32_t stride) {
9866     AEMU_SCOPED_TRACE("vkCmdCopyMemoryIndirectNV");
9867     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9868     vkEnc->vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride,
9869                                      true /* do lock */);
9870 }
dynCheck_entry_vkCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride)9871 static void dynCheck_entry_vkCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer,
9872                                                      VkDeviceAddress copyBufferAddress,
9873                                                      uint32_t copyCount, uint32_t stride) {
9874     auto resources = ResourceTracker::get();
9875     VkDevice device = resources->getDevice(commandBuffer);
9876     ;
9877     if (!resources->hasDeviceExtension(device, "VK_NV_copy_memory_indirect")) {
9878         sOnInvalidDynamicallyCheckedCall("vkCmdCopyMemoryIndirectNV", "VK_NV_copy_memory_indirect");
9879     }
9880     AEMU_SCOPED_TRACE("vkCmdCopyMemoryIndirectNV");
9881     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9882     vkEnc->vkCmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride,
9883                                      true /* do lock */);
9884 }
entry_vkCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride,VkImage dstImage,VkImageLayout dstImageLayout,const VkImageSubresourceLayers * pImageSubresources)9885 static void entry_vkCmdCopyMemoryToImageIndirectNV(
9886     VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount,
9887     uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout,
9888     const VkImageSubresourceLayers* pImageSubresources) {
9889     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToImageIndirectNV");
9890     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9891     vkEnc->vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride,
9892                                             dstImage, dstImageLayout, pImageSubresources,
9893                                             true /* do lock */);
9894 }
dynCheck_entry_vkCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride,VkImage dstImage,VkImageLayout dstImageLayout,const VkImageSubresourceLayers * pImageSubresources)9895 static void dynCheck_entry_vkCmdCopyMemoryToImageIndirectNV(
9896     VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount,
9897     uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout,
9898     const VkImageSubresourceLayers* pImageSubresources) {
9899     auto resources = ResourceTracker::get();
9900     VkDevice device = resources->getDevice(commandBuffer);
9901     ;
9902     if (!resources->hasDeviceExtension(device, "VK_NV_copy_memory_indirect")) {
9903         sOnInvalidDynamicallyCheckedCall("vkCmdCopyMemoryToImageIndirectNV",
9904                                          "VK_NV_copy_memory_indirect");
9905     }
9906     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToImageIndirectNV");
9907     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9908     vkEnc->vkCmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride,
9909                                             dstImage, dstImageLayout, pImageSubresources,
9910                                             true /* do lock */);
9911 }
9912 #endif
9913 #ifdef VK_NV_memory_decompression
entry_vkCmdDecompressMemoryNV(VkCommandBuffer commandBuffer,uint32_t decompressRegionCount,const VkDecompressMemoryRegionNV * pDecompressMemoryRegions)9914 static void entry_vkCmdDecompressMemoryNV(
9915     VkCommandBuffer commandBuffer, uint32_t decompressRegionCount,
9916     const VkDecompressMemoryRegionNV* pDecompressMemoryRegions) {
9917     AEMU_SCOPED_TRACE("vkCmdDecompressMemoryNV");
9918     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9919     vkEnc->vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions,
9920                                    true /* do lock */);
9921 }
dynCheck_entry_vkCmdDecompressMemoryNV(VkCommandBuffer commandBuffer,uint32_t decompressRegionCount,const VkDecompressMemoryRegionNV * pDecompressMemoryRegions)9922 static void dynCheck_entry_vkCmdDecompressMemoryNV(
9923     VkCommandBuffer commandBuffer, uint32_t decompressRegionCount,
9924     const VkDecompressMemoryRegionNV* pDecompressMemoryRegions) {
9925     auto resources = ResourceTracker::get();
9926     VkDevice device = resources->getDevice(commandBuffer);
9927     ;
9928     if (!resources->hasDeviceExtension(device, "VK_NV_memory_decompression")) {
9929         sOnInvalidDynamicallyCheckedCall("vkCmdDecompressMemoryNV", "VK_NV_memory_decompression");
9930     }
9931     AEMU_SCOPED_TRACE("vkCmdDecompressMemoryNV");
9932     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9933     vkEnc->vkCmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions,
9934                                    true /* do lock */);
9935 }
entry_vkCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,VkDeviceAddress indirectCommandsAddress,VkDeviceAddress indirectCommandsCountAddress,uint32_t stride)9936 static void entry_vkCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,
9937                                                        VkDeviceAddress indirectCommandsAddress,
9938                                                        VkDeviceAddress indirectCommandsCountAddress,
9939                                                        uint32_t stride) {
9940     AEMU_SCOPED_TRACE("vkCmdDecompressMemoryIndirectCountNV");
9941     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9942     vkEnc->vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress,
9943                                                 indirectCommandsCountAddress, stride,
9944                                                 true /* do lock */);
9945 }
dynCheck_entry_vkCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,VkDeviceAddress indirectCommandsAddress,VkDeviceAddress indirectCommandsCountAddress,uint32_t stride)9946 static void dynCheck_entry_vkCmdDecompressMemoryIndirectCountNV(
9947     VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress,
9948     VkDeviceAddress indirectCommandsCountAddress, uint32_t stride) {
9949     auto resources = ResourceTracker::get();
9950     VkDevice device = resources->getDevice(commandBuffer);
9951     ;
9952     if (!resources->hasDeviceExtension(device, "VK_NV_memory_decompression")) {
9953         sOnInvalidDynamicallyCheckedCall("vkCmdDecompressMemoryIndirectCountNV",
9954                                          "VK_NV_memory_decompression");
9955     }
9956     AEMU_SCOPED_TRACE("vkCmdDecompressMemoryIndirectCountNV");
9957     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9958     vkEnc->vkCmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress,
9959                                                 indirectCommandsCountAddress, stride,
9960                                                 true /* do lock */);
9961 }
9962 #endif
9963 #ifdef VK_NV_linear_color_attachment
9964 #endif
9965 #ifdef VK_GOOGLE_surfaceless_query
9966 #endif
9967 #ifdef VK_EXT_image_compression_control_swapchain
9968 #endif
9969 #ifdef VK_QCOM_image_processing
9970 #endif
9971 #ifdef VK_EXT_extended_dynamic_state3
entry_vkCmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,VkTessellationDomainOrigin domainOrigin)9972 static void entry_vkCmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,
9973                                                       VkTessellationDomainOrigin domainOrigin) {
9974     AEMU_SCOPED_TRACE("vkCmdSetTessellationDomainOriginEXT");
9975     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9976     vkEnc->vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, true /* do lock */);
9977 }
dynCheck_entry_vkCmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,VkTessellationDomainOrigin domainOrigin)9978 static void dynCheck_entry_vkCmdSetTessellationDomainOriginEXT(
9979     VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin) {
9980     auto resources = ResourceTracker::get();
9981     VkDevice device = resources->getDevice(commandBuffer);
9982     ;
9983     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
9984         sOnInvalidDynamicallyCheckedCall("vkCmdSetTessellationDomainOriginEXT",
9985                                          "VK_EXT_extended_dynamic_state3");
9986     }
9987     AEMU_SCOPED_TRACE("vkCmdSetTessellationDomainOriginEXT");
9988     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9989     vkEnc->vkCmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin, true /* do lock */);
9990 }
entry_vkCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClampEnable)9991 static void entry_vkCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,
9992                                               VkBool32 depthClampEnable) {
9993     AEMU_SCOPED_TRACE("vkCmdSetDepthClampEnableEXT");
9994     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9995     vkEnc->vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, true /* do lock */);
9996 }
dynCheck_entry_vkCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClampEnable)9997 static void dynCheck_entry_vkCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,
9998                                                        VkBool32 depthClampEnable) {
9999     auto resources = ResourceTracker::get();
10000     VkDevice device = resources->getDevice(commandBuffer);
10001     ;
10002     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10003         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthClampEnableEXT",
10004                                          "VK_EXT_extended_dynamic_state3");
10005     }
10006     AEMU_SCOPED_TRACE("vkCmdSetDepthClampEnableEXT");
10007     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10008     vkEnc->vkCmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable, true /* do lock */);
10009 }
entry_vkCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,VkPolygonMode polygonMode)10010 static void entry_vkCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode) {
10011     AEMU_SCOPED_TRACE("vkCmdSetPolygonModeEXT");
10012     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10013     vkEnc->vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, true /* do lock */);
10014 }
dynCheck_entry_vkCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,VkPolygonMode polygonMode)10015 static void dynCheck_entry_vkCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,
10016                                                   VkPolygonMode polygonMode) {
10017     auto resources = ResourceTracker::get();
10018     VkDevice device = resources->getDevice(commandBuffer);
10019     ;
10020     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10021         sOnInvalidDynamicallyCheckedCall("vkCmdSetPolygonModeEXT",
10022                                          "VK_EXT_extended_dynamic_state3");
10023     }
10024     AEMU_SCOPED_TRACE("vkCmdSetPolygonModeEXT");
10025     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10026     vkEnc->vkCmdSetPolygonModeEXT(commandBuffer, polygonMode, true /* do lock */);
10027 }
entry_vkCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits rasterizationSamples)10028 static void entry_vkCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,
10029                                                   VkSampleCountFlagBits rasterizationSamples) {
10030     AEMU_SCOPED_TRACE("vkCmdSetRasterizationSamplesEXT");
10031     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10032     vkEnc->vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, true /* do lock */);
10033 }
dynCheck_entry_vkCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits rasterizationSamples)10034 static void dynCheck_entry_vkCmdSetRasterizationSamplesEXT(
10035     VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples) {
10036     auto resources = ResourceTracker::get();
10037     VkDevice device = resources->getDevice(commandBuffer);
10038     ;
10039     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10040         sOnInvalidDynamicallyCheckedCall("vkCmdSetRasterizationSamplesEXT",
10041                                          "VK_EXT_extended_dynamic_state3");
10042     }
10043     AEMU_SCOPED_TRACE("vkCmdSetRasterizationSamplesEXT");
10044     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10045     vkEnc->vkCmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples, true /* do lock */);
10046 }
entry_vkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits samples,const VkSampleMask * pSampleMask)10047 static void entry_vkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,
10048                                         VkSampleCountFlagBits samples,
10049                                         const VkSampleMask* pSampleMask) {
10050     AEMU_SCOPED_TRACE("vkCmdSetSampleMaskEXT");
10051     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10052     vkEnc->vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, true /* do lock */);
10053 }
dynCheck_entry_vkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits samples,const VkSampleMask * pSampleMask)10054 static void dynCheck_entry_vkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,
10055                                                  VkSampleCountFlagBits samples,
10056                                                  const VkSampleMask* pSampleMask) {
10057     auto resources = ResourceTracker::get();
10058     VkDevice device = resources->getDevice(commandBuffer);
10059     ;
10060     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10061         sOnInvalidDynamicallyCheckedCall("vkCmdSetSampleMaskEXT", "VK_EXT_extended_dynamic_state3");
10062     }
10063     AEMU_SCOPED_TRACE("vkCmdSetSampleMaskEXT");
10064     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10065     vkEnc->vkCmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask, true /* do lock */);
10066 }
entry_vkCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToCoverageEnable)10067 static void entry_vkCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,
10068                                                    VkBool32 alphaToCoverageEnable) {
10069     AEMU_SCOPED_TRACE("vkCmdSetAlphaToCoverageEnableEXT");
10070     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10071     vkEnc->vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable,
10072                                             true /* do lock */);
10073 }
dynCheck_entry_vkCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToCoverageEnable)10074 static void dynCheck_entry_vkCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,
10075                                                             VkBool32 alphaToCoverageEnable) {
10076     auto resources = ResourceTracker::get();
10077     VkDevice device = resources->getDevice(commandBuffer);
10078     ;
10079     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10080         sOnInvalidDynamicallyCheckedCall("vkCmdSetAlphaToCoverageEnableEXT",
10081                                          "VK_EXT_extended_dynamic_state3");
10082     }
10083     AEMU_SCOPED_TRACE("vkCmdSetAlphaToCoverageEnableEXT");
10084     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10085     vkEnc->vkCmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable,
10086                                             true /* do lock */);
10087 }
entry_vkCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToOneEnable)10088 static void entry_vkCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,
10089                                               VkBool32 alphaToOneEnable) {
10090     AEMU_SCOPED_TRACE("vkCmdSetAlphaToOneEnableEXT");
10091     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10092     vkEnc->vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, true /* do lock */);
10093 }
dynCheck_entry_vkCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToOneEnable)10094 static void dynCheck_entry_vkCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,
10095                                                        VkBool32 alphaToOneEnable) {
10096     auto resources = ResourceTracker::get();
10097     VkDevice device = resources->getDevice(commandBuffer);
10098     ;
10099     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10100         sOnInvalidDynamicallyCheckedCall("vkCmdSetAlphaToOneEnableEXT",
10101                                          "VK_EXT_extended_dynamic_state3");
10102     }
10103     AEMU_SCOPED_TRACE("vkCmdSetAlphaToOneEnableEXT");
10104     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10105     vkEnc->vkCmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable, true /* do lock */);
10106 }
entry_vkCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer,VkBool32 logicOpEnable)10107 static void entry_vkCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable) {
10108     AEMU_SCOPED_TRACE("vkCmdSetLogicOpEnableEXT");
10109     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10110     vkEnc->vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, true /* do lock */);
10111 }
dynCheck_entry_vkCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer,VkBool32 logicOpEnable)10112 static void dynCheck_entry_vkCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer,
10113                                                     VkBool32 logicOpEnable) {
10114     auto resources = ResourceTracker::get();
10115     VkDevice device = resources->getDevice(commandBuffer);
10116     ;
10117     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10118         sOnInvalidDynamicallyCheckedCall("vkCmdSetLogicOpEnableEXT",
10119                                          "VK_EXT_extended_dynamic_state3");
10120     }
10121     AEMU_SCOPED_TRACE("vkCmdSetLogicOpEnableEXT");
10122     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10123     vkEnc->vkCmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable, true /* do lock */);
10124 }
entry_vkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkBool32 * pColorBlendEnables)10125 static void entry_vkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,
10126                                               uint32_t firstAttachment, uint32_t attachmentCount,
10127                                               const VkBool32* pColorBlendEnables) {
10128     AEMU_SCOPED_TRACE("vkCmdSetColorBlendEnableEXT");
10129     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10130     vkEnc->vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount,
10131                                        pColorBlendEnables, true /* do lock */);
10132 }
dynCheck_entry_vkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkBool32 * pColorBlendEnables)10133 static void dynCheck_entry_vkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,
10134                                                        uint32_t firstAttachment,
10135                                                        uint32_t attachmentCount,
10136                                                        const VkBool32* pColorBlendEnables) {
10137     auto resources = ResourceTracker::get();
10138     VkDevice device = resources->getDevice(commandBuffer);
10139     ;
10140     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10141         sOnInvalidDynamicallyCheckedCall("vkCmdSetColorBlendEnableEXT",
10142                                          "VK_EXT_extended_dynamic_state3");
10143     }
10144     AEMU_SCOPED_TRACE("vkCmdSetColorBlendEnableEXT");
10145     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10146     vkEnc->vkCmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount,
10147                                        pColorBlendEnables, true /* do lock */);
10148 }
entry_vkCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendEquationEXT * pColorBlendEquations)10149 static void entry_vkCmdSetColorBlendEquationEXT(
10150     VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount,
10151     const VkColorBlendEquationEXT* pColorBlendEquations) {
10152     AEMU_SCOPED_TRACE("vkCmdSetColorBlendEquationEXT");
10153     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10154     vkEnc->vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount,
10155                                          pColorBlendEquations, true /* do lock */);
10156 }
dynCheck_entry_vkCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendEquationEXT * pColorBlendEquations)10157 static void dynCheck_entry_vkCmdSetColorBlendEquationEXT(
10158     VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount,
10159     const VkColorBlendEquationEXT* pColorBlendEquations) {
10160     auto resources = ResourceTracker::get();
10161     VkDevice device = resources->getDevice(commandBuffer);
10162     ;
10163     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10164         sOnInvalidDynamicallyCheckedCall("vkCmdSetColorBlendEquationEXT",
10165                                          "VK_EXT_extended_dynamic_state3");
10166     }
10167     AEMU_SCOPED_TRACE("vkCmdSetColorBlendEquationEXT");
10168     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10169     vkEnc->vkCmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount,
10170                                          pColorBlendEquations, true /* do lock */);
10171 }
entry_vkCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorComponentFlags * pColorWriteMasks)10172 static void entry_vkCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
10173                                             uint32_t attachmentCount,
10174                                             const VkColorComponentFlags* pColorWriteMasks) {
10175     AEMU_SCOPED_TRACE("vkCmdSetColorWriteMaskEXT");
10176     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10177     vkEnc->vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount,
10178                                      pColorWriteMasks, true /* do lock */);
10179 }
dynCheck_entry_vkCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorComponentFlags * pColorWriteMasks)10180 static void dynCheck_entry_vkCmdSetColorWriteMaskEXT(
10181     VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount,
10182     const VkColorComponentFlags* pColorWriteMasks) {
10183     auto resources = ResourceTracker::get();
10184     VkDevice device = resources->getDevice(commandBuffer);
10185     ;
10186     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10187         sOnInvalidDynamicallyCheckedCall("vkCmdSetColorWriteMaskEXT",
10188                                          "VK_EXT_extended_dynamic_state3");
10189     }
10190     AEMU_SCOPED_TRACE("vkCmdSetColorWriteMaskEXT");
10191     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10192     vkEnc->vkCmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount,
10193                                      pColorWriteMasks, true /* do lock */);
10194 }
entry_vkCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,uint32_t rasterizationStream)10195 static void entry_vkCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,
10196                                                  uint32_t rasterizationStream) {
10197     AEMU_SCOPED_TRACE("vkCmdSetRasterizationStreamEXT");
10198     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10199     vkEnc->vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, true /* do lock */);
10200 }
dynCheck_entry_vkCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,uint32_t rasterizationStream)10201 static void dynCheck_entry_vkCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,
10202                                                           uint32_t rasterizationStream) {
10203     auto resources = ResourceTracker::get();
10204     VkDevice device = resources->getDevice(commandBuffer);
10205     ;
10206     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10207         sOnInvalidDynamicallyCheckedCall("vkCmdSetRasterizationStreamEXT",
10208                                          "VK_EXT_extended_dynamic_state3");
10209     }
10210     AEMU_SCOPED_TRACE("vkCmdSetRasterizationStreamEXT");
10211     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10212     vkEnc->vkCmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream, true /* do lock */);
10213 }
entry_vkCmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer,VkConservativeRasterizationModeEXT conservativeRasterizationMode)10214 static void entry_vkCmdSetConservativeRasterizationModeEXT(
10215     VkCommandBuffer commandBuffer,
10216     VkConservativeRasterizationModeEXT conservativeRasterizationMode) {
10217     AEMU_SCOPED_TRACE("vkCmdSetConservativeRasterizationModeEXT");
10218     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10219     vkEnc->vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode,
10220                                                     true /* do lock */);
10221 }
dynCheck_entry_vkCmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer,VkConservativeRasterizationModeEXT conservativeRasterizationMode)10222 static void dynCheck_entry_vkCmdSetConservativeRasterizationModeEXT(
10223     VkCommandBuffer commandBuffer,
10224     VkConservativeRasterizationModeEXT conservativeRasterizationMode) {
10225     auto resources = ResourceTracker::get();
10226     VkDevice device = resources->getDevice(commandBuffer);
10227     ;
10228     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10229         sOnInvalidDynamicallyCheckedCall("vkCmdSetConservativeRasterizationModeEXT",
10230                                          "VK_EXT_extended_dynamic_state3");
10231     }
10232     AEMU_SCOPED_TRACE("vkCmdSetConservativeRasterizationModeEXT");
10233     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10234     vkEnc->vkCmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode,
10235                                                     true /* do lock */);
10236 }
entry_vkCmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,float extraPrimitiveOverestimationSize)10237 static void entry_vkCmdSetExtraPrimitiveOverestimationSizeEXT(
10238     VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize) {
10239     AEMU_SCOPED_TRACE("vkCmdSetExtraPrimitiveOverestimationSizeEXT");
10240     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10241     vkEnc->vkCmdSetExtraPrimitiveOverestimationSizeEXT(
10242         commandBuffer, extraPrimitiveOverestimationSize, true /* do lock */);
10243 }
dynCheck_entry_vkCmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,float extraPrimitiveOverestimationSize)10244 static void dynCheck_entry_vkCmdSetExtraPrimitiveOverestimationSizeEXT(
10245     VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize) {
10246     auto resources = ResourceTracker::get();
10247     VkDevice device = resources->getDevice(commandBuffer);
10248     ;
10249     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10250         sOnInvalidDynamicallyCheckedCall("vkCmdSetExtraPrimitiveOverestimationSizeEXT",
10251                                          "VK_EXT_extended_dynamic_state3");
10252     }
10253     AEMU_SCOPED_TRACE("vkCmdSetExtraPrimitiveOverestimationSizeEXT");
10254     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10255     vkEnc->vkCmdSetExtraPrimitiveOverestimationSizeEXT(
10256         commandBuffer, extraPrimitiveOverestimationSize, true /* do lock */);
10257 }
entry_vkCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClipEnable)10258 static void entry_vkCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,
10259                                              VkBool32 depthClipEnable) {
10260     AEMU_SCOPED_TRACE("vkCmdSetDepthClipEnableEXT");
10261     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10262     vkEnc->vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, true /* do lock */);
10263 }
dynCheck_entry_vkCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClipEnable)10264 static void dynCheck_entry_vkCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,
10265                                                       VkBool32 depthClipEnable) {
10266     auto resources = ResourceTracker::get();
10267     VkDevice device = resources->getDevice(commandBuffer);
10268     ;
10269     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10270         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthClipEnableEXT",
10271                                          "VK_EXT_extended_dynamic_state3");
10272     }
10273     AEMU_SCOPED_TRACE("vkCmdSetDepthClipEnableEXT");
10274     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10275     vkEnc->vkCmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable, true /* do lock */);
10276 }
entry_vkCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,VkBool32 sampleLocationsEnable)10277 static void entry_vkCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,
10278                                                    VkBool32 sampleLocationsEnable) {
10279     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEnableEXT");
10280     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10281     vkEnc->vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable,
10282                                             true /* do lock */);
10283 }
dynCheck_entry_vkCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,VkBool32 sampleLocationsEnable)10284 static void dynCheck_entry_vkCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,
10285                                                             VkBool32 sampleLocationsEnable) {
10286     auto resources = ResourceTracker::get();
10287     VkDevice device = resources->getDevice(commandBuffer);
10288     ;
10289     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10290         sOnInvalidDynamicallyCheckedCall("vkCmdSetSampleLocationsEnableEXT",
10291                                          "VK_EXT_extended_dynamic_state3");
10292     }
10293     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEnableEXT");
10294     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10295     vkEnc->vkCmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable,
10296                                             true /* do lock */);
10297 }
entry_vkCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendAdvancedEXT * pColorBlendAdvanced)10298 static void entry_vkCmdSetColorBlendAdvancedEXT(
10299     VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount,
10300     const VkColorBlendAdvancedEXT* pColorBlendAdvanced) {
10301     AEMU_SCOPED_TRACE("vkCmdSetColorBlendAdvancedEXT");
10302     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10303     vkEnc->vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount,
10304                                          pColorBlendAdvanced, true /* do lock */);
10305 }
dynCheck_entry_vkCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendAdvancedEXT * pColorBlendAdvanced)10306 static void dynCheck_entry_vkCmdSetColorBlendAdvancedEXT(
10307     VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount,
10308     const VkColorBlendAdvancedEXT* pColorBlendAdvanced) {
10309     auto resources = ResourceTracker::get();
10310     VkDevice device = resources->getDevice(commandBuffer);
10311     ;
10312     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10313         sOnInvalidDynamicallyCheckedCall("vkCmdSetColorBlendAdvancedEXT",
10314                                          "VK_EXT_extended_dynamic_state3");
10315     }
10316     AEMU_SCOPED_TRACE("vkCmdSetColorBlendAdvancedEXT");
10317     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10318     vkEnc->vkCmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount,
10319                                          pColorBlendAdvanced, true /* do lock */);
10320 }
entry_vkCmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,VkProvokingVertexModeEXT provokingVertexMode)10321 static void entry_vkCmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,
10322                                                  VkProvokingVertexModeEXT provokingVertexMode) {
10323     AEMU_SCOPED_TRACE("vkCmdSetProvokingVertexModeEXT");
10324     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10325     vkEnc->vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, true /* do lock */);
10326 }
dynCheck_entry_vkCmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,VkProvokingVertexModeEXT provokingVertexMode)10327 static void dynCheck_entry_vkCmdSetProvokingVertexModeEXT(
10328     VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode) {
10329     auto resources = ResourceTracker::get();
10330     VkDevice device = resources->getDevice(commandBuffer);
10331     ;
10332     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10333         sOnInvalidDynamicallyCheckedCall("vkCmdSetProvokingVertexModeEXT",
10334                                          "VK_EXT_extended_dynamic_state3");
10335     }
10336     AEMU_SCOPED_TRACE("vkCmdSetProvokingVertexModeEXT");
10337     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10338     vkEnc->vkCmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode, true /* do lock */);
10339 }
entry_vkCmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,VkLineRasterizationModeEXT lineRasterizationMode)10340 static void entry_vkCmdSetLineRasterizationModeEXT(
10341     VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode) {
10342     AEMU_SCOPED_TRACE("vkCmdSetLineRasterizationModeEXT");
10343     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10344     vkEnc->vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode,
10345                                             true /* do lock */);
10346 }
dynCheck_entry_vkCmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,VkLineRasterizationModeEXT lineRasterizationMode)10347 static void dynCheck_entry_vkCmdSetLineRasterizationModeEXT(
10348     VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode) {
10349     auto resources = ResourceTracker::get();
10350     VkDevice device = resources->getDevice(commandBuffer);
10351     ;
10352     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10353         sOnInvalidDynamicallyCheckedCall("vkCmdSetLineRasterizationModeEXT",
10354                                          "VK_EXT_extended_dynamic_state3");
10355     }
10356     AEMU_SCOPED_TRACE("vkCmdSetLineRasterizationModeEXT");
10357     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10358     vkEnc->vkCmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode,
10359                                             true /* do lock */);
10360 }
entry_vkCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stippledLineEnable)10361 static void entry_vkCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,
10362                                                VkBool32 stippledLineEnable) {
10363     AEMU_SCOPED_TRACE("vkCmdSetLineStippleEnableEXT");
10364     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10365     vkEnc->vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, true /* do lock */);
10366 }
dynCheck_entry_vkCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stippledLineEnable)10367 static void dynCheck_entry_vkCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,
10368                                                         VkBool32 stippledLineEnable) {
10369     auto resources = ResourceTracker::get();
10370     VkDevice device = resources->getDevice(commandBuffer);
10371     ;
10372     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10373         sOnInvalidDynamicallyCheckedCall("vkCmdSetLineStippleEnableEXT",
10374                                          "VK_EXT_extended_dynamic_state3");
10375     }
10376     AEMU_SCOPED_TRACE("vkCmdSetLineStippleEnableEXT");
10377     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10378     vkEnc->vkCmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable, true /* do lock */);
10379 }
entry_vkCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,VkBool32 negativeOneToOne)10380 static void entry_vkCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,
10381                                                        VkBool32 negativeOneToOne) {
10382     AEMU_SCOPED_TRACE("vkCmdSetDepthClipNegativeOneToOneEXT");
10383     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10384     vkEnc->vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne,
10385                                                 true /* do lock */);
10386 }
dynCheck_entry_vkCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,VkBool32 negativeOneToOne)10387 static void dynCheck_entry_vkCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,
10388                                                                 VkBool32 negativeOneToOne) {
10389     auto resources = ResourceTracker::get();
10390     VkDevice device = resources->getDevice(commandBuffer);
10391     ;
10392     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10393         sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthClipNegativeOneToOneEXT",
10394                                          "VK_EXT_extended_dynamic_state3");
10395     }
10396     AEMU_SCOPED_TRACE("vkCmdSetDepthClipNegativeOneToOneEXT");
10397     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10398     vkEnc->vkCmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne,
10399                                                 true /* do lock */);
10400 }
entry_vkCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,VkBool32 viewportWScalingEnable)10401 static void entry_vkCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,
10402                                                    VkBool32 viewportWScalingEnable) {
10403     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingEnableNV");
10404     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10405     vkEnc->vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable,
10406                                             true /* do lock */);
10407 }
dynCheck_entry_vkCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,VkBool32 viewportWScalingEnable)10408 static void dynCheck_entry_vkCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,
10409                                                             VkBool32 viewportWScalingEnable) {
10410     auto resources = ResourceTracker::get();
10411     VkDevice device = resources->getDevice(commandBuffer);
10412     ;
10413     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10414         sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWScalingEnableNV",
10415                                          "VK_EXT_extended_dynamic_state3");
10416     }
10417     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingEnableNV");
10418     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10419     vkEnc->vkCmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable,
10420                                             true /* do lock */);
10421 }
entry_vkCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportSwizzleNV * pViewportSwizzles)10422 static void entry_vkCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer, uint32_t firstViewport,
10423                                             uint32_t viewportCount,
10424                                             const VkViewportSwizzleNV* pViewportSwizzles) {
10425     AEMU_SCOPED_TRACE("vkCmdSetViewportSwizzleNV");
10426     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10427     vkEnc->vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles,
10428                                      true /* do lock */);
10429 }
dynCheck_entry_vkCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportSwizzleNV * pViewportSwizzles)10430 static void dynCheck_entry_vkCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer,
10431                                                      uint32_t firstViewport, uint32_t viewportCount,
10432                                                      const VkViewportSwizzleNV* pViewportSwizzles) {
10433     auto resources = ResourceTracker::get();
10434     VkDevice device = resources->getDevice(commandBuffer);
10435     ;
10436     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10437         sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportSwizzleNV",
10438                                          "VK_EXT_extended_dynamic_state3");
10439     }
10440     AEMU_SCOPED_TRACE("vkCmdSetViewportSwizzleNV");
10441     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10442     vkEnc->vkCmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles,
10443                                      true /* do lock */);
10444 }
entry_vkCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageToColorEnable)10445 static void entry_vkCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,
10446                                                   VkBool32 coverageToColorEnable) {
10447     AEMU_SCOPED_TRACE("vkCmdSetCoverageToColorEnableNV");
10448     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10449     vkEnc->vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable,
10450                                            true /* do lock */);
10451 }
dynCheck_entry_vkCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageToColorEnable)10452 static void dynCheck_entry_vkCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,
10453                                                            VkBool32 coverageToColorEnable) {
10454     auto resources = ResourceTracker::get();
10455     VkDevice device = resources->getDevice(commandBuffer);
10456     ;
10457     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10458         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoverageToColorEnableNV",
10459                                          "VK_EXT_extended_dynamic_state3");
10460     }
10461     AEMU_SCOPED_TRACE("vkCmdSetCoverageToColorEnableNV");
10462     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10463     vkEnc->vkCmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable,
10464                                            true /* do lock */);
10465 }
entry_vkCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,uint32_t coverageToColorLocation)10466 static void entry_vkCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,
10467                                                     uint32_t coverageToColorLocation) {
10468     AEMU_SCOPED_TRACE("vkCmdSetCoverageToColorLocationNV");
10469     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10470     vkEnc->vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation,
10471                                              true /* do lock */);
10472 }
dynCheck_entry_vkCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,uint32_t coverageToColorLocation)10473 static void dynCheck_entry_vkCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,
10474                                                              uint32_t coverageToColorLocation) {
10475     auto resources = ResourceTracker::get();
10476     VkDevice device = resources->getDevice(commandBuffer);
10477     ;
10478     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10479         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoverageToColorLocationNV",
10480                                          "VK_EXT_extended_dynamic_state3");
10481     }
10482     AEMU_SCOPED_TRACE("vkCmdSetCoverageToColorLocationNV");
10483     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10484     vkEnc->vkCmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation,
10485                                              true /* do lock */);
10486 }
entry_vkCmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,VkCoverageModulationModeNV coverageModulationMode)10487 static void entry_vkCmdSetCoverageModulationModeNV(
10488     VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode) {
10489     AEMU_SCOPED_TRACE("vkCmdSetCoverageModulationModeNV");
10490     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10491     vkEnc->vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode,
10492                                             true /* do lock */);
10493 }
dynCheck_entry_vkCmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,VkCoverageModulationModeNV coverageModulationMode)10494 static void dynCheck_entry_vkCmdSetCoverageModulationModeNV(
10495     VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode) {
10496     auto resources = ResourceTracker::get();
10497     VkDevice device = resources->getDevice(commandBuffer);
10498     ;
10499     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10500         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoverageModulationModeNV",
10501                                          "VK_EXT_extended_dynamic_state3");
10502     }
10503     AEMU_SCOPED_TRACE("vkCmdSetCoverageModulationModeNV");
10504     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10505     vkEnc->vkCmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode,
10506                                             true /* do lock */);
10507 }
entry_vkCmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageModulationTableEnable)10508 static void entry_vkCmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,
10509                                                           VkBool32 coverageModulationTableEnable) {
10510     AEMU_SCOPED_TRACE("vkCmdSetCoverageModulationTableEnableNV");
10511     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10512     vkEnc->vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable,
10513                                                    true /* do lock */);
10514 }
dynCheck_entry_vkCmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageModulationTableEnable)10515 static void dynCheck_entry_vkCmdSetCoverageModulationTableEnableNV(
10516     VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable) {
10517     auto resources = ResourceTracker::get();
10518     VkDevice device = resources->getDevice(commandBuffer);
10519     ;
10520     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10521         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoverageModulationTableEnableNV",
10522                                          "VK_EXT_extended_dynamic_state3");
10523     }
10524     AEMU_SCOPED_TRACE("vkCmdSetCoverageModulationTableEnableNV");
10525     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10526     vkEnc->vkCmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable,
10527                                                    true /* do lock */);
10528 }
entry_vkCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,uint32_t coverageModulationTableCount,const float * pCoverageModulationTable)10529 static void entry_vkCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,
10530                                                     uint32_t coverageModulationTableCount,
10531                                                     const float* pCoverageModulationTable) {
10532     AEMU_SCOPED_TRACE("vkCmdSetCoverageModulationTableNV");
10533     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10534     vkEnc->vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount,
10535                                              pCoverageModulationTable, true /* do lock */);
10536 }
dynCheck_entry_vkCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,uint32_t coverageModulationTableCount,const float * pCoverageModulationTable)10537 static void dynCheck_entry_vkCmdSetCoverageModulationTableNV(
10538     VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount,
10539     const float* pCoverageModulationTable) {
10540     auto resources = ResourceTracker::get();
10541     VkDevice device = resources->getDevice(commandBuffer);
10542     ;
10543     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10544         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoverageModulationTableNV",
10545                                          "VK_EXT_extended_dynamic_state3");
10546     }
10547     AEMU_SCOPED_TRACE("vkCmdSetCoverageModulationTableNV");
10548     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10549     vkEnc->vkCmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount,
10550                                              pCoverageModulationTable, true /* do lock */);
10551 }
entry_vkCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,VkBool32 shadingRateImageEnable)10552 static void entry_vkCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,
10553                                                    VkBool32 shadingRateImageEnable) {
10554     AEMU_SCOPED_TRACE("vkCmdSetShadingRateImageEnableNV");
10555     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10556     vkEnc->vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable,
10557                                             true /* do lock */);
10558 }
dynCheck_entry_vkCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,VkBool32 shadingRateImageEnable)10559 static void dynCheck_entry_vkCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,
10560                                                             VkBool32 shadingRateImageEnable) {
10561     auto resources = ResourceTracker::get();
10562     VkDevice device = resources->getDevice(commandBuffer);
10563     ;
10564     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10565         sOnInvalidDynamicallyCheckedCall("vkCmdSetShadingRateImageEnableNV",
10566                                          "VK_EXT_extended_dynamic_state3");
10567     }
10568     AEMU_SCOPED_TRACE("vkCmdSetShadingRateImageEnableNV");
10569     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10570     vkEnc->vkCmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable,
10571                                             true /* do lock */);
10572 }
entry_vkCmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,VkBool32 representativeFragmentTestEnable)10573 static void entry_vkCmdSetRepresentativeFragmentTestEnableNV(
10574     VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable) {
10575     AEMU_SCOPED_TRACE("vkCmdSetRepresentativeFragmentTestEnableNV");
10576     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10577     vkEnc->vkCmdSetRepresentativeFragmentTestEnableNV(
10578         commandBuffer, representativeFragmentTestEnable, true /* do lock */);
10579 }
dynCheck_entry_vkCmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,VkBool32 representativeFragmentTestEnable)10580 static void dynCheck_entry_vkCmdSetRepresentativeFragmentTestEnableNV(
10581     VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable) {
10582     auto resources = ResourceTracker::get();
10583     VkDevice device = resources->getDevice(commandBuffer);
10584     ;
10585     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10586         sOnInvalidDynamicallyCheckedCall("vkCmdSetRepresentativeFragmentTestEnableNV",
10587                                          "VK_EXT_extended_dynamic_state3");
10588     }
10589     AEMU_SCOPED_TRACE("vkCmdSetRepresentativeFragmentTestEnableNV");
10590     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10591     vkEnc->vkCmdSetRepresentativeFragmentTestEnableNV(
10592         commandBuffer, representativeFragmentTestEnable, true /* do lock */);
10593 }
entry_vkCmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,VkCoverageReductionModeNV coverageReductionMode)10594 static void entry_vkCmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,
10595                                                   VkCoverageReductionModeNV coverageReductionMode) {
10596     AEMU_SCOPED_TRACE("vkCmdSetCoverageReductionModeNV");
10597     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10598     vkEnc->vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode,
10599                                            true /* do lock */);
10600 }
dynCheck_entry_vkCmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,VkCoverageReductionModeNV coverageReductionMode)10601 static void dynCheck_entry_vkCmdSetCoverageReductionModeNV(
10602     VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode) {
10603     auto resources = ResourceTracker::get();
10604     VkDevice device = resources->getDevice(commandBuffer);
10605     ;
10606     if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3")) {
10607         sOnInvalidDynamicallyCheckedCall("vkCmdSetCoverageReductionModeNV",
10608                                          "VK_EXT_extended_dynamic_state3");
10609     }
10610     AEMU_SCOPED_TRACE("vkCmdSetCoverageReductionModeNV");
10611     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10612     vkEnc->vkCmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode,
10613                                            true /* do lock */);
10614 }
10615 #endif
10616 #ifdef VK_EXT_subpass_merge_feedback
10617 #endif
10618 #ifdef VK_LUNARG_direct_driver_loading
10619 #endif
10620 #ifdef VK_EXT_shader_module_identifier
entry_vkGetShaderModuleIdentifierEXT(VkDevice device,VkShaderModule shaderModule,VkShaderModuleIdentifierEXT * pIdentifier)10621 static void entry_vkGetShaderModuleIdentifierEXT(VkDevice device, VkShaderModule shaderModule,
10622                                                  VkShaderModuleIdentifierEXT* pIdentifier) {
10623     AEMU_SCOPED_TRACE("vkGetShaderModuleIdentifierEXT");
10624     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10625     vkEnc->vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, true /* do lock */);
10626 }
dynCheck_entry_vkGetShaderModuleIdentifierEXT(VkDevice device,VkShaderModule shaderModule,VkShaderModuleIdentifierEXT * pIdentifier)10627 static void dynCheck_entry_vkGetShaderModuleIdentifierEXT(
10628     VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT* pIdentifier) {
10629     auto resources = ResourceTracker::get();
10630     if (!resources->hasDeviceExtension(device, "VK_EXT_shader_module_identifier")) {
10631         sOnInvalidDynamicallyCheckedCall("vkGetShaderModuleIdentifierEXT",
10632                                          "VK_EXT_shader_module_identifier");
10633     }
10634     AEMU_SCOPED_TRACE("vkGetShaderModuleIdentifierEXT");
10635     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10636     vkEnc->vkGetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier, true /* do lock */);
10637 }
entry_vkGetShaderModuleCreateInfoIdentifierEXT(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,VkShaderModuleIdentifierEXT * pIdentifier)10638 static void entry_vkGetShaderModuleCreateInfoIdentifierEXT(
10639     VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
10640     VkShaderModuleIdentifierEXT* pIdentifier) {
10641     AEMU_SCOPED_TRACE("vkGetShaderModuleCreateInfoIdentifierEXT");
10642     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10643     vkEnc->vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier,
10644                                                     true /* do lock */);
10645 }
dynCheck_entry_vkGetShaderModuleCreateInfoIdentifierEXT(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,VkShaderModuleIdentifierEXT * pIdentifier)10646 static void dynCheck_entry_vkGetShaderModuleCreateInfoIdentifierEXT(
10647     VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
10648     VkShaderModuleIdentifierEXT* pIdentifier) {
10649     auto resources = ResourceTracker::get();
10650     if (!resources->hasDeviceExtension(device, "VK_EXT_shader_module_identifier")) {
10651         sOnInvalidDynamicallyCheckedCall("vkGetShaderModuleCreateInfoIdentifierEXT",
10652                                          "VK_EXT_shader_module_identifier");
10653     }
10654     AEMU_SCOPED_TRACE("vkGetShaderModuleCreateInfoIdentifierEXT");
10655     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10656     vkEnc->vkGetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier,
10657                                                     true /* do lock */);
10658 }
10659 #endif
10660 #ifdef VK_EXT_rasterization_order_attachment_access
10661 #endif
10662 #ifdef VK_NV_optical_flow
entry_vkGetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)10663 static VkResult entry_vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
10664     VkPhysicalDevice physicalDevice,
10665     const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount,
10666     VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties) {
10667     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceOpticalFlowImageFormatsNV");
10668     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10669     VkResult vkGetPhysicalDeviceOpticalFlowImageFormatsNV_VkResult_return = (VkResult)0;
10670     vkGetPhysicalDeviceOpticalFlowImageFormatsNV_VkResult_return =
10671         vkEnc->vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
10672             physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties,
10673             true /* do lock */);
10674     return vkGetPhysicalDeviceOpticalFlowImageFormatsNV_VkResult_return;
10675 }
entry_vkCreateOpticalFlowSessionNV(VkDevice device,const VkOpticalFlowSessionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkOpticalFlowSessionNV * pSession)10676 static VkResult entry_vkCreateOpticalFlowSessionNV(
10677     VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo,
10678     const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession) {
10679     AEMU_SCOPED_TRACE("vkCreateOpticalFlowSessionNV");
10680     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10681     VkResult vkCreateOpticalFlowSessionNV_VkResult_return = (VkResult)0;
10682     vkCreateOpticalFlowSessionNV_VkResult_return = vkEnc->vkCreateOpticalFlowSessionNV(
10683         device, pCreateInfo, pAllocator, pSession, true /* do lock */);
10684     return vkCreateOpticalFlowSessionNV_VkResult_return;
10685 }
dynCheck_entry_vkCreateOpticalFlowSessionNV(VkDevice device,const VkOpticalFlowSessionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkOpticalFlowSessionNV * pSession)10686 static VkResult dynCheck_entry_vkCreateOpticalFlowSessionNV(
10687     VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo,
10688     const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession) {
10689     auto resources = ResourceTracker::get();
10690     if (!resources->hasDeviceExtension(device, "VK_NV_optical_flow")) {
10691         sOnInvalidDynamicallyCheckedCall("vkCreateOpticalFlowSessionNV", "VK_NV_optical_flow");
10692     }
10693     AEMU_SCOPED_TRACE("vkCreateOpticalFlowSessionNV");
10694     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10695     VkResult vkCreateOpticalFlowSessionNV_VkResult_return = (VkResult)0;
10696     vkCreateOpticalFlowSessionNV_VkResult_return = vkEnc->vkCreateOpticalFlowSessionNV(
10697         device, pCreateInfo, pAllocator, pSession, true /* do lock */);
10698     return vkCreateOpticalFlowSessionNV_VkResult_return;
10699 }
entry_vkDestroyOpticalFlowSessionNV(VkDevice device,VkOpticalFlowSessionNV session,const VkAllocationCallbacks * pAllocator)10700 static void entry_vkDestroyOpticalFlowSessionNV(VkDevice device, VkOpticalFlowSessionNV session,
10701                                                 const VkAllocationCallbacks* pAllocator) {
10702     AEMU_SCOPED_TRACE("vkDestroyOpticalFlowSessionNV");
10703     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10704     vkEnc->vkDestroyOpticalFlowSessionNV(device, session, pAllocator, true /* do lock */);
10705 }
dynCheck_entry_vkDestroyOpticalFlowSessionNV(VkDevice device,VkOpticalFlowSessionNV session,const VkAllocationCallbacks * pAllocator)10706 static void dynCheck_entry_vkDestroyOpticalFlowSessionNV(VkDevice device,
10707                                                          VkOpticalFlowSessionNV session,
10708                                                          const VkAllocationCallbacks* pAllocator) {
10709     auto resources = ResourceTracker::get();
10710     if (!resources->hasDeviceExtension(device, "VK_NV_optical_flow")) {
10711         sOnInvalidDynamicallyCheckedCall("vkDestroyOpticalFlowSessionNV", "VK_NV_optical_flow");
10712     }
10713     AEMU_SCOPED_TRACE("vkDestroyOpticalFlowSessionNV");
10714     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10715     vkEnc->vkDestroyOpticalFlowSessionNV(device, session, pAllocator, true /* do lock */);
10716 }
entry_vkBindOpticalFlowSessionImageNV(VkDevice device,VkOpticalFlowSessionNV session,VkOpticalFlowSessionBindingPointNV bindingPoint,VkImageView view,VkImageLayout layout)10717 static VkResult entry_vkBindOpticalFlowSessionImageNV(
10718     VkDevice device, VkOpticalFlowSessionNV session,
10719     VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, VkImageLayout layout) {
10720     AEMU_SCOPED_TRACE("vkBindOpticalFlowSessionImageNV");
10721     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10722     VkResult vkBindOpticalFlowSessionImageNV_VkResult_return = (VkResult)0;
10723     vkBindOpticalFlowSessionImageNV_VkResult_return = vkEnc->vkBindOpticalFlowSessionImageNV(
10724         device, session, bindingPoint, view, layout, true /* do lock */);
10725     return vkBindOpticalFlowSessionImageNV_VkResult_return;
10726 }
dynCheck_entry_vkBindOpticalFlowSessionImageNV(VkDevice device,VkOpticalFlowSessionNV session,VkOpticalFlowSessionBindingPointNV bindingPoint,VkImageView view,VkImageLayout layout)10727 static VkResult dynCheck_entry_vkBindOpticalFlowSessionImageNV(
10728     VkDevice device, VkOpticalFlowSessionNV session,
10729     VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, VkImageLayout layout) {
10730     auto resources = ResourceTracker::get();
10731     if (!resources->hasDeviceExtension(device, "VK_NV_optical_flow")) {
10732         sOnInvalidDynamicallyCheckedCall("vkBindOpticalFlowSessionImageNV", "VK_NV_optical_flow");
10733     }
10734     AEMU_SCOPED_TRACE("vkBindOpticalFlowSessionImageNV");
10735     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10736     VkResult vkBindOpticalFlowSessionImageNV_VkResult_return = (VkResult)0;
10737     vkBindOpticalFlowSessionImageNV_VkResult_return = vkEnc->vkBindOpticalFlowSessionImageNV(
10738         device, session, bindingPoint, view, layout, true /* do lock */);
10739     return vkBindOpticalFlowSessionImageNV_VkResult_return;
10740 }
entry_vkCmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer,VkOpticalFlowSessionNV session,const VkOpticalFlowExecuteInfoNV * pExecuteInfo)10741 static void entry_vkCmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer,
10742                                             VkOpticalFlowSessionNV session,
10743                                             const VkOpticalFlowExecuteInfoNV* pExecuteInfo) {
10744     AEMU_SCOPED_TRACE("vkCmdOpticalFlowExecuteNV");
10745     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10746     vkEnc->vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, true /* do lock */);
10747 }
dynCheck_entry_vkCmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer,VkOpticalFlowSessionNV session,const VkOpticalFlowExecuteInfoNV * pExecuteInfo)10748 static void dynCheck_entry_vkCmdOpticalFlowExecuteNV(
10749     VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session,
10750     const VkOpticalFlowExecuteInfoNV* pExecuteInfo) {
10751     auto resources = ResourceTracker::get();
10752     VkDevice device = resources->getDevice(commandBuffer);
10753     ;
10754     if (!resources->hasDeviceExtension(device, "VK_NV_optical_flow")) {
10755         sOnInvalidDynamicallyCheckedCall("vkCmdOpticalFlowExecuteNV", "VK_NV_optical_flow");
10756     }
10757     AEMU_SCOPED_TRACE("vkCmdOpticalFlowExecuteNV");
10758     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10759     vkEnc->vkCmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo, true /* do lock */);
10760 }
10761 #endif
10762 #ifdef VK_EXT_legacy_dithering
10763 #endif
10764 #ifdef VK_EXT_pipeline_protected_access
10765 #endif
10766 #ifdef VK_EXT_shader_object
entry_vkCreateShadersEXT(VkDevice device,uint32_t createInfoCount,const VkShaderCreateInfoEXT * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkShaderEXT * pShaders)10767 static VkResult entry_vkCreateShadersEXT(VkDevice device, uint32_t createInfoCount,
10768                                          const VkShaderCreateInfoEXT* pCreateInfos,
10769                                          const VkAllocationCallbacks* pAllocator,
10770                                          VkShaderEXT* pShaders) {
10771     AEMU_SCOPED_TRACE("vkCreateShadersEXT");
10772     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10773     VkResult vkCreateShadersEXT_VkResult_return = (VkResult)0;
10774     vkCreateShadersEXT_VkResult_return = vkEnc->vkCreateShadersEXT(
10775         device, createInfoCount, pCreateInfos, pAllocator, pShaders, true /* do lock */);
10776     return vkCreateShadersEXT_VkResult_return;
10777 }
dynCheck_entry_vkCreateShadersEXT(VkDevice device,uint32_t createInfoCount,const VkShaderCreateInfoEXT * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkShaderEXT * pShaders)10778 static VkResult dynCheck_entry_vkCreateShadersEXT(VkDevice device, uint32_t createInfoCount,
10779                                                   const VkShaderCreateInfoEXT* pCreateInfos,
10780                                                   const VkAllocationCallbacks* pAllocator,
10781                                                   VkShaderEXT* pShaders) {
10782     auto resources = ResourceTracker::get();
10783     if (!resources->hasDeviceExtension(device, "VK_EXT_shader_object")) {
10784         sOnInvalidDynamicallyCheckedCall("vkCreateShadersEXT", "VK_EXT_shader_object");
10785     }
10786     AEMU_SCOPED_TRACE("vkCreateShadersEXT");
10787     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10788     VkResult vkCreateShadersEXT_VkResult_return = (VkResult)0;
10789     vkCreateShadersEXT_VkResult_return = vkEnc->vkCreateShadersEXT(
10790         device, createInfoCount, pCreateInfos, pAllocator, pShaders, true /* do lock */);
10791     return vkCreateShadersEXT_VkResult_return;
10792 }
entry_vkDestroyShaderEXT(VkDevice device,VkShaderEXT shader,const VkAllocationCallbacks * pAllocator)10793 static void entry_vkDestroyShaderEXT(VkDevice device, VkShaderEXT shader,
10794                                      const VkAllocationCallbacks* pAllocator) {
10795     AEMU_SCOPED_TRACE("vkDestroyShaderEXT");
10796     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10797     vkEnc->vkDestroyShaderEXT(device, shader, pAllocator, true /* do lock */);
10798 }
dynCheck_entry_vkDestroyShaderEXT(VkDevice device,VkShaderEXT shader,const VkAllocationCallbacks * pAllocator)10799 static void dynCheck_entry_vkDestroyShaderEXT(VkDevice device, VkShaderEXT shader,
10800                                               const VkAllocationCallbacks* pAllocator) {
10801     auto resources = ResourceTracker::get();
10802     if (!resources->hasDeviceExtension(device, "VK_EXT_shader_object")) {
10803         sOnInvalidDynamicallyCheckedCall("vkDestroyShaderEXT", "VK_EXT_shader_object");
10804     }
10805     AEMU_SCOPED_TRACE("vkDestroyShaderEXT");
10806     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10807     vkEnc->vkDestroyShaderEXT(device, shader, pAllocator, true /* do lock */);
10808 }
entry_vkGetShaderBinaryDataEXT(VkDevice device,VkShaderEXT shader,size_t * pDataSize,void * pData)10809 static VkResult entry_vkGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader,
10810                                                size_t* pDataSize, void* pData) {
10811     AEMU_SCOPED_TRACE("vkGetShaderBinaryDataEXT");
10812     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10813     VkResult vkGetShaderBinaryDataEXT_VkResult_return = (VkResult)0;
10814     vkGetShaderBinaryDataEXT_VkResult_return =
10815         vkEnc->vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, true /* do lock */);
10816     return vkGetShaderBinaryDataEXT_VkResult_return;
10817 }
dynCheck_entry_vkGetShaderBinaryDataEXT(VkDevice device,VkShaderEXT shader,size_t * pDataSize,void * pData)10818 static VkResult dynCheck_entry_vkGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader,
10819                                                         size_t* pDataSize, void* pData) {
10820     auto resources = ResourceTracker::get();
10821     if (!resources->hasDeviceExtension(device, "VK_EXT_shader_object")) {
10822         sOnInvalidDynamicallyCheckedCall("vkGetShaderBinaryDataEXT", "VK_EXT_shader_object");
10823     }
10824     AEMU_SCOPED_TRACE("vkGetShaderBinaryDataEXT");
10825     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10826     VkResult vkGetShaderBinaryDataEXT_VkResult_return = (VkResult)0;
10827     vkGetShaderBinaryDataEXT_VkResult_return =
10828         vkEnc->vkGetShaderBinaryDataEXT(device, shader, pDataSize, pData, true /* do lock */);
10829     return vkGetShaderBinaryDataEXT_VkResult_return;
10830 }
entry_vkCmdBindShadersEXT(VkCommandBuffer commandBuffer,uint32_t stageCount,const VkShaderStageFlagBits * pStages,const VkShaderEXT * pShaders)10831 static void entry_vkCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount,
10832                                       const VkShaderStageFlagBits* pStages,
10833                                       const VkShaderEXT* pShaders) {
10834     AEMU_SCOPED_TRACE("vkCmdBindShadersEXT");
10835     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10836     vkEnc->vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, true /* do lock */);
10837 }
dynCheck_entry_vkCmdBindShadersEXT(VkCommandBuffer commandBuffer,uint32_t stageCount,const VkShaderStageFlagBits * pStages,const VkShaderEXT * pShaders)10838 static void dynCheck_entry_vkCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount,
10839                                                const VkShaderStageFlagBits* pStages,
10840                                                const VkShaderEXT* pShaders) {
10841     auto resources = ResourceTracker::get();
10842     VkDevice device = resources->getDevice(commandBuffer);
10843     ;
10844     if (!resources->hasDeviceExtension(device, "VK_EXT_shader_object")) {
10845         sOnInvalidDynamicallyCheckedCall("vkCmdBindShadersEXT", "VK_EXT_shader_object");
10846     }
10847     AEMU_SCOPED_TRACE("vkCmdBindShadersEXT");
10848     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10849     vkEnc->vkCmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders, true /* do lock */);
10850 }
10851 #endif
10852 #ifdef VK_QCOM_tile_properties
entry_vkGetFramebufferTilePropertiesQCOM(VkDevice device,VkFramebuffer framebuffer,uint32_t * pPropertiesCount,VkTilePropertiesQCOM * pProperties)10853 static VkResult entry_vkGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuffer framebuffer,
10854                                                          uint32_t* pPropertiesCount,
10855                                                          VkTilePropertiesQCOM* pProperties) {
10856     AEMU_SCOPED_TRACE("vkGetFramebufferTilePropertiesQCOM");
10857     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10858     VkResult vkGetFramebufferTilePropertiesQCOM_VkResult_return = (VkResult)0;
10859     vkGetFramebufferTilePropertiesQCOM_VkResult_return = vkEnc->vkGetFramebufferTilePropertiesQCOM(
10860         device, framebuffer, pPropertiesCount, pProperties, true /* do lock */);
10861     return vkGetFramebufferTilePropertiesQCOM_VkResult_return;
10862 }
dynCheck_entry_vkGetFramebufferTilePropertiesQCOM(VkDevice device,VkFramebuffer framebuffer,uint32_t * pPropertiesCount,VkTilePropertiesQCOM * pProperties)10863 static VkResult dynCheck_entry_vkGetFramebufferTilePropertiesQCOM(
10864     VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount,
10865     VkTilePropertiesQCOM* pProperties) {
10866     auto resources = ResourceTracker::get();
10867     if (!resources->hasDeviceExtension(device, "VK_QCOM_tile_properties")) {
10868         sOnInvalidDynamicallyCheckedCall("vkGetFramebufferTilePropertiesQCOM",
10869                                          "VK_QCOM_tile_properties");
10870     }
10871     AEMU_SCOPED_TRACE("vkGetFramebufferTilePropertiesQCOM");
10872     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10873     VkResult vkGetFramebufferTilePropertiesQCOM_VkResult_return = (VkResult)0;
10874     vkGetFramebufferTilePropertiesQCOM_VkResult_return = vkEnc->vkGetFramebufferTilePropertiesQCOM(
10875         device, framebuffer, pPropertiesCount, pProperties, true /* do lock */);
10876     return vkGetFramebufferTilePropertiesQCOM_VkResult_return;
10877 }
entry_vkGetDynamicRenderingTilePropertiesQCOM(VkDevice device,const VkRenderingInfo * pRenderingInfo,VkTilePropertiesQCOM * pProperties)10878 static VkResult entry_vkGetDynamicRenderingTilePropertiesQCOM(VkDevice device,
10879                                                               const VkRenderingInfo* pRenderingInfo,
10880                                                               VkTilePropertiesQCOM* pProperties) {
10881     AEMU_SCOPED_TRACE("vkGetDynamicRenderingTilePropertiesQCOM");
10882     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10883     VkResult vkGetDynamicRenderingTilePropertiesQCOM_VkResult_return = (VkResult)0;
10884     vkGetDynamicRenderingTilePropertiesQCOM_VkResult_return =
10885         vkEnc->vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties,
10886                                                        true /* do lock */);
10887     return vkGetDynamicRenderingTilePropertiesQCOM_VkResult_return;
10888 }
dynCheck_entry_vkGetDynamicRenderingTilePropertiesQCOM(VkDevice device,const VkRenderingInfo * pRenderingInfo,VkTilePropertiesQCOM * pProperties)10889 static VkResult dynCheck_entry_vkGetDynamicRenderingTilePropertiesQCOM(
10890     VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties) {
10891     auto resources = ResourceTracker::get();
10892     if (!resources->hasDeviceExtension(device, "VK_QCOM_tile_properties")) {
10893         sOnInvalidDynamicallyCheckedCall("vkGetDynamicRenderingTilePropertiesQCOM",
10894                                          "VK_QCOM_tile_properties");
10895     }
10896     AEMU_SCOPED_TRACE("vkGetDynamicRenderingTilePropertiesQCOM");
10897     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10898     VkResult vkGetDynamicRenderingTilePropertiesQCOM_VkResult_return = (VkResult)0;
10899     vkGetDynamicRenderingTilePropertiesQCOM_VkResult_return =
10900         vkEnc->vkGetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties,
10901                                                        true /* do lock */);
10902     return vkGetDynamicRenderingTilePropertiesQCOM_VkResult_return;
10903 }
10904 #endif
10905 #ifdef VK_SEC_amigo_profiling
10906 #endif
10907 #ifdef VK_QCOM_multiview_per_view_viewports
10908 #endif
10909 #ifdef VK_NV_ray_tracing_invocation_reorder
10910 #endif
10911 #ifdef VK_EXT_mutable_descriptor_type
10912 #endif
10913 #ifdef VK_ARM_shader_core_builtins
10914 #endif
10915 #ifdef VK_EXT_pipeline_library_group_handles
10916 #endif
10917 #ifdef VK_QCOM_multiview_per_view_render_areas
10918 #endif
10919 #ifdef VK_EXT_attachment_feedback_loop_dynamic_state
entry_vkCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,VkImageAspectFlags aspectMask)10920 static void entry_vkCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,
10921                                                           VkImageAspectFlags aspectMask) {
10922     AEMU_SCOPED_TRACE("vkCmdSetAttachmentFeedbackLoopEnableEXT");
10923     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10924     vkEnc->vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, true /* do lock */);
10925 }
dynCheck_entry_vkCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,VkImageAspectFlags aspectMask)10926 static void dynCheck_entry_vkCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,
10927                                                                    VkImageAspectFlags aspectMask) {
10928     auto resources = ResourceTracker::get();
10929     VkDevice device = resources->getDevice(commandBuffer);
10930     ;
10931     if (!resources->hasDeviceExtension(device, "VK_EXT_attachment_feedback_loop_dynamic_state")) {
10932         sOnInvalidDynamicallyCheckedCall("vkCmdSetAttachmentFeedbackLoopEnableEXT",
10933                                          "VK_EXT_attachment_feedback_loop_dynamic_state");
10934     }
10935     AEMU_SCOPED_TRACE("vkCmdSetAttachmentFeedbackLoopEnableEXT");
10936     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10937     vkEnc->vkCmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask, true /* do lock */);
10938 }
10939 #endif
10940 #ifdef VK_KHR_acceleration_structure
entry_vkCreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)10941 static VkResult entry_vkCreateAccelerationStructureKHR(
10942     VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
10943     const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) {
10944     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
10945     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10946     VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
10947     vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(
10948         device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
10949     return vkCreateAccelerationStructureKHR_VkResult_return;
10950 }
dynCheck_entry_vkCreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)10951 static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
10952     VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
10953     const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) {
10954     auto resources = ResourceTracker::get();
10955     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
10956         sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR",
10957                                          "VK_KHR_acceleration_structure");
10958     }
10959     AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
10960     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10961     VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
10962     vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(
10963         device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
10964     return vkCreateAccelerationStructureKHR_VkResult_return;
10965 }
entry_vkDestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)10966 static void entry_vkDestroyAccelerationStructureKHR(
10967     VkDevice device, VkAccelerationStructureKHR accelerationStructure,
10968     const VkAllocationCallbacks* pAllocator) {
10969     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
10970     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10971     vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator,
10972                                              true /* do lock */);
10973 }
dynCheck_entry_vkDestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)10974 static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
10975     VkDevice device, VkAccelerationStructureKHR accelerationStructure,
10976     const VkAllocationCallbacks* pAllocator) {
10977     auto resources = ResourceTracker::get();
10978     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
10979         sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR",
10980                                          "VK_KHR_acceleration_structure");
10981     }
10982     AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
10983     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10984     vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator,
10985                                              true /* do lock */);
10986 }
entry_vkCmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)10987 static void entry_vkCmdBuildAccelerationStructuresKHR(
10988     VkCommandBuffer commandBuffer, uint32_t infoCount,
10989     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10990     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
10991     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
10992     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10993     vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos,
10994                                                true /* do lock */);
10995 }
dynCheck_entry_vkCmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)10996 static void dynCheck_entry_vkCmdBuildAccelerationStructuresKHR(
10997     VkCommandBuffer commandBuffer, uint32_t infoCount,
10998     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10999     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
11000     auto resources = ResourceTracker::get();
11001     VkDevice device = resources->getDevice(commandBuffer);
11002     ;
11003     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11004         sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructuresKHR",
11005                                          "VK_KHR_acceleration_structure");
11006     }
11007     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
11008     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11009     vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos,
11010                                                true /* do lock */);
11011 }
entry_vkCmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkDeviceAddress * pIndirectDeviceAddresses,const uint32_t * pIndirectStrides,const uint32_t * const * ppMaxPrimitiveCounts)11012 static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
11013     VkCommandBuffer commandBuffer, uint32_t infoCount,
11014     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
11015     const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides,
11016     const uint32_t* const* ppMaxPrimitiveCounts) {
11017     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
11018     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11019     vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos,
11020                                                        pIndirectDeviceAddresses, pIndirectStrides,
11021                                                        ppMaxPrimitiveCounts, true /* do lock */);
11022 }
dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkDeviceAddress * pIndirectDeviceAddresses,const uint32_t * pIndirectStrides,const uint32_t * const * ppMaxPrimitiveCounts)11023 static void dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR(
11024     VkCommandBuffer commandBuffer, uint32_t infoCount,
11025     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
11026     const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides,
11027     const uint32_t* const* ppMaxPrimitiveCounts) {
11028     auto resources = ResourceTracker::get();
11029     VkDevice device = resources->getDevice(commandBuffer);
11030     ;
11031     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11032         sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructuresIndirectKHR",
11033                                          "VK_KHR_acceleration_structure");
11034     }
11035     AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
11036     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11037     vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos,
11038                                                        pIndirectDeviceAddresses, pIndirectStrides,
11039                                                        ppMaxPrimitiveCounts, true /* do lock */);
11040 }
entry_vkBuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)11041 static VkResult entry_vkBuildAccelerationStructuresKHR(
11042     VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount,
11043     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
11044     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
11045     AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
11046     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11047     VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
11048     vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(
11049         device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
11050     return vkBuildAccelerationStructuresKHR_VkResult_return;
11051 }
dynCheck_entry_vkBuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)11052 static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
11053     VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount,
11054     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
11055     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
11056     auto resources = ResourceTracker::get();
11057     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11058         sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR",
11059                                          "VK_KHR_acceleration_structure");
11060     }
11061     AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
11062     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11063     VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
11064     vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(
11065         device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
11066     return vkBuildAccelerationStructuresKHR_VkResult_return;
11067 }
entry_vkCopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)11068 static VkResult entry_vkCopyAccelerationStructureKHR(
11069     VkDevice device, VkDeferredOperationKHR deferredOperation,
11070     const VkCopyAccelerationStructureInfoKHR* pInfo) {
11071     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
11072     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11073     VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
11074     vkCopyAccelerationStructureKHR_VkResult_return =
11075         vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
11076     return vkCopyAccelerationStructureKHR_VkResult_return;
11077 }
dynCheck_entry_vkCopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)11078 static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
11079     VkDevice device, VkDeferredOperationKHR deferredOperation,
11080     const VkCopyAccelerationStructureInfoKHR* pInfo) {
11081     auto resources = ResourceTracker::get();
11082     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11083         sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR",
11084                                          "VK_KHR_acceleration_structure");
11085     }
11086     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
11087     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11088     VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
11089     vkCopyAccelerationStructureKHR_VkResult_return =
11090         vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
11091     return vkCopyAccelerationStructureKHR_VkResult_return;
11092 }
entry_vkCopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)11093 static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
11094     VkDevice device, VkDeferredOperationKHR deferredOperation,
11095     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
11096     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
11097     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11098     VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
11099     vkCopyAccelerationStructureToMemoryKHR_VkResult_return =
11100         vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo,
11101                                                       true /* do lock */);
11102     return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
11103 }
dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)11104 static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
11105     VkDevice device, VkDeferredOperationKHR deferredOperation,
11106     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
11107     auto resources = ResourceTracker::get();
11108     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11109         sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR",
11110                                          "VK_KHR_acceleration_structure");
11111     }
11112     AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
11113     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11114     VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
11115     vkCopyAccelerationStructureToMemoryKHR_VkResult_return =
11116         vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo,
11117                                                       true /* do lock */);
11118     return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
11119 }
entry_vkCopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)11120 static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
11121     VkDevice device, VkDeferredOperationKHR deferredOperation,
11122     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
11123     AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
11124     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11125     VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
11126     vkCopyMemoryToAccelerationStructureKHR_VkResult_return =
11127         vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo,
11128                                                       true /* do lock */);
11129     return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
11130 }
dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)11131 static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
11132     VkDevice device, VkDeferredOperationKHR deferredOperation,
11133     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
11134     auto resources = ResourceTracker::get();
11135     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11136         sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR",
11137                                          "VK_KHR_acceleration_structure");
11138     }
11139     AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
11140     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11141     VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
11142     vkCopyMemoryToAccelerationStructureKHR_VkResult_return =
11143         vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo,
11144                                                       true /* do lock */);
11145     return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
11146 }
entry_vkWriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)11147 static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
11148     VkDevice device, uint32_t accelerationStructureCount,
11149     const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType,
11150     size_t dataSize, void* pData, size_t stride) {
11151     AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
11152     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11153     VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
11154     vkWriteAccelerationStructuresPropertiesKHR_VkResult_return =
11155         vkEnc->vkWriteAccelerationStructuresPropertiesKHR(
11156             device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData,
11157             stride, true /* do lock */);
11158     return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
11159 }
dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)11160 static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
11161     VkDevice device, uint32_t accelerationStructureCount,
11162     const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType,
11163     size_t dataSize, void* pData, size_t stride) {
11164     auto resources = ResourceTracker::get();
11165     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11166         sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR",
11167                                          "VK_KHR_acceleration_structure");
11168     }
11169     AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
11170     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11171     VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
11172     vkWriteAccelerationStructuresPropertiesKHR_VkResult_return =
11173         vkEnc->vkWriteAccelerationStructuresPropertiesKHR(
11174             device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData,
11175             stride, true /* do lock */);
11176     return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
11177 }
entry_vkCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureInfoKHR * pInfo)11178 static void entry_vkCmdCopyAccelerationStructureKHR(
11179     VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) {
11180     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
11181     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11182     vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
11183 }
dynCheck_entry_vkCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureInfoKHR * pInfo)11184 static void dynCheck_entry_vkCmdCopyAccelerationStructureKHR(
11185     VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) {
11186     auto resources = ResourceTracker::get();
11187     VkDevice device = resources->getDevice(commandBuffer);
11188     ;
11189     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11190         sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureKHR",
11191                                          "VK_KHR_acceleration_structure");
11192     }
11193     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
11194     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11195     vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
11196 }
entry_vkCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)11197 static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
11198     VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
11199     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
11200     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11201     vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
11202 }
dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)11203 static void dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR(
11204     VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
11205     auto resources = ResourceTracker::get();
11206     VkDevice device = resources->getDevice(commandBuffer);
11207     ;
11208     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11209         sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureToMemoryKHR",
11210                                          "VK_KHR_acceleration_structure");
11211     }
11212     AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
11213     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11214     vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
11215 }
entry_vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)11216 static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
11217     VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
11218     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
11219     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11220     vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
11221 }
dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)11222 static void dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR(
11223     VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
11224     auto resources = ResourceTracker::get();
11225     VkDevice device = resources->getDevice(commandBuffer);
11226     ;
11227     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11228         sOnInvalidDynamicallyCheckedCall("vkCmdCopyMemoryToAccelerationStructureKHR",
11229                                          "VK_KHR_acceleration_structure");
11230     }
11231     AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
11232     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11233     vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
11234 }
entry_vkGetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)11235 static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
11236     VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) {
11237     AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
11238     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11239     VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return =
11240         (VkDeviceAddress)0;
11241     vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return =
11242         vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
11243     return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
11244 }
dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)11245 static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
11246     VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) {
11247     auto resources = ResourceTracker::get();
11248     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11249         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR",
11250                                          "VK_KHR_acceleration_structure");
11251     }
11252     AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
11253     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11254     VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return =
11255         (VkDeviceAddress)0;
11256     vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return =
11257         vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
11258     return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
11259 }
entry_vkCmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)11260 static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
11261     VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount,
11262     const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType,
11263     VkQueryPool queryPool, uint32_t firstQuery) {
11264     AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
11265     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11266     vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount,
11267                                                          pAccelerationStructures, queryType,
11268                                                          queryPool, firstQuery, true /* do lock */);
11269 }
dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)11270 static void dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
11271     VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount,
11272     const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType,
11273     VkQueryPool queryPool, uint32_t firstQuery) {
11274     auto resources = ResourceTracker::get();
11275     VkDevice device = resources->getDevice(commandBuffer);
11276     ;
11277     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11278         sOnInvalidDynamicallyCheckedCall("vkCmdWriteAccelerationStructuresPropertiesKHR",
11279                                          "VK_KHR_acceleration_structure");
11280     }
11281     AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
11282     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11283     vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount,
11284                                                          pAccelerationStructures, queryType,
11285                                                          queryPool, firstQuery, true /* do lock */);
11286 }
entry_vkGetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)11287 static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
11288     VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
11289     VkAccelerationStructureCompatibilityKHR* pCompatibility) {
11290     AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
11291     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11292     vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility,
11293                                                             true /* do lock */);
11294 }
dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)11295 static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
11296     VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
11297     VkAccelerationStructureCompatibilityKHR* pCompatibility) {
11298     auto resources = ResourceTracker::get();
11299     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11300         sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR",
11301                                          "VK_KHR_acceleration_structure");
11302     }
11303     AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
11304     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11305     vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility,
11306                                                             true /* do lock */);
11307 }
entry_vkGetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)11308 static void entry_vkGetAccelerationStructureBuildSizesKHR(
11309     VkDevice device, VkAccelerationStructureBuildTypeKHR buildType,
11310     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
11311     const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) {
11312     AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
11313     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11314     vkEnc->vkGetAccelerationStructureBuildSizesKHR(
11315         device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
11316 }
dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)11317 static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
11318     VkDevice device, VkAccelerationStructureBuildTypeKHR buildType,
11319     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
11320     const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) {
11321     auto resources = ResourceTracker::get();
11322     if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure")) {
11323         sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR",
11324                                          "VK_KHR_acceleration_structure");
11325     }
11326     AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
11327     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11328     vkEnc->vkGetAccelerationStructureBuildSizesKHR(
11329         device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
11330 }
11331 #endif
11332 #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)11333 static void entry_vkCmdTraceRaysKHR(
11334     VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
11335     const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
11336     const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
11337     const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
11338     uint32_t height, uint32_t depth) {
11339     AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
11340     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11341     vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable,
11342                              pHitShaderBindingTable, pCallableShaderBindingTable, width, height,
11343                              depth, true /* do lock */);
11344 }
dynCheck_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)11345 static void dynCheck_entry_vkCmdTraceRaysKHR(
11346     VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
11347     const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
11348     const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
11349     const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
11350     uint32_t height, uint32_t depth) {
11351     auto resources = ResourceTracker::get();
11352     VkDevice device = resources->getDevice(commandBuffer);
11353     ;
11354     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline")) {
11355         sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysKHR", "VK_KHR_ray_tracing_pipeline");
11356     }
11357     AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
11358     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11359     vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable,
11360                              pHitShaderBindingTable, pCallableShaderBindingTable, width, height,
11361                              depth, true /* do lock */);
11362 }
entry_vkCreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)11363 static VkResult entry_vkCreateRayTracingPipelinesKHR(
11364     VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache,
11365     uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
11366     const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
11367     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
11368     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11369     VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
11370     vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(
11371         device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator,
11372         pPipelines, true /* do lock */);
11373     return vkCreateRayTracingPipelinesKHR_VkResult_return;
11374 }
dynCheck_entry_vkCreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)11375 static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
11376     VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache,
11377     uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
11378     const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) {
11379     auto resources = ResourceTracker::get();
11380     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline")) {
11381         sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR",
11382                                          "VK_KHR_ray_tracing_pipeline");
11383     }
11384     AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
11385     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11386     VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
11387     vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(
11388         device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator,
11389         pPipelines, true /* do lock */);
11390     return vkCreateRayTracingPipelinesKHR_VkResult_return;
11391 }
entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)11392 static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
11393     VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize,
11394     void* pData) {
11395     AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
11396     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11397     VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
11398     vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return =
11399         vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
11400             device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
11401     return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
11402 }
dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)11403 static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
11404     VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize,
11405     void* pData) {
11406     auto resources = ResourceTracker::get();
11407     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline")) {
11408         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR",
11409                                          "VK_KHR_ray_tracing_pipeline");
11410     }
11411     AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
11412     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11413     VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
11414     vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return =
11415         vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
11416             device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
11417     return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
11418 }
entry_vkCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,VkDeviceAddress indirectDeviceAddress)11419 static void entry_vkCmdTraceRaysIndirectKHR(
11420     VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
11421     const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
11422     const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
11423     const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
11424     VkDeviceAddress indirectDeviceAddress) {
11425     AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
11426     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11427     vkEnc->vkCmdTraceRaysIndirectKHR(
11428         commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable,
11429         pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
11430 }
dynCheck_entry_vkCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,VkDeviceAddress indirectDeviceAddress)11431 static void dynCheck_entry_vkCmdTraceRaysIndirectKHR(
11432     VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
11433     const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
11434     const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
11435     const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
11436     VkDeviceAddress indirectDeviceAddress) {
11437     auto resources = ResourceTracker::get();
11438     VkDevice device = resources->getDevice(commandBuffer);
11439     ;
11440     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline")) {
11441         sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysIndirectKHR",
11442                                          "VK_KHR_ray_tracing_pipeline");
11443     }
11444     AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
11445     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11446     vkEnc->vkCmdTraceRaysIndirectKHR(
11447         commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable,
11448         pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
11449 }
entry_vkGetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)11450 static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
11451     VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader) {
11452     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
11453     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11454     VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
11455     vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return =
11456         vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader,
11457                                                       true /* do lock */);
11458     return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
11459 }
dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)11460 static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
11461     VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader) {
11462     auto resources = ResourceTracker::get();
11463     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline")) {
11464         sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR",
11465                                          "VK_KHR_ray_tracing_pipeline");
11466     }
11467     AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
11468     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
11469     VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
11470     vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return =
11471         vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader,
11472                                                       true /* do lock */);
11473     return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
11474 }
entry_vkCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,uint32_t pipelineStackSize)11475 static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,
11476                                                          uint32_t pipelineStackSize) {
11477     AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
11478     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11479     vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize,
11480                                                   true /* do lock */);
11481 }
dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,uint32_t pipelineStackSize)11482 static void dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,
11483                                                                   uint32_t pipelineStackSize) {
11484     auto resources = ResourceTracker::get();
11485     VkDevice device = resources->getDevice(commandBuffer);
11486     ;
11487     if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline")) {
11488         sOnInvalidDynamicallyCheckedCall("vkCmdSetRayTracingPipelineStackSizeKHR",
11489                                          "VK_KHR_ray_tracing_pipeline");
11490     }
11491     AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
11492     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11493     vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize,
11494                                                   true /* do lock */);
11495 }
11496 #endif
11497 #ifdef VK_KHR_ray_query
11498 #endif
11499 #ifdef VK_EXT_mesh_shader
entry_vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)11500 static void entry_vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, uint32_t groupCountX,
11501                                         uint32_t groupCountY, uint32_t groupCountZ) {
11502     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksEXT");
11503     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11504     vkEnc->vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ,
11505                                  true /* do lock */);
11506 }
dynCheck_entry_vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)11507 static void dynCheck_entry_vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer,
11508                                                  uint32_t groupCountX, uint32_t groupCountY,
11509                                                  uint32_t groupCountZ) {
11510     auto resources = ResourceTracker::get();
11511     VkDevice device = resources->getDevice(commandBuffer);
11512     ;
11513     if (!resources->hasDeviceExtension(device, "VK_EXT_mesh_shader")) {
11514         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksEXT", "VK_EXT_mesh_shader");
11515     }
11516     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksEXT");
11517     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11518     vkEnc->vkCmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ,
11519                                  true /* do lock */);
11520 }
entry_vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)11521 static void entry_vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer buffer,
11522                                                 VkDeviceSize offset, uint32_t drawCount,
11523                                                 uint32_t stride) {
11524     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectEXT");
11525     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11526     vkEnc->vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride,
11527                                          true /* do lock */);
11528 }
dynCheck_entry_vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)11529 static void dynCheck_entry_vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
11530                                                          VkBuffer buffer, VkDeviceSize offset,
11531                                                          uint32_t drawCount, uint32_t stride) {
11532     auto resources = ResourceTracker::get();
11533     VkDevice device = resources->getDevice(commandBuffer);
11534     ;
11535     if (!resources->hasDeviceExtension(device, "VK_EXT_mesh_shader")) {
11536         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectEXT", "VK_EXT_mesh_shader");
11537     }
11538     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectEXT");
11539     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11540     vkEnc->vkCmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride,
11541                                          true /* do lock */);
11542 }
entry_vkCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)11543 static void entry_vkCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer buffer,
11544                                                      VkDeviceSize offset, VkBuffer countBuffer,
11545                                                      VkDeviceSize countBufferOffset,
11546                                                      uint32_t maxDrawCount, uint32_t stride) {
11547     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountEXT");
11548     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11549     vkEnc->vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer,
11550                                               countBufferOffset, maxDrawCount, stride,
11551                                               true /* do lock */);
11552 }
dynCheck_entry_vkCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)11553 static void dynCheck_entry_vkCmdDrawMeshTasksIndirectCountEXT(
11554     VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer,
11555     VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) {
11556     auto resources = ResourceTracker::get();
11557     VkDevice device = resources->getDevice(commandBuffer);
11558     ;
11559     if (!resources->hasDeviceExtension(device, "VK_EXT_mesh_shader")) {
11560         sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectCountEXT",
11561                                          "VK_EXT_mesh_shader");
11562     }
11563     AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountEXT");
11564     auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
11565     vkEnc->vkCmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer,
11566                                               countBufferOffset, maxDrawCount, stride,
11567                                               true /* do lock */);
11568 }
11569 #endif
goldfish_vulkan_get_proc_address(const char * name)11570 void* goldfish_vulkan_get_proc_address(const char* name) {
11571 #ifdef VK_VERSION_1_0
11572     if (!strcmp(name, "vkCreateInstance")) {
11573         return (void*)entry_vkCreateInstance;
11574     }
11575     if (!strcmp(name, "vkDestroyInstance")) {
11576         return (void*)entry_vkDestroyInstance;
11577     }
11578     if (!strcmp(name, "vkEnumeratePhysicalDevices")) {
11579         return (void*)entry_vkEnumeratePhysicalDevices;
11580     }
11581     if (!strcmp(name, "vkGetPhysicalDeviceFeatures")) {
11582         return (void*)entry_vkGetPhysicalDeviceFeatures;
11583     }
11584     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties")) {
11585         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
11586     }
11587     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties")) {
11588         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
11589     }
11590     if (!strcmp(name, "vkGetPhysicalDeviceProperties")) {
11591         return (void*)entry_vkGetPhysicalDeviceProperties;
11592     }
11593     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties")) {
11594         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
11595     }
11596     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties")) {
11597         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
11598     }
11599     if (!strcmp(name, "vkGetInstanceProcAddr")) {
11600         return (void*)entry_vkGetInstanceProcAddr;
11601     }
11602     if (!strcmp(name, "vkGetDeviceProcAddr")) {
11603         return (void*)entry_vkGetDeviceProcAddr;
11604     }
11605     if (!strcmp(name, "vkCreateDevice")) {
11606         return (void*)entry_vkCreateDevice;
11607     }
11608     if (!strcmp(name, "vkDestroyDevice")) {
11609         return (void*)entry_vkDestroyDevice;
11610     }
11611     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties")) {
11612         return (void*)entry_vkEnumerateInstanceExtensionProperties;
11613     }
11614     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties")) {
11615         return (void*)entry_vkEnumerateDeviceExtensionProperties;
11616     }
11617     if (!strcmp(name, "vkEnumerateInstanceLayerProperties")) {
11618         return (void*)entry_vkEnumerateInstanceLayerProperties;
11619     }
11620     if (!strcmp(name, "vkEnumerateDeviceLayerProperties")) {
11621         return (void*)entry_vkEnumerateDeviceLayerProperties;
11622     }
11623     if (!strcmp(name, "vkGetDeviceQueue")) {
11624         return (void*)entry_vkGetDeviceQueue;
11625     }
11626     if (!strcmp(name, "vkQueueSubmit")) {
11627         return (void*)entry_vkQueueSubmit;
11628     }
11629     if (!strcmp(name, "vkQueueWaitIdle")) {
11630         return (void*)entry_vkQueueWaitIdle;
11631     }
11632     if (!strcmp(name, "vkDeviceWaitIdle")) {
11633         return (void*)entry_vkDeviceWaitIdle;
11634     }
11635     if (!strcmp(name, "vkAllocateMemory")) {
11636         return (void*)entry_vkAllocateMemory;
11637     }
11638     if (!strcmp(name, "vkFreeMemory")) {
11639         return (void*)entry_vkFreeMemory;
11640     }
11641     if (!strcmp(name, "vkMapMemory")) {
11642         return (void*)entry_vkMapMemory;
11643     }
11644     if (!strcmp(name, "vkUnmapMemory")) {
11645         return (void*)entry_vkUnmapMemory;
11646     }
11647     if (!strcmp(name, "vkFlushMappedMemoryRanges")) {
11648         return (void*)entry_vkFlushMappedMemoryRanges;
11649     }
11650     if (!strcmp(name, "vkInvalidateMappedMemoryRanges")) {
11651         return (void*)entry_vkInvalidateMappedMemoryRanges;
11652     }
11653     if (!strcmp(name, "vkGetDeviceMemoryCommitment")) {
11654         return (void*)entry_vkGetDeviceMemoryCommitment;
11655     }
11656     if (!strcmp(name, "vkBindBufferMemory")) {
11657         return (void*)entry_vkBindBufferMemory;
11658     }
11659     if (!strcmp(name, "vkBindImageMemory")) {
11660         return (void*)entry_vkBindImageMemory;
11661     }
11662     if (!strcmp(name, "vkGetBufferMemoryRequirements")) {
11663         return (void*)entry_vkGetBufferMemoryRequirements;
11664     }
11665     if (!strcmp(name, "vkGetImageMemoryRequirements")) {
11666         return (void*)entry_vkGetImageMemoryRequirements;
11667     }
11668     if (!strcmp(name, "vkGetImageSparseMemoryRequirements")) {
11669         return (void*)entry_vkGetImageSparseMemoryRequirements;
11670     }
11671     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties")) {
11672         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
11673     }
11674     if (!strcmp(name, "vkQueueBindSparse")) {
11675         return (void*)entry_vkQueueBindSparse;
11676     }
11677     if (!strcmp(name, "vkCreateFence")) {
11678         return (void*)entry_vkCreateFence;
11679     }
11680     if (!strcmp(name, "vkDestroyFence")) {
11681         return (void*)entry_vkDestroyFence;
11682     }
11683     if (!strcmp(name, "vkResetFences")) {
11684         return (void*)entry_vkResetFences;
11685     }
11686     if (!strcmp(name, "vkGetFenceStatus")) {
11687         return (void*)entry_vkGetFenceStatus;
11688     }
11689     if (!strcmp(name, "vkWaitForFences")) {
11690         return (void*)entry_vkWaitForFences;
11691     }
11692     if (!strcmp(name, "vkCreateSemaphore")) {
11693         return (void*)entry_vkCreateSemaphore;
11694     }
11695     if (!strcmp(name, "vkDestroySemaphore")) {
11696         return (void*)entry_vkDestroySemaphore;
11697     }
11698     if (!strcmp(name, "vkCreateEvent")) {
11699         return (void*)entry_vkCreateEvent;
11700     }
11701     if (!strcmp(name, "vkDestroyEvent")) {
11702         return (void*)entry_vkDestroyEvent;
11703     }
11704     if (!strcmp(name, "vkGetEventStatus")) {
11705         return (void*)entry_vkGetEventStatus;
11706     }
11707     if (!strcmp(name, "vkSetEvent")) {
11708         return (void*)entry_vkSetEvent;
11709     }
11710     if (!strcmp(name, "vkResetEvent")) {
11711         return (void*)entry_vkResetEvent;
11712     }
11713     if (!strcmp(name, "vkCreateQueryPool")) {
11714         return (void*)entry_vkCreateQueryPool;
11715     }
11716     if (!strcmp(name, "vkDestroyQueryPool")) {
11717         return (void*)entry_vkDestroyQueryPool;
11718     }
11719     if (!strcmp(name, "vkGetQueryPoolResults")) {
11720         return (void*)entry_vkGetQueryPoolResults;
11721     }
11722     if (!strcmp(name, "vkCreateBuffer")) {
11723         return (void*)entry_vkCreateBuffer;
11724     }
11725     if (!strcmp(name, "vkDestroyBuffer")) {
11726         return (void*)entry_vkDestroyBuffer;
11727     }
11728     if (!strcmp(name, "vkCreateBufferView")) {
11729         return (void*)entry_vkCreateBufferView;
11730     }
11731     if (!strcmp(name, "vkDestroyBufferView")) {
11732         return (void*)entry_vkDestroyBufferView;
11733     }
11734     if (!strcmp(name, "vkCreateImage")) {
11735         return (void*)entry_vkCreateImage;
11736     }
11737     if (!strcmp(name, "vkDestroyImage")) {
11738         return (void*)entry_vkDestroyImage;
11739     }
11740     if (!strcmp(name, "vkGetImageSubresourceLayout")) {
11741         return (void*)entry_vkGetImageSubresourceLayout;
11742     }
11743     if (!strcmp(name, "vkCreateImageView")) {
11744         return (void*)entry_vkCreateImageView;
11745     }
11746     if (!strcmp(name, "vkDestroyImageView")) {
11747         return (void*)entry_vkDestroyImageView;
11748     }
11749     if (!strcmp(name, "vkCreateShaderModule")) {
11750         return (void*)entry_vkCreateShaderModule;
11751     }
11752     if (!strcmp(name, "vkDestroyShaderModule")) {
11753         return (void*)entry_vkDestroyShaderModule;
11754     }
11755     if (!strcmp(name, "vkCreatePipelineCache")) {
11756         return (void*)entry_vkCreatePipelineCache;
11757     }
11758     if (!strcmp(name, "vkDestroyPipelineCache")) {
11759         return (void*)entry_vkDestroyPipelineCache;
11760     }
11761     if (!strcmp(name, "vkGetPipelineCacheData")) {
11762         return (void*)entry_vkGetPipelineCacheData;
11763     }
11764     if (!strcmp(name, "vkMergePipelineCaches")) {
11765         return (void*)entry_vkMergePipelineCaches;
11766     }
11767     if (!strcmp(name, "vkCreateGraphicsPipelines")) {
11768         return (void*)entry_vkCreateGraphicsPipelines;
11769     }
11770     if (!strcmp(name, "vkCreateComputePipelines")) {
11771         return (void*)entry_vkCreateComputePipelines;
11772     }
11773     if (!strcmp(name, "vkDestroyPipeline")) {
11774         return (void*)entry_vkDestroyPipeline;
11775     }
11776     if (!strcmp(name, "vkCreatePipelineLayout")) {
11777         return (void*)entry_vkCreatePipelineLayout;
11778     }
11779     if (!strcmp(name, "vkDestroyPipelineLayout")) {
11780         return (void*)entry_vkDestroyPipelineLayout;
11781     }
11782     if (!strcmp(name, "vkCreateSampler")) {
11783         return (void*)entry_vkCreateSampler;
11784     }
11785     if (!strcmp(name, "vkDestroySampler")) {
11786         return (void*)entry_vkDestroySampler;
11787     }
11788     if (!strcmp(name, "vkCreateDescriptorSetLayout")) {
11789         return (void*)entry_vkCreateDescriptorSetLayout;
11790     }
11791     if (!strcmp(name, "vkDestroyDescriptorSetLayout")) {
11792         return (void*)entry_vkDestroyDescriptorSetLayout;
11793     }
11794     if (!strcmp(name, "vkCreateDescriptorPool")) {
11795         return (void*)entry_vkCreateDescriptorPool;
11796     }
11797     if (!strcmp(name, "vkDestroyDescriptorPool")) {
11798         return (void*)entry_vkDestroyDescriptorPool;
11799     }
11800     if (!strcmp(name, "vkResetDescriptorPool")) {
11801         return (void*)entry_vkResetDescriptorPool;
11802     }
11803     if (!strcmp(name, "vkAllocateDescriptorSets")) {
11804         return (void*)entry_vkAllocateDescriptorSets;
11805     }
11806     if (!strcmp(name, "vkFreeDescriptorSets")) {
11807         return (void*)entry_vkFreeDescriptorSets;
11808     }
11809     if (!strcmp(name, "vkUpdateDescriptorSets")) {
11810         return (void*)entry_vkUpdateDescriptorSets;
11811     }
11812     if (!strcmp(name, "vkCreateFramebuffer")) {
11813         return (void*)entry_vkCreateFramebuffer;
11814     }
11815     if (!strcmp(name, "vkDestroyFramebuffer")) {
11816         return (void*)entry_vkDestroyFramebuffer;
11817     }
11818     if (!strcmp(name, "vkCreateRenderPass")) {
11819         return (void*)entry_vkCreateRenderPass;
11820     }
11821     if (!strcmp(name, "vkDestroyRenderPass")) {
11822         return (void*)entry_vkDestroyRenderPass;
11823     }
11824     if (!strcmp(name, "vkGetRenderAreaGranularity")) {
11825         return (void*)entry_vkGetRenderAreaGranularity;
11826     }
11827     if (!strcmp(name, "vkCreateCommandPool")) {
11828         return (void*)entry_vkCreateCommandPool;
11829     }
11830     if (!strcmp(name, "vkDestroyCommandPool")) {
11831         return (void*)entry_vkDestroyCommandPool;
11832     }
11833     if (!strcmp(name, "vkResetCommandPool")) {
11834         return (void*)entry_vkResetCommandPool;
11835     }
11836     if (!strcmp(name, "vkAllocateCommandBuffers")) {
11837         return (void*)entry_vkAllocateCommandBuffers;
11838     }
11839     if (!strcmp(name, "vkFreeCommandBuffers")) {
11840         return (void*)entry_vkFreeCommandBuffers;
11841     }
11842     if (!strcmp(name, "vkBeginCommandBuffer")) {
11843         return (void*)entry_vkBeginCommandBuffer;
11844     }
11845     if (!strcmp(name, "vkEndCommandBuffer")) {
11846         return (void*)entry_vkEndCommandBuffer;
11847     }
11848     if (!strcmp(name, "vkResetCommandBuffer")) {
11849         return (void*)entry_vkResetCommandBuffer;
11850     }
11851     if (!strcmp(name, "vkCmdBindPipeline")) {
11852         return (void*)entry_vkCmdBindPipeline;
11853     }
11854     if (!strcmp(name, "vkCmdSetViewport")) {
11855         return (void*)entry_vkCmdSetViewport;
11856     }
11857     if (!strcmp(name, "vkCmdSetScissor")) {
11858         return (void*)entry_vkCmdSetScissor;
11859     }
11860     if (!strcmp(name, "vkCmdSetLineWidth")) {
11861         return (void*)entry_vkCmdSetLineWidth;
11862     }
11863     if (!strcmp(name, "vkCmdSetDepthBias")) {
11864         return (void*)entry_vkCmdSetDepthBias;
11865     }
11866     if (!strcmp(name, "vkCmdSetBlendConstants")) {
11867         return (void*)entry_vkCmdSetBlendConstants;
11868     }
11869     if (!strcmp(name, "vkCmdSetDepthBounds")) {
11870         return (void*)entry_vkCmdSetDepthBounds;
11871     }
11872     if (!strcmp(name, "vkCmdSetStencilCompareMask")) {
11873         return (void*)entry_vkCmdSetStencilCompareMask;
11874     }
11875     if (!strcmp(name, "vkCmdSetStencilWriteMask")) {
11876         return (void*)entry_vkCmdSetStencilWriteMask;
11877     }
11878     if (!strcmp(name, "vkCmdSetStencilReference")) {
11879         return (void*)entry_vkCmdSetStencilReference;
11880     }
11881     if (!strcmp(name, "vkCmdBindDescriptorSets")) {
11882         return (void*)entry_vkCmdBindDescriptorSets;
11883     }
11884     if (!strcmp(name, "vkCmdBindIndexBuffer")) {
11885         return (void*)entry_vkCmdBindIndexBuffer;
11886     }
11887     if (!strcmp(name, "vkCmdBindVertexBuffers")) {
11888         return (void*)entry_vkCmdBindVertexBuffers;
11889     }
11890     if (!strcmp(name, "vkCmdDraw")) {
11891         return (void*)entry_vkCmdDraw;
11892     }
11893     if (!strcmp(name, "vkCmdDrawIndexed")) {
11894         return (void*)entry_vkCmdDrawIndexed;
11895     }
11896     if (!strcmp(name, "vkCmdDrawIndirect")) {
11897         return (void*)entry_vkCmdDrawIndirect;
11898     }
11899     if (!strcmp(name, "vkCmdDrawIndexedIndirect")) {
11900         return (void*)entry_vkCmdDrawIndexedIndirect;
11901     }
11902     if (!strcmp(name, "vkCmdDispatch")) {
11903         return (void*)entry_vkCmdDispatch;
11904     }
11905     if (!strcmp(name, "vkCmdDispatchIndirect")) {
11906         return (void*)entry_vkCmdDispatchIndirect;
11907     }
11908     if (!strcmp(name, "vkCmdCopyBuffer")) {
11909         return (void*)entry_vkCmdCopyBuffer;
11910     }
11911     if (!strcmp(name, "vkCmdCopyImage")) {
11912         return (void*)entry_vkCmdCopyImage;
11913     }
11914     if (!strcmp(name, "vkCmdBlitImage")) {
11915         return (void*)entry_vkCmdBlitImage;
11916     }
11917     if (!strcmp(name, "vkCmdCopyBufferToImage")) {
11918         return (void*)entry_vkCmdCopyBufferToImage;
11919     }
11920     if (!strcmp(name, "vkCmdCopyImageToBuffer")) {
11921         return (void*)entry_vkCmdCopyImageToBuffer;
11922     }
11923     if (!strcmp(name, "vkCmdUpdateBuffer")) {
11924         return (void*)entry_vkCmdUpdateBuffer;
11925     }
11926     if (!strcmp(name, "vkCmdFillBuffer")) {
11927         return (void*)entry_vkCmdFillBuffer;
11928     }
11929     if (!strcmp(name, "vkCmdClearColorImage")) {
11930         return (void*)entry_vkCmdClearColorImage;
11931     }
11932     if (!strcmp(name, "vkCmdClearDepthStencilImage")) {
11933         return (void*)entry_vkCmdClearDepthStencilImage;
11934     }
11935     if (!strcmp(name, "vkCmdClearAttachments")) {
11936         return (void*)entry_vkCmdClearAttachments;
11937     }
11938     if (!strcmp(name, "vkCmdResolveImage")) {
11939         return (void*)entry_vkCmdResolveImage;
11940     }
11941     if (!strcmp(name, "vkCmdSetEvent")) {
11942         return (void*)entry_vkCmdSetEvent;
11943     }
11944     if (!strcmp(name, "vkCmdResetEvent")) {
11945         return (void*)entry_vkCmdResetEvent;
11946     }
11947     if (!strcmp(name, "vkCmdWaitEvents")) {
11948         return (void*)entry_vkCmdWaitEvents;
11949     }
11950     if (!strcmp(name, "vkCmdPipelineBarrier")) {
11951         return (void*)entry_vkCmdPipelineBarrier;
11952     }
11953     if (!strcmp(name, "vkCmdBeginQuery")) {
11954         return (void*)entry_vkCmdBeginQuery;
11955     }
11956     if (!strcmp(name, "vkCmdEndQuery")) {
11957         return (void*)entry_vkCmdEndQuery;
11958     }
11959     if (!strcmp(name, "vkCmdResetQueryPool")) {
11960         return (void*)entry_vkCmdResetQueryPool;
11961     }
11962     if (!strcmp(name, "vkCmdWriteTimestamp")) {
11963         return (void*)entry_vkCmdWriteTimestamp;
11964     }
11965     if (!strcmp(name, "vkCmdCopyQueryPoolResults")) {
11966         return (void*)entry_vkCmdCopyQueryPoolResults;
11967     }
11968     if (!strcmp(name, "vkCmdPushConstants")) {
11969         return (void*)entry_vkCmdPushConstants;
11970     }
11971     if (!strcmp(name, "vkCmdBeginRenderPass")) {
11972         return (void*)entry_vkCmdBeginRenderPass;
11973     }
11974     if (!strcmp(name, "vkCmdNextSubpass")) {
11975         return (void*)entry_vkCmdNextSubpass;
11976     }
11977     if (!strcmp(name, "vkCmdEndRenderPass")) {
11978         return (void*)entry_vkCmdEndRenderPass;
11979     }
11980     if (!strcmp(name, "vkCmdExecuteCommands")) {
11981         return (void*)entry_vkCmdExecuteCommands;
11982     }
11983 #endif
11984 #ifdef VK_VERSION_1_1
11985     if (!strcmp(name, "vkEnumerateInstanceVersion")) {
11986         return nullptr;
11987     }
11988     if (!strcmp(name, "vkBindBufferMemory2")) {
11989         return nullptr;
11990     }
11991     if (!strcmp(name, "vkBindImageMemory2")) {
11992         return nullptr;
11993     }
11994     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures")) {
11995         return nullptr;
11996     }
11997     if (!strcmp(name, "vkCmdSetDeviceMask")) {
11998         return nullptr;
11999     }
12000     if (!strcmp(name, "vkCmdDispatchBase")) {
12001         return nullptr;
12002     }
12003     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups")) {
12004         return nullptr;
12005     }
12006     if (!strcmp(name, "vkGetImageMemoryRequirements2")) {
12007         return nullptr;
12008     }
12009     if (!strcmp(name, "vkGetBufferMemoryRequirements2")) {
12010         return nullptr;
12011     }
12012     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2")) {
12013         return nullptr;
12014     }
12015     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2")) {
12016         return nullptr;
12017     }
12018     if (!strcmp(name, "vkGetPhysicalDeviceProperties2")) {
12019         return nullptr;
12020     }
12021     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2")) {
12022         return nullptr;
12023     }
12024     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2")) {
12025         return nullptr;
12026     }
12027     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2")) {
12028         return nullptr;
12029     }
12030     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2")) {
12031         return nullptr;
12032     }
12033     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2")) {
12034         return nullptr;
12035     }
12036     if (!strcmp(name, "vkTrimCommandPool")) {
12037         return nullptr;
12038     }
12039     if (!strcmp(name, "vkGetDeviceQueue2")) {
12040         return nullptr;
12041     }
12042     if (!strcmp(name, "vkCreateSamplerYcbcrConversion")) {
12043         return nullptr;
12044     }
12045     if (!strcmp(name, "vkDestroySamplerYcbcrConversion")) {
12046         return nullptr;
12047     }
12048     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate")) {
12049         return nullptr;
12050     }
12051     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate")) {
12052         return nullptr;
12053     }
12054     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate")) {
12055         return nullptr;
12056     }
12057     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties")) {
12058         return nullptr;
12059     }
12060     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties")) {
12061         return nullptr;
12062     }
12063     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties")) {
12064         return nullptr;
12065     }
12066     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport")) {
12067         return nullptr;
12068     }
12069 #endif
12070 #ifdef VK_VERSION_1_2
12071     if (!strcmp(name, "vkCmdDrawIndirectCount")) {
12072         return nullptr;
12073     }
12074     if (!strcmp(name, "vkCmdDrawIndexedIndirectCount")) {
12075         return nullptr;
12076     }
12077     if (!strcmp(name, "vkCreateRenderPass2")) {
12078         return nullptr;
12079     }
12080     if (!strcmp(name, "vkCmdBeginRenderPass2")) {
12081         return nullptr;
12082     }
12083     if (!strcmp(name, "vkCmdNextSubpass2")) {
12084         return nullptr;
12085     }
12086     if (!strcmp(name, "vkCmdEndRenderPass2")) {
12087         return nullptr;
12088     }
12089     if (!strcmp(name, "vkResetQueryPool")) {
12090         return nullptr;
12091     }
12092     if (!strcmp(name, "vkGetSemaphoreCounterValue")) {
12093         return nullptr;
12094     }
12095     if (!strcmp(name, "vkWaitSemaphores")) {
12096         return nullptr;
12097     }
12098     if (!strcmp(name, "vkSignalSemaphore")) {
12099         return nullptr;
12100     }
12101     if (!strcmp(name, "vkGetBufferDeviceAddress")) {
12102         return nullptr;
12103     }
12104     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress")) {
12105         return nullptr;
12106     }
12107     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress")) {
12108         return nullptr;
12109     }
12110 #endif
12111 #ifdef VK_VERSION_1_3
12112     if (!strcmp(name, "vkGetPhysicalDeviceToolProperties")) {
12113         return nullptr;
12114     }
12115     if (!strcmp(name, "vkCreatePrivateDataSlot")) {
12116         return nullptr;
12117     }
12118     if (!strcmp(name, "vkDestroyPrivateDataSlot")) {
12119         return nullptr;
12120     }
12121     if (!strcmp(name, "vkSetPrivateData")) {
12122         return nullptr;
12123     }
12124     if (!strcmp(name, "vkGetPrivateData")) {
12125         return nullptr;
12126     }
12127     if (!strcmp(name, "vkCmdSetEvent2")) {
12128         return nullptr;
12129     }
12130     if (!strcmp(name, "vkCmdResetEvent2")) {
12131         return nullptr;
12132     }
12133     if (!strcmp(name, "vkCmdWaitEvents2")) {
12134         return nullptr;
12135     }
12136     if (!strcmp(name, "vkCmdPipelineBarrier2")) {
12137         return nullptr;
12138     }
12139     if (!strcmp(name, "vkCmdWriteTimestamp2")) {
12140         return nullptr;
12141     }
12142     if (!strcmp(name, "vkQueueSubmit2")) {
12143         return nullptr;
12144     }
12145     if (!strcmp(name, "vkCmdCopyBuffer2")) {
12146         return nullptr;
12147     }
12148     if (!strcmp(name, "vkCmdCopyImage2")) {
12149         return nullptr;
12150     }
12151     if (!strcmp(name, "vkCmdCopyBufferToImage2")) {
12152         return nullptr;
12153     }
12154     if (!strcmp(name, "vkCmdCopyImageToBuffer2")) {
12155         return nullptr;
12156     }
12157     if (!strcmp(name, "vkCmdBlitImage2")) {
12158         return nullptr;
12159     }
12160     if (!strcmp(name, "vkCmdResolveImage2")) {
12161         return nullptr;
12162     }
12163     if (!strcmp(name, "vkCmdBeginRendering")) {
12164         return nullptr;
12165     }
12166     if (!strcmp(name, "vkCmdEndRendering")) {
12167         return nullptr;
12168     }
12169     if (!strcmp(name, "vkCmdSetCullMode")) {
12170         return nullptr;
12171     }
12172     if (!strcmp(name, "vkCmdSetFrontFace")) {
12173         return nullptr;
12174     }
12175     if (!strcmp(name, "vkCmdSetPrimitiveTopology")) {
12176         return nullptr;
12177     }
12178     if (!strcmp(name, "vkCmdSetViewportWithCount")) {
12179         return nullptr;
12180     }
12181     if (!strcmp(name, "vkCmdSetScissorWithCount")) {
12182         return nullptr;
12183     }
12184     if (!strcmp(name, "vkCmdBindVertexBuffers2")) {
12185         return nullptr;
12186     }
12187     if (!strcmp(name, "vkCmdSetDepthTestEnable")) {
12188         return nullptr;
12189     }
12190     if (!strcmp(name, "vkCmdSetDepthWriteEnable")) {
12191         return nullptr;
12192     }
12193     if (!strcmp(name, "vkCmdSetDepthCompareOp")) {
12194         return nullptr;
12195     }
12196     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnable")) {
12197         return nullptr;
12198     }
12199     if (!strcmp(name, "vkCmdSetStencilTestEnable")) {
12200         return nullptr;
12201     }
12202     if (!strcmp(name, "vkCmdSetStencilOp")) {
12203         return nullptr;
12204     }
12205     if (!strcmp(name, "vkCmdSetRasterizerDiscardEnable")) {
12206         return nullptr;
12207     }
12208     if (!strcmp(name, "vkCmdSetDepthBiasEnable")) {
12209         return nullptr;
12210     }
12211     if (!strcmp(name, "vkCmdSetPrimitiveRestartEnable")) {
12212         return nullptr;
12213     }
12214     if (!strcmp(name, "vkGetDeviceBufferMemoryRequirements")) {
12215         return nullptr;
12216     }
12217     if (!strcmp(name, "vkGetDeviceImageMemoryRequirements")) {
12218         return nullptr;
12219     }
12220     if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirements")) {
12221         return nullptr;
12222     }
12223 #endif
12224 #ifdef VK_KHR_surface
12225     if (!strcmp(name, "vkDestroySurfaceKHR")) {
12226         return nullptr;
12227     }
12228     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR")) {
12229         return nullptr;
12230     }
12231     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR")) {
12232         return nullptr;
12233     }
12234     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR")) {
12235         return nullptr;
12236     }
12237     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR")) {
12238         return nullptr;
12239     }
12240 #endif
12241 #ifdef VK_KHR_swapchain
12242     if (!strcmp(name, "vkCreateSwapchainKHR")) {
12243         return nullptr;
12244     }
12245     if (!strcmp(name, "vkDestroySwapchainKHR")) {
12246         return nullptr;
12247     }
12248     if (!strcmp(name, "vkGetSwapchainImagesKHR")) {
12249         return nullptr;
12250     }
12251     if (!strcmp(name, "vkAcquireNextImageKHR")) {
12252         return nullptr;
12253     }
12254     if (!strcmp(name, "vkQueuePresentKHR")) {
12255         return nullptr;
12256     }
12257     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR")) {
12258         return nullptr;
12259     }
12260     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR")) {
12261         return nullptr;
12262     }
12263     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR")) {
12264         return nullptr;
12265     }
12266     if (!strcmp(name, "vkAcquireNextImage2KHR")) {
12267         return nullptr;
12268     }
12269 #endif
12270 #ifdef VK_KHR_display
12271     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR")) {
12272         return nullptr;
12273     }
12274     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")) {
12275         return nullptr;
12276     }
12277     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR")) {
12278         return nullptr;
12279     }
12280     if (!strcmp(name, "vkGetDisplayModePropertiesKHR")) {
12281         return nullptr;
12282     }
12283     if (!strcmp(name, "vkCreateDisplayModeKHR")) {
12284         return nullptr;
12285     }
12286     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR")) {
12287         return nullptr;
12288     }
12289     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR")) {
12290         return nullptr;
12291     }
12292 #endif
12293 #ifdef VK_KHR_display_swapchain
12294     if (!strcmp(name, "vkCreateSharedSwapchainsKHR")) {
12295         return nullptr;
12296     }
12297 #endif
12298 #ifdef VK_KHR_xlib_surface
12299     if (!strcmp(name, "vkCreateXlibSurfaceKHR")) {
12300         return nullptr;
12301     }
12302     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR")) {
12303         return nullptr;
12304     }
12305 #endif
12306 #ifdef VK_KHR_xcb_surface
12307     if (!strcmp(name, "vkCreateXcbSurfaceKHR")) {
12308         return nullptr;
12309     }
12310     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR")) {
12311         return nullptr;
12312     }
12313 #endif
12314 #ifdef VK_KHR_wayland_surface
12315     if (!strcmp(name, "vkCreateWaylandSurfaceKHR")) {
12316         return nullptr;
12317     }
12318     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR")) {
12319         return nullptr;
12320     }
12321 #endif
12322 #ifdef VK_KHR_android_surface
12323     if (!strcmp(name, "vkCreateAndroidSurfaceKHR")) {
12324         return nullptr;
12325     }
12326 #endif
12327 #ifdef VK_KHR_win32_surface
12328     if (!strcmp(name, "vkCreateWin32SurfaceKHR")) {
12329         return nullptr;
12330     }
12331     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) {
12332         return nullptr;
12333     }
12334 #endif
12335 #ifdef VK_KHR_video_queue
12336     if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR")) {
12337         return nullptr;
12338     }
12339     if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR")) {
12340         return nullptr;
12341     }
12342     if (!strcmp(name, "vkCreateVideoSessionKHR")) {
12343         return nullptr;
12344     }
12345     if (!strcmp(name, "vkDestroyVideoSessionKHR")) {
12346         return nullptr;
12347     }
12348     if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR")) {
12349         return nullptr;
12350     }
12351     if (!strcmp(name, "vkBindVideoSessionMemoryKHR")) {
12352         return nullptr;
12353     }
12354     if (!strcmp(name, "vkCreateVideoSessionParametersKHR")) {
12355         return nullptr;
12356     }
12357     if (!strcmp(name, "vkUpdateVideoSessionParametersKHR")) {
12358         return nullptr;
12359     }
12360     if (!strcmp(name, "vkDestroyVideoSessionParametersKHR")) {
12361         return nullptr;
12362     }
12363     if (!strcmp(name, "vkCmdBeginVideoCodingKHR")) {
12364         return nullptr;
12365     }
12366     if (!strcmp(name, "vkCmdEndVideoCodingKHR")) {
12367         return nullptr;
12368     }
12369     if (!strcmp(name, "vkCmdControlVideoCodingKHR")) {
12370         return nullptr;
12371     }
12372 #endif
12373 #ifdef VK_KHR_video_decode_queue
12374     if (!strcmp(name, "vkCmdDecodeVideoKHR")) {
12375         return nullptr;
12376     }
12377 #endif
12378 #ifdef VK_KHR_dynamic_rendering
12379     if (!strcmp(name, "vkCmdBeginRenderingKHR")) {
12380         return nullptr;
12381     }
12382     if (!strcmp(name, "vkCmdEndRenderingKHR")) {
12383         return nullptr;
12384     }
12385 #endif
12386 #ifdef VK_KHR_get_physical_device_properties2
12387     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR")) {
12388         return nullptr;
12389     }
12390     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR")) {
12391         return nullptr;
12392     }
12393     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR")) {
12394         return nullptr;
12395     }
12396     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR")) {
12397         return nullptr;
12398     }
12399     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")) {
12400         return nullptr;
12401     }
12402     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR")) {
12403         return nullptr;
12404     }
12405     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")) {
12406         return nullptr;
12407     }
12408 #endif
12409 #ifdef VK_KHR_device_group
12410     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR")) {
12411         return nullptr;
12412     }
12413     if (!strcmp(name, "vkCmdSetDeviceMaskKHR")) {
12414         return nullptr;
12415     }
12416     if (!strcmp(name, "vkCmdDispatchBaseKHR")) {
12417         return nullptr;
12418     }
12419 #endif
12420 #ifdef VK_KHR_maintenance1
12421     if (!strcmp(name, "vkTrimCommandPoolKHR")) {
12422         return nullptr;
12423     }
12424 #endif
12425 #ifdef VK_KHR_device_group_creation
12426     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR")) {
12427         return nullptr;
12428     }
12429 #endif
12430 #ifdef VK_KHR_external_memory_capabilities
12431     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")) {
12432         return nullptr;
12433     }
12434 #endif
12435 #ifdef VK_KHR_external_memory_win32
12436     if (!strcmp(name, "vkGetMemoryWin32HandleKHR")) {
12437         return nullptr;
12438     }
12439     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR")) {
12440         return nullptr;
12441     }
12442 #endif
12443 #ifdef VK_KHR_external_memory_fd
12444     if (!strcmp(name, "vkGetMemoryFdKHR")) {
12445         return nullptr;
12446     }
12447     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR")) {
12448         return nullptr;
12449     }
12450 #endif
12451 #ifdef VK_KHR_external_semaphore_capabilities
12452     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")) {
12453         return nullptr;
12454     }
12455 #endif
12456 #ifdef VK_KHR_external_semaphore_win32
12457     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR")) {
12458         return nullptr;
12459     }
12460     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR")) {
12461         return nullptr;
12462     }
12463 #endif
12464 #ifdef VK_KHR_external_semaphore_fd
12465     if (!strcmp(name, "vkImportSemaphoreFdKHR")) {
12466         return nullptr;
12467     }
12468     if (!strcmp(name, "vkGetSemaphoreFdKHR")) {
12469         return nullptr;
12470     }
12471 #endif
12472 #ifdef VK_KHR_push_descriptor
12473     if (!strcmp(name, "vkCmdPushDescriptorSetKHR")) {
12474         return nullptr;
12475     }
12476     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR")) {
12477         return nullptr;
12478     }
12479 #endif
12480 #ifdef VK_KHR_descriptor_update_template
12481     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR")) {
12482         return nullptr;
12483     }
12484     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR")) {
12485         return nullptr;
12486     }
12487     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR")) {
12488         return nullptr;
12489     }
12490 #endif
12491 #ifdef VK_KHR_create_renderpass2
12492     if (!strcmp(name, "vkCreateRenderPass2KHR")) {
12493         return nullptr;
12494     }
12495     if (!strcmp(name, "vkCmdBeginRenderPass2KHR")) {
12496         return nullptr;
12497     }
12498     if (!strcmp(name, "vkCmdNextSubpass2KHR")) {
12499         return nullptr;
12500     }
12501     if (!strcmp(name, "vkCmdEndRenderPass2KHR")) {
12502         return nullptr;
12503     }
12504 #endif
12505 #ifdef VK_KHR_shared_presentable_image
12506     if (!strcmp(name, "vkGetSwapchainStatusKHR")) {
12507         return nullptr;
12508     }
12509 #endif
12510 #ifdef VK_KHR_external_fence_capabilities
12511     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR")) {
12512         return nullptr;
12513     }
12514 #endif
12515 #ifdef VK_KHR_external_fence_win32
12516     if (!strcmp(name, "vkImportFenceWin32HandleKHR")) {
12517         return nullptr;
12518     }
12519     if (!strcmp(name, "vkGetFenceWin32HandleKHR")) {
12520         return nullptr;
12521     }
12522 #endif
12523 #ifdef VK_KHR_external_fence_fd
12524     if (!strcmp(name, "vkImportFenceFdKHR")) {
12525         return nullptr;
12526     }
12527     if (!strcmp(name, "vkGetFenceFdKHR")) {
12528         return nullptr;
12529     }
12530 #endif
12531 #ifdef VK_KHR_performance_query
12532     if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) {
12533         return nullptr;
12534     }
12535     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) {
12536         return nullptr;
12537     }
12538     if (!strcmp(name, "vkAcquireProfilingLockKHR")) {
12539         return nullptr;
12540     }
12541     if (!strcmp(name, "vkReleaseProfilingLockKHR")) {
12542         return nullptr;
12543     }
12544 #endif
12545 #ifdef VK_KHR_get_surface_capabilities2
12546     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR")) {
12547         return nullptr;
12548     }
12549     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR")) {
12550         return nullptr;
12551     }
12552 #endif
12553 #ifdef VK_KHR_get_display_properties2
12554     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR")) {
12555         return nullptr;
12556     }
12557     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR")) {
12558         return nullptr;
12559     }
12560     if (!strcmp(name, "vkGetDisplayModeProperties2KHR")) {
12561         return nullptr;
12562     }
12563     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR")) {
12564         return nullptr;
12565     }
12566 #endif
12567 #ifdef VK_KHR_get_memory_requirements2
12568     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR")) {
12569         return nullptr;
12570     }
12571     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR")) {
12572         return nullptr;
12573     }
12574     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR")) {
12575         return nullptr;
12576     }
12577 #endif
12578 #ifdef VK_KHR_sampler_ycbcr_conversion
12579     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR")) {
12580         return nullptr;
12581     }
12582     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR")) {
12583         return nullptr;
12584     }
12585 #endif
12586 #ifdef VK_KHR_bind_memory2
12587     if (!strcmp(name, "vkBindBufferMemory2KHR")) {
12588         return nullptr;
12589     }
12590     if (!strcmp(name, "vkBindImageMemory2KHR")) {
12591         return nullptr;
12592     }
12593 #endif
12594 #ifdef VK_KHR_maintenance3
12595     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR")) {
12596         return nullptr;
12597     }
12598 #endif
12599 #ifdef VK_KHR_draw_indirect_count
12600     if (!strcmp(name, "vkCmdDrawIndirectCountKHR")) {
12601         return nullptr;
12602     }
12603     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR")) {
12604         return nullptr;
12605     }
12606 #endif
12607 #ifdef VK_KHR_timeline_semaphore
12608     if (!strcmp(name, "vkGetSemaphoreCounterValueKHR")) {
12609         return nullptr;
12610     }
12611     if (!strcmp(name, "vkWaitSemaphoresKHR")) {
12612         return nullptr;
12613     }
12614     if (!strcmp(name, "vkSignalSemaphoreKHR")) {
12615         return nullptr;
12616     }
12617 #endif
12618 #ifdef VK_KHR_fragment_shading_rate
12619     if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR")) {
12620         return nullptr;
12621     }
12622     if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR")) {
12623         return nullptr;
12624     }
12625 #endif
12626 #ifdef VK_KHR_present_wait
12627     if (!strcmp(name, "vkWaitForPresentKHR")) {
12628         return nullptr;
12629     }
12630 #endif
12631 #ifdef VK_KHR_buffer_device_address
12632     if (!strcmp(name, "vkGetBufferDeviceAddressKHR")) {
12633         return nullptr;
12634     }
12635     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR")) {
12636         return nullptr;
12637     }
12638     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR")) {
12639         return nullptr;
12640     }
12641 #endif
12642 #ifdef VK_KHR_deferred_host_operations
12643     if (!strcmp(name, "vkCreateDeferredOperationKHR")) {
12644         return nullptr;
12645     }
12646     if (!strcmp(name, "vkDestroyDeferredOperationKHR")) {
12647         return nullptr;
12648     }
12649     if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR")) {
12650         return nullptr;
12651     }
12652     if (!strcmp(name, "vkGetDeferredOperationResultKHR")) {
12653         return nullptr;
12654     }
12655     if (!strcmp(name, "vkDeferredOperationJoinKHR")) {
12656         return nullptr;
12657     }
12658 #endif
12659 #ifdef VK_KHR_pipeline_executable_properties
12660     if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR")) {
12661         return nullptr;
12662     }
12663     if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR")) {
12664         return nullptr;
12665     }
12666     if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR")) {
12667         return nullptr;
12668     }
12669 #endif
12670 #ifdef VK_KHR_map_memory2
12671     if (!strcmp(name, "vkMapMemory2KHR")) {
12672         return nullptr;
12673     }
12674     if (!strcmp(name, "vkUnmapMemory2KHR")) {
12675         return nullptr;
12676     }
12677 #endif
12678 #ifdef VK_KHR_video_encode_queue
12679     if (!strcmp(name, "vkCmdEncodeVideoKHR")) {
12680         return nullptr;
12681     }
12682 #endif
12683 #ifdef VK_KHR_synchronization2
12684     if (!strcmp(name, "vkCmdSetEvent2KHR")) {
12685         return nullptr;
12686     }
12687     if (!strcmp(name, "vkCmdResetEvent2KHR")) {
12688         return nullptr;
12689     }
12690     if (!strcmp(name, "vkCmdWaitEvents2KHR")) {
12691         return nullptr;
12692     }
12693     if (!strcmp(name, "vkCmdPipelineBarrier2KHR")) {
12694         return nullptr;
12695     }
12696     if (!strcmp(name, "vkCmdWriteTimestamp2KHR")) {
12697         return nullptr;
12698     }
12699     if (!strcmp(name, "vkQueueSubmit2KHR")) {
12700         return nullptr;
12701     }
12702     if (!strcmp(name, "vkCmdWriteBufferMarker2AMD")) {
12703         return nullptr;
12704     }
12705     if (!strcmp(name, "vkGetQueueCheckpointData2NV")) {
12706         return nullptr;
12707     }
12708 #endif
12709 #ifdef VK_KHR_copy_commands2
12710     if (!strcmp(name, "vkCmdCopyBuffer2KHR")) {
12711         return nullptr;
12712     }
12713     if (!strcmp(name, "vkCmdCopyImage2KHR")) {
12714         return nullptr;
12715     }
12716     if (!strcmp(name, "vkCmdCopyBufferToImage2KHR")) {
12717         return nullptr;
12718     }
12719     if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR")) {
12720         return nullptr;
12721     }
12722     if (!strcmp(name, "vkCmdBlitImage2KHR")) {
12723         return nullptr;
12724     }
12725     if (!strcmp(name, "vkCmdResolveImage2KHR")) {
12726         return nullptr;
12727     }
12728 #endif
12729 #ifdef VK_KHR_ray_tracing_maintenance1
12730     if (!strcmp(name, "vkCmdTraceRaysIndirect2KHR")) {
12731         return nullptr;
12732     }
12733 #endif
12734 #ifdef VK_KHR_maintenance4
12735     if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR")) {
12736         return nullptr;
12737     }
12738     if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR")) {
12739         return nullptr;
12740     }
12741     if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR")) {
12742         return nullptr;
12743     }
12744 #endif
12745 #ifdef VK_ANDROID_native_buffer
12746     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID")) {
12747         return nullptr;
12748     }
12749     if (!strcmp(name, "vkAcquireImageANDROID")) {
12750         return nullptr;
12751     }
12752     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID")) {
12753         return nullptr;
12754     }
12755     if (!strcmp(name, "vkGetSwapchainGrallocUsage2ANDROID")) {
12756         return nullptr;
12757     }
12758 #endif
12759 #ifdef VK_EXT_debug_report
12760     if (!strcmp(name, "vkCreateDebugReportCallbackEXT")) {
12761         return nullptr;
12762     }
12763     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT")) {
12764         return nullptr;
12765     }
12766     if (!strcmp(name, "vkDebugReportMessageEXT")) {
12767         return nullptr;
12768     }
12769 #endif
12770 #ifdef VK_EXT_debug_marker
12771     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT")) {
12772         return nullptr;
12773     }
12774     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT")) {
12775         return nullptr;
12776     }
12777     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT")) {
12778         return nullptr;
12779     }
12780     if (!strcmp(name, "vkCmdDebugMarkerEndEXT")) {
12781         return nullptr;
12782     }
12783     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT")) {
12784         return nullptr;
12785     }
12786 #endif
12787 #ifdef VK_EXT_transform_feedback
12788     if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT")) {
12789         return nullptr;
12790     }
12791     if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT")) {
12792         return nullptr;
12793     }
12794     if (!strcmp(name, "vkCmdEndTransformFeedbackEXT")) {
12795         return nullptr;
12796     }
12797     if (!strcmp(name, "vkCmdBeginQueryIndexedEXT")) {
12798         return nullptr;
12799     }
12800     if (!strcmp(name, "vkCmdEndQueryIndexedEXT")) {
12801         return nullptr;
12802     }
12803     if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT")) {
12804         return nullptr;
12805     }
12806 #endif
12807 #ifdef VK_NVX_binary_import
12808     if (!strcmp(name, "vkCreateCuModuleNVX")) {
12809         return nullptr;
12810     }
12811     if (!strcmp(name, "vkCreateCuFunctionNVX")) {
12812         return nullptr;
12813     }
12814     if (!strcmp(name, "vkDestroyCuModuleNVX")) {
12815         return nullptr;
12816     }
12817     if (!strcmp(name, "vkDestroyCuFunctionNVX")) {
12818         return nullptr;
12819     }
12820     if (!strcmp(name, "vkCmdCuLaunchKernelNVX")) {
12821         return nullptr;
12822     }
12823 #endif
12824 #ifdef VK_NVX_image_view_handle
12825     if (!strcmp(name, "vkGetImageViewHandleNVX")) {
12826         return nullptr;
12827     }
12828     if (!strcmp(name, "vkGetImageViewAddressNVX")) {
12829         return nullptr;
12830     }
12831 #endif
12832 #ifdef VK_AMD_draw_indirect_count
12833     if (!strcmp(name, "vkCmdDrawIndirectCountAMD")) {
12834         return nullptr;
12835     }
12836     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD")) {
12837         return nullptr;
12838     }
12839 #endif
12840 #ifdef VK_AMD_shader_info
12841     if (!strcmp(name, "vkGetShaderInfoAMD")) {
12842         return nullptr;
12843     }
12844 #endif
12845 #ifdef VK_GGP_stream_descriptor_surface
12846     if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP")) {
12847         return nullptr;
12848     }
12849 #endif
12850 #ifdef VK_NV_external_memory_capabilities
12851     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV")) {
12852         return nullptr;
12853     }
12854 #endif
12855 #ifdef VK_NV_external_memory_win32
12856     if (!strcmp(name, "vkGetMemoryWin32HandleNV")) {
12857         return nullptr;
12858     }
12859 #endif
12860 #ifdef VK_NN_vi_surface
12861     if (!strcmp(name, "vkCreateViSurfaceNN")) {
12862         return nullptr;
12863     }
12864 #endif
12865 #ifdef VK_EXT_conditional_rendering
12866     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT")) {
12867         return nullptr;
12868     }
12869     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT")) {
12870         return nullptr;
12871     }
12872 #endif
12873 #ifdef VK_NV_clip_space_w_scaling
12874     if (!strcmp(name, "vkCmdSetViewportWScalingNV")) {
12875         return nullptr;
12876     }
12877 #endif
12878 #ifdef VK_EXT_direct_mode_display
12879     if (!strcmp(name, "vkReleaseDisplayEXT")) {
12880         return nullptr;
12881     }
12882 #endif
12883 #ifdef VK_EXT_acquire_xlib_display
12884     if (!strcmp(name, "vkAcquireXlibDisplayEXT")) {
12885         return nullptr;
12886     }
12887     if (!strcmp(name, "vkGetRandROutputDisplayEXT")) {
12888         return nullptr;
12889     }
12890 #endif
12891 #ifdef VK_EXT_display_surface_counter
12892     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT")) {
12893         return nullptr;
12894     }
12895 #endif
12896 #ifdef VK_EXT_display_control
12897     if (!strcmp(name, "vkDisplayPowerControlEXT")) {
12898         return nullptr;
12899     }
12900     if (!strcmp(name, "vkRegisterDeviceEventEXT")) {
12901         return nullptr;
12902     }
12903     if (!strcmp(name, "vkRegisterDisplayEventEXT")) {
12904         return nullptr;
12905     }
12906     if (!strcmp(name, "vkGetSwapchainCounterEXT")) {
12907         return nullptr;
12908     }
12909 #endif
12910 #ifdef VK_GOOGLE_display_timing
12911     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE")) {
12912         return nullptr;
12913     }
12914     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE")) {
12915         return nullptr;
12916     }
12917 #endif
12918 #ifdef VK_EXT_discard_rectangles
12919     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT")) {
12920         return nullptr;
12921     }
12922     if (!strcmp(name, "vkCmdSetDiscardRectangleEnableEXT")) {
12923         return nullptr;
12924     }
12925     if (!strcmp(name, "vkCmdSetDiscardRectangleModeEXT")) {
12926         return nullptr;
12927     }
12928 #endif
12929 #ifdef VK_EXT_hdr_metadata
12930     if (!strcmp(name, "vkSetHdrMetadataEXT")) {
12931         return nullptr;
12932     }
12933 #endif
12934 #ifdef VK_MVK_ios_surface
12935     if (!strcmp(name, "vkCreateIOSSurfaceMVK")) {
12936         return nullptr;
12937     }
12938 #endif
12939 #ifdef VK_MVK_macos_surface
12940     if (!strcmp(name, "vkCreateMacOSSurfaceMVK")) {
12941         return nullptr;
12942     }
12943 #endif
12944 #ifdef VK_EXT_debug_utils
12945     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT")) {
12946         return nullptr;
12947     }
12948     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT")) {
12949         return nullptr;
12950     }
12951     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT")) {
12952         return nullptr;
12953     }
12954     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT")) {
12955         return nullptr;
12956     }
12957     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT")) {
12958         return nullptr;
12959     }
12960     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT")) {
12961         return nullptr;
12962     }
12963     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT")) {
12964         return nullptr;
12965     }
12966     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT")) {
12967         return nullptr;
12968     }
12969     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT")) {
12970         return nullptr;
12971     }
12972     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT")) {
12973         return nullptr;
12974     }
12975     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT")) {
12976         return nullptr;
12977     }
12978 #endif
12979 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
12980     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID")) {
12981         return nullptr;
12982     }
12983     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID")) {
12984         return nullptr;
12985     }
12986 #endif
12987 #ifdef VK_EXT_sample_locations
12988     if (!strcmp(name, "vkCmdSetSampleLocationsEXT")) {
12989         return nullptr;
12990     }
12991     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT")) {
12992         return nullptr;
12993     }
12994 #endif
12995 #ifdef VK_EXT_image_drm_format_modifier
12996     if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT")) {
12997         return nullptr;
12998     }
12999 #endif
13000 #ifdef VK_EXT_validation_cache
13001     if (!strcmp(name, "vkCreateValidationCacheEXT")) {
13002         return nullptr;
13003     }
13004     if (!strcmp(name, "vkDestroyValidationCacheEXT")) {
13005         return nullptr;
13006     }
13007     if (!strcmp(name, "vkMergeValidationCachesEXT")) {
13008         return nullptr;
13009     }
13010     if (!strcmp(name, "vkGetValidationCacheDataEXT")) {
13011         return nullptr;
13012     }
13013 #endif
13014 #ifdef VK_NV_shading_rate_image
13015     if (!strcmp(name, "vkCmdBindShadingRateImageNV")) {
13016         return nullptr;
13017     }
13018     if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV")) {
13019         return nullptr;
13020     }
13021     if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV")) {
13022         return nullptr;
13023     }
13024 #endif
13025 #ifdef VK_NV_ray_tracing
13026     if (!strcmp(name, "vkCreateAccelerationStructureNV")) {
13027         return nullptr;
13028     }
13029     if (!strcmp(name, "vkDestroyAccelerationStructureNV")) {
13030         return nullptr;
13031     }
13032     if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV")) {
13033         return nullptr;
13034     }
13035     if (!strcmp(name, "vkBindAccelerationStructureMemoryNV")) {
13036         return nullptr;
13037     }
13038     if (!strcmp(name, "vkCmdBuildAccelerationStructureNV")) {
13039         return nullptr;
13040     }
13041     if (!strcmp(name, "vkCmdCopyAccelerationStructureNV")) {
13042         return nullptr;
13043     }
13044     if (!strcmp(name, "vkCmdTraceRaysNV")) {
13045         return nullptr;
13046     }
13047     if (!strcmp(name, "vkCreateRayTracingPipelinesNV")) {
13048         return nullptr;
13049     }
13050     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR")) {
13051         return nullptr;
13052     }
13053     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV")) {
13054         return nullptr;
13055     }
13056     if (!strcmp(name, "vkGetAccelerationStructureHandleNV")) {
13057         return nullptr;
13058     }
13059     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV")) {
13060         return nullptr;
13061     }
13062     if (!strcmp(name, "vkCompileDeferredNV")) {
13063         return nullptr;
13064     }
13065 #endif
13066 #ifdef VK_EXT_external_memory_host
13067     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT")) {
13068         return nullptr;
13069     }
13070 #endif
13071 #ifdef VK_AMD_buffer_marker
13072     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD")) {
13073         return nullptr;
13074     }
13075 #endif
13076 #ifdef VK_EXT_calibrated_timestamps
13077     if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT")) {
13078         return nullptr;
13079     }
13080     if (!strcmp(name, "vkGetCalibratedTimestampsEXT")) {
13081         return nullptr;
13082     }
13083 #endif
13084 #ifdef VK_NV_mesh_shader
13085     if (!strcmp(name, "vkCmdDrawMeshTasksNV")) {
13086         return nullptr;
13087     }
13088     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV")) {
13089         return nullptr;
13090     }
13091     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV")) {
13092         return nullptr;
13093     }
13094 #endif
13095 #ifdef VK_NV_scissor_exclusive
13096     if (!strcmp(name, "vkCmdSetExclusiveScissorEnableNV")) {
13097         return nullptr;
13098     }
13099     if (!strcmp(name, "vkCmdSetExclusiveScissorNV")) {
13100         return nullptr;
13101     }
13102 #endif
13103 #ifdef VK_NV_device_diagnostic_checkpoints
13104     if (!strcmp(name, "vkCmdSetCheckpointNV")) {
13105         return nullptr;
13106     }
13107     if (!strcmp(name, "vkGetQueueCheckpointDataNV")) {
13108         return nullptr;
13109     }
13110 #endif
13111 #ifdef VK_INTEL_performance_query
13112     if (!strcmp(name, "vkInitializePerformanceApiINTEL")) {
13113         return nullptr;
13114     }
13115     if (!strcmp(name, "vkUninitializePerformanceApiINTEL")) {
13116         return nullptr;
13117     }
13118     if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL")) {
13119         return nullptr;
13120     }
13121     if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL")) {
13122         return nullptr;
13123     }
13124     if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL")) {
13125         return nullptr;
13126     }
13127     if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL")) {
13128         return nullptr;
13129     }
13130     if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL")) {
13131         return nullptr;
13132     }
13133     if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL")) {
13134         return nullptr;
13135     }
13136     if (!strcmp(name, "vkGetPerformanceParameterINTEL")) {
13137         return nullptr;
13138     }
13139 #endif
13140 #ifdef VK_AMD_display_native_hdr
13141     if (!strcmp(name, "vkSetLocalDimmingAMD")) {
13142         return nullptr;
13143     }
13144 #endif
13145 #ifdef VK_FUCHSIA_imagepipe_surface
13146     if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA")) {
13147         return nullptr;
13148     }
13149 #endif
13150 #ifdef VK_EXT_metal_surface
13151     if (!strcmp(name, "vkCreateMetalSurfaceEXT")) {
13152         return nullptr;
13153     }
13154 #endif
13155 #ifdef VK_EXT_buffer_device_address
13156     if (!strcmp(name, "vkGetBufferDeviceAddressEXT")) {
13157         return nullptr;
13158     }
13159 #endif
13160 #ifdef VK_EXT_tooling_info
13161     if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT")) {
13162         return nullptr;
13163     }
13164 #endif
13165 #ifdef VK_NV_cooperative_matrix
13166     if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV")) {
13167         return nullptr;
13168     }
13169 #endif
13170 #ifdef VK_NV_coverage_reduction_mode
13171     if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV")) {
13172         return nullptr;
13173     }
13174 #endif
13175 #ifdef VK_EXT_full_screen_exclusive
13176     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT")) {
13177         return nullptr;
13178     }
13179     if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT")) {
13180         return nullptr;
13181     }
13182     if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT")) {
13183         return nullptr;
13184     }
13185     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT")) {
13186         return nullptr;
13187     }
13188 #endif
13189 #ifdef VK_EXT_headless_surface
13190     if (!strcmp(name, "vkCreateHeadlessSurfaceEXT")) {
13191         return nullptr;
13192     }
13193 #endif
13194 #ifdef VK_EXT_line_rasterization
13195     if (!strcmp(name, "vkCmdSetLineStippleEXT")) {
13196         return nullptr;
13197     }
13198 #endif
13199 #ifdef VK_EXT_host_query_reset
13200     if (!strcmp(name, "vkResetQueryPoolEXT")) {
13201         return nullptr;
13202     }
13203 #endif
13204 #ifdef VK_EXT_extended_dynamic_state
13205     if (!strcmp(name, "vkCmdSetCullModeEXT")) {
13206         return nullptr;
13207     }
13208     if (!strcmp(name, "vkCmdSetFrontFaceEXT")) {
13209         return nullptr;
13210     }
13211     if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT")) {
13212         return nullptr;
13213     }
13214     if (!strcmp(name, "vkCmdSetViewportWithCountEXT")) {
13215         return nullptr;
13216     }
13217     if (!strcmp(name, "vkCmdSetScissorWithCountEXT")) {
13218         return nullptr;
13219     }
13220     if (!strcmp(name, "vkCmdBindVertexBuffers2EXT")) {
13221         return nullptr;
13222     }
13223     if (!strcmp(name, "vkCmdSetDepthTestEnableEXT")) {
13224         return nullptr;
13225     }
13226     if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT")) {
13227         return nullptr;
13228     }
13229     if (!strcmp(name, "vkCmdSetDepthCompareOpEXT")) {
13230         return nullptr;
13231     }
13232     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT")) {
13233         return nullptr;
13234     }
13235     if (!strcmp(name, "vkCmdSetStencilTestEnableEXT")) {
13236         return nullptr;
13237     }
13238     if (!strcmp(name, "vkCmdSetStencilOpEXT")) {
13239         return nullptr;
13240     }
13241 #endif
13242 #ifdef VK_EXT_swapchain_maintenance1
13243     if (!strcmp(name, "vkReleaseSwapchainImagesEXT")) {
13244         return nullptr;
13245     }
13246 #endif
13247 #ifdef VK_NV_device_generated_commands
13248     if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV")) {
13249         return nullptr;
13250     }
13251     if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV")) {
13252         return nullptr;
13253     }
13254     if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV")) {
13255         return nullptr;
13256     }
13257     if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV")) {
13258         return nullptr;
13259     }
13260     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV")) {
13261         return nullptr;
13262     }
13263     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV")) {
13264         return nullptr;
13265     }
13266 #endif
13267 #ifdef VK_EXT_acquire_drm_display
13268     if (!strcmp(name, "vkAcquireDrmDisplayEXT")) {
13269         return nullptr;
13270     }
13271     if (!strcmp(name, "vkGetDrmDisplayEXT")) {
13272         return nullptr;
13273     }
13274 #endif
13275 #ifdef VK_EXT_private_data
13276     if (!strcmp(name, "vkCreatePrivateDataSlotEXT")) {
13277         return nullptr;
13278     }
13279     if (!strcmp(name, "vkDestroyPrivateDataSlotEXT")) {
13280         return nullptr;
13281     }
13282     if (!strcmp(name, "vkSetPrivateDataEXT")) {
13283         return nullptr;
13284     }
13285     if (!strcmp(name, "vkGetPrivateDataEXT")) {
13286         return nullptr;
13287     }
13288 #endif
13289 #ifdef VK_EXT_metal_objects
13290     if (!strcmp(name, "vkExportMetalObjectsEXT")) {
13291         return nullptr;
13292     }
13293 #endif
13294 #ifdef VK_EXT_descriptor_buffer
13295     if (!strcmp(name, "vkGetDescriptorSetLayoutSizeEXT")) {
13296         return nullptr;
13297     }
13298     if (!strcmp(name, "vkGetDescriptorSetLayoutBindingOffsetEXT")) {
13299         return nullptr;
13300     }
13301     if (!strcmp(name, "vkGetDescriptorEXT")) {
13302         return nullptr;
13303     }
13304     if (!strcmp(name, "vkCmdBindDescriptorBuffersEXT")) {
13305         return nullptr;
13306     }
13307     if (!strcmp(name, "vkCmdSetDescriptorBufferOffsetsEXT")) {
13308         return nullptr;
13309     }
13310     if (!strcmp(name, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT")) {
13311         return nullptr;
13312     }
13313     if (!strcmp(name, "vkGetBufferOpaqueCaptureDescriptorDataEXT")) {
13314         return nullptr;
13315     }
13316     if (!strcmp(name, "vkGetImageOpaqueCaptureDescriptorDataEXT")) {
13317         return nullptr;
13318     }
13319     if (!strcmp(name, "vkGetImageViewOpaqueCaptureDescriptorDataEXT")) {
13320         return nullptr;
13321     }
13322     if (!strcmp(name, "vkGetSamplerOpaqueCaptureDescriptorDataEXT")) {
13323         return nullptr;
13324     }
13325     if (!strcmp(name, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT")) {
13326         return nullptr;
13327     }
13328 #endif
13329 #ifdef VK_NV_fragment_shading_rate_enums
13330     if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV")) {
13331         return nullptr;
13332     }
13333 #endif
13334 #ifdef VK_EXT_image_compression_control
13335     if (!strcmp(name, "vkGetImageSubresourceLayout2EXT")) {
13336         return nullptr;
13337     }
13338 #endif
13339 #ifdef VK_EXT_device_fault
13340     if (!strcmp(name, "vkGetDeviceFaultInfoEXT")) {
13341         return nullptr;
13342     }
13343 #endif
13344 #ifdef VK_NV_acquire_winrt_display
13345     if (!strcmp(name, "vkAcquireWinrtDisplayNV")) {
13346         return nullptr;
13347     }
13348     if (!strcmp(name, "vkGetWinrtDisplayNV")) {
13349         return nullptr;
13350     }
13351 #endif
13352 #ifdef VK_EXT_directfb_surface
13353     if (!strcmp(name, "vkCreateDirectFBSurfaceEXT")) {
13354         return nullptr;
13355     }
13356     if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT")) {
13357         return nullptr;
13358     }
13359 #endif
13360 #ifdef VK_EXT_vertex_input_dynamic_state
13361     if (!strcmp(name, "vkCmdSetVertexInputEXT")) {
13362         return nullptr;
13363     }
13364 #endif
13365 #ifdef VK_FUCHSIA_external_memory
13366     if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA")) {
13367         return nullptr;
13368     }
13369     if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA")) {
13370         return nullptr;
13371     }
13372 #endif
13373 #ifdef VK_FUCHSIA_external_semaphore
13374     if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA")) {
13375         return nullptr;
13376     }
13377     if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA")) {
13378         return nullptr;
13379     }
13380 #endif
13381 #ifdef VK_FUCHSIA_buffer_collection
13382     if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA")) {
13383         return nullptr;
13384     }
13385     if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA")) {
13386         return nullptr;
13387     }
13388     if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA")) {
13389         return nullptr;
13390     }
13391     if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA")) {
13392         return nullptr;
13393     }
13394     if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA")) {
13395         return nullptr;
13396     }
13397 #endif
13398 #ifdef VK_HUAWEI_subpass_shading
13399     if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI")) {
13400         return nullptr;
13401     }
13402     if (!strcmp(name, "vkCmdSubpassShadingHUAWEI")) {
13403         return nullptr;
13404     }
13405 #endif
13406 #ifdef VK_HUAWEI_invocation_mask
13407     if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI")) {
13408         return nullptr;
13409     }
13410 #endif
13411 #ifdef VK_NV_external_memory_rdma
13412     if (!strcmp(name, "vkGetMemoryRemoteAddressNV")) {
13413         return nullptr;
13414     }
13415 #endif
13416 #ifdef VK_EXT_pipeline_properties
13417     if (!strcmp(name, "vkGetPipelinePropertiesEXT")) {
13418         return nullptr;
13419     }
13420 #endif
13421 #ifdef VK_EXT_extended_dynamic_state2
13422     if (!strcmp(name, "vkCmdSetPatchControlPointsEXT")) {
13423         return nullptr;
13424     }
13425     if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT")) {
13426         return nullptr;
13427     }
13428     if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT")) {
13429         return nullptr;
13430     }
13431     if (!strcmp(name, "vkCmdSetLogicOpEXT")) {
13432         return nullptr;
13433     }
13434     if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT")) {
13435         return nullptr;
13436     }
13437 #endif
13438 #ifdef VK_QNX_screen_surface
13439     if (!strcmp(name, "vkCreateScreenSurfaceQNX")) {
13440         return nullptr;
13441     }
13442     if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX")) {
13443         return nullptr;
13444     }
13445 #endif
13446 #ifdef VK_EXT_color_write_enable
13447     if (!strcmp(name, "vkCmdSetColorWriteEnableEXT")) {
13448         return nullptr;
13449     }
13450 #endif
13451 #ifdef VK_GOOGLE_gfxstream
13452     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE")) {
13453         return nullptr;
13454     }
13455     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE")) {
13456         return nullptr;
13457     }
13458     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE")) {
13459         return nullptr;
13460     }
13461     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE")) {
13462         return nullptr;
13463     }
13464     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE")) {
13465         return nullptr;
13466     }
13467     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE")) {
13468         return nullptr;
13469     }
13470     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE")) {
13471         return nullptr;
13472     }
13473     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE")) {
13474         return nullptr;
13475     }
13476     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE")) {
13477         return nullptr;
13478     }
13479     if (!strcmp(name, "vkFreeMemorySyncGOOGLE")) {
13480         return nullptr;
13481     }
13482     if (!strcmp(name, "vkQueueHostSyncGOOGLE")) {
13483         return nullptr;
13484     }
13485     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE")) {
13486         return nullptr;
13487     }
13488     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE")) {
13489         return nullptr;
13490     }
13491     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE")) {
13492         return nullptr;
13493     }
13494     if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE")) {
13495         return nullptr;
13496     }
13497     if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE")) {
13498         return nullptr;
13499     }
13500     if (!strcmp(name, "vkQueueFlushCommandsGOOGLE")) {
13501         return nullptr;
13502     }
13503     if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE")) {
13504         return nullptr;
13505     }
13506     if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE")) {
13507         return nullptr;
13508     }
13509     if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE")) {
13510         return nullptr;
13511     }
13512     if (!strcmp(name, "vkQueueFlushCommandsFromAuxMemoryGOOGLE")) {
13513         return nullptr;
13514     }
13515     if (!strcmp(name, "vkGetBlobGOOGLE")) {
13516         return nullptr;
13517     }
13518     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE")) {
13519         return nullptr;
13520     }
13521     if (!strcmp(name, "vkQueueSubmitAsync2GOOGLE")) {
13522         return nullptr;
13523     }
13524 #endif
13525 #ifdef VK_EXT_multi_draw
13526     if (!strcmp(name, "vkCmdDrawMultiEXT")) {
13527         return nullptr;
13528     }
13529     if (!strcmp(name, "vkCmdDrawMultiIndexedEXT")) {
13530         return nullptr;
13531     }
13532 #endif
13533 #ifdef VK_EXT_opacity_micromap
13534     if (!strcmp(name, "vkCreateMicromapEXT")) {
13535         return nullptr;
13536     }
13537     if (!strcmp(name, "vkDestroyMicromapEXT")) {
13538         return nullptr;
13539     }
13540     if (!strcmp(name, "vkCmdBuildMicromapsEXT")) {
13541         return nullptr;
13542     }
13543     if (!strcmp(name, "vkBuildMicromapsEXT")) {
13544         return nullptr;
13545     }
13546     if (!strcmp(name, "vkCopyMicromapEXT")) {
13547         return nullptr;
13548     }
13549     if (!strcmp(name, "vkCopyMicromapToMemoryEXT")) {
13550         return nullptr;
13551     }
13552     if (!strcmp(name, "vkCopyMemoryToMicromapEXT")) {
13553         return nullptr;
13554     }
13555     if (!strcmp(name, "vkWriteMicromapsPropertiesEXT")) {
13556         return nullptr;
13557     }
13558     if (!strcmp(name, "vkCmdCopyMicromapEXT")) {
13559         return nullptr;
13560     }
13561     if (!strcmp(name, "vkCmdCopyMicromapToMemoryEXT")) {
13562         return nullptr;
13563     }
13564     if (!strcmp(name, "vkCmdCopyMemoryToMicromapEXT")) {
13565         return nullptr;
13566     }
13567     if (!strcmp(name, "vkCmdWriteMicromapsPropertiesEXT")) {
13568         return nullptr;
13569     }
13570     if (!strcmp(name, "vkGetDeviceMicromapCompatibilityEXT")) {
13571         return nullptr;
13572     }
13573     if (!strcmp(name, "vkGetMicromapBuildSizesEXT")) {
13574         return nullptr;
13575     }
13576 #endif
13577 #ifdef VK_HUAWEI_cluster_culling_shader
13578     if (!strcmp(name, "vkCmdDrawClusterHUAWEI")) {
13579         return nullptr;
13580     }
13581     if (!strcmp(name, "vkCmdDrawClusterIndirectHUAWEI")) {
13582         return nullptr;
13583     }
13584 #endif
13585 #ifdef VK_EXT_pageable_device_local_memory
13586     if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT")) {
13587         return nullptr;
13588     }
13589 #endif
13590 #ifdef VK_VALVE_descriptor_set_host_mapping
13591     if (!strcmp(name, "vkGetDescriptorSetLayoutHostMappingInfoVALVE")) {
13592         return nullptr;
13593     }
13594     if (!strcmp(name, "vkGetDescriptorSetHostMappingVALVE")) {
13595         return nullptr;
13596     }
13597 #endif
13598 #ifdef VK_NV_copy_memory_indirect
13599     if (!strcmp(name, "vkCmdCopyMemoryIndirectNV")) {
13600         return nullptr;
13601     }
13602     if (!strcmp(name, "vkCmdCopyMemoryToImageIndirectNV")) {
13603         return nullptr;
13604     }
13605 #endif
13606 #ifdef VK_NV_memory_decompression
13607     if (!strcmp(name, "vkCmdDecompressMemoryNV")) {
13608         return nullptr;
13609     }
13610     if (!strcmp(name, "vkCmdDecompressMemoryIndirectCountNV")) {
13611         return nullptr;
13612     }
13613 #endif
13614 #ifdef VK_EXT_extended_dynamic_state3
13615     if (!strcmp(name, "vkCmdSetTessellationDomainOriginEXT")) {
13616         return nullptr;
13617     }
13618     if (!strcmp(name, "vkCmdSetDepthClampEnableEXT")) {
13619         return nullptr;
13620     }
13621     if (!strcmp(name, "vkCmdSetPolygonModeEXT")) {
13622         return nullptr;
13623     }
13624     if (!strcmp(name, "vkCmdSetRasterizationSamplesEXT")) {
13625         return nullptr;
13626     }
13627     if (!strcmp(name, "vkCmdSetSampleMaskEXT")) {
13628         return nullptr;
13629     }
13630     if (!strcmp(name, "vkCmdSetAlphaToCoverageEnableEXT")) {
13631         return nullptr;
13632     }
13633     if (!strcmp(name, "vkCmdSetAlphaToOneEnableEXT")) {
13634         return nullptr;
13635     }
13636     if (!strcmp(name, "vkCmdSetLogicOpEnableEXT")) {
13637         return nullptr;
13638     }
13639     if (!strcmp(name, "vkCmdSetColorBlendEnableEXT")) {
13640         return nullptr;
13641     }
13642     if (!strcmp(name, "vkCmdSetColorBlendEquationEXT")) {
13643         return nullptr;
13644     }
13645     if (!strcmp(name, "vkCmdSetColorWriteMaskEXT")) {
13646         return nullptr;
13647     }
13648     if (!strcmp(name, "vkCmdSetRasterizationStreamEXT")) {
13649         return nullptr;
13650     }
13651     if (!strcmp(name, "vkCmdSetConservativeRasterizationModeEXT")) {
13652         return nullptr;
13653     }
13654     if (!strcmp(name, "vkCmdSetExtraPrimitiveOverestimationSizeEXT")) {
13655         return nullptr;
13656     }
13657     if (!strcmp(name, "vkCmdSetDepthClipEnableEXT")) {
13658         return nullptr;
13659     }
13660     if (!strcmp(name, "vkCmdSetSampleLocationsEnableEXT")) {
13661         return nullptr;
13662     }
13663     if (!strcmp(name, "vkCmdSetColorBlendAdvancedEXT")) {
13664         return nullptr;
13665     }
13666     if (!strcmp(name, "vkCmdSetProvokingVertexModeEXT")) {
13667         return nullptr;
13668     }
13669     if (!strcmp(name, "vkCmdSetLineRasterizationModeEXT")) {
13670         return nullptr;
13671     }
13672     if (!strcmp(name, "vkCmdSetLineStippleEnableEXT")) {
13673         return nullptr;
13674     }
13675     if (!strcmp(name, "vkCmdSetDepthClipNegativeOneToOneEXT")) {
13676         return nullptr;
13677     }
13678     if (!strcmp(name, "vkCmdSetViewportWScalingEnableNV")) {
13679         return nullptr;
13680     }
13681     if (!strcmp(name, "vkCmdSetViewportSwizzleNV")) {
13682         return nullptr;
13683     }
13684     if (!strcmp(name, "vkCmdSetCoverageToColorEnableNV")) {
13685         return nullptr;
13686     }
13687     if (!strcmp(name, "vkCmdSetCoverageToColorLocationNV")) {
13688         return nullptr;
13689     }
13690     if (!strcmp(name, "vkCmdSetCoverageModulationModeNV")) {
13691         return nullptr;
13692     }
13693     if (!strcmp(name, "vkCmdSetCoverageModulationTableEnableNV")) {
13694         return nullptr;
13695     }
13696     if (!strcmp(name, "vkCmdSetCoverageModulationTableNV")) {
13697         return nullptr;
13698     }
13699     if (!strcmp(name, "vkCmdSetShadingRateImageEnableNV")) {
13700         return nullptr;
13701     }
13702     if (!strcmp(name, "vkCmdSetRepresentativeFragmentTestEnableNV")) {
13703         return nullptr;
13704     }
13705     if (!strcmp(name, "vkCmdSetCoverageReductionModeNV")) {
13706         return nullptr;
13707     }
13708 #endif
13709 #ifdef VK_EXT_shader_module_identifier
13710     if (!strcmp(name, "vkGetShaderModuleIdentifierEXT")) {
13711         return nullptr;
13712     }
13713     if (!strcmp(name, "vkGetShaderModuleCreateInfoIdentifierEXT")) {
13714         return nullptr;
13715     }
13716 #endif
13717 #ifdef VK_NV_optical_flow
13718     if (!strcmp(name, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV")) {
13719         return nullptr;
13720     }
13721     if (!strcmp(name, "vkCreateOpticalFlowSessionNV")) {
13722         return nullptr;
13723     }
13724     if (!strcmp(name, "vkDestroyOpticalFlowSessionNV")) {
13725         return nullptr;
13726     }
13727     if (!strcmp(name, "vkBindOpticalFlowSessionImageNV")) {
13728         return nullptr;
13729     }
13730     if (!strcmp(name, "vkCmdOpticalFlowExecuteNV")) {
13731         return nullptr;
13732     }
13733 #endif
13734 #ifdef VK_EXT_shader_object
13735     if (!strcmp(name, "vkCreateShadersEXT")) {
13736         return nullptr;
13737     }
13738     if (!strcmp(name, "vkDestroyShaderEXT")) {
13739         return nullptr;
13740     }
13741     if (!strcmp(name, "vkGetShaderBinaryDataEXT")) {
13742         return nullptr;
13743     }
13744     if (!strcmp(name, "vkCmdBindShadersEXT")) {
13745         return nullptr;
13746     }
13747 #endif
13748 #ifdef VK_QCOM_tile_properties
13749     if (!strcmp(name, "vkGetFramebufferTilePropertiesQCOM")) {
13750         return nullptr;
13751     }
13752     if (!strcmp(name, "vkGetDynamicRenderingTilePropertiesQCOM")) {
13753         return nullptr;
13754     }
13755 #endif
13756 #ifdef VK_EXT_attachment_feedback_loop_dynamic_state
13757     if (!strcmp(name, "vkCmdSetAttachmentFeedbackLoopEnableEXT")) {
13758         return nullptr;
13759     }
13760 #endif
13761 #ifdef VK_KHR_acceleration_structure
13762     if (!strcmp(name, "vkCreateAccelerationStructureKHR")) {
13763         return nullptr;
13764     }
13765     if (!strcmp(name, "vkDestroyAccelerationStructureKHR")) {
13766         return nullptr;
13767     }
13768     if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR")) {
13769         return nullptr;
13770     }
13771     if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR")) {
13772         return nullptr;
13773     }
13774     if (!strcmp(name, "vkBuildAccelerationStructuresKHR")) {
13775         return nullptr;
13776     }
13777     if (!strcmp(name, "vkCopyAccelerationStructureKHR")) {
13778         return nullptr;
13779     }
13780     if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR")) {
13781         return nullptr;
13782     }
13783     if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR")) {
13784         return nullptr;
13785     }
13786     if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR")) {
13787         return nullptr;
13788     }
13789     if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR")) {
13790         return nullptr;
13791     }
13792     if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR")) {
13793         return nullptr;
13794     }
13795     if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR")) {
13796         return nullptr;
13797     }
13798     if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR")) {
13799         return nullptr;
13800     }
13801     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR")) {
13802         return nullptr;
13803     }
13804     if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR")) {
13805         return nullptr;
13806     }
13807     if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR")) {
13808         return nullptr;
13809     }
13810 #endif
13811 #ifdef VK_KHR_ray_tracing_pipeline
13812     if (!strcmp(name, "vkCmdTraceRaysKHR")) {
13813         return nullptr;
13814     }
13815     if (!strcmp(name, "vkCreateRayTracingPipelinesKHR")) {
13816         return nullptr;
13817     }
13818     if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR")) {
13819         return nullptr;
13820     }
13821     if (!strcmp(name, "vkCmdTraceRaysIndirectKHR")) {
13822         return nullptr;
13823     }
13824     if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR")) {
13825         return nullptr;
13826     }
13827     if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR")) {
13828         return nullptr;
13829     }
13830 #endif
13831 #ifdef VK_EXT_mesh_shader
13832     if (!strcmp(name, "vkCmdDrawMeshTasksEXT")) {
13833         return nullptr;
13834     }
13835     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectEXT")) {
13836         return nullptr;
13837     }
13838     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountEXT")) {
13839         return nullptr;
13840     }
13841 #endif
13842     return nullptr;
13843 }
goldfish_vulkan_get_instance_proc_address(VkInstance instance,const char * name)13844 void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name) {
13845     auto resources = ResourceTracker::get();
13846     bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
13847     bool has1_2OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_2;
13848     bool has1_3OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_3;
13849 #ifdef VK_VERSION_1_0
13850     if (!strcmp(name, "vkCreateInstance")) {
13851         return (void*)entry_vkCreateInstance;
13852     }
13853     if (!strcmp(name, "vkDestroyInstance")) {
13854         return (void*)entry_vkDestroyInstance;
13855     }
13856     if (!strcmp(name, "vkEnumeratePhysicalDevices")) {
13857         return (void*)entry_vkEnumeratePhysicalDevices;
13858     }
13859     if (!strcmp(name, "vkGetPhysicalDeviceFeatures")) {
13860         return (void*)entry_vkGetPhysicalDeviceFeatures;
13861     }
13862     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties")) {
13863         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
13864     }
13865     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties")) {
13866         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
13867     }
13868     if (!strcmp(name, "vkGetPhysicalDeviceProperties")) {
13869         return (void*)entry_vkGetPhysicalDeviceProperties;
13870     }
13871     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties")) {
13872         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
13873     }
13874     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties")) {
13875         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
13876     }
13877     if (!strcmp(name, "vkGetInstanceProcAddr")) {
13878         return (void*)entry_vkGetInstanceProcAddr;
13879     }
13880     if (!strcmp(name, "vkGetDeviceProcAddr")) {
13881         return (void*)entry_vkGetDeviceProcAddr;
13882     }
13883     if (!strcmp(name, "vkCreateDevice")) {
13884         return (void*)entry_vkCreateDevice;
13885     }
13886     if (!strcmp(name, "vkDestroyDevice")) {
13887         return (void*)entry_vkDestroyDevice;
13888     }
13889     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties")) {
13890         return (void*)entry_vkEnumerateInstanceExtensionProperties;
13891     }
13892     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties")) {
13893         return (void*)entry_vkEnumerateDeviceExtensionProperties;
13894     }
13895     if (!strcmp(name, "vkEnumerateInstanceLayerProperties")) {
13896         return (void*)entry_vkEnumerateInstanceLayerProperties;
13897     }
13898     if (!strcmp(name, "vkEnumerateDeviceLayerProperties")) {
13899         return (void*)entry_vkEnumerateDeviceLayerProperties;
13900     }
13901     if (!strcmp(name, "vkGetDeviceQueue")) {
13902         return (void*)entry_vkGetDeviceQueue;
13903     }
13904     if (!strcmp(name, "vkQueueSubmit")) {
13905         return (void*)entry_vkQueueSubmit;
13906     }
13907     if (!strcmp(name, "vkQueueWaitIdle")) {
13908         return (void*)entry_vkQueueWaitIdle;
13909     }
13910     if (!strcmp(name, "vkDeviceWaitIdle")) {
13911         return (void*)entry_vkDeviceWaitIdle;
13912     }
13913     if (!strcmp(name, "vkAllocateMemory")) {
13914         return (void*)entry_vkAllocateMemory;
13915     }
13916     if (!strcmp(name, "vkFreeMemory")) {
13917         return (void*)entry_vkFreeMemory;
13918     }
13919     if (!strcmp(name, "vkMapMemory")) {
13920         return (void*)entry_vkMapMemory;
13921     }
13922     if (!strcmp(name, "vkUnmapMemory")) {
13923         return (void*)entry_vkUnmapMemory;
13924     }
13925     if (!strcmp(name, "vkFlushMappedMemoryRanges")) {
13926         return (void*)entry_vkFlushMappedMemoryRanges;
13927     }
13928     if (!strcmp(name, "vkInvalidateMappedMemoryRanges")) {
13929         return (void*)entry_vkInvalidateMappedMemoryRanges;
13930     }
13931     if (!strcmp(name, "vkGetDeviceMemoryCommitment")) {
13932         return (void*)entry_vkGetDeviceMemoryCommitment;
13933     }
13934     if (!strcmp(name, "vkBindBufferMemory")) {
13935         return (void*)entry_vkBindBufferMemory;
13936     }
13937     if (!strcmp(name, "vkBindImageMemory")) {
13938         return (void*)entry_vkBindImageMemory;
13939     }
13940     if (!strcmp(name, "vkGetBufferMemoryRequirements")) {
13941         return (void*)entry_vkGetBufferMemoryRequirements;
13942     }
13943     if (!strcmp(name, "vkGetImageMemoryRequirements")) {
13944         return (void*)entry_vkGetImageMemoryRequirements;
13945     }
13946     if (!strcmp(name, "vkGetImageSparseMemoryRequirements")) {
13947         return (void*)entry_vkGetImageSparseMemoryRequirements;
13948     }
13949     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties")) {
13950         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
13951     }
13952     if (!strcmp(name, "vkQueueBindSparse")) {
13953         return (void*)entry_vkQueueBindSparse;
13954     }
13955     if (!strcmp(name, "vkCreateFence")) {
13956         return (void*)entry_vkCreateFence;
13957     }
13958     if (!strcmp(name, "vkDestroyFence")) {
13959         return (void*)entry_vkDestroyFence;
13960     }
13961     if (!strcmp(name, "vkResetFences")) {
13962         return (void*)entry_vkResetFences;
13963     }
13964     if (!strcmp(name, "vkGetFenceStatus")) {
13965         return (void*)entry_vkGetFenceStatus;
13966     }
13967     if (!strcmp(name, "vkWaitForFences")) {
13968         return (void*)entry_vkWaitForFences;
13969     }
13970     if (!strcmp(name, "vkCreateSemaphore")) {
13971         return (void*)entry_vkCreateSemaphore;
13972     }
13973     if (!strcmp(name, "vkDestroySemaphore")) {
13974         return (void*)entry_vkDestroySemaphore;
13975     }
13976     if (!strcmp(name, "vkCreateEvent")) {
13977         return (void*)entry_vkCreateEvent;
13978     }
13979     if (!strcmp(name, "vkDestroyEvent")) {
13980         return (void*)entry_vkDestroyEvent;
13981     }
13982     if (!strcmp(name, "vkGetEventStatus")) {
13983         return (void*)entry_vkGetEventStatus;
13984     }
13985     if (!strcmp(name, "vkSetEvent")) {
13986         return (void*)entry_vkSetEvent;
13987     }
13988     if (!strcmp(name, "vkResetEvent")) {
13989         return (void*)entry_vkResetEvent;
13990     }
13991     if (!strcmp(name, "vkCreateQueryPool")) {
13992         return (void*)entry_vkCreateQueryPool;
13993     }
13994     if (!strcmp(name, "vkDestroyQueryPool")) {
13995         return (void*)entry_vkDestroyQueryPool;
13996     }
13997     if (!strcmp(name, "vkGetQueryPoolResults")) {
13998         return (void*)entry_vkGetQueryPoolResults;
13999     }
14000     if (!strcmp(name, "vkCreateBuffer")) {
14001         return (void*)entry_vkCreateBuffer;
14002     }
14003     if (!strcmp(name, "vkDestroyBuffer")) {
14004         return (void*)entry_vkDestroyBuffer;
14005     }
14006     if (!strcmp(name, "vkCreateBufferView")) {
14007         return (void*)entry_vkCreateBufferView;
14008     }
14009     if (!strcmp(name, "vkDestroyBufferView")) {
14010         return (void*)entry_vkDestroyBufferView;
14011     }
14012     if (!strcmp(name, "vkCreateImage")) {
14013         return (void*)entry_vkCreateImage;
14014     }
14015     if (!strcmp(name, "vkDestroyImage")) {
14016         return (void*)entry_vkDestroyImage;
14017     }
14018     if (!strcmp(name, "vkGetImageSubresourceLayout")) {
14019         return (void*)entry_vkGetImageSubresourceLayout;
14020     }
14021     if (!strcmp(name, "vkCreateImageView")) {
14022         return (void*)entry_vkCreateImageView;
14023     }
14024     if (!strcmp(name, "vkDestroyImageView")) {
14025         return (void*)entry_vkDestroyImageView;
14026     }
14027     if (!strcmp(name, "vkCreateShaderModule")) {
14028         return (void*)entry_vkCreateShaderModule;
14029     }
14030     if (!strcmp(name, "vkDestroyShaderModule")) {
14031         return (void*)entry_vkDestroyShaderModule;
14032     }
14033     if (!strcmp(name, "vkCreatePipelineCache")) {
14034         return (void*)entry_vkCreatePipelineCache;
14035     }
14036     if (!strcmp(name, "vkDestroyPipelineCache")) {
14037         return (void*)entry_vkDestroyPipelineCache;
14038     }
14039     if (!strcmp(name, "vkGetPipelineCacheData")) {
14040         return (void*)entry_vkGetPipelineCacheData;
14041     }
14042     if (!strcmp(name, "vkMergePipelineCaches")) {
14043         return (void*)entry_vkMergePipelineCaches;
14044     }
14045     if (!strcmp(name, "vkCreateGraphicsPipelines")) {
14046         return (void*)entry_vkCreateGraphicsPipelines;
14047     }
14048     if (!strcmp(name, "vkCreateComputePipelines")) {
14049         return (void*)entry_vkCreateComputePipelines;
14050     }
14051     if (!strcmp(name, "vkDestroyPipeline")) {
14052         return (void*)entry_vkDestroyPipeline;
14053     }
14054     if (!strcmp(name, "vkCreatePipelineLayout")) {
14055         return (void*)entry_vkCreatePipelineLayout;
14056     }
14057     if (!strcmp(name, "vkDestroyPipelineLayout")) {
14058         return (void*)entry_vkDestroyPipelineLayout;
14059     }
14060     if (!strcmp(name, "vkCreateSampler")) {
14061         return (void*)entry_vkCreateSampler;
14062     }
14063     if (!strcmp(name, "vkDestroySampler")) {
14064         return (void*)entry_vkDestroySampler;
14065     }
14066     if (!strcmp(name, "vkCreateDescriptorSetLayout")) {
14067         return (void*)entry_vkCreateDescriptorSetLayout;
14068     }
14069     if (!strcmp(name, "vkDestroyDescriptorSetLayout")) {
14070         return (void*)entry_vkDestroyDescriptorSetLayout;
14071     }
14072     if (!strcmp(name, "vkCreateDescriptorPool")) {
14073         return (void*)entry_vkCreateDescriptorPool;
14074     }
14075     if (!strcmp(name, "vkDestroyDescriptorPool")) {
14076         return (void*)entry_vkDestroyDescriptorPool;
14077     }
14078     if (!strcmp(name, "vkResetDescriptorPool")) {
14079         return (void*)entry_vkResetDescriptorPool;
14080     }
14081     if (!strcmp(name, "vkAllocateDescriptorSets")) {
14082         return (void*)entry_vkAllocateDescriptorSets;
14083     }
14084     if (!strcmp(name, "vkFreeDescriptorSets")) {
14085         return (void*)entry_vkFreeDescriptorSets;
14086     }
14087     if (!strcmp(name, "vkUpdateDescriptorSets")) {
14088         return (void*)entry_vkUpdateDescriptorSets;
14089     }
14090     if (!strcmp(name, "vkCreateFramebuffer")) {
14091         return (void*)entry_vkCreateFramebuffer;
14092     }
14093     if (!strcmp(name, "vkDestroyFramebuffer")) {
14094         return (void*)entry_vkDestroyFramebuffer;
14095     }
14096     if (!strcmp(name, "vkCreateRenderPass")) {
14097         return (void*)entry_vkCreateRenderPass;
14098     }
14099     if (!strcmp(name, "vkDestroyRenderPass")) {
14100         return (void*)entry_vkDestroyRenderPass;
14101     }
14102     if (!strcmp(name, "vkGetRenderAreaGranularity")) {
14103         return (void*)entry_vkGetRenderAreaGranularity;
14104     }
14105     if (!strcmp(name, "vkCreateCommandPool")) {
14106         return (void*)entry_vkCreateCommandPool;
14107     }
14108     if (!strcmp(name, "vkDestroyCommandPool")) {
14109         return (void*)entry_vkDestroyCommandPool;
14110     }
14111     if (!strcmp(name, "vkResetCommandPool")) {
14112         return (void*)entry_vkResetCommandPool;
14113     }
14114     if (!strcmp(name, "vkAllocateCommandBuffers")) {
14115         return (void*)entry_vkAllocateCommandBuffers;
14116     }
14117     if (!strcmp(name, "vkFreeCommandBuffers")) {
14118         return (void*)entry_vkFreeCommandBuffers;
14119     }
14120     if (!strcmp(name, "vkBeginCommandBuffer")) {
14121         return (void*)entry_vkBeginCommandBuffer;
14122     }
14123     if (!strcmp(name, "vkEndCommandBuffer")) {
14124         return (void*)entry_vkEndCommandBuffer;
14125     }
14126     if (!strcmp(name, "vkResetCommandBuffer")) {
14127         return (void*)entry_vkResetCommandBuffer;
14128     }
14129     if (!strcmp(name, "vkCmdBindPipeline")) {
14130         return (void*)entry_vkCmdBindPipeline;
14131     }
14132     if (!strcmp(name, "vkCmdSetViewport")) {
14133         return (void*)entry_vkCmdSetViewport;
14134     }
14135     if (!strcmp(name, "vkCmdSetScissor")) {
14136         return (void*)entry_vkCmdSetScissor;
14137     }
14138     if (!strcmp(name, "vkCmdSetLineWidth")) {
14139         return (void*)entry_vkCmdSetLineWidth;
14140     }
14141     if (!strcmp(name, "vkCmdSetDepthBias")) {
14142         return (void*)entry_vkCmdSetDepthBias;
14143     }
14144     if (!strcmp(name, "vkCmdSetBlendConstants")) {
14145         return (void*)entry_vkCmdSetBlendConstants;
14146     }
14147     if (!strcmp(name, "vkCmdSetDepthBounds")) {
14148         return (void*)entry_vkCmdSetDepthBounds;
14149     }
14150     if (!strcmp(name, "vkCmdSetStencilCompareMask")) {
14151         return (void*)entry_vkCmdSetStencilCompareMask;
14152     }
14153     if (!strcmp(name, "vkCmdSetStencilWriteMask")) {
14154         return (void*)entry_vkCmdSetStencilWriteMask;
14155     }
14156     if (!strcmp(name, "vkCmdSetStencilReference")) {
14157         return (void*)entry_vkCmdSetStencilReference;
14158     }
14159     if (!strcmp(name, "vkCmdBindDescriptorSets")) {
14160         return (void*)entry_vkCmdBindDescriptorSets;
14161     }
14162     if (!strcmp(name, "vkCmdBindIndexBuffer")) {
14163         return (void*)entry_vkCmdBindIndexBuffer;
14164     }
14165     if (!strcmp(name, "vkCmdBindVertexBuffers")) {
14166         return (void*)entry_vkCmdBindVertexBuffers;
14167     }
14168     if (!strcmp(name, "vkCmdDraw")) {
14169         return (void*)entry_vkCmdDraw;
14170     }
14171     if (!strcmp(name, "vkCmdDrawIndexed")) {
14172         return (void*)entry_vkCmdDrawIndexed;
14173     }
14174     if (!strcmp(name, "vkCmdDrawIndirect")) {
14175         return (void*)entry_vkCmdDrawIndirect;
14176     }
14177     if (!strcmp(name, "vkCmdDrawIndexedIndirect")) {
14178         return (void*)entry_vkCmdDrawIndexedIndirect;
14179     }
14180     if (!strcmp(name, "vkCmdDispatch")) {
14181         return (void*)entry_vkCmdDispatch;
14182     }
14183     if (!strcmp(name, "vkCmdDispatchIndirect")) {
14184         return (void*)entry_vkCmdDispatchIndirect;
14185     }
14186     if (!strcmp(name, "vkCmdCopyBuffer")) {
14187         return (void*)entry_vkCmdCopyBuffer;
14188     }
14189     if (!strcmp(name, "vkCmdCopyImage")) {
14190         return (void*)entry_vkCmdCopyImage;
14191     }
14192     if (!strcmp(name, "vkCmdBlitImage")) {
14193         return (void*)entry_vkCmdBlitImage;
14194     }
14195     if (!strcmp(name, "vkCmdCopyBufferToImage")) {
14196         return (void*)entry_vkCmdCopyBufferToImage;
14197     }
14198     if (!strcmp(name, "vkCmdCopyImageToBuffer")) {
14199         return (void*)entry_vkCmdCopyImageToBuffer;
14200     }
14201     if (!strcmp(name, "vkCmdUpdateBuffer")) {
14202         return (void*)entry_vkCmdUpdateBuffer;
14203     }
14204     if (!strcmp(name, "vkCmdFillBuffer")) {
14205         return (void*)entry_vkCmdFillBuffer;
14206     }
14207     if (!strcmp(name, "vkCmdClearColorImage")) {
14208         return (void*)entry_vkCmdClearColorImage;
14209     }
14210     if (!strcmp(name, "vkCmdClearDepthStencilImage")) {
14211         return (void*)entry_vkCmdClearDepthStencilImage;
14212     }
14213     if (!strcmp(name, "vkCmdClearAttachments")) {
14214         return (void*)entry_vkCmdClearAttachments;
14215     }
14216     if (!strcmp(name, "vkCmdResolveImage")) {
14217         return (void*)entry_vkCmdResolveImage;
14218     }
14219     if (!strcmp(name, "vkCmdSetEvent")) {
14220         return (void*)entry_vkCmdSetEvent;
14221     }
14222     if (!strcmp(name, "vkCmdResetEvent")) {
14223         return (void*)entry_vkCmdResetEvent;
14224     }
14225     if (!strcmp(name, "vkCmdWaitEvents")) {
14226         return (void*)entry_vkCmdWaitEvents;
14227     }
14228     if (!strcmp(name, "vkCmdPipelineBarrier")) {
14229         return (void*)entry_vkCmdPipelineBarrier;
14230     }
14231     if (!strcmp(name, "vkCmdBeginQuery")) {
14232         return (void*)entry_vkCmdBeginQuery;
14233     }
14234     if (!strcmp(name, "vkCmdEndQuery")) {
14235         return (void*)entry_vkCmdEndQuery;
14236     }
14237     if (!strcmp(name, "vkCmdResetQueryPool")) {
14238         return (void*)entry_vkCmdResetQueryPool;
14239     }
14240     if (!strcmp(name, "vkCmdWriteTimestamp")) {
14241         return (void*)entry_vkCmdWriteTimestamp;
14242     }
14243     if (!strcmp(name, "vkCmdCopyQueryPoolResults")) {
14244         return (void*)entry_vkCmdCopyQueryPoolResults;
14245     }
14246     if (!strcmp(name, "vkCmdPushConstants")) {
14247         return (void*)entry_vkCmdPushConstants;
14248     }
14249     if (!strcmp(name, "vkCmdBeginRenderPass")) {
14250         return (void*)entry_vkCmdBeginRenderPass;
14251     }
14252     if (!strcmp(name, "vkCmdNextSubpass")) {
14253         return (void*)entry_vkCmdNextSubpass;
14254     }
14255     if (!strcmp(name, "vkCmdEndRenderPass")) {
14256         return (void*)entry_vkCmdEndRenderPass;
14257     }
14258     if (!strcmp(name, "vkCmdExecuteCommands")) {
14259         return (void*)entry_vkCmdExecuteCommands;
14260     }
14261 #endif
14262 #ifdef VK_VERSION_1_1
14263     if (!strcmp(name, "vkEnumerateInstanceVersion")) {
14264         return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
14265     }
14266     if (!strcmp(name, "vkBindBufferMemory2")) {
14267         return (void*)dynCheck_entry_vkBindBufferMemory2;
14268     }
14269     if (!strcmp(name, "vkBindImageMemory2")) {
14270         return (void*)dynCheck_entry_vkBindImageMemory2;
14271     }
14272     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures")) {
14273         return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
14274     }
14275     if (!strcmp(name, "vkCmdSetDeviceMask")) {
14276         return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
14277     }
14278     if (!strcmp(name, "vkCmdDispatchBase")) {
14279         return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
14280     }
14281     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups")) {
14282         return nullptr;
14283     }
14284     if (!strcmp(name, "vkGetImageMemoryRequirements2")) {
14285         return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
14286     }
14287     if (!strcmp(name, "vkGetBufferMemoryRequirements2")) {
14288         return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
14289     }
14290     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2")) {
14291         return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
14292     }
14293     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2")) {
14294         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
14295     }
14296     if (!strcmp(name, "vkGetPhysicalDeviceProperties2")) {
14297         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
14298     }
14299     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2")) {
14300         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
14301     }
14302     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2")) {
14303         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
14304     }
14305     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2")) {
14306         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
14307     }
14308     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2")) {
14309         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
14310     }
14311     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2")) {
14312         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2
14313                               : nullptr;
14314     }
14315     if (!strcmp(name, "vkTrimCommandPool")) {
14316         return (void*)dynCheck_entry_vkTrimCommandPool;
14317     }
14318     if (!strcmp(name, "vkGetDeviceQueue2")) {
14319         return (void*)dynCheck_entry_vkGetDeviceQueue2;
14320     }
14321     if (!strcmp(name, "vkCreateSamplerYcbcrConversion")) {
14322         return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
14323     }
14324     if (!strcmp(name, "vkDestroySamplerYcbcrConversion")) {
14325         return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
14326     }
14327     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate")) {
14328         return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
14329     }
14330     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate")) {
14331         return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
14332     }
14333     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate")) {
14334         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
14335     }
14336     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties")) {
14337         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
14338     }
14339     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties")) {
14340         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
14341     }
14342     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties")) {
14343         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties
14344                               : nullptr;
14345     }
14346     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport")) {
14347         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
14348     }
14349 #endif
14350 #ifdef VK_VERSION_1_2
14351     if (!strcmp(name, "vkCmdDrawIndirectCount")) {
14352         return has1_2OrHigher ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
14353     }
14354     if (!strcmp(name, "vkCmdDrawIndexedIndirectCount")) {
14355         return has1_2OrHigher ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
14356     }
14357     if (!strcmp(name, "vkCreateRenderPass2")) {
14358         return (void*)dynCheck_entry_vkCreateRenderPass2;
14359     }
14360     if (!strcmp(name, "vkCmdBeginRenderPass2")) {
14361         return has1_2OrHigher ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
14362     }
14363     if (!strcmp(name, "vkCmdNextSubpass2")) {
14364         return has1_2OrHigher ? (void*)entry_vkCmdNextSubpass2 : nullptr;
14365     }
14366     if (!strcmp(name, "vkCmdEndRenderPass2")) {
14367         return has1_2OrHigher ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
14368     }
14369     if (!strcmp(name, "vkResetQueryPool")) {
14370         return (void*)dynCheck_entry_vkResetQueryPool;
14371     }
14372     if (!strcmp(name, "vkGetSemaphoreCounterValue")) {
14373         return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
14374     }
14375     if (!strcmp(name, "vkWaitSemaphores")) {
14376         return (void*)dynCheck_entry_vkWaitSemaphores;
14377     }
14378     if (!strcmp(name, "vkSignalSemaphore")) {
14379         return (void*)dynCheck_entry_vkSignalSemaphore;
14380     }
14381     if (!strcmp(name, "vkGetBufferDeviceAddress")) {
14382         return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
14383     }
14384     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress")) {
14385         return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
14386     }
14387     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress")) {
14388         return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
14389     }
14390 #endif
14391 #ifdef VK_VERSION_1_3
14392     if (!strcmp(name, "vkGetPhysicalDeviceToolProperties")) {
14393         return has1_3OrHigher ? (void*)entry_vkGetPhysicalDeviceToolProperties : nullptr;
14394     }
14395     if (!strcmp(name, "vkCreatePrivateDataSlot")) {
14396         return (void*)dynCheck_entry_vkCreatePrivateDataSlot;
14397     }
14398     if (!strcmp(name, "vkDestroyPrivateDataSlot")) {
14399         return (void*)dynCheck_entry_vkDestroyPrivateDataSlot;
14400     }
14401     if (!strcmp(name, "vkSetPrivateData")) {
14402         return (void*)dynCheck_entry_vkSetPrivateData;
14403     }
14404     if (!strcmp(name, "vkGetPrivateData")) {
14405         return (void*)dynCheck_entry_vkGetPrivateData;
14406     }
14407     if (!strcmp(name, "vkCmdSetEvent2")) {
14408         return has1_3OrHigher ? (void*)entry_vkCmdSetEvent2 : nullptr;
14409     }
14410     if (!strcmp(name, "vkCmdResetEvent2")) {
14411         return has1_3OrHigher ? (void*)entry_vkCmdResetEvent2 : nullptr;
14412     }
14413     if (!strcmp(name, "vkCmdWaitEvents2")) {
14414         return has1_3OrHigher ? (void*)entry_vkCmdWaitEvents2 : nullptr;
14415     }
14416     if (!strcmp(name, "vkCmdPipelineBarrier2")) {
14417         return has1_3OrHigher ? (void*)entry_vkCmdPipelineBarrier2 : nullptr;
14418     }
14419     if (!strcmp(name, "vkCmdWriteTimestamp2")) {
14420         return has1_3OrHigher ? (void*)entry_vkCmdWriteTimestamp2 : nullptr;
14421     }
14422     if (!strcmp(name, "vkQueueSubmit2")) {
14423         return has1_3OrHigher ? (void*)entry_vkQueueSubmit2 : nullptr;
14424     }
14425     if (!strcmp(name, "vkCmdCopyBuffer2")) {
14426         return has1_3OrHigher ? (void*)entry_vkCmdCopyBuffer2 : nullptr;
14427     }
14428     if (!strcmp(name, "vkCmdCopyImage2")) {
14429         return has1_3OrHigher ? (void*)entry_vkCmdCopyImage2 : nullptr;
14430     }
14431     if (!strcmp(name, "vkCmdCopyBufferToImage2")) {
14432         return has1_3OrHigher ? (void*)entry_vkCmdCopyBufferToImage2 : nullptr;
14433     }
14434     if (!strcmp(name, "vkCmdCopyImageToBuffer2")) {
14435         return has1_3OrHigher ? (void*)entry_vkCmdCopyImageToBuffer2 : nullptr;
14436     }
14437     if (!strcmp(name, "vkCmdBlitImage2")) {
14438         return has1_3OrHigher ? (void*)entry_vkCmdBlitImage2 : nullptr;
14439     }
14440     if (!strcmp(name, "vkCmdResolveImage2")) {
14441         return has1_3OrHigher ? (void*)entry_vkCmdResolveImage2 : nullptr;
14442     }
14443     if (!strcmp(name, "vkCmdBeginRendering")) {
14444         return has1_3OrHigher ? (void*)entry_vkCmdBeginRendering : nullptr;
14445     }
14446     if (!strcmp(name, "vkCmdEndRendering")) {
14447         return has1_3OrHigher ? (void*)entry_vkCmdEndRendering : nullptr;
14448     }
14449     if (!strcmp(name, "vkCmdSetCullMode")) {
14450         return has1_3OrHigher ? (void*)entry_vkCmdSetCullMode : nullptr;
14451     }
14452     if (!strcmp(name, "vkCmdSetFrontFace")) {
14453         return has1_3OrHigher ? (void*)entry_vkCmdSetFrontFace : nullptr;
14454     }
14455     if (!strcmp(name, "vkCmdSetPrimitiveTopology")) {
14456         return has1_3OrHigher ? (void*)entry_vkCmdSetPrimitiveTopology : nullptr;
14457     }
14458     if (!strcmp(name, "vkCmdSetViewportWithCount")) {
14459         return has1_3OrHigher ? (void*)entry_vkCmdSetViewportWithCount : nullptr;
14460     }
14461     if (!strcmp(name, "vkCmdSetScissorWithCount")) {
14462         return has1_3OrHigher ? (void*)entry_vkCmdSetScissorWithCount : nullptr;
14463     }
14464     if (!strcmp(name, "vkCmdBindVertexBuffers2")) {
14465         return has1_3OrHigher ? (void*)entry_vkCmdBindVertexBuffers2 : nullptr;
14466     }
14467     if (!strcmp(name, "vkCmdSetDepthTestEnable")) {
14468         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthTestEnable : nullptr;
14469     }
14470     if (!strcmp(name, "vkCmdSetDepthWriteEnable")) {
14471         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthWriteEnable : nullptr;
14472     }
14473     if (!strcmp(name, "vkCmdSetDepthCompareOp")) {
14474         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthCompareOp : nullptr;
14475     }
14476     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnable")) {
14477         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthBoundsTestEnable : nullptr;
14478     }
14479     if (!strcmp(name, "vkCmdSetStencilTestEnable")) {
14480         return has1_3OrHigher ? (void*)entry_vkCmdSetStencilTestEnable : nullptr;
14481     }
14482     if (!strcmp(name, "vkCmdSetStencilOp")) {
14483         return has1_3OrHigher ? (void*)entry_vkCmdSetStencilOp : nullptr;
14484     }
14485     if (!strcmp(name, "vkCmdSetRasterizerDiscardEnable")) {
14486         return has1_3OrHigher ? (void*)entry_vkCmdSetRasterizerDiscardEnable : nullptr;
14487     }
14488     if (!strcmp(name, "vkCmdSetDepthBiasEnable")) {
14489         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthBiasEnable : nullptr;
14490     }
14491     if (!strcmp(name, "vkCmdSetPrimitiveRestartEnable")) {
14492         return has1_3OrHigher ? (void*)entry_vkCmdSetPrimitiveRestartEnable : nullptr;
14493     }
14494     if (!strcmp(name, "vkGetDeviceBufferMemoryRequirements")) {
14495         return (void*)dynCheck_entry_vkGetDeviceBufferMemoryRequirements;
14496     }
14497     if (!strcmp(name, "vkGetDeviceImageMemoryRequirements")) {
14498         return (void*)dynCheck_entry_vkGetDeviceImageMemoryRequirements;
14499     }
14500     if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirements")) {
14501         return (void*)dynCheck_entry_vkGetDeviceImageSparseMemoryRequirements;
14502     }
14503 #endif
14504 #ifdef VK_KHR_surface
14505     if (!strcmp(name, "vkDestroySurfaceKHR")) {
14506         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
14507         return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
14508     }
14509     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR")) {
14510         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
14511         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
14512     }
14513     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR")) {
14514         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
14515         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
14516     }
14517     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR")) {
14518         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
14519         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
14520     }
14521     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR")) {
14522         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
14523         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
14524     }
14525 #endif
14526 #ifdef VK_KHR_swapchain
14527     if (!strcmp(name, "vkCreateSwapchainKHR")) {
14528         // TODO(b/236246382): Check support for device extension;
14529         return (void*)dynCheck_entry_vkCreateSwapchainKHR;
14530     }
14531     if (!strcmp(name, "vkDestroySwapchainKHR")) {
14532         // TODO(b/236246382): Check support for device extension;
14533         return (void*)dynCheck_entry_vkDestroySwapchainKHR;
14534     }
14535     if (!strcmp(name, "vkGetSwapchainImagesKHR")) {
14536         // TODO(b/236246382): Check support for device extension;
14537         return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
14538     }
14539     if (!strcmp(name, "vkAcquireNextImageKHR")) {
14540         // TODO(b/236246382): Check support for device extension;
14541         return (void*)dynCheck_entry_vkAcquireNextImageKHR;
14542     }
14543     if (!strcmp(name, "vkQueuePresentKHR")) {
14544         // TODO(b/236246382): Check support for device extension;
14545         return (void*)entry_vkQueuePresentKHR;
14546     }
14547     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR")) {
14548         // TODO(b/236246382): Check support for device extension;
14549         return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
14550     }
14551     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR")) {
14552         // TODO(b/236246382): Check support for device extension;
14553         return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
14554     }
14555     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR")) {
14556         // TODO(b/236246382): Check support for device extension;
14557         return (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR;
14558     }
14559     if (!strcmp(name, "vkAcquireNextImage2KHR")) {
14560         // TODO(b/236246382): Check support for device extension;
14561         return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
14562     }
14563 #endif
14564 #ifdef VK_KHR_display
14565     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR")) {
14566         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14567         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
14568     }
14569     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")) {
14570         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14571         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
14572     }
14573     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR")) {
14574         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14575         return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
14576     }
14577     if (!strcmp(name, "vkGetDisplayModePropertiesKHR")) {
14578         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14579         return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
14580     }
14581     if (!strcmp(name, "vkCreateDisplayModeKHR")) {
14582         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14583         return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
14584     }
14585     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR")) {
14586         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14587         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
14588     }
14589     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR")) {
14590         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14591         return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
14592     }
14593 #endif
14594 #ifdef VK_KHR_display_swapchain
14595     if (!strcmp(name, "vkCreateSharedSwapchainsKHR")) {
14596         // TODO(b/236246382): Check support for device extension;
14597         return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
14598     }
14599 #endif
14600 #ifdef VK_KHR_xlib_surface
14601     if (!strcmp(name, "vkCreateXlibSurfaceKHR")) {
14602         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
14603         return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
14604     }
14605     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR")) {
14606         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
14607         return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
14608     }
14609 #endif
14610 #ifdef VK_KHR_xcb_surface
14611     if (!strcmp(name, "vkCreateXcbSurfaceKHR")) {
14612         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
14613         return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
14614     }
14615     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR")) {
14616         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
14617         return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
14618     }
14619 #endif
14620 #ifdef VK_KHR_wayland_surface
14621     if (!strcmp(name, "vkCreateWaylandSurfaceKHR")) {
14622         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
14623         return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
14624     }
14625     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR")) {
14626         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
14627         return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
14628     }
14629 #endif
14630 #ifdef VK_KHR_android_surface
14631     if (!strcmp(name, "vkCreateAndroidSurfaceKHR")) {
14632         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
14633         return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
14634     }
14635 #endif
14636 #ifdef VK_KHR_win32_surface
14637     if (!strcmp(name, "vkCreateWin32SurfaceKHR")) {
14638         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
14639         return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
14640     }
14641     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) {
14642         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
14643         return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
14644     }
14645 #endif
14646 #ifdef VK_KHR_video_queue
14647     if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR")) {
14648         // TODO(b/236246382): Check support for device extension;
14649         return (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR;
14650     }
14651     if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR")) {
14652         // TODO(b/236246382): Check support for device extension;
14653         return (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR;
14654     }
14655     if (!strcmp(name, "vkCreateVideoSessionKHR")) {
14656         // TODO(b/236246382): Check support for device extension;
14657         return (void*)dynCheck_entry_vkCreateVideoSessionKHR;
14658     }
14659     if (!strcmp(name, "vkDestroyVideoSessionKHR")) {
14660         // TODO(b/236246382): Check support for device extension;
14661         return (void*)dynCheck_entry_vkDestroyVideoSessionKHR;
14662     }
14663     if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR")) {
14664         // TODO(b/236246382): Check support for device extension;
14665         return (void*)dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR;
14666     }
14667     if (!strcmp(name, "vkBindVideoSessionMemoryKHR")) {
14668         // TODO(b/236246382): Check support for device extension;
14669         return (void*)dynCheck_entry_vkBindVideoSessionMemoryKHR;
14670     }
14671     if (!strcmp(name, "vkCreateVideoSessionParametersKHR")) {
14672         // TODO(b/236246382): Check support for device extension;
14673         return (void*)dynCheck_entry_vkCreateVideoSessionParametersKHR;
14674     }
14675     if (!strcmp(name, "vkUpdateVideoSessionParametersKHR")) {
14676         // TODO(b/236246382): Check support for device extension;
14677         return (void*)dynCheck_entry_vkUpdateVideoSessionParametersKHR;
14678     }
14679     if (!strcmp(name, "vkDestroyVideoSessionParametersKHR")) {
14680         // TODO(b/236246382): Check support for device extension;
14681         return (void*)dynCheck_entry_vkDestroyVideoSessionParametersKHR;
14682     }
14683     if (!strcmp(name, "vkCmdBeginVideoCodingKHR")) {
14684         // TODO(b/236246382): Check support for device extension;
14685         return (void*)dynCheck_entry_vkCmdBeginVideoCodingKHR;
14686     }
14687     if (!strcmp(name, "vkCmdEndVideoCodingKHR")) {
14688         // TODO(b/236246382): Check support for device extension;
14689         return (void*)dynCheck_entry_vkCmdEndVideoCodingKHR;
14690     }
14691     if (!strcmp(name, "vkCmdControlVideoCodingKHR")) {
14692         // TODO(b/236246382): Check support for device extension;
14693         return (void*)dynCheck_entry_vkCmdControlVideoCodingKHR;
14694     }
14695 #endif
14696 #ifdef VK_KHR_video_decode_queue
14697     if (!strcmp(name, "vkCmdDecodeVideoKHR")) {
14698         // TODO(b/236246382): Check support for device extension;
14699         return (void*)dynCheck_entry_vkCmdDecodeVideoKHR;
14700     }
14701 #endif
14702 #ifdef VK_KHR_dynamic_rendering
14703     if (!strcmp(name, "vkCmdBeginRenderingKHR")) {
14704         // TODO(b/236246382): Check support for device extension;
14705         return (void*)dynCheck_entry_vkCmdBeginRenderingKHR;
14706     }
14707     if (!strcmp(name, "vkCmdEndRenderingKHR")) {
14708         // TODO(b/236246382): Check support for device extension;
14709         return (void*)dynCheck_entry_vkCmdEndRenderingKHR;
14710     }
14711 #endif
14712 #ifdef VK_KHR_get_physical_device_properties2
14713     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR")) {
14714         bool hasExt =
14715             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14716         return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
14717     }
14718     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR")) {
14719         bool hasExt =
14720             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14721         return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
14722     }
14723     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR")) {
14724         bool hasExt =
14725             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14726         return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
14727     }
14728     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR")) {
14729         bool hasExt =
14730             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14731         return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
14732     }
14733     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")) {
14734         bool hasExt =
14735             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14736         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
14737     }
14738     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR")) {
14739         bool hasExt =
14740             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14741         return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
14742     }
14743     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")) {
14744         bool hasExt =
14745             resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14746         return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
14747     }
14748 #endif
14749 #ifdef VK_KHR_device_group
14750     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR")) {
14751         // TODO(b/236246382): Check support for device extension;
14752         return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
14753     }
14754     if (!strcmp(name, "vkCmdSetDeviceMaskKHR")) {
14755         // TODO(b/236246382): Check support for device extension;
14756         return (void*)dynCheck_entry_vkCmdSetDeviceMaskKHR;
14757     }
14758     if (!strcmp(name, "vkCmdDispatchBaseKHR")) {
14759         // TODO(b/236246382): Check support for device extension;
14760         return (void*)dynCheck_entry_vkCmdDispatchBaseKHR;
14761     }
14762 #endif
14763 #ifdef VK_KHR_maintenance1
14764     if (!strcmp(name, "vkTrimCommandPoolKHR")) {
14765         // TODO(b/236246382): Check support for device extension;
14766         return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
14767     }
14768 #endif
14769 #ifdef VK_KHR_device_group_creation
14770     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR")) {
14771         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
14772         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
14773     }
14774 #endif
14775 #ifdef VK_KHR_external_memory_capabilities
14776     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")) {
14777         bool hasExt =
14778             resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
14779         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
14780     }
14781 #endif
14782 #ifdef VK_KHR_external_memory_win32
14783     if (!strcmp(name, "vkGetMemoryWin32HandleKHR")) {
14784         // TODO(b/236246382): Check support for device extension;
14785         return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
14786     }
14787     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR")) {
14788         // TODO(b/236246382): Check support for device extension;
14789         return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
14790     }
14791 #endif
14792 #ifdef VK_KHR_external_memory_fd
14793     if (!strcmp(name, "vkGetMemoryFdKHR")) {
14794         // TODO(b/236246382): Check support for device extension;
14795         return (void*)dynCheck_entry_vkGetMemoryFdKHR;
14796     }
14797     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR")) {
14798         // TODO(b/236246382): Check support for device extension;
14799         return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
14800     }
14801 #endif
14802 #ifdef VK_KHR_external_semaphore_capabilities
14803     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")) {
14804         bool hasExt =
14805             resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
14806         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
14807     }
14808 #endif
14809 #ifdef VK_KHR_external_semaphore_win32
14810     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR")) {
14811         // TODO(b/236246382): Check support for device extension;
14812         return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
14813     }
14814     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR")) {
14815         // TODO(b/236246382): Check support for device extension;
14816         return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
14817     }
14818 #endif
14819 #ifdef VK_KHR_external_semaphore_fd
14820     if (!strcmp(name, "vkImportSemaphoreFdKHR")) {
14821         // TODO(b/236246382): Check support for device extension;
14822         return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
14823     }
14824     if (!strcmp(name, "vkGetSemaphoreFdKHR")) {
14825         // TODO(b/236246382): Check support for device extension;
14826         return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
14827     }
14828 #endif
14829 #ifdef VK_KHR_push_descriptor
14830     if (!strcmp(name, "vkCmdPushDescriptorSetKHR")) {
14831         // TODO(b/236246382): Check support for device extension;
14832         return (void*)dynCheck_entry_vkCmdPushDescriptorSetKHR;
14833     }
14834     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR")) {
14835         // TODO(b/236246382): Check support for device extension;
14836         return (void*)dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR;
14837     }
14838 #endif
14839 #ifdef VK_KHR_descriptor_update_template
14840     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR")) {
14841         // TODO(b/236246382): Check support for device extension;
14842         return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
14843     }
14844     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR")) {
14845         // TODO(b/236246382): Check support for device extension;
14846         return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
14847     }
14848     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR")) {
14849         // TODO(b/236246382): Check support for device extension;
14850         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
14851     }
14852 #endif
14853 #ifdef VK_KHR_create_renderpass2
14854     if (!strcmp(name, "vkCreateRenderPass2KHR")) {
14855         // TODO(b/236246382): Check support for device extension;
14856         return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
14857     }
14858     if (!strcmp(name, "vkCmdBeginRenderPass2KHR")) {
14859         // TODO(b/236246382): Check support for device extension;
14860         return (void*)dynCheck_entry_vkCmdBeginRenderPass2KHR;
14861     }
14862     if (!strcmp(name, "vkCmdNextSubpass2KHR")) {
14863         // TODO(b/236246382): Check support for device extension;
14864         return (void*)dynCheck_entry_vkCmdNextSubpass2KHR;
14865     }
14866     if (!strcmp(name, "vkCmdEndRenderPass2KHR")) {
14867         // TODO(b/236246382): Check support for device extension;
14868         return (void*)dynCheck_entry_vkCmdEndRenderPass2KHR;
14869     }
14870 #endif
14871 #ifdef VK_KHR_shared_presentable_image
14872     if (!strcmp(name, "vkGetSwapchainStatusKHR")) {
14873         // TODO(b/236246382): Check support for device extension;
14874         return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
14875     }
14876 #endif
14877 #ifdef VK_KHR_external_fence_capabilities
14878     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR")) {
14879         bool hasExt =
14880             resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
14881         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
14882     }
14883 #endif
14884 #ifdef VK_KHR_external_fence_win32
14885     if (!strcmp(name, "vkImportFenceWin32HandleKHR")) {
14886         // TODO(b/236246382): Check support for device extension;
14887         return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
14888     }
14889     if (!strcmp(name, "vkGetFenceWin32HandleKHR")) {
14890         // TODO(b/236246382): Check support for device extension;
14891         return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
14892     }
14893 #endif
14894 #ifdef VK_KHR_external_fence_fd
14895     if (!strcmp(name, "vkImportFenceFdKHR")) {
14896         // TODO(b/236246382): Check support for device extension;
14897         return (void*)dynCheck_entry_vkImportFenceFdKHR;
14898     }
14899     if (!strcmp(name, "vkGetFenceFdKHR")) {
14900         // TODO(b/236246382): Check support for device extension;
14901         return (void*)dynCheck_entry_vkGetFenceFdKHR;
14902     }
14903 #endif
14904 #ifdef VK_KHR_performance_query
14905     if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) {
14906         // TODO(b/236246382): Check support for device extension;
14907         return (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
14908     }
14909     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) {
14910         // TODO(b/236246382): Check support for device extension;
14911         return (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
14912     }
14913     if (!strcmp(name, "vkAcquireProfilingLockKHR")) {
14914         // TODO(b/236246382): Check support for device extension;
14915         return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
14916     }
14917     if (!strcmp(name, "vkReleaseProfilingLockKHR")) {
14918         // TODO(b/236246382): Check support for device extension;
14919         return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
14920     }
14921 #endif
14922 #ifdef VK_KHR_get_surface_capabilities2
14923     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR")) {
14924         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
14925         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
14926     }
14927     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR")) {
14928         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
14929         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
14930     }
14931 #endif
14932 #ifdef VK_KHR_get_display_properties2
14933     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR")) {
14934         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14935         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
14936     }
14937     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR")) {
14938         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14939         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
14940     }
14941     if (!strcmp(name, "vkGetDisplayModeProperties2KHR")) {
14942         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14943         return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
14944     }
14945     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR")) {
14946         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14947         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
14948     }
14949 #endif
14950 #ifdef VK_KHR_get_memory_requirements2
14951     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR")) {
14952         // TODO(b/236246382): Check support for device extension;
14953         return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
14954     }
14955     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR")) {
14956         // TODO(b/236246382): Check support for device extension;
14957         return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
14958     }
14959     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR")) {
14960         // TODO(b/236246382): Check support for device extension;
14961         return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
14962     }
14963 #endif
14964 #ifdef VK_KHR_sampler_ycbcr_conversion
14965     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR")) {
14966         // TODO(b/236246382): Check support for device extension;
14967         return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
14968     }
14969     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR")) {
14970         // TODO(b/236246382): Check support for device extension;
14971         return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
14972     }
14973 #endif
14974 #ifdef VK_KHR_bind_memory2
14975     if (!strcmp(name, "vkBindBufferMemory2KHR")) {
14976         // TODO(b/236246382): Check support for device extension;
14977         return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
14978     }
14979     if (!strcmp(name, "vkBindImageMemory2KHR")) {
14980         // TODO(b/236246382): Check support for device extension;
14981         return (void*)dynCheck_entry_vkBindImageMemory2KHR;
14982     }
14983 #endif
14984 #ifdef VK_KHR_maintenance3
14985     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR")) {
14986         // TODO(b/236246382): Check support for device extension;
14987         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
14988     }
14989 #endif
14990 #ifdef VK_KHR_draw_indirect_count
14991     if (!strcmp(name, "vkCmdDrawIndirectCountKHR")) {
14992         // TODO(b/236246382): Check support for device extension;
14993         return (void*)dynCheck_entry_vkCmdDrawIndirectCountKHR;
14994     }
14995     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR")) {
14996         // TODO(b/236246382): Check support for device extension;
14997         return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR;
14998     }
14999 #endif
15000 #ifdef VK_KHR_timeline_semaphore
15001     if (!strcmp(name, "vkGetSemaphoreCounterValueKHR")) {
15002         // TODO(b/236246382): Check support for device extension;
15003         return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
15004     }
15005     if (!strcmp(name, "vkWaitSemaphoresKHR")) {
15006         // TODO(b/236246382): Check support for device extension;
15007         return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
15008     }
15009     if (!strcmp(name, "vkSignalSemaphoreKHR")) {
15010         // TODO(b/236246382): Check support for device extension;
15011         return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
15012     }
15013 #endif
15014 #ifdef VK_KHR_fragment_shading_rate
15015     if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR")) {
15016         // TODO(b/236246382): Check support for device extension;
15017         return (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR;
15018     }
15019     if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR")) {
15020         // TODO(b/236246382): Check support for device extension;
15021         return (void*)dynCheck_entry_vkCmdSetFragmentShadingRateKHR;
15022     }
15023 #endif
15024 #ifdef VK_KHR_present_wait
15025     if (!strcmp(name, "vkWaitForPresentKHR")) {
15026         // TODO(b/236246382): Check support for device extension;
15027         return (void*)dynCheck_entry_vkWaitForPresentKHR;
15028     }
15029 #endif
15030 #ifdef VK_KHR_buffer_device_address
15031     if (!strcmp(name, "vkGetBufferDeviceAddressKHR")) {
15032         // TODO(b/236246382): Check support for device extension;
15033         return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
15034     }
15035     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR")) {
15036         // TODO(b/236246382): Check support for device extension;
15037         return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
15038     }
15039     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR")) {
15040         // TODO(b/236246382): Check support for device extension;
15041         return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
15042     }
15043 #endif
15044 #ifdef VK_KHR_deferred_host_operations
15045     if (!strcmp(name, "vkCreateDeferredOperationKHR")) {
15046         // TODO(b/236246382): Check support for device extension;
15047         return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
15048     }
15049     if (!strcmp(name, "vkDestroyDeferredOperationKHR")) {
15050         // TODO(b/236246382): Check support for device extension;
15051         return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
15052     }
15053     if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR")) {
15054         // TODO(b/236246382): Check support for device extension;
15055         return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
15056     }
15057     if (!strcmp(name, "vkGetDeferredOperationResultKHR")) {
15058         // TODO(b/236246382): Check support for device extension;
15059         return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
15060     }
15061     if (!strcmp(name, "vkDeferredOperationJoinKHR")) {
15062         // TODO(b/236246382): Check support for device extension;
15063         return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
15064     }
15065 #endif
15066 #ifdef VK_KHR_pipeline_executable_properties
15067     if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR")) {
15068         // TODO(b/236246382): Check support for device extension;
15069         return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
15070     }
15071     if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR")) {
15072         // TODO(b/236246382): Check support for device extension;
15073         return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
15074     }
15075     if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR")) {
15076         // TODO(b/236246382): Check support for device extension;
15077         return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
15078     }
15079 #endif
15080 #ifdef VK_KHR_map_memory2
15081     if (!strcmp(name, "vkMapMemory2KHR")) {
15082         // TODO(b/236246382): Check support for device extension;
15083         return (void*)dynCheck_entry_vkMapMemory2KHR;
15084     }
15085     if (!strcmp(name, "vkUnmapMemory2KHR")) {
15086         // TODO(b/236246382): Check support for device extension;
15087         return (void*)dynCheck_entry_vkUnmapMemory2KHR;
15088     }
15089 #endif
15090 #ifdef VK_KHR_video_encode_queue
15091     if (!strcmp(name, "vkCmdEncodeVideoKHR")) {
15092         // TODO(b/236246382): Check support for device extension;
15093         return (void*)dynCheck_entry_vkCmdEncodeVideoKHR;
15094     }
15095 #endif
15096 #ifdef VK_KHR_synchronization2
15097     if (!strcmp(name, "vkCmdSetEvent2KHR")) {
15098         // TODO(b/236246382): Check support for device extension;
15099         return (void*)dynCheck_entry_vkCmdSetEvent2KHR;
15100     }
15101     if (!strcmp(name, "vkCmdResetEvent2KHR")) {
15102         // TODO(b/236246382): Check support for device extension;
15103         return (void*)dynCheck_entry_vkCmdResetEvent2KHR;
15104     }
15105     if (!strcmp(name, "vkCmdWaitEvents2KHR")) {
15106         // TODO(b/236246382): Check support for device extension;
15107         return (void*)dynCheck_entry_vkCmdWaitEvents2KHR;
15108     }
15109     if (!strcmp(name, "vkCmdPipelineBarrier2KHR")) {
15110         // TODO(b/236246382): Check support for device extension;
15111         return (void*)dynCheck_entry_vkCmdPipelineBarrier2KHR;
15112     }
15113     if (!strcmp(name, "vkCmdWriteTimestamp2KHR")) {
15114         // TODO(b/236246382): Check support for device extension;
15115         return (void*)dynCheck_entry_vkCmdWriteTimestamp2KHR;
15116     }
15117     if (!strcmp(name, "vkQueueSubmit2KHR")) {
15118         // TODO(b/236246382): Check support for device extension;
15119         return (void*)entry_vkQueueSubmit2KHR;
15120     }
15121     if (!strcmp(name, "vkCmdWriteBufferMarker2AMD")) {
15122         // TODO(b/236246382): Check support for device extension;
15123         return (void*)dynCheck_entry_vkCmdWriteBufferMarker2AMD;
15124     }
15125     if (!strcmp(name, "vkGetQueueCheckpointData2NV")) {
15126         // TODO(b/236246382): Check support for device extension;
15127         return (void*)entry_vkGetQueueCheckpointData2NV;
15128     }
15129 #endif
15130 #ifdef VK_KHR_copy_commands2
15131     if (!strcmp(name, "vkCmdCopyBuffer2KHR")) {
15132         // TODO(b/236246382): Check support for device extension;
15133         return (void*)dynCheck_entry_vkCmdCopyBuffer2KHR;
15134     }
15135     if (!strcmp(name, "vkCmdCopyImage2KHR")) {
15136         // TODO(b/236246382): Check support for device extension;
15137         return (void*)dynCheck_entry_vkCmdCopyImage2KHR;
15138     }
15139     if (!strcmp(name, "vkCmdCopyBufferToImage2KHR")) {
15140         // TODO(b/236246382): Check support for device extension;
15141         return (void*)dynCheck_entry_vkCmdCopyBufferToImage2KHR;
15142     }
15143     if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR")) {
15144         // TODO(b/236246382): Check support for device extension;
15145         return (void*)dynCheck_entry_vkCmdCopyImageToBuffer2KHR;
15146     }
15147     if (!strcmp(name, "vkCmdBlitImage2KHR")) {
15148         // TODO(b/236246382): Check support for device extension;
15149         return (void*)dynCheck_entry_vkCmdBlitImage2KHR;
15150     }
15151     if (!strcmp(name, "vkCmdResolveImage2KHR")) {
15152         // TODO(b/236246382): Check support for device extension;
15153         return (void*)dynCheck_entry_vkCmdResolveImage2KHR;
15154     }
15155 #endif
15156 #ifdef VK_KHR_ray_tracing_maintenance1
15157     if (!strcmp(name, "vkCmdTraceRaysIndirect2KHR")) {
15158         // TODO(b/236246382): Check support for device extension;
15159         return (void*)dynCheck_entry_vkCmdTraceRaysIndirect2KHR;
15160     }
15161 #endif
15162 #ifdef VK_KHR_maintenance4
15163     if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR")) {
15164         // TODO(b/236246382): Check support for device extension;
15165         return (void*)dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR;
15166     }
15167     if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR")) {
15168         // TODO(b/236246382): Check support for device extension;
15169         return (void*)dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR;
15170     }
15171     if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR")) {
15172         // TODO(b/236246382): Check support for device extension;
15173         return (void*)dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR;
15174     }
15175 #endif
15176 #ifdef VK_ANDROID_native_buffer
15177     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID")) {
15178         // TODO(b/236246382): Check support for device extension;
15179         return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
15180     }
15181     if (!strcmp(name, "vkAcquireImageANDROID")) {
15182         // TODO(b/236246382): Check support for device extension;
15183         return (void*)dynCheck_entry_vkAcquireImageANDROID;
15184     }
15185     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID")) {
15186         // TODO(b/236246382): Check support for device extension;
15187         return (void*)entry_vkQueueSignalReleaseImageANDROID;
15188     }
15189     if (!strcmp(name, "vkGetSwapchainGrallocUsage2ANDROID")) {
15190         // TODO(b/236246382): Check support for device extension;
15191         return (void*)dynCheck_entry_vkGetSwapchainGrallocUsage2ANDROID;
15192     }
15193 #endif
15194 #ifdef VK_EXT_debug_report
15195     if (!strcmp(name, "vkCreateDebugReportCallbackEXT")) {
15196         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
15197         return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
15198     }
15199     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT")) {
15200         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
15201         return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
15202     }
15203     if (!strcmp(name, "vkDebugReportMessageEXT")) {
15204         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
15205         return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
15206     }
15207 #endif
15208 #ifdef VK_EXT_debug_marker
15209     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT")) {
15210         // TODO(b/236246382): Check support for device extension;
15211         return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
15212     }
15213     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT")) {
15214         // TODO(b/236246382): Check support for device extension;
15215         return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
15216     }
15217     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT")) {
15218         // TODO(b/236246382): Check support for device extension;
15219         return (void*)dynCheck_entry_vkCmdDebugMarkerBeginEXT;
15220     }
15221     if (!strcmp(name, "vkCmdDebugMarkerEndEXT")) {
15222         // TODO(b/236246382): Check support for device extension;
15223         return (void*)dynCheck_entry_vkCmdDebugMarkerEndEXT;
15224     }
15225     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT")) {
15226         // TODO(b/236246382): Check support for device extension;
15227         return (void*)dynCheck_entry_vkCmdDebugMarkerInsertEXT;
15228     }
15229 #endif
15230 #ifdef VK_EXT_transform_feedback
15231     if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT")) {
15232         // TODO(b/236246382): Check support for device extension;
15233         return (void*)dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT;
15234     }
15235     if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT")) {
15236         // TODO(b/236246382): Check support for device extension;
15237         return (void*)dynCheck_entry_vkCmdBeginTransformFeedbackEXT;
15238     }
15239     if (!strcmp(name, "vkCmdEndTransformFeedbackEXT")) {
15240         // TODO(b/236246382): Check support for device extension;
15241         return (void*)dynCheck_entry_vkCmdEndTransformFeedbackEXT;
15242     }
15243     if (!strcmp(name, "vkCmdBeginQueryIndexedEXT")) {
15244         // TODO(b/236246382): Check support for device extension;
15245         return (void*)dynCheck_entry_vkCmdBeginQueryIndexedEXT;
15246     }
15247     if (!strcmp(name, "vkCmdEndQueryIndexedEXT")) {
15248         // TODO(b/236246382): Check support for device extension;
15249         return (void*)dynCheck_entry_vkCmdEndQueryIndexedEXT;
15250     }
15251     if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT")) {
15252         // TODO(b/236246382): Check support for device extension;
15253         return (void*)dynCheck_entry_vkCmdDrawIndirectByteCountEXT;
15254     }
15255 #endif
15256 #ifdef VK_NVX_binary_import
15257     if (!strcmp(name, "vkCreateCuModuleNVX")) {
15258         // TODO(b/236246382): Check support for device extension;
15259         return (void*)dynCheck_entry_vkCreateCuModuleNVX;
15260     }
15261     if (!strcmp(name, "vkCreateCuFunctionNVX")) {
15262         // TODO(b/236246382): Check support for device extension;
15263         return (void*)dynCheck_entry_vkCreateCuFunctionNVX;
15264     }
15265     if (!strcmp(name, "vkDestroyCuModuleNVX")) {
15266         // TODO(b/236246382): Check support for device extension;
15267         return (void*)dynCheck_entry_vkDestroyCuModuleNVX;
15268     }
15269     if (!strcmp(name, "vkDestroyCuFunctionNVX")) {
15270         // TODO(b/236246382): Check support for device extension;
15271         return (void*)dynCheck_entry_vkDestroyCuFunctionNVX;
15272     }
15273     if (!strcmp(name, "vkCmdCuLaunchKernelNVX")) {
15274         // TODO(b/236246382): Check support for device extension;
15275         return (void*)dynCheck_entry_vkCmdCuLaunchKernelNVX;
15276     }
15277 #endif
15278 #ifdef VK_NVX_image_view_handle
15279     if (!strcmp(name, "vkGetImageViewHandleNVX")) {
15280         // TODO(b/236246382): Check support for device extension;
15281         return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
15282     }
15283     if (!strcmp(name, "vkGetImageViewAddressNVX")) {
15284         // TODO(b/236246382): Check support for device extension;
15285         return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
15286     }
15287 #endif
15288 #ifdef VK_AMD_draw_indirect_count
15289     if (!strcmp(name, "vkCmdDrawIndirectCountAMD")) {
15290         // TODO(b/236246382): Check support for device extension;
15291         return (void*)dynCheck_entry_vkCmdDrawIndirectCountAMD;
15292     }
15293     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD")) {
15294         // TODO(b/236246382): Check support for device extension;
15295         return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD;
15296     }
15297 #endif
15298 #ifdef VK_AMD_shader_info
15299     if (!strcmp(name, "vkGetShaderInfoAMD")) {
15300         // TODO(b/236246382): Check support for device extension;
15301         return (void*)dynCheck_entry_vkGetShaderInfoAMD;
15302     }
15303 #endif
15304 #ifdef VK_GGP_stream_descriptor_surface
15305     if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP")) {
15306         bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
15307         return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
15308     }
15309 #endif
15310 #ifdef VK_NV_external_memory_capabilities
15311     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV")) {
15312         bool hasExt =
15313             resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
15314         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
15315     }
15316 #endif
15317 #ifdef VK_NV_external_memory_win32
15318     if (!strcmp(name, "vkGetMemoryWin32HandleNV")) {
15319         // TODO(b/236246382): Check support for device extension;
15320         return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
15321     }
15322 #endif
15323 #ifdef VK_NN_vi_surface
15324     if (!strcmp(name, "vkCreateViSurfaceNN")) {
15325         bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
15326         return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
15327     }
15328 #endif
15329 #ifdef VK_EXT_conditional_rendering
15330     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT")) {
15331         // TODO(b/236246382): Check support for device extension;
15332         return (void*)dynCheck_entry_vkCmdBeginConditionalRenderingEXT;
15333     }
15334     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT")) {
15335         // TODO(b/236246382): Check support for device extension;
15336         return (void*)dynCheck_entry_vkCmdEndConditionalRenderingEXT;
15337     }
15338 #endif
15339 #ifdef VK_NV_clip_space_w_scaling
15340     if (!strcmp(name, "vkCmdSetViewportWScalingNV")) {
15341         // TODO(b/236246382): Check support for device extension;
15342         return (void*)dynCheck_entry_vkCmdSetViewportWScalingNV;
15343     }
15344 #endif
15345 #ifdef VK_EXT_direct_mode_display
15346     if (!strcmp(name, "vkReleaseDisplayEXT")) {
15347         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
15348         return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
15349     }
15350 #endif
15351 #ifdef VK_EXT_acquire_xlib_display
15352     if (!strcmp(name, "vkAcquireXlibDisplayEXT")) {
15353         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
15354         return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
15355     }
15356     if (!strcmp(name, "vkGetRandROutputDisplayEXT")) {
15357         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
15358         return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
15359     }
15360 #endif
15361 #ifdef VK_EXT_display_surface_counter
15362     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT")) {
15363         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
15364         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
15365     }
15366 #endif
15367 #ifdef VK_EXT_display_control
15368     if (!strcmp(name, "vkDisplayPowerControlEXT")) {
15369         // TODO(b/236246382): Check support for device extension;
15370         return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
15371     }
15372     if (!strcmp(name, "vkRegisterDeviceEventEXT")) {
15373         // TODO(b/236246382): Check support for device extension;
15374         return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
15375     }
15376     if (!strcmp(name, "vkRegisterDisplayEventEXT")) {
15377         // TODO(b/236246382): Check support for device extension;
15378         return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
15379     }
15380     if (!strcmp(name, "vkGetSwapchainCounterEXT")) {
15381         // TODO(b/236246382): Check support for device extension;
15382         return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
15383     }
15384 #endif
15385 #ifdef VK_GOOGLE_display_timing
15386     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE")) {
15387         // TODO(b/236246382): Check support for device extension;
15388         return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
15389     }
15390     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE")) {
15391         // TODO(b/236246382): Check support for device extension;
15392         return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
15393     }
15394 #endif
15395 #ifdef VK_EXT_discard_rectangles
15396     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT")) {
15397         // TODO(b/236246382): Check support for device extension;
15398         return (void*)dynCheck_entry_vkCmdSetDiscardRectangleEXT;
15399     }
15400     if (!strcmp(name, "vkCmdSetDiscardRectangleEnableEXT")) {
15401         // TODO(b/236246382): Check support for device extension;
15402         return (void*)dynCheck_entry_vkCmdSetDiscardRectangleEnableEXT;
15403     }
15404     if (!strcmp(name, "vkCmdSetDiscardRectangleModeEXT")) {
15405         // TODO(b/236246382): Check support for device extension;
15406         return (void*)dynCheck_entry_vkCmdSetDiscardRectangleModeEXT;
15407     }
15408 #endif
15409 #ifdef VK_EXT_hdr_metadata
15410     if (!strcmp(name, "vkSetHdrMetadataEXT")) {
15411         // TODO(b/236246382): Check support for device extension;
15412         return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
15413     }
15414 #endif
15415 #ifdef VK_MVK_ios_surface
15416     if (!strcmp(name, "vkCreateIOSSurfaceMVK")) {
15417         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
15418         return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
15419     }
15420 #endif
15421 #ifdef VK_MVK_macos_surface
15422     if (!strcmp(name, "vkCreateMacOSSurfaceMVK")) {
15423         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
15424         return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
15425     }
15426 #endif
15427 #ifdef VK_EXT_debug_utils
15428     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT")) {
15429         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15430         return hasExt ? (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT : nullptr;
15431     }
15432     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT")) {
15433         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15434         return hasExt ? (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT : nullptr;
15435     }
15436     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT")) {
15437         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15438         return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
15439     }
15440     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT")) {
15441         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15442         return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
15443     }
15444     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT")) {
15445         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15446         return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
15447     }
15448     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT")) {
15449         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15450         return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
15451     }
15452     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT")) {
15453         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15454         return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
15455     }
15456     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT")) {
15457         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15458         return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
15459     }
15460     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT")) {
15461         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15462         return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
15463     }
15464     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT")) {
15465         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15466         return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
15467     }
15468     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT")) {
15469         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15470         return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
15471     }
15472 #endif
15473 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
15474     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID")) {
15475         // TODO(b/236246382): Check support for device extension;
15476         return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
15477     }
15478     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID")) {
15479         // TODO(b/236246382): Check support for device extension;
15480         return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
15481     }
15482 #endif
15483 #ifdef VK_EXT_sample_locations
15484     if (!strcmp(name, "vkCmdSetSampleLocationsEXT")) {
15485         // TODO(b/236246382): Check support for device extension;
15486         return (void*)dynCheck_entry_vkCmdSetSampleLocationsEXT;
15487     }
15488     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT")) {
15489         // TODO(b/236246382): Check support for device extension;
15490         return (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT;
15491     }
15492 #endif
15493 #ifdef VK_EXT_image_drm_format_modifier
15494     if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT")) {
15495         // TODO(b/236246382): Check support for device extension;
15496         return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
15497     }
15498 #endif
15499 #ifdef VK_EXT_validation_cache
15500     if (!strcmp(name, "vkCreateValidationCacheEXT")) {
15501         // TODO(b/236246382): Check support for device extension;
15502         return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
15503     }
15504     if (!strcmp(name, "vkDestroyValidationCacheEXT")) {
15505         // TODO(b/236246382): Check support for device extension;
15506         return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
15507     }
15508     if (!strcmp(name, "vkMergeValidationCachesEXT")) {
15509         // TODO(b/236246382): Check support for device extension;
15510         return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
15511     }
15512     if (!strcmp(name, "vkGetValidationCacheDataEXT")) {
15513         // TODO(b/236246382): Check support for device extension;
15514         return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
15515     }
15516 #endif
15517 #ifdef VK_NV_shading_rate_image
15518     if (!strcmp(name, "vkCmdBindShadingRateImageNV")) {
15519         // TODO(b/236246382): Check support for device extension;
15520         return (void*)dynCheck_entry_vkCmdBindShadingRateImageNV;
15521     }
15522     if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV")) {
15523         // TODO(b/236246382): Check support for device extension;
15524         return (void*)dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV;
15525     }
15526     if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV")) {
15527         // TODO(b/236246382): Check support for device extension;
15528         return (void*)dynCheck_entry_vkCmdSetCoarseSampleOrderNV;
15529     }
15530 #endif
15531 #ifdef VK_NV_ray_tracing
15532     if (!strcmp(name, "vkCreateAccelerationStructureNV")) {
15533         // TODO(b/236246382): Check support for device extension;
15534         return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
15535     }
15536     if (!strcmp(name, "vkDestroyAccelerationStructureNV")) {
15537         // TODO(b/236246382): Check support for device extension;
15538         return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
15539     }
15540     if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV")) {
15541         // TODO(b/236246382): Check support for device extension;
15542         return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
15543     }
15544     if (!strcmp(name, "vkBindAccelerationStructureMemoryNV")) {
15545         // TODO(b/236246382): Check support for device extension;
15546         return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
15547     }
15548     if (!strcmp(name, "vkCmdBuildAccelerationStructureNV")) {
15549         // TODO(b/236246382): Check support for device extension;
15550         return (void*)dynCheck_entry_vkCmdBuildAccelerationStructureNV;
15551     }
15552     if (!strcmp(name, "vkCmdCopyAccelerationStructureNV")) {
15553         // TODO(b/236246382): Check support for device extension;
15554         return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureNV;
15555     }
15556     if (!strcmp(name, "vkCmdTraceRaysNV")) {
15557         // TODO(b/236246382): Check support for device extension;
15558         return (void*)dynCheck_entry_vkCmdTraceRaysNV;
15559     }
15560     if (!strcmp(name, "vkCreateRayTracingPipelinesNV")) {
15561         // TODO(b/236246382): Check support for device extension;
15562         return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
15563     }
15564     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR")) {
15565         // TODO(b/236246382): Check support for device extension;
15566         return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
15567     }
15568     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV")) {
15569         // TODO(b/236246382): Check support for device extension;
15570         return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
15571     }
15572     if (!strcmp(name, "vkGetAccelerationStructureHandleNV")) {
15573         // TODO(b/236246382): Check support for device extension;
15574         return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
15575     }
15576     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV")) {
15577         // TODO(b/236246382): Check support for device extension;
15578         return (void*)dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV;
15579     }
15580     if (!strcmp(name, "vkCompileDeferredNV")) {
15581         // TODO(b/236246382): Check support for device extension;
15582         return (void*)dynCheck_entry_vkCompileDeferredNV;
15583     }
15584 #endif
15585 #ifdef VK_EXT_external_memory_host
15586     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT")) {
15587         // TODO(b/236246382): Check support for device extension;
15588         return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
15589     }
15590 #endif
15591 #ifdef VK_AMD_buffer_marker
15592     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD")) {
15593         // TODO(b/236246382): Check support for device extension;
15594         return (void*)dynCheck_entry_vkCmdWriteBufferMarkerAMD;
15595     }
15596 #endif
15597 #ifdef VK_EXT_calibrated_timestamps
15598     if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT")) {
15599         // TODO(b/236246382): Check support for device extension;
15600         return (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
15601     }
15602     if (!strcmp(name, "vkGetCalibratedTimestampsEXT")) {
15603         // TODO(b/236246382): Check support for device extension;
15604         return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
15605     }
15606 #endif
15607 #ifdef VK_NV_mesh_shader
15608     if (!strcmp(name, "vkCmdDrawMeshTasksNV")) {
15609         // TODO(b/236246382): Check support for device extension;
15610         return (void*)dynCheck_entry_vkCmdDrawMeshTasksNV;
15611     }
15612     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV")) {
15613         // TODO(b/236246382): Check support for device extension;
15614         return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectNV;
15615     }
15616     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV")) {
15617         // TODO(b/236246382): Check support for device extension;
15618         return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV;
15619     }
15620 #endif
15621 #ifdef VK_NV_scissor_exclusive
15622     if (!strcmp(name, "vkCmdSetExclusiveScissorEnableNV")) {
15623         // TODO(b/236246382): Check support for device extension;
15624         return (void*)dynCheck_entry_vkCmdSetExclusiveScissorEnableNV;
15625     }
15626     if (!strcmp(name, "vkCmdSetExclusiveScissorNV")) {
15627         // TODO(b/236246382): Check support for device extension;
15628         return (void*)dynCheck_entry_vkCmdSetExclusiveScissorNV;
15629     }
15630 #endif
15631 #ifdef VK_NV_device_diagnostic_checkpoints
15632     if (!strcmp(name, "vkCmdSetCheckpointNV")) {
15633         // TODO(b/236246382): Check support for device extension;
15634         return (void*)dynCheck_entry_vkCmdSetCheckpointNV;
15635     }
15636     if (!strcmp(name, "vkGetQueueCheckpointDataNV")) {
15637         // TODO(b/236246382): Check support for device extension;
15638         return (void*)entry_vkGetQueueCheckpointDataNV;
15639     }
15640 #endif
15641 #ifdef VK_INTEL_performance_query
15642     if (!strcmp(name, "vkInitializePerformanceApiINTEL")) {
15643         // TODO(b/236246382): Check support for device extension;
15644         return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
15645     }
15646     if (!strcmp(name, "vkUninitializePerformanceApiINTEL")) {
15647         // TODO(b/236246382): Check support for device extension;
15648         return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
15649     }
15650     if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL")) {
15651         // TODO(b/236246382): Check support for device extension;
15652         return (void*)dynCheck_entry_vkCmdSetPerformanceMarkerINTEL;
15653     }
15654     if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL")) {
15655         // TODO(b/236246382): Check support for device extension;
15656         return (void*)dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL;
15657     }
15658     if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL")) {
15659         // TODO(b/236246382): Check support for device extension;
15660         return (void*)dynCheck_entry_vkCmdSetPerformanceOverrideINTEL;
15661     }
15662     if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL")) {
15663         // TODO(b/236246382): Check support for device extension;
15664         return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
15665     }
15666     if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL")) {
15667         // TODO(b/236246382): Check support for device extension;
15668         return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
15669     }
15670     if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL")) {
15671         // TODO(b/236246382): Check support for device extension;
15672         return (void*)entry_vkQueueSetPerformanceConfigurationINTEL;
15673     }
15674     if (!strcmp(name, "vkGetPerformanceParameterINTEL")) {
15675         // TODO(b/236246382): Check support for device extension;
15676         return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
15677     }
15678 #endif
15679 #ifdef VK_AMD_display_native_hdr
15680     if (!strcmp(name, "vkSetLocalDimmingAMD")) {
15681         // TODO(b/236246382): Check support for device extension;
15682         return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
15683     }
15684 #endif
15685 #ifdef VK_FUCHSIA_imagepipe_surface
15686     if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA")) {
15687         bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
15688         return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
15689     }
15690 #endif
15691 #ifdef VK_EXT_metal_surface
15692     if (!strcmp(name, "vkCreateMetalSurfaceEXT")) {
15693         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
15694         return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
15695     }
15696 #endif
15697 #ifdef VK_EXT_buffer_device_address
15698     if (!strcmp(name, "vkGetBufferDeviceAddressEXT")) {
15699         // TODO(b/236246382): Check support for device extension;
15700         return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
15701     }
15702 #endif
15703 #ifdef VK_EXT_tooling_info
15704     if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT")) {
15705         // TODO(b/236246382): Check support for device extension;
15706         return (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT;
15707     }
15708 #endif
15709 #ifdef VK_NV_cooperative_matrix
15710     if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV")) {
15711         // TODO(b/236246382): Check support for device extension;
15712         return (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
15713     }
15714 #endif
15715 #ifdef VK_NV_coverage_reduction_mode
15716     if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV")) {
15717         // TODO(b/236246382): Check support for device extension;
15718         return (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
15719     }
15720 #endif
15721 #ifdef VK_EXT_full_screen_exclusive
15722     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT")) {
15723         // TODO(b/236246382): Check support for device extension;
15724         return (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT;
15725     }
15726     if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT")) {
15727         // TODO(b/236246382): Check support for device extension;
15728         return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
15729     }
15730     if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT")) {
15731         // TODO(b/236246382): Check support for device extension;
15732         return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
15733     }
15734     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT")) {
15735         // TODO(b/236246382): Check support for device extension;
15736         return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
15737     }
15738 #endif
15739 #ifdef VK_EXT_headless_surface
15740     if (!strcmp(name, "vkCreateHeadlessSurfaceEXT")) {
15741         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
15742         return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
15743     }
15744 #endif
15745 #ifdef VK_EXT_line_rasterization
15746     if (!strcmp(name, "vkCmdSetLineStippleEXT")) {
15747         // TODO(b/236246382): Check support for device extension;
15748         return (void*)dynCheck_entry_vkCmdSetLineStippleEXT;
15749     }
15750 #endif
15751 #ifdef VK_EXT_host_query_reset
15752     if (!strcmp(name, "vkResetQueryPoolEXT")) {
15753         // TODO(b/236246382): Check support for device extension;
15754         return (void*)dynCheck_entry_vkResetQueryPoolEXT;
15755     }
15756 #endif
15757 #ifdef VK_EXT_extended_dynamic_state
15758     if (!strcmp(name, "vkCmdSetCullModeEXT")) {
15759         // TODO(b/236246382): Check support for device extension;
15760         return (void*)dynCheck_entry_vkCmdSetCullModeEXT;
15761     }
15762     if (!strcmp(name, "vkCmdSetFrontFaceEXT")) {
15763         // TODO(b/236246382): Check support for device extension;
15764         return (void*)dynCheck_entry_vkCmdSetFrontFaceEXT;
15765     }
15766     if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT")) {
15767         // TODO(b/236246382): Check support for device extension;
15768         return (void*)dynCheck_entry_vkCmdSetPrimitiveTopologyEXT;
15769     }
15770     if (!strcmp(name, "vkCmdSetViewportWithCountEXT")) {
15771         // TODO(b/236246382): Check support for device extension;
15772         return (void*)dynCheck_entry_vkCmdSetViewportWithCountEXT;
15773     }
15774     if (!strcmp(name, "vkCmdSetScissorWithCountEXT")) {
15775         // TODO(b/236246382): Check support for device extension;
15776         return (void*)dynCheck_entry_vkCmdSetScissorWithCountEXT;
15777     }
15778     if (!strcmp(name, "vkCmdBindVertexBuffers2EXT")) {
15779         // TODO(b/236246382): Check support for device extension;
15780         return (void*)dynCheck_entry_vkCmdBindVertexBuffers2EXT;
15781     }
15782     if (!strcmp(name, "vkCmdSetDepthTestEnableEXT")) {
15783         // TODO(b/236246382): Check support for device extension;
15784         return (void*)dynCheck_entry_vkCmdSetDepthTestEnableEXT;
15785     }
15786     if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT")) {
15787         // TODO(b/236246382): Check support for device extension;
15788         return (void*)dynCheck_entry_vkCmdSetDepthWriteEnableEXT;
15789     }
15790     if (!strcmp(name, "vkCmdSetDepthCompareOpEXT")) {
15791         // TODO(b/236246382): Check support for device extension;
15792         return (void*)dynCheck_entry_vkCmdSetDepthCompareOpEXT;
15793     }
15794     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT")) {
15795         // TODO(b/236246382): Check support for device extension;
15796         return (void*)dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT;
15797     }
15798     if (!strcmp(name, "vkCmdSetStencilTestEnableEXT")) {
15799         // TODO(b/236246382): Check support for device extension;
15800         return (void*)dynCheck_entry_vkCmdSetStencilTestEnableEXT;
15801     }
15802     if (!strcmp(name, "vkCmdSetStencilOpEXT")) {
15803         // TODO(b/236246382): Check support for device extension;
15804         return (void*)dynCheck_entry_vkCmdSetStencilOpEXT;
15805     }
15806 #endif
15807 #ifdef VK_EXT_swapchain_maintenance1
15808     if (!strcmp(name, "vkReleaseSwapchainImagesEXT")) {
15809         // TODO(b/236246382): Check support for device extension;
15810         return (void*)dynCheck_entry_vkReleaseSwapchainImagesEXT;
15811     }
15812 #endif
15813 #ifdef VK_NV_device_generated_commands
15814     if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV")) {
15815         // TODO(b/236246382): Check support for device extension;
15816         return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
15817     }
15818     if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV")) {
15819         // TODO(b/236246382): Check support for device extension;
15820         return (void*)dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV;
15821     }
15822     if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV")) {
15823         // TODO(b/236246382): Check support for device extension;
15824         return (void*)dynCheck_entry_vkCmdExecuteGeneratedCommandsNV;
15825     }
15826     if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV")) {
15827         // TODO(b/236246382): Check support for device extension;
15828         return (void*)dynCheck_entry_vkCmdBindPipelineShaderGroupNV;
15829     }
15830     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV")) {
15831         // TODO(b/236246382): Check support for device extension;
15832         return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
15833     }
15834     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV")) {
15835         // TODO(b/236246382): Check support for device extension;
15836         return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
15837     }
15838 #endif
15839 #ifdef VK_EXT_acquire_drm_display
15840     if (!strcmp(name, "vkAcquireDrmDisplayEXT")) {
15841         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
15842         return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
15843     }
15844     if (!strcmp(name, "vkGetDrmDisplayEXT")) {
15845         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
15846         return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
15847     }
15848 #endif
15849 #ifdef VK_EXT_private_data
15850     if (!strcmp(name, "vkCreatePrivateDataSlotEXT")) {
15851         // TODO(b/236246382): Check support for device extension;
15852         return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
15853     }
15854     if (!strcmp(name, "vkDestroyPrivateDataSlotEXT")) {
15855         // TODO(b/236246382): Check support for device extension;
15856         return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
15857     }
15858     if (!strcmp(name, "vkSetPrivateDataEXT")) {
15859         // TODO(b/236246382): Check support for device extension;
15860         return (void*)dynCheck_entry_vkSetPrivateDataEXT;
15861     }
15862     if (!strcmp(name, "vkGetPrivateDataEXT")) {
15863         // TODO(b/236246382): Check support for device extension;
15864         return (void*)dynCheck_entry_vkGetPrivateDataEXT;
15865     }
15866 #endif
15867 #ifdef VK_EXT_metal_objects
15868     if (!strcmp(name, "vkExportMetalObjectsEXT")) {
15869         // TODO(b/236246382): Check support for device extension;
15870         return (void*)dynCheck_entry_vkExportMetalObjectsEXT;
15871     }
15872 #endif
15873 #ifdef VK_EXT_descriptor_buffer
15874     if (!strcmp(name, "vkGetDescriptorSetLayoutSizeEXT")) {
15875         // TODO(b/236246382): Check support for device extension;
15876         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSizeEXT;
15877     }
15878     if (!strcmp(name, "vkGetDescriptorSetLayoutBindingOffsetEXT")) {
15879         // TODO(b/236246382): Check support for device extension;
15880         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutBindingOffsetEXT;
15881     }
15882     if (!strcmp(name, "vkGetDescriptorEXT")) {
15883         // TODO(b/236246382): Check support for device extension;
15884         return (void*)dynCheck_entry_vkGetDescriptorEXT;
15885     }
15886     if (!strcmp(name, "vkCmdBindDescriptorBuffersEXT")) {
15887         // TODO(b/236246382): Check support for device extension;
15888         return (void*)dynCheck_entry_vkCmdBindDescriptorBuffersEXT;
15889     }
15890     if (!strcmp(name, "vkCmdSetDescriptorBufferOffsetsEXT")) {
15891         // TODO(b/236246382): Check support for device extension;
15892         return (void*)dynCheck_entry_vkCmdSetDescriptorBufferOffsetsEXT;
15893     }
15894     if (!strcmp(name, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT")) {
15895         // TODO(b/236246382): Check support for device extension;
15896         return (void*)dynCheck_entry_vkCmdBindDescriptorBufferEmbeddedSamplersEXT;
15897     }
15898     if (!strcmp(name, "vkGetBufferOpaqueCaptureDescriptorDataEXT")) {
15899         // TODO(b/236246382): Check support for device extension;
15900         return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureDescriptorDataEXT;
15901     }
15902     if (!strcmp(name, "vkGetImageOpaqueCaptureDescriptorDataEXT")) {
15903         // TODO(b/236246382): Check support for device extension;
15904         return (void*)dynCheck_entry_vkGetImageOpaqueCaptureDescriptorDataEXT;
15905     }
15906     if (!strcmp(name, "vkGetImageViewOpaqueCaptureDescriptorDataEXT")) {
15907         // TODO(b/236246382): Check support for device extension;
15908         return (void*)dynCheck_entry_vkGetImageViewOpaqueCaptureDescriptorDataEXT;
15909     }
15910     if (!strcmp(name, "vkGetSamplerOpaqueCaptureDescriptorDataEXT")) {
15911         // TODO(b/236246382): Check support for device extension;
15912         return (void*)dynCheck_entry_vkGetSamplerOpaqueCaptureDescriptorDataEXT;
15913     }
15914     if (!strcmp(name, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT")) {
15915         // TODO(b/236246382): Check support for device extension;
15916         return (void*)dynCheck_entry_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;
15917     }
15918 #endif
15919 #ifdef VK_NV_fragment_shading_rate_enums
15920     if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV")) {
15921         // TODO(b/236246382): Check support for device extension;
15922         return (void*)dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV;
15923     }
15924 #endif
15925 #ifdef VK_EXT_image_compression_control
15926     if (!strcmp(name, "vkGetImageSubresourceLayout2EXT")) {
15927         // TODO(b/236246382): Check support for device extension;
15928         return (void*)dynCheck_entry_vkGetImageSubresourceLayout2EXT;
15929     }
15930 #endif
15931 #ifdef VK_EXT_device_fault
15932     if (!strcmp(name, "vkGetDeviceFaultInfoEXT")) {
15933         // TODO(b/236246382): Check support for device extension;
15934         return (void*)dynCheck_entry_vkGetDeviceFaultInfoEXT;
15935     }
15936 #endif
15937 #ifdef VK_NV_acquire_winrt_display
15938     if (!strcmp(name, "vkAcquireWinrtDisplayNV")) {
15939         // TODO(b/236246382): Check support for device extension;
15940         return (void*)entry_vkAcquireWinrtDisplayNV;
15941     }
15942     if (!strcmp(name, "vkGetWinrtDisplayNV")) {
15943         // TODO(b/236246382): Check support for device extension;
15944         return (void*)entry_vkGetWinrtDisplayNV;
15945     }
15946 #endif
15947 #ifdef VK_EXT_directfb_surface
15948     if (!strcmp(name, "vkCreateDirectFBSurfaceEXT")) {
15949         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
15950         return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
15951     }
15952     if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT")) {
15953         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
15954         return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
15955     }
15956 #endif
15957 #ifdef VK_EXT_vertex_input_dynamic_state
15958     if (!strcmp(name, "vkCmdSetVertexInputEXT")) {
15959         // TODO(b/236246382): Check support for device extension;
15960         return (void*)dynCheck_entry_vkCmdSetVertexInputEXT;
15961     }
15962 #endif
15963 #ifdef VK_FUCHSIA_external_memory
15964     if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA")) {
15965         // TODO(b/236246382): Check support for device extension;
15966         return (void*)dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA;
15967     }
15968     if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA")) {
15969         // TODO(b/236246382): Check support for device extension;
15970         return (void*)dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA;
15971     }
15972 #endif
15973 #ifdef VK_FUCHSIA_external_semaphore
15974     if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA")) {
15975         // TODO(b/236246382): Check support for device extension;
15976         return (void*)dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA;
15977     }
15978     if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA")) {
15979         // TODO(b/236246382): Check support for device extension;
15980         return (void*)dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA;
15981     }
15982 #endif
15983 #ifdef VK_FUCHSIA_buffer_collection
15984     if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA")) {
15985         // TODO(b/236246382): Check support for device extension;
15986         return (void*)dynCheck_entry_vkCreateBufferCollectionFUCHSIA;
15987     }
15988     if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA")) {
15989         // TODO(b/236246382): Check support for device extension;
15990         return (void*)dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA;
15991     }
15992     if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA")) {
15993         // TODO(b/236246382): Check support for device extension;
15994         return (void*)dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA;
15995     }
15996     if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA")) {
15997         // TODO(b/236246382): Check support for device extension;
15998         return (void*)dynCheck_entry_vkDestroyBufferCollectionFUCHSIA;
15999     }
16000     if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA")) {
16001         // TODO(b/236246382): Check support for device extension;
16002         return (void*)dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA;
16003     }
16004 #endif
16005 #ifdef VK_HUAWEI_subpass_shading
16006     if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI")) {
16007         // TODO(b/236246382): Check support for device extension;
16008         return (void*)dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
16009     }
16010     if (!strcmp(name, "vkCmdSubpassShadingHUAWEI")) {
16011         // TODO(b/236246382): Check support for device extension;
16012         return (void*)dynCheck_entry_vkCmdSubpassShadingHUAWEI;
16013     }
16014 #endif
16015 #ifdef VK_HUAWEI_invocation_mask
16016     if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI")) {
16017         // TODO(b/236246382): Check support for device extension;
16018         return (void*)dynCheck_entry_vkCmdBindInvocationMaskHUAWEI;
16019     }
16020 #endif
16021 #ifdef VK_NV_external_memory_rdma
16022     if (!strcmp(name, "vkGetMemoryRemoteAddressNV")) {
16023         // TODO(b/236246382): Check support for device extension;
16024         return (void*)dynCheck_entry_vkGetMemoryRemoteAddressNV;
16025     }
16026 #endif
16027 #ifdef VK_EXT_pipeline_properties
16028     if (!strcmp(name, "vkGetPipelinePropertiesEXT")) {
16029         // TODO(b/236246382): Check support for device extension;
16030         return (void*)dynCheck_entry_vkGetPipelinePropertiesEXT;
16031     }
16032 #endif
16033 #ifdef VK_EXT_extended_dynamic_state2
16034     if (!strcmp(name, "vkCmdSetPatchControlPointsEXT")) {
16035         // TODO(b/236246382): Check support for device extension;
16036         return (void*)dynCheck_entry_vkCmdSetPatchControlPointsEXT;
16037     }
16038     if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT")) {
16039         // TODO(b/236246382): Check support for device extension;
16040         return (void*)dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT;
16041     }
16042     if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT")) {
16043         // TODO(b/236246382): Check support for device extension;
16044         return (void*)dynCheck_entry_vkCmdSetDepthBiasEnableEXT;
16045     }
16046     if (!strcmp(name, "vkCmdSetLogicOpEXT")) {
16047         // TODO(b/236246382): Check support for device extension;
16048         return (void*)dynCheck_entry_vkCmdSetLogicOpEXT;
16049     }
16050     if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT")) {
16051         // TODO(b/236246382): Check support for device extension;
16052         return (void*)dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT;
16053     }
16054 #endif
16055 #ifdef VK_QNX_screen_surface
16056     if (!strcmp(name, "vkCreateScreenSurfaceQNX")) {
16057         bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
16058         return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
16059     }
16060     if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX")) {
16061         bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
16062         return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
16063     }
16064 #endif
16065 #ifdef VK_EXT_color_write_enable
16066     if (!strcmp(name, "vkCmdSetColorWriteEnableEXT")) {
16067         // TODO(b/236246382): Check support for device extension;
16068         return (void*)dynCheck_entry_vkCmdSetColorWriteEnableEXT;
16069     }
16070 #endif
16071 #ifdef VK_GOOGLE_gfxstream
16072     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE")) {
16073         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16074         return hasExt ? (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
16075     }
16076     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE")) {
16077         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16078         return hasExt ? (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE
16079                       : nullptr;
16080     }
16081     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE")) {
16082         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16083         return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
16084     }
16085     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE")) {
16086         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16087         return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
16088     }
16089     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE")) {
16090         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16091         return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
16092     }
16093     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE")) {
16094         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16095         return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
16096     }
16097     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE")) {
16098         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16099         return hasExt ? (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
16100     }
16101     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE")) {
16102         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16103         return hasExt ? (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
16104     }
16105     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE")) {
16106         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16107         return hasExt ? (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
16108     }
16109     if (!strcmp(name, "vkFreeMemorySyncGOOGLE")) {
16110         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16111         return hasExt ? (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE : nullptr;
16112     }
16113     if (!strcmp(name, "vkQueueHostSyncGOOGLE")) {
16114         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16115         return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
16116     }
16117     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE")) {
16118         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16119         return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
16120     }
16121     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE")) {
16122         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16123         return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
16124     }
16125     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE")) {
16126         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16127         return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
16128     }
16129     if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE")) {
16130         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16131         return hasExt ? (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE : nullptr;
16132     }
16133     if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE")) {
16134         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16135         return hasExt ? (void*)dynCheck_entry_vkGetLinearImageLayout2GOOGLE : nullptr;
16136     }
16137     if (!strcmp(name, "vkQueueFlushCommandsGOOGLE")) {
16138         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16139         return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
16140     }
16141     if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE")) {
16142         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16143         return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
16144     }
16145     if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE")) {
16146         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16147         return hasExt ? (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
16148     }
16149     if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE")) {
16150         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16151         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
16152     }
16153     if (!strcmp(name, "vkQueueFlushCommandsFromAuxMemoryGOOGLE")) {
16154         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16155         return hasExt ? (void*)entry_vkQueueFlushCommandsFromAuxMemoryGOOGLE : nullptr;
16156     }
16157     if (!strcmp(name, "vkGetBlobGOOGLE")) {
16158         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16159         return hasExt ? (void*)dynCheck_entry_vkGetBlobGOOGLE : nullptr;
16160     }
16161     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE")) {
16162         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16163         return hasExt ? (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSized2GOOGLE
16164                       : nullptr;
16165     }
16166     if (!strcmp(name, "vkQueueSubmitAsync2GOOGLE")) {
16167         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
16168         return hasExt ? (void*)entry_vkQueueSubmitAsync2GOOGLE : nullptr;
16169     }
16170 #endif
16171 #ifdef VK_EXT_multi_draw
16172     if (!strcmp(name, "vkCmdDrawMultiEXT")) {
16173         // TODO(b/236246382): Check support for device extension;
16174         return (void*)dynCheck_entry_vkCmdDrawMultiEXT;
16175     }
16176     if (!strcmp(name, "vkCmdDrawMultiIndexedEXT")) {
16177         // TODO(b/236246382): Check support for device extension;
16178         return (void*)dynCheck_entry_vkCmdDrawMultiIndexedEXT;
16179     }
16180 #endif
16181 #ifdef VK_EXT_opacity_micromap
16182     if (!strcmp(name, "vkCreateMicromapEXT")) {
16183         // TODO(b/236246382): Check support for device extension;
16184         return (void*)dynCheck_entry_vkCreateMicromapEXT;
16185     }
16186     if (!strcmp(name, "vkDestroyMicromapEXT")) {
16187         // TODO(b/236246382): Check support for device extension;
16188         return (void*)dynCheck_entry_vkDestroyMicromapEXT;
16189     }
16190     if (!strcmp(name, "vkCmdBuildMicromapsEXT")) {
16191         // TODO(b/236246382): Check support for device extension;
16192         return (void*)dynCheck_entry_vkCmdBuildMicromapsEXT;
16193     }
16194     if (!strcmp(name, "vkBuildMicromapsEXT")) {
16195         // TODO(b/236246382): Check support for device extension;
16196         return (void*)dynCheck_entry_vkBuildMicromapsEXT;
16197     }
16198     if (!strcmp(name, "vkCopyMicromapEXT")) {
16199         // TODO(b/236246382): Check support for device extension;
16200         return (void*)dynCheck_entry_vkCopyMicromapEXT;
16201     }
16202     if (!strcmp(name, "vkCopyMicromapToMemoryEXT")) {
16203         // TODO(b/236246382): Check support for device extension;
16204         return (void*)dynCheck_entry_vkCopyMicromapToMemoryEXT;
16205     }
16206     if (!strcmp(name, "vkCopyMemoryToMicromapEXT")) {
16207         // TODO(b/236246382): Check support for device extension;
16208         return (void*)dynCheck_entry_vkCopyMemoryToMicromapEXT;
16209     }
16210     if (!strcmp(name, "vkWriteMicromapsPropertiesEXT")) {
16211         // TODO(b/236246382): Check support for device extension;
16212         return (void*)dynCheck_entry_vkWriteMicromapsPropertiesEXT;
16213     }
16214     if (!strcmp(name, "vkCmdCopyMicromapEXT")) {
16215         // TODO(b/236246382): Check support for device extension;
16216         return (void*)dynCheck_entry_vkCmdCopyMicromapEXT;
16217     }
16218     if (!strcmp(name, "vkCmdCopyMicromapToMemoryEXT")) {
16219         // TODO(b/236246382): Check support for device extension;
16220         return (void*)dynCheck_entry_vkCmdCopyMicromapToMemoryEXT;
16221     }
16222     if (!strcmp(name, "vkCmdCopyMemoryToMicromapEXT")) {
16223         // TODO(b/236246382): Check support for device extension;
16224         return (void*)dynCheck_entry_vkCmdCopyMemoryToMicromapEXT;
16225     }
16226     if (!strcmp(name, "vkCmdWriteMicromapsPropertiesEXT")) {
16227         // TODO(b/236246382): Check support for device extension;
16228         return (void*)dynCheck_entry_vkCmdWriteMicromapsPropertiesEXT;
16229     }
16230     if (!strcmp(name, "vkGetDeviceMicromapCompatibilityEXT")) {
16231         // TODO(b/236246382): Check support for device extension;
16232         return (void*)dynCheck_entry_vkGetDeviceMicromapCompatibilityEXT;
16233     }
16234     if (!strcmp(name, "vkGetMicromapBuildSizesEXT")) {
16235         // TODO(b/236246382): Check support for device extension;
16236         return (void*)dynCheck_entry_vkGetMicromapBuildSizesEXT;
16237     }
16238 #endif
16239 #ifdef VK_HUAWEI_cluster_culling_shader
16240     if (!strcmp(name, "vkCmdDrawClusterHUAWEI")) {
16241         // TODO(b/236246382): Check support for device extension;
16242         return (void*)dynCheck_entry_vkCmdDrawClusterHUAWEI;
16243     }
16244     if (!strcmp(name, "vkCmdDrawClusterIndirectHUAWEI")) {
16245         // TODO(b/236246382): Check support for device extension;
16246         return (void*)dynCheck_entry_vkCmdDrawClusterIndirectHUAWEI;
16247     }
16248 #endif
16249 #ifdef VK_EXT_pageable_device_local_memory
16250     if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT")) {
16251         // TODO(b/236246382): Check support for device extension;
16252         return (void*)dynCheck_entry_vkSetDeviceMemoryPriorityEXT;
16253     }
16254 #endif
16255 #ifdef VK_VALVE_descriptor_set_host_mapping
16256     if (!strcmp(name, "vkGetDescriptorSetLayoutHostMappingInfoVALVE")) {
16257         // TODO(b/236246382): Check support for device extension;
16258         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutHostMappingInfoVALVE;
16259     }
16260     if (!strcmp(name, "vkGetDescriptorSetHostMappingVALVE")) {
16261         // TODO(b/236246382): Check support for device extension;
16262         return (void*)dynCheck_entry_vkGetDescriptorSetHostMappingVALVE;
16263     }
16264 #endif
16265 #ifdef VK_NV_copy_memory_indirect
16266     if (!strcmp(name, "vkCmdCopyMemoryIndirectNV")) {
16267         // TODO(b/236246382): Check support for device extension;
16268         return (void*)dynCheck_entry_vkCmdCopyMemoryIndirectNV;
16269     }
16270     if (!strcmp(name, "vkCmdCopyMemoryToImageIndirectNV")) {
16271         // TODO(b/236246382): Check support for device extension;
16272         return (void*)dynCheck_entry_vkCmdCopyMemoryToImageIndirectNV;
16273     }
16274 #endif
16275 #ifdef VK_NV_memory_decompression
16276     if (!strcmp(name, "vkCmdDecompressMemoryNV")) {
16277         // TODO(b/236246382): Check support for device extension;
16278         return (void*)dynCheck_entry_vkCmdDecompressMemoryNV;
16279     }
16280     if (!strcmp(name, "vkCmdDecompressMemoryIndirectCountNV")) {
16281         // TODO(b/236246382): Check support for device extension;
16282         return (void*)dynCheck_entry_vkCmdDecompressMemoryIndirectCountNV;
16283     }
16284 #endif
16285 #ifdef VK_EXT_extended_dynamic_state3
16286     if (!strcmp(name, "vkCmdSetTessellationDomainOriginEXT")) {
16287         // TODO(b/236246382): Check support for device extension;
16288         return (void*)dynCheck_entry_vkCmdSetTessellationDomainOriginEXT;
16289     }
16290     if (!strcmp(name, "vkCmdSetDepthClampEnableEXT")) {
16291         // TODO(b/236246382): Check support for device extension;
16292         return (void*)dynCheck_entry_vkCmdSetDepthClampEnableEXT;
16293     }
16294     if (!strcmp(name, "vkCmdSetPolygonModeEXT")) {
16295         // TODO(b/236246382): Check support for device extension;
16296         return (void*)dynCheck_entry_vkCmdSetPolygonModeEXT;
16297     }
16298     if (!strcmp(name, "vkCmdSetRasterizationSamplesEXT")) {
16299         // TODO(b/236246382): Check support for device extension;
16300         return (void*)dynCheck_entry_vkCmdSetRasterizationSamplesEXT;
16301     }
16302     if (!strcmp(name, "vkCmdSetSampleMaskEXT")) {
16303         // TODO(b/236246382): Check support for device extension;
16304         return (void*)dynCheck_entry_vkCmdSetSampleMaskEXT;
16305     }
16306     if (!strcmp(name, "vkCmdSetAlphaToCoverageEnableEXT")) {
16307         // TODO(b/236246382): Check support for device extension;
16308         return (void*)dynCheck_entry_vkCmdSetAlphaToCoverageEnableEXT;
16309     }
16310     if (!strcmp(name, "vkCmdSetAlphaToOneEnableEXT")) {
16311         // TODO(b/236246382): Check support for device extension;
16312         return (void*)dynCheck_entry_vkCmdSetAlphaToOneEnableEXT;
16313     }
16314     if (!strcmp(name, "vkCmdSetLogicOpEnableEXT")) {
16315         // TODO(b/236246382): Check support for device extension;
16316         return (void*)dynCheck_entry_vkCmdSetLogicOpEnableEXT;
16317     }
16318     if (!strcmp(name, "vkCmdSetColorBlendEnableEXT")) {
16319         // TODO(b/236246382): Check support for device extension;
16320         return (void*)dynCheck_entry_vkCmdSetColorBlendEnableEXT;
16321     }
16322     if (!strcmp(name, "vkCmdSetColorBlendEquationEXT")) {
16323         // TODO(b/236246382): Check support for device extension;
16324         return (void*)dynCheck_entry_vkCmdSetColorBlendEquationEXT;
16325     }
16326     if (!strcmp(name, "vkCmdSetColorWriteMaskEXT")) {
16327         // TODO(b/236246382): Check support for device extension;
16328         return (void*)dynCheck_entry_vkCmdSetColorWriteMaskEXT;
16329     }
16330     if (!strcmp(name, "vkCmdSetRasterizationStreamEXT")) {
16331         // TODO(b/236246382): Check support for device extension;
16332         return (void*)dynCheck_entry_vkCmdSetRasterizationStreamEXT;
16333     }
16334     if (!strcmp(name, "vkCmdSetConservativeRasterizationModeEXT")) {
16335         // TODO(b/236246382): Check support for device extension;
16336         return (void*)dynCheck_entry_vkCmdSetConservativeRasterizationModeEXT;
16337     }
16338     if (!strcmp(name, "vkCmdSetExtraPrimitiveOverestimationSizeEXT")) {
16339         // TODO(b/236246382): Check support for device extension;
16340         return (void*)dynCheck_entry_vkCmdSetExtraPrimitiveOverestimationSizeEXT;
16341     }
16342     if (!strcmp(name, "vkCmdSetDepthClipEnableEXT")) {
16343         // TODO(b/236246382): Check support for device extension;
16344         return (void*)dynCheck_entry_vkCmdSetDepthClipEnableEXT;
16345     }
16346     if (!strcmp(name, "vkCmdSetSampleLocationsEnableEXT")) {
16347         // TODO(b/236246382): Check support for device extension;
16348         return (void*)dynCheck_entry_vkCmdSetSampleLocationsEnableEXT;
16349     }
16350     if (!strcmp(name, "vkCmdSetColorBlendAdvancedEXT")) {
16351         // TODO(b/236246382): Check support for device extension;
16352         return (void*)dynCheck_entry_vkCmdSetColorBlendAdvancedEXT;
16353     }
16354     if (!strcmp(name, "vkCmdSetProvokingVertexModeEXT")) {
16355         // TODO(b/236246382): Check support for device extension;
16356         return (void*)dynCheck_entry_vkCmdSetProvokingVertexModeEXT;
16357     }
16358     if (!strcmp(name, "vkCmdSetLineRasterizationModeEXT")) {
16359         // TODO(b/236246382): Check support for device extension;
16360         return (void*)dynCheck_entry_vkCmdSetLineRasterizationModeEXT;
16361     }
16362     if (!strcmp(name, "vkCmdSetLineStippleEnableEXT")) {
16363         // TODO(b/236246382): Check support for device extension;
16364         return (void*)dynCheck_entry_vkCmdSetLineStippleEnableEXT;
16365     }
16366     if (!strcmp(name, "vkCmdSetDepthClipNegativeOneToOneEXT")) {
16367         // TODO(b/236246382): Check support for device extension;
16368         return (void*)dynCheck_entry_vkCmdSetDepthClipNegativeOneToOneEXT;
16369     }
16370     if (!strcmp(name, "vkCmdSetViewportWScalingEnableNV")) {
16371         // TODO(b/236246382): Check support for device extension;
16372         return (void*)dynCheck_entry_vkCmdSetViewportWScalingEnableNV;
16373     }
16374     if (!strcmp(name, "vkCmdSetViewportSwizzleNV")) {
16375         // TODO(b/236246382): Check support for device extension;
16376         return (void*)dynCheck_entry_vkCmdSetViewportSwizzleNV;
16377     }
16378     if (!strcmp(name, "vkCmdSetCoverageToColorEnableNV")) {
16379         // TODO(b/236246382): Check support for device extension;
16380         return (void*)dynCheck_entry_vkCmdSetCoverageToColorEnableNV;
16381     }
16382     if (!strcmp(name, "vkCmdSetCoverageToColorLocationNV")) {
16383         // TODO(b/236246382): Check support for device extension;
16384         return (void*)dynCheck_entry_vkCmdSetCoverageToColorLocationNV;
16385     }
16386     if (!strcmp(name, "vkCmdSetCoverageModulationModeNV")) {
16387         // TODO(b/236246382): Check support for device extension;
16388         return (void*)dynCheck_entry_vkCmdSetCoverageModulationModeNV;
16389     }
16390     if (!strcmp(name, "vkCmdSetCoverageModulationTableEnableNV")) {
16391         // TODO(b/236246382): Check support for device extension;
16392         return (void*)dynCheck_entry_vkCmdSetCoverageModulationTableEnableNV;
16393     }
16394     if (!strcmp(name, "vkCmdSetCoverageModulationTableNV")) {
16395         // TODO(b/236246382): Check support for device extension;
16396         return (void*)dynCheck_entry_vkCmdSetCoverageModulationTableNV;
16397     }
16398     if (!strcmp(name, "vkCmdSetShadingRateImageEnableNV")) {
16399         // TODO(b/236246382): Check support for device extension;
16400         return (void*)dynCheck_entry_vkCmdSetShadingRateImageEnableNV;
16401     }
16402     if (!strcmp(name, "vkCmdSetRepresentativeFragmentTestEnableNV")) {
16403         // TODO(b/236246382): Check support for device extension;
16404         return (void*)dynCheck_entry_vkCmdSetRepresentativeFragmentTestEnableNV;
16405     }
16406     if (!strcmp(name, "vkCmdSetCoverageReductionModeNV")) {
16407         // TODO(b/236246382): Check support for device extension;
16408         return (void*)dynCheck_entry_vkCmdSetCoverageReductionModeNV;
16409     }
16410 #endif
16411 #ifdef VK_EXT_shader_module_identifier
16412     if (!strcmp(name, "vkGetShaderModuleIdentifierEXT")) {
16413         // TODO(b/236246382): Check support for device extension;
16414         return (void*)dynCheck_entry_vkGetShaderModuleIdentifierEXT;
16415     }
16416     if (!strcmp(name, "vkGetShaderModuleCreateInfoIdentifierEXT")) {
16417         // TODO(b/236246382): Check support for device extension;
16418         return (void*)dynCheck_entry_vkGetShaderModuleCreateInfoIdentifierEXT;
16419     }
16420 #endif
16421 #ifdef VK_NV_optical_flow
16422     if (!strcmp(name, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV")) {
16423         // TODO(b/236246382): Check support for device extension;
16424         return (void*)entry_vkGetPhysicalDeviceOpticalFlowImageFormatsNV;
16425     }
16426     if (!strcmp(name, "vkCreateOpticalFlowSessionNV")) {
16427         // TODO(b/236246382): Check support for device extension;
16428         return (void*)dynCheck_entry_vkCreateOpticalFlowSessionNV;
16429     }
16430     if (!strcmp(name, "vkDestroyOpticalFlowSessionNV")) {
16431         // TODO(b/236246382): Check support for device extension;
16432         return (void*)dynCheck_entry_vkDestroyOpticalFlowSessionNV;
16433     }
16434     if (!strcmp(name, "vkBindOpticalFlowSessionImageNV")) {
16435         // TODO(b/236246382): Check support for device extension;
16436         return (void*)dynCheck_entry_vkBindOpticalFlowSessionImageNV;
16437     }
16438     if (!strcmp(name, "vkCmdOpticalFlowExecuteNV")) {
16439         // TODO(b/236246382): Check support for device extension;
16440         return (void*)dynCheck_entry_vkCmdOpticalFlowExecuteNV;
16441     }
16442 #endif
16443 #ifdef VK_EXT_shader_object
16444     if (!strcmp(name, "vkCreateShadersEXT")) {
16445         // TODO(b/236246382): Check support for device extension;
16446         return (void*)dynCheck_entry_vkCreateShadersEXT;
16447     }
16448     if (!strcmp(name, "vkDestroyShaderEXT")) {
16449         // TODO(b/236246382): Check support for device extension;
16450         return (void*)dynCheck_entry_vkDestroyShaderEXT;
16451     }
16452     if (!strcmp(name, "vkGetShaderBinaryDataEXT")) {
16453         // TODO(b/236246382): Check support for device extension;
16454         return (void*)dynCheck_entry_vkGetShaderBinaryDataEXT;
16455     }
16456     if (!strcmp(name, "vkCmdBindShadersEXT")) {
16457         // TODO(b/236246382): Check support for device extension;
16458         return (void*)dynCheck_entry_vkCmdBindShadersEXT;
16459     }
16460 #endif
16461 #ifdef VK_QCOM_tile_properties
16462     if (!strcmp(name, "vkGetFramebufferTilePropertiesQCOM")) {
16463         // TODO(b/236246382): Check support for device extension;
16464         return (void*)dynCheck_entry_vkGetFramebufferTilePropertiesQCOM;
16465     }
16466     if (!strcmp(name, "vkGetDynamicRenderingTilePropertiesQCOM")) {
16467         // TODO(b/236246382): Check support for device extension;
16468         return (void*)dynCheck_entry_vkGetDynamicRenderingTilePropertiesQCOM;
16469     }
16470 #endif
16471 #ifdef VK_EXT_attachment_feedback_loop_dynamic_state
16472     if (!strcmp(name, "vkCmdSetAttachmentFeedbackLoopEnableEXT")) {
16473         // TODO(b/236246382): Check support for device extension;
16474         return (void*)dynCheck_entry_vkCmdSetAttachmentFeedbackLoopEnableEXT;
16475     }
16476 #endif
16477 #ifdef VK_KHR_acceleration_structure
16478     if (!strcmp(name, "vkCreateAccelerationStructureKHR")) {
16479         // TODO(b/236246382): Check support for device extension;
16480         return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
16481     }
16482     if (!strcmp(name, "vkDestroyAccelerationStructureKHR")) {
16483         // TODO(b/236246382): Check support for device extension;
16484         return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
16485     }
16486     if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR")) {
16487         // TODO(b/236246382): Check support for device extension;
16488         return (void*)dynCheck_entry_vkCmdBuildAccelerationStructuresKHR;
16489     }
16490     if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR")) {
16491         // TODO(b/236246382): Check support for device extension;
16492         return (void*)dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR;
16493     }
16494     if (!strcmp(name, "vkBuildAccelerationStructuresKHR")) {
16495         // TODO(b/236246382): Check support for device extension;
16496         return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
16497     }
16498     if (!strcmp(name, "vkCopyAccelerationStructureKHR")) {
16499         // TODO(b/236246382): Check support for device extension;
16500         return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
16501     }
16502     if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR")) {
16503         // TODO(b/236246382): Check support for device extension;
16504         return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
16505     }
16506     if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR")) {
16507         // TODO(b/236246382): Check support for device extension;
16508         return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
16509     }
16510     if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR")) {
16511         // TODO(b/236246382): Check support for device extension;
16512         return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
16513     }
16514     if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR")) {
16515         // TODO(b/236246382): Check support for device extension;
16516         return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureKHR;
16517     }
16518     if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR")) {
16519         // TODO(b/236246382): Check support for device extension;
16520         return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR;
16521     }
16522     if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR")) {
16523         // TODO(b/236246382): Check support for device extension;
16524         return (void*)dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR;
16525     }
16526     if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR")) {
16527         // TODO(b/236246382): Check support for device extension;
16528         return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
16529     }
16530     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR")) {
16531         // TODO(b/236246382): Check support for device extension;
16532         return (void*)dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR;
16533     }
16534     if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR")) {
16535         // TODO(b/236246382): Check support for device extension;
16536         return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
16537     }
16538     if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR")) {
16539         // TODO(b/236246382): Check support for device extension;
16540         return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
16541     }
16542 #endif
16543 #ifdef VK_KHR_ray_tracing_pipeline
16544     if (!strcmp(name, "vkCmdTraceRaysKHR")) {
16545         // TODO(b/236246382): Check support for device extension;
16546         return (void*)dynCheck_entry_vkCmdTraceRaysKHR;
16547     }
16548     if (!strcmp(name, "vkCreateRayTracingPipelinesKHR")) {
16549         // TODO(b/236246382): Check support for device extension;
16550         return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
16551     }
16552     if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR")) {
16553         // TODO(b/236246382): Check support for device extension;
16554         return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
16555     }
16556     if (!strcmp(name, "vkCmdTraceRaysIndirectKHR")) {
16557         // TODO(b/236246382): Check support for device extension;
16558         return (void*)dynCheck_entry_vkCmdTraceRaysIndirectKHR;
16559     }
16560     if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR")) {
16561         // TODO(b/236246382): Check support for device extension;
16562         return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
16563     }
16564     if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR")) {
16565         // TODO(b/236246382): Check support for device extension;
16566         return (void*)dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR;
16567     }
16568 #endif
16569 #ifdef VK_EXT_mesh_shader
16570     if (!strcmp(name, "vkCmdDrawMeshTasksEXT")) {
16571         // TODO(b/236246382): Check support for device extension;
16572         return (void*)dynCheck_entry_vkCmdDrawMeshTasksEXT;
16573     }
16574     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectEXT")) {
16575         // TODO(b/236246382): Check support for device extension;
16576         return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectEXT;
16577     }
16578     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountEXT")) {
16579         // TODO(b/236246382): Check support for device extension;
16580         return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectCountEXT;
16581     }
16582 #endif
16583     return nullptr;
16584 }
goldfish_vulkan_get_device_proc_address(VkDevice device,const char * name)16585 void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name) {
16586     auto resources = ResourceTracker::get();
16587     bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
16588     bool has1_2OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_2;
16589     bool has1_3OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_3;
16590 #ifdef VK_VERSION_1_0
16591     if (!strcmp(name, "vkCreateInstance")) {
16592         return (void*)entry_vkCreateInstance;
16593     }
16594     if (!strcmp(name, "vkDestroyInstance")) {
16595         return (void*)entry_vkDestroyInstance;
16596     }
16597     if (!strcmp(name, "vkEnumeratePhysicalDevices")) {
16598         return (void*)entry_vkEnumeratePhysicalDevices;
16599     }
16600     if (!strcmp(name, "vkGetPhysicalDeviceFeatures")) {
16601         return (void*)entry_vkGetPhysicalDeviceFeatures;
16602     }
16603     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties")) {
16604         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
16605     }
16606     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties")) {
16607         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
16608     }
16609     if (!strcmp(name, "vkGetPhysicalDeviceProperties")) {
16610         return (void*)entry_vkGetPhysicalDeviceProperties;
16611     }
16612     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties")) {
16613         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
16614     }
16615     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties")) {
16616         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
16617     }
16618     if (!strcmp(name, "vkGetInstanceProcAddr")) {
16619         return (void*)entry_vkGetInstanceProcAddr;
16620     }
16621     if (!strcmp(name, "vkGetDeviceProcAddr")) {
16622         return (void*)entry_vkGetDeviceProcAddr;
16623     }
16624     if (!strcmp(name, "vkCreateDevice")) {
16625         return (void*)entry_vkCreateDevice;
16626     }
16627     if (!strcmp(name, "vkDestroyDevice")) {
16628         return (void*)entry_vkDestroyDevice;
16629     }
16630     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties")) {
16631         return (void*)entry_vkEnumerateInstanceExtensionProperties;
16632     }
16633     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties")) {
16634         return (void*)entry_vkEnumerateDeviceExtensionProperties;
16635     }
16636     if (!strcmp(name, "vkEnumerateInstanceLayerProperties")) {
16637         return (void*)entry_vkEnumerateInstanceLayerProperties;
16638     }
16639     if (!strcmp(name, "vkEnumerateDeviceLayerProperties")) {
16640         return (void*)entry_vkEnumerateDeviceLayerProperties;
16641     }
16642     if (!strcmp(name, "vkGetDeviceQueue")) {
16643         return (void*)entry_vkGetDeviceQueue;
16644     }
16645     if (!strcmp(name, "vkQueueSubmit")) {
16646         return (void*)entry_vkQueueSubmit;
16647     }
16648     if (!strcmp(name, "vkQueueWaitIdle")) {
16649         return (void*)entry_vkQueueWaitIdle;
16650     }
16651     if (!strcmp(name, "vkDeviceWaitIdle")) {
16652         return (void*)entry_vkDeviceWaitIdle;
16653     }
16654     if (!strcmp(name, "vkAllocateMemory")) {
16655         return (void*)entry_vkAllocateMemory;
16656     }
16657     if (!strcmp(name, "vkFreeMemory")) {
16658         return (void*)entry_vkFreeMemory;
16659     }
16660     if (!strcmp(name, "vkMapMemory")) {
16661         return (void*)entry_vkMapMemory;
16662     }
16663     if (!strcmp(name, "vkUnmapMemory")) {
16664         return (void*)entry_vkUnmapMemory;
16665     }
16666     if (!strcmp(name, "vkFlushMappedMemoryRanges")) {
16667         return (void*)entry_vkFlushMappedMemoryRanges;
16668     }
16669     if (!strcmp(name, "vkInvalidateMappedMemoryRanges")) {
16670         return (void*)entry_vkInvalidateMappedMemoryRanges;
16671     }
16672     if (!strcmp(name, "vkGetDeviceMemoryCommitment")) {
16673         return (void*)entry_vkGetDeviceMemoryCommitment;
16674     }
16675     if (!strcmp(name, "vkBindBufferMemory")) {
16676         return (void*)entry_vkBindBufferMemory;
16677     }
16678     if (!strcmp(name, "vkBindImageMemory")) {
16679         return (void*)entry_vkBindImageMemory;
16680     }
16681     if (!strcmp(name, "vkGetBufferMemoryRequirements")) {
16682         return (void*)entry_vkGetBufferMemoryRequirements;
16683     }
16684     if (!strcmp(name, "vkGetImageMemoryRequirements")) {
16685         return (void*)entry_vkGetImageMemoryRequirements;
16686     }
16687     if (!strcmp(name, "vkGetImageSparseMemoryRequirements")) {
16688         return (void*)entry_vkGetImageSparseMemoryRequirements;
16689     }
16690     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties")) {
16691         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
16692     }
16693     if (!strcmp(name, "vkQueueBindSparse")) {
16694         return (void*)entry_vkQueueBindSparse;
16695     }
16696     if (!strcmp(name, "vkCreateFence")) {
16697         return (void*)entry_vkCreateFence;
16698     }
16699     if (!strcmp(name, "vkDestroyFence")) {
16700         return (void*)entry_vkDestroyFence;
16701     }
16702     if (!strcmp(name, "vkResetFences")) {
16703         return (void*)entry_vkResetFences;
16704     }
16705     if (!strcmp(name, "vkGetFenceStatus")) {
16706         return (void*)entry_vkGetFenceStatus;
16707     }
16708     if (!strcmp(name, "vkWaitForFences")) {
16709         return (void*)entry_vkWaitForFences;
16710     }
16711     if (!strcmp(name, "vkCreateSemaphore")) {
16712         return (void*)entry_vkCreateSemaphore;
16713     }
16714     if (!strcmp(name, "vkDestroySemaphore")) {
16715         return (void*)entry_vkDestroySemaphore;
16716     }
16717     if (!strcmp(name, "vkCreateEvent")) {
16718         return (void*)entry_vkCreateEvent;
16719     }
16720     if (!strcmp(name, "vkDestroyEvent")) {
16721         return (void*)entry_vkDestroyEvent;
16722     }
16723     if (!strcmp(name, "vkGetEventStatus")) {
16724         return (void*)entry_vkGetEventStatus;
16725     }
16726     if (!strcmp(name, "vkSetEvent")) {
16727         return (void*)entry_vkSetEvent;
16728     }
16729     if (!strcmp(name, "vkResetEvent")) {
16730         return (void*)entry_vkResetEvent;
16731     }
16732     if (!strcmp(name, "vkCreateQueryPool")) {
16733         return (void*)entry_vkCreateQueryPool;
16734     }
16735     if (!strcmp(name, "vkDestroyQueryPool")) {
16736         return (void*)entry_vkDestroyQueryPool;
16737     }
16738     if (!strcmp(name, "vkGetQueryPoolResults")) {
16739         return (void*)entry_vkGetQueryPoolResults;
16740     }
16741     if (!strcmp(name, "vkCreateBuffer")) {
16742         return (void*)entry_vkCreateBuffer;
16743     }
16744     if (!strcmp(name, "vkDestroyBuffer")) {
16745         return (void*)entry_vkDestroyBuffer;
16746     }
16747     if (!strcmp(name, "vkCreateBufferView")) {
16748         return (void*)entry_vkCreateBufferView;
16749     }
16750     if (!strcmp(name, "vkDestroyBufferView")) {
16751         return (void*)entry_vkDestroyBufferView;
16752     }
16753     if (!strcmp(name, "vkCreateImage")) {
16754         return (void*)entry_vkCreateImage;
16755     }
16756     if (!strcmp(name, "vkDestroyImage")) {
16757         return (void*)entry_vkDestroyImage;
16758     }
16759     if (!strcmp(name, "vkGetImageSubresourceLayout")) {
16760         return (void*)entry_vkGetImageSubresourceLayout;
16761     }
16762     if (!strcmp(name, "vkCreateImageView")) {
16763         return (void*)entry_vkCreateImageView;
16764     }
16765     if (!strcmp(name, "vkDestroyImageView")) {
16766         return (void*)entry_vkDestroyImageView;
16767     }
16768     if (!strcmp(name, "vkCreateShaderModule")) {
16769         return (void*)entry_vkCreateShaderModule;
16770     }
16771     if (!strcmp(name, "vkDestroyShaderModule")) {
16772         return (void*)entry_vkDestroyShaderModule;
16773     }
16774     if (!strcmp(name, "vkCreatePipelineCache")) {
16775         return (void*)entry_vkCreatePipelineCache;
16776     }
16777     if (!strcmp(name, "vkDestroyPipelineCache")) {
16778         return (void*)entry_vkDestroyPipelineCache;
16779     }
16780     if (!strcmp(name, "vkGetPipelineCacheData")) {
16781         return (void*)entry_vkGetPipelineCacheData;
16782     }
16783     if (!strcmp(name, "vkMergePipelineCaches")) {
16784         return (void*)entry_vkMergePipelineCaches;
16785     }
16786     if (!strcmp(name, "vkCreateGraphicsPipelines")) {
16787         return (void*)entry_vkCreateGraphicsPipelines;
16788     }
16789     if (!strcmp(name, "vkCreateComputePipelines")) {
16790         return (void*)entry_vkCreateComputePipelines;
16791     }
16792     if (!strcmp(name, "vkDestroyPipeline")) {
16793         return (void*)entry_vkDestroyPipeline;
16794     }
16795     if (!strcmp(name, "vkCreatePipelineLayout")) {
16796         return (void*)entry_vkCreatePipelineLayout;
16797     }
16798     if (!strcmp(name, "vkDestroyPipelineLayout")) {
16799         return (void*)entry_vkDestroyPipelineLayout;
16800     }
16801     if (!strcmp(name, "vkCreateSampler")) {
16802         return (void*)entry_vkCreateSampler;
16803     }
16804     if (!strcmp(name, "vkDestroySampler")) {
16805         return (void*)entry_vkDestroySampler;
16806     }
16807     if (!strcmp(name, "vkCreateDescriptorSetLayout")) {
16808         return (void*)entry_vkCreateDescriptorSetLayout;
16809     }
16810     if (!strcmp(name, "vkDestroyDescriptorSetLayout")) {
16811         return (void*)entry_vkDestroyDescriptorSetLayout;
16812     }
16813     if (!strcmp(name, "vkCreateDescriptorPool")) {
16814         return (void*)entry_vkCreateDescriptorPool;
16815     }
16816     if (!strcmp(name, "vkDestroyDescriptorPool")) {
16817         return (void*)entry_vkDestroyDescriptorPool;
16818     }
16819     if (!strcmp(name, "vkResetDescriptorPool")) {
16820         return (void*)entry_vkResetDescriptorPool;
16821     }
16822     if (!strcmp(name, "vkAllocateDescriptorSets")) {
16823         return (void*)entry_vkAllocateDescriptorSets;
16824     }
16825     if (!strcmp(name, "vkFreeDescriptorSets")) {
16826         return (void*)entry_vkFreeDescriptorSets;
16827     }
16828     if (!strcmp(name, "vkUpdateDescriptorSets")) {
16829         return (void*)entry_vkUpdateDescriptorSets;
16830     }
16831     if (!strcmp(name, "vkCreateFramebuffer")) {
16832         return (void*)entry_vkCreateFramebuffer;
16833     }
16834     if (!strcmp(name, "vkDestroyFramebuffer")) {
16835         return (void*)entry_vkDestroyFramebuffer;
16836     }
16837     if (!strcmp(name, "vkCreateRenderPass")) {
16838         return (void*)entry_vkCreateRenderPass;
16839     }
16840     if (!strcmp(name, "vkDestroyRenderPass")) {
16841         return (void*)entry_vkDestroyRenderPass;
16842     }
16843     if (!strcmp(name, "vkGetRenderAreaGranularity")) {
16844         return (void*)entry_vkGetRenderAreaGranularity;
16845     }
16846     if (!strcmp(name, "vkCreateCommandPool")) {
16847         return (void*)entry_vkCreateCommandPool;
16848     }
16849     if (!strcmp(name, "vkDestroyCommandPool")) {
16850         return (void*)entry_vkDestroyCommandPool;
16851     }
16852     if (!strcmp(name, "vkResetCommandPool")) {
16853         return (void*)entry_vkResetCommandPool;
16854     }
16855     if (!strcmp(name, "vkAllocateCommandBuffers")) {
16856         return (void*)entry_vkAllocateCommandBuffers;
16857     }
16858     if (!strcmp(name, "vkFreeCommandBuffers")) {
16859         return (void*)entry_vkFreeCommandBuffers;
16860     }
16861     if (!strcmp(name, "vkBeginCommandBuffer")) {
16862         return (void*)entry_vkBeginCommandBuffer;
16863     }
16864     if (!strcmp(name, "vkEndCommandBuffer")) {
16865         return (void*)entry_vkEndCommandBuffer;
16866     }
16867     if (!strcmp(name, "vkResetCommandBuffer")) {
16868         return (void*)entry_vkResetCommandBuffer;
16869     }
16870     if (!strcmp(name, "vkCmdBindPipeline")) {
16871         return (void*)entry_vkCmdBindPipeline;
16872     }
16873     if (!strcmp(name, "vkCmdSetViewport")) {
16874         return (void*)entry_vkCmdSetViewport;
16875     }
16876     if (!strcmp(name, "vkCmdSetScissor")) {
16877         return (void*)entry_vkCmdSetScissor;
16878     }
16879     if (!strcmp(name, "vkCmdSetLineWidth")) {
16880         return (void*)entry_vkCmdSetLineWidth;
16881     }
16882     if (!strcmp(name, "vkCmdSetDepthBias")) {
16883         return (void*)entry_vkCmdSetDepthBias;
16884     }
16885     if (!strcmp(name, "vkCmdSetBlendConstants")) {
16886         return (void*)entry_vkCmdSetBlendConstants;
16887     }
16888     if (!strcmp(name, "vkCmdSetDepthBounds")) {
16889         return (void*)entry_vkCmdSetDepthBounds;
16890     }
16891     if (!strcmp(name, "vkCmdSetStencilCompareMask")) {
16892         return (void*)entry_vkCmdSetStencilCompareMask;
16893     }
16894     if (!strcmp(name, "vkCmdSetStencilWriteMask")) {
16895         return (void*)entry_vkCmdSetStencilWriteMask;
16896     }
16897     if (!strcmp(name, "vkCmdSetStencilReference")) {
16898         return (void*)entry_vkCmdSetStencilReference;
16899     }
16900     if (!strcmp(name, "vkCmdBindDescriptorSets")) {
16901         return (void*)entry_vkCmdBindDescriptorSets;
16902     }
16903     if (!strcmp(name, "vkCmdBindIndexBuffer")) {
16904         return (void*)entry_vkCmdBindIndexBuffer;
16905     }
16906     if (!strcmp(name, "vkCmdBindVertexBuffers")) {
16907         return (void*)entry_vkCmdBindVertexBuffers;
16908     }
16909     if (!strcmp(name, "vkCmdDraw")) {
16910         return (void*)entry_vkCmdDraw;
16911     }
16912     if (!strcmp(name, "vkCmdDrawIndexed")) {
16913         return (void*)entry_vkCmdDrawIndexed;
16914     }
16915     if (!strcmp(name, "vkCmdDrawIndirect")) {
16916         return (void*)entry_vkCmdDrawIndirect;
16917     }
16918     if (!strcmp(name, "vkCmdDrawIndexedIndirect")) {
16919         return (void*)entry_vkCmdDrawIndexedIndirect;
16920     }
16921     if (!strcmp(name, "vkCmdDispatch")) {
16922         return (void*)entry_vkCmdDispatch;
16923     }
16924     if (!strcmp(name, "vkCmdDispatchIndirect")) {
16925         return (void*)entry_vkCmdDispatchIndirect;
16926     }
16927     if (!strcmp(name, "vkCmdCopyBuffer")) {
16928         return (void*)entry_vkCmdCopyBuffer;
16929     }
16930     if (!strcmp(name, "vkCmdCopyImage")) {
16931         return (void*)entry_vkCmdCopyImage;
16932     }
16933     if (!strcmp(name, "vkCmdBlitImage")) {
16934         return (void*)entry_vkCmdBlitImage;
16935     }
16936     if (!strcmp(name, "vkCmdCopyBufferToImage")) {
16937         return (void*)entry_vkCmdCopyBufferToImage;
16938     }
16939     if (!strcmp(name, "vkCmdCopyImageToBuffer")) {
16940         return (void*)entry_vkCmdCopyImageToBuffer;
16941     }
16942     if (!strcmp(name, "vkCmdUpdateBuffer")) {
16943         return (void*)entry_vkCmdUpdateBuffer;
16944     }
16945     if (!strcmp(name, "vkCmdFillBuffer")) {
16946         return (void*)entry_vkCmdFillBuffer;
16947     }
16948     if (!strcmp(name, "vkCmdClearColorImage")) {
16949         return (void*)entry_vkCmdClearColorImage;
16950     }
16951     if (!strcmp(name, "vkCmdClearDepthStencilImage")) {
16952         return (void*)entry_vkCmdClearDepthStencilImage;
16953     }
16954     if (!strcmp(name, "vkCmdClearAttachments")) {
16955         return (void*)entry_vkCmdClearAttachments;
16956     }
16957     if (!strcmp(name, "vkCmdResolveImage")) {
16958         return (void*)entry_vkCmdResolveImage;
16959     }
16960     if (!strcmp(name, "vkCmdSetEvent")) {
16961         return (void*)entry_vkCmdSetEvent;
16962     }
16963     if (!strcmp(name, "vkCmdResetEvent")) {
16964         return (void*)entry_vkCmdResetEvent;
16965     }
16966     if (!strcmp(name, "vkCmdWaitEvents")) {
16967         return (void*)entry_vkCmdWaitEvents;
16968     }
16969     if (!strcmp(name, "vkCmdPipelineBarrier")) {
16970         return (void*)entry_vkCmdPipelineBarrier;
16971     }
16972     if (!strcmp(name, "vkCmdBeginQuery")) {
16973         return (void*)entry_vkCmdBeginQuery;
16974     }
16975     if (!strcmp(name, "vkCmdEndQuery")) {
16976         return (void*)entry_vkCmdEndQuery;
16977     }
16978     if (!strcmp(name, "vkCmdResetQueryPool")) {
16979         return (void*)entry_vkCmdResetQueryPool;
16980     }
16981     if (!strcmp(name, "vkCmdWriteTimestamp")) {
16982         return (void*)entry_vkCmdWriteTimestamp;
16983     }
16984     if (!strcmp(name, "vkCmdCopyQueryPoolResults")) {
16985         return (void*)entry_vkCmdCopyQueryPoolResults;
16986     }
16987     if (!strcmp(name, "vkCmdPushConstants")) {
16988         return (void*)entry_vkCmdPushConstants;
16989     }
16990     if (!strcmp(name, "vkCmdBeginRenderPass")) {
16991         return (void*)entry_vkCmdBeginRenderPass;
16992     }
16993     if (!strcmp(name, "vkCmdNextSubpass")) {
16994         return (void*)entry_vkCmdNextSubpass;
16995     }
16996     if (!strcmp(name, "vkCmdEndRenderPass")) {
16997         return (void*)entry_vkCmdEndRenderPass;
16998     }
16999     if (!strcmp(name, "vkCmdExecuteCommands")) {
17000         return (void*)entry_vkCmdExecuteCommands;
17001     }
17002 #endif
17003 #ifdef VK_VERSION_1_1
17004     if (!strcmp(name, "vkEnumerateInstanceVersion")) {
17005         return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
17006     }
17007     if (!strcmp(name, "vkBindBufferMemory2")) {
17008         return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
17009     }
17010     if (!strcmp(name, "vkBindImageMemory2")) {
17011         return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
17012     }
17013     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures")) {
17014         return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
17015     }
17016     if (!strcmp(name, "vkCmdSetDeviceMask")) {
17017         return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
17018     }
17019     if (!strcmp(name, "vkCmdDispatchBase")) {
17020         return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
17021     }
17022     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups")) {
17023         return nullptr;
17024     }
17025     if (!strcmp(name, "vkGetImageMemoryRequirements2")) {
17026         return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
17027     }
17028     if (!strcmp(name, "vkGetBufferMemoryRequirements2")) {
17029         return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
17030     }
17031     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2")) {
17032         return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
17033     }
17034     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2")) {
17035         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
17036     }
17037     if (!strcmp(name, "vkGetPhysicalDeviceProperties2")) {
17038         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
17039     }
17040     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2")) {
17041         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
17042     }
17043     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2")) {
17044         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
17045     }
17046     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2")) {
17047         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
17048     }
17049     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2")) {
17050         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
17051     }
17052     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2")) {
17053         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2
17054                               : nullptr;
17055     }
17056     if (!strcmp(name, "vkTrimCommandPool")) {
17057         return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
17058     }
17059     if (!strcmp(name, "vkGetDeviceQueue2")) {
17060         return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
17061     }
17062     if (!strcmp(name, "vkCreateSamplerYcbcrConversion")) {
17063         return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
17064     }
17065     if (!strcmp(name, "vkDestroySamplerYcbcrConversion")) {
17066         return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
17067     }
17068     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate")) {
17069         return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
17070     }
17071     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate")) {
17072         return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
17073     }
17074     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate")) {
17075         return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
17076     }
17077     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties")) {
17078         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
17079     }
17080     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties")) {
17081         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
17082     }
17083     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties")) {
17084         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties
17085                               : nullptr;
17086     }
17087     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport")) {
17088         return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
17089     }
17090 #endif
17091 #ifdef VK_VERSION_1_2
17092     if (!strcmp(name, "vkCmdDrawIndirectCount")) {
17093         return has1_2OrHigher ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
17094     }
17095     if (!strcmp(name, "vkCmdDrawIndexedIndirectCount")) {
17096         return has1_2OrHigher ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
17097     }
17098     if (!strcmp(name, "vkCreateRenderPass2")) {
17099         return has1_2OrHigher ? (void*)entry_vkCreateRenderPass2 : nullptr;
17100     }
17101     if (!strcmp(name, "vkCmdBeginRenderPass2")) {
17102         return has1_2OrHigher ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
17103     }
17104     if (!strcmp(name, "vkCmdNextSubpass2")) {
17105         return has1_2OrHigher ? (void*)entry_vkCmdNextSubpass2 : nullptr;
17106     }
17107     if (!strcmp(name, "vkCmdEndRenderPass2")) {
17108         return has1_2OrHigher ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
17109     }
17110     if (!strcmp(name, "vkResetQueryPool")) {
17111         return has1_2OrHigher ? (void*)entry_vkResetQueryPool : nullptr;
17112     }
17113     if (!strcmp(name, "vkGetSemaphoreCounterValue")) {
17114         return has1_2OrHigher ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
17115     }
17116     if (!strcmp(name, "vkWaitSemaphores")) {
17117         return has1_2OrHigher ? (void*)entry_vkWaitSemaphores : nullptr;
17118     }
17119     if (!strcmp(name, "vkSignalSemaphore")) {
17120         return has1_2OrHigher ? (void*)entry_vkSignalSemaphore : nullptr;
17121     }
17122     if (!strcmp(name, "vkGetBufferDeviceAddress")) {
17123         return has1_2OrHigher ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
17124     }
17125     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress")) {
17126         return has1_2OrHigher ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
17127     }
17128     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress")) {
17129         return has1_2OrHigher ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
17130     }
17131 #endif
17132 #ifdef VK_VERSION_1_3
17133     if (!strcmp(name, "vkGetPhysicalDeviceToolProperties")) {
17134         return has1_3OrHigher ? (void*)entry_vkGetPhysicalDeviceToolProperties : nullptr;
17135     }
17136     if (!strcmp(name, "vkCreatePrivateDataSlot")) {
17137         return has1_3OrHigher ? (void*)entry_vkCreatePrivateDataSlot : nullptr;
17138     }
17139     if (!strcmp(name, "vkDestroyPrivateDataSlot")) {
17140         return has1_3OrHigher ? (void*)entry_vkDestroyPrivateDataSlot : nullptr;
17141     }
17142     if (!strcmp(name, "vkSetPrivateData")) {
17143         return has1_3OrHigher ? (void*)entry_vkSetPrivateData : nullptr;
17144     }
17145     if (!strcmp(name, "vkGetPrivateData")) {
17146         return has1_3OrHigher ? (void*)entry_vkGetPrivateData : nullptr;
17147     }
17148     if (!strcmp(name, "vkCmdSetEvent2")) {
17149         return has1_3OrHigher ? (void*)entry_vkCmdSetEvent2 : nullptr;
17150     }
17151     if (!strcmp(name, "vkCmdResetEvent2")) {
17152         return has1_3OrHigher ? (void*)entry_vkCmdResetEvent2 : nullptr;
17153     }
17154     if (!strcmp(name, "vkCmdWaitEvents2")) {
17155         return has1_3OrHigher ? (void*)entry_vkCmdWaitEvents2 : nullptr;
17156     }
17157     if (!strcmp(name, "vkCmdPipelineBarrier2")) {
17158         return has1_3OrHigher ? (void*)entry_vkCmdPipelineBarrier2 : nullptr;
17159     }
17160     if (!strcmp(name, "vkCmdWriteTimestamp2")) {
17161         return has1_3OrHigher ? (void*)entry_vkCmdWriteTimestamp2 : nullptr;
17162     }
17163     if (!strcmp(name, "vkQueueSubmit2")) {
17164         return has1_3OrHigher ? (void*)entry_vkQueueSubmit2 : nullptr;
17165     }
17166     if (!strcmp(name, "vkCmdCopyBuffer2")) {
17167         return has1_3OrHigher ? (void*)entry_vkCmdCopyBuffer2 : nullptr;
17168     }
17169     if (!strcmp(name, "vkCmdCopyImage2")) {
17170         return has1_3OrHigher ? (void*)entry_vkCmdCopyImage2 : nullptr;
17171     }
17172     if (!strcmp(name, "vkCmdCopyBufferToImage2")) {
17173         return has1_3OrHigher ? (void*)entry_vkCmdCopyBufferToImage2 : nullptr;
17174     }
17175     if (!strcmp(name, "vkCmdCopyImageToBuffer2")) {
17176         return has1_3OrHigher ? (void*)entry_vkCmdCopyImageToBuffer2 : nullptr;
17177     }
17178     if (!strcmp(name, "vkCmdBlitImage2")) {
17179         return has1_3OrHigher ? (void*)entry_vkCmdBlitImage2 : nullptr;
17180     }
17181     if (!strcmp(name, "vkCmdResolveImage2")) {
17182         return has1_3OrHigher ? (void*)entry_vkCmdResolveImage2 : nullptr;
17183     }
17184     if (!strcmp(name, "vkCmdBeginRendering")) {
17185         return has1_3OrHigher ? (void*)entry_vkCmdBeginRendering : nullptr;
17186     }
17187     if (!strcmp(name, "vkCmdEndRendering")) {
17188         return has1_3OrHigher ? (void*)entry_vkCmdEndRendering : nullptr;
17189     }
17190     if (!strcmp(name, "vkCmdSetCullMode")) {
17191         return has1_3OrHigher ? (void*)entry_vkCmdSetCullMode : nullptr;
17192     }
17193     if (!strcmp(name, "vkCmdSetFrontFace")) {
17194         return has1_3OrHigher ? (void*)entry_vkCmdSetFrontFace : nullptr;
17195     }
17196     if (!strcmp(name, "vkCmdSetPrimitiveTopology")) {
17197         return has1_3OrHigher ? (void*)entry_vkCmdSetPrimitiveTopology : nullptr;
17198     }
17199     if (!strcmp(name, "vkCmdSetViewportWithCount")) {
17200         return has1_3OrHigher ? (void*)entry_vkCmdSetViewportWithCount : nullptr;
17201     }
17202     if (!strcmp(name, "vkCmdSetScissorWithCount")) {
17203         return has1_3OrHigher ? (void*)entry_vkCmdSetScissorWithCount : nullptr;
17204     }
17205     if (!strcmp(name, "vkCmdBindVertexBuffers2")) {
17206         return has1_3OrHigher ? (void*)entry_vkCmdBindVertexBuffers2 : nullptr;
17207     }
17208     if (!strcmp(name, "vkCmdSetDepthTestEnable")) {
17209         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthTestEnable : nullptr;
17210     }
17211     if (!strcmp(name, "vkCmdSetDepthWriteEnable")) {
17212         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthWriteEnable : nullptr;
17213     }
17214     if (!strcmp(name, "vkCmdSetDepthCompareOp")) {
17215         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthCompareOp : nullptr;
17216     }
17217     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnable")) {
17218         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthBoundsTestEnable : nullptr;
17219     }
17220     if (!strcmp(name, "vkCmdSetStencilTestEnable")) {
17221         return has1_3OrHigher ? (void*)entry_vkCmdSetStencilTestEnable : nullptr;
17222     }
17223     if (!strcmp(name, "vkCmdSetStencilOp")) {
17224         return has1_3OrHigher ? (void*)entry_vkCmdSetStencilOp : nullptr;
17225     }
17226     if (!strcmp(name, "vkCmdSetRasterizerDiscardEnable")) {
17227         return has1_3OrHigher ? (void*)entry_vkCmdSetRasterizerDiscardEnable : nullptr;
17228     }
17229     if (!strcmp(name, "vkCmdSetDepthBiasEnable")) {
17230         return has1_3OrHigher ? (void*)entry_vkCmdSetDepthBiasEnable : nullptr;
17231     }
17232     if (!strcmp(name, "vkCmdSetPrimitiveRestartEnable")) {
17233         return has1_3OrHigher ? (void*)entry_vkCmdSetPrimitiveRestartEnable : nullptr;
17234     }
17235     if (!strcmp(name, "vkGetDeviceBufferMemoryRequirements")) {
17236         return has1_3OrHigher ? (void*)entry_vkGetDeviceBufferMemoryRequirements : nullptr;
17237     }
17238     if (!strcmp(name, "vkGetDeviceImageMemoryRequirements")) {
17239         return has1_3OrHigher ? (void*)entry_vkGetDeviceImageMemoryRequirements : nullptr;
17240     }
17241     if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirements")) {
17242         return has1_3OrHigher ? (void*)entry_vkGetDeviceImageSparseMemoryRequirements : nullptr;
17243     }
17244 #endif
17245 #ifdef VK_KHR_surface
17246     if (!strcmp(name, "vkDestroySurfaceKHR")) {
17247         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
17248         return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
17249     }
17250     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR")) {
17251         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
17252         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
17253     }
17254     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR")) {
17255         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
17256         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
17257     }
17258     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR")) {
17259         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
17260         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
17261     }
17262     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR")) {
17263         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
17264         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
17265     }
17266 #endif
17267 #ifdef VK_KHR_swapchain
17268     if (!strcmp(name, "vkCreateSwapchainKHR")) {
17269         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17270         return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
17271     }
17272     if (!strcmp(name, "vkDestroySwapchainKHR")) {
17273         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17274         return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
17275     }
17276     if (!strcmp(name, "vkGetSwapchainImagesKHR")) {
17277         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17278         return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
17279     }
17280     if (!strcmp(name, "vkAcquireNextImageKHR")) {
17281         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17282         return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
17283     }
17284     if (!strcmp(name, "vkQueuePresentKHR")) {
17285         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17286         return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
17287     }
17288     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR")) {
17289         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17290         return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
17291     }
17292     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR")) {
17293         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17294         return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
17295     }
17296     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR")) {
17297         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17298         return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
17299     }
17300     if (!strcmp(name, "vkAcquireNextImage2KHR")) {
17301         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
17302         return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
17303     }
17304 #endif
17305 #ifdef VK_KHR_display
17306     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR")) {
17307         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17308         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
17309     }
17310     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")) {
17311         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17312         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
17313     }
17314     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR")) {
17315         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17316         return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
17317     }
17318     if (!strcmp(name, "vkGetDisplayModePropertiesKHR")) {
17319         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17320         return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
17321     }
17322     if (!strcmp(name, "vkCreateDisplayModeKHR")) {
17323         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17324         return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
17325     }
17326     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR")) {
17327         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17328         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
17329     }
17330     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR")) {
17331         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
17332         return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
17333     }
17334 #endif
17335 #ifdef VK_KHR_display_swapchain
17336     if (!strcmp(name, "vkCreateSharedSwapchainsKHR")) {
17337         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
17338         return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
17339     }
17340 #endif
17341 #ifdef VK_KHR_xlib_surface
17342     if (!strcmp(name, "vkCreateXlibSurfaceKHR")) {
17343         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
17344         return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
17345     }
17346     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR")) {
17347         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
17348         return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
17349     }
17350 #endif
17351 #ifdef VK_KHR_xcb_surface
17352     if (!strcmp(name, "vkCreateXcbSurfaceKHR")) {
17353         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
17354         return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
17355     }
17356     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR")) {
17357         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
17358         return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
17359     }
17360 #endif
17361 #ifdef VK_KHR_wayland_surface
17362     if (!strcmp(name, "vkCreateWaylandSurfaceKHR")) {
17363         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
17364         return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
17365     }
17366     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR")) {
17367         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
17368         return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
17369     }
17370 #endif
17371 #ifdef VK_KHR_android_surface
17372     if (!strcmp(name, "vkCreateAndroidSurfaceKHR")) {
17373         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
17374         return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
17375     }
17376 #endif
17377 #ifdef VK_KHR_win32_surface
17378     if (!strcmp(name, "vkCreateWin32SurfaceKHR")) {
17379         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
17380         return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
17381     }
17382     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) {
17383         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
17384         return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
17385     }
17386 #endif
17387 #ifdef VK_KHR_video_queue
17388     if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR")) {
17389         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17390         return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
17391     }
17392     if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR")) {
17393         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17394         return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
17395     }
17396     if (!strcmp(name, "vkCreateVideoSessionKHR")) {
17397         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17398         return hasExt ? (void*)entry_vkCreateVideoSessionKHR : nullptr;
17399     }
17400     if (!strcmp(name, "vkDestroyVideoSessionKHR")) {
17401         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17402         return hasExt ? (void*)entry_vkDestroyVideoSessionKHR : nullptr;
17403     }
17404     if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR")) {
17405         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17406         return hasExt ? (void*)entry_vkGetVideoSessionMemoryRequirementsKHR : nullptr;
17407     }
17408     if (!strcmp(name, "vkBindVideoSessionMemoryKHR")) {
17409         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17410         return hasExt ? (void*)entry_vkBindVideoSessionMemoryKHR : nullptr;
17411     }
17412     if (!strcmp(name, "vkCreateVideoSessionParametersKHR")) {
17413         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17414         return hasExt ? (void*)entry_vkCreateVideoSessionParametersKHR : nullptr;
17415     }
17416     if (!strcmp(name, "vkUpdateVideoSessionParametersKHR")) {
17417         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17418         return hasExt ? (void*)entry_vkUpdateVideoSessionParametersKHR : nullptr;
17419     }
17420     if (!strcmp(name, "vkDestroyVideoSessionParametersKHR")) {
17421         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17422         return hasExt ? (void*)entry_vkDestroyVideoSessionParametersKHR : nullptr;
17423     }
17424     if (!strcmp(name, "vkCmdBeginVideoCodingKHR")) {
17425         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17426         return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
17427     }
17428     if (!strcmp(name, "vkCmdEndVideoCodingKHR")) {
17429         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17430         return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
17431     }
17432     if (!strcmp(name, "vkCmdControlVideoCodingKHR")) {
17433         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
17434         return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
17435     }
17436 #endif
17437 #ifdef VK_KHR_video_decode_queue
17438     if (!strcmp(name, "vkCmdDecodeVideoKHR")) {
17439         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue");
17440         return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
17441     }
17442 #endif
17443 #ifdef VK_KHR_dynamic_rendering
17444     if (!strcmp(name, "vkCmdBeginRenderingKHR")) {
17445         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
17446         return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
17447     }
17448     if (!strcmp(name, "vkCmdEndRenderingKHR")) {
17449         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
17450         return hasExt ? (void*)entry_vkCmdEndRenderingKHR : nullptr;
17451     }
17452 #endif
17453 #ifdef VK_KHR_get_physical_device_properties2
17454     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR")) {
17455         bool hasExt =
17456             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17457         return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
17458     }
17459     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR")) {
17460         bool hasExt =
17461             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17462         return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
17463     }
17464     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR")) {
17465         bool hasExt =
17466             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17467         return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
17468     }
17469     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR")) {
17470         bool hasExt =
17471             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17472         return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
17473     }
17474     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")) {
17475         bool hasExt =
17476             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17477         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
17478     }
17479     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR")) {
17480         bool hasExt =
17481             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17482         return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
17483     }
17484     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")) {
17485         bool hasExt =
17486             resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
17487         return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
17488     }
17489 #endif
17490 #ifdef VK_KHR_device_group
17491     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR")) {
17492         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
17493         return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
17494     }
17495     if (!strcmp(name, "vkCmdSetDeviceMaskKHR")) {
17496         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
17497         return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
17498     }
17499     if (!strcmp(name, "vkCmdDispatchBaseKHR")) {
17500         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
17501         return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
17502     }
17503 #endif
17504 #ifdef VK_KHR_maintenance1
17505     if (!strcmp(name, "vkTrimCommandPoolKHR")) {
17506         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
17507         return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
17508     }
17509 #endif
17510 #ifdef VK_KHR_device_group_creation
17511     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR")) {
17512         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
17513         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
17514     }
17515 #endif
17516 #ifdef VK_KHR_external_memory_capabilities
17517     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")) {
17518         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
17519         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
17520     }
17521 #endif
17522 #ifdef VK_KHR_external_memory_win32
17523     if (!strcmp(name, "vkGetMemoryWin32HandleKHR")) {
17524         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
17525         return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
17526     }
17527     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR")) {
17528         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
17529         return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
17530     }
17531 #endif
17532 #ifdef VK_KHR_external_memory_fd
17533     if (!strcmp(name, "vkGetMemoryFdKHR")) {
17534         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
17535         return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
17536     }
17537     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR")) {
17538         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
17539         return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
17540     }
17541 #endif
17542 #ifdef VK_KHR_external_semaphore_capabilities
17543     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")) {
17544         bool hasExt =
17545             resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
17546         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
17547     }
17548 #endif
17549 #ifdef VK_KHR_external_semaphore_win32
17550     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR")) {
17551         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
17552         return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
17553     }
17554     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR")) {
17555         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
17556         return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
17557     }
17558 #endif
17559 #ifdef VK_KHR_external_semaphore_fd
17560     if (!strcmp(name, "vkImportSemaphoreFdKHR")) {
17561         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
17562         return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
17563     }
17564     if (!strcmp(name, "vkGetSemaphoreFdKHR")) {
17565         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
17566         return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
17567     }
17568 #endif
17569 #ifdef VK_KHR_push_descriptor
17570     if (!strcmp(name, "vkCmdPushDescriptorSetKHR")) {
17571         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
17572         return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
17573     }
17574     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR")) {
17575         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
17576         return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
17577     }
17578 #endif
17579 #ifdef VK_KHR_descriptor_update_template
17580     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR")) {
17581         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
17582         return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
17583     }
17584     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR")) {
17585         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
17586         return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
17587     }
17588     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR")) {
17589         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
17590         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
17591     }
17592 #endif
17593 #ifdef VK_KHR_create_renderpass2
17594     if (!strcmp(name, "vkCreateRenderPass2KHR")) {
17595         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
17596         return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
17597     }
17598     if (!strcmp(name, "vkCmdBeginRenderPass2KHR")) {
17599         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
17600         return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
17601     }
17602     if (!strcmp(name, "vkCmdNextSubpass2KHR")) {
17603         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
17604         return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
17605     }
17606     if (!strcmp(name, "vkCmdEndRenderPass2KHR")) {
17607         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
17608         return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
17609     }
17610 #endif
17611 #ifdef VK_KHR_shared_presentable_image
17612     if (!strcmp(name, "vkGetSwapchainStatusKHR")) {
17613         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
17614         return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
17615     }
17616 #endif
17617 #ifdef VK_KHR_external_fence_capabilities
17618     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR")) {
17619         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
17620         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
17621     }
17622 #endif
17623 #ifdef VK_KHR_external_fence_win32
17624     if (!strcmp(name, "vkImportFenceWin32HandleKHR")) {
17625         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
17626         return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
17627     }
17628     if (!strcmp(name, "vkGetFenceWin32HandleKHR")) {
17629         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
17630         return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
17631     }
17632 #endif
17633 #ifdef VK_KHR_external_fence_fd
17634     if (!strcmp(name, "vkImportFenceFdKHR")) {
17635         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
17636         return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
17637     }
17638     if (!strcmp(name, "vkGetFenceFdKHR")) {
17639         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
17640         return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
17641     }
17642 #endif
17643 #ifdef VK_KHR_performance_query
17644     if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) {
17645         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
17646         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
17647                       : nullptr;
17648     }
17649     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) {
17650         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
17651         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
17652                       : nullptr;
17653     }
17654     if (!strcmp(name, "vkAcquireProfilingLockKHR")) {
17655         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
17656         return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
17657     }
17658     if (!strcmp(name, "vkReleaseProfilingLockKHR")) {
17659         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
17660         return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
17661     }
17662 #endif
17663 #ifdef VK_KHR_get_surface_capabilities2
17664     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR")) {
17665         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
17666         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
17667     }
17668     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR")) {
17669         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
17670         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
17671     }
17672 #endif
17673 #ifdef VK_KHR_get_display_properties2
17674     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR")) {
17675         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
17676         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
17677     }
17678     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR")) {
17679         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
17680         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
17681     }
17682     if (!strcmp(name, "vkGetDisplayModeProperties2KHR")) {
17683         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
17684         return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
17685     }
17686     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR")) {
17687         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
17688         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
17689     }
17690 #endif
17691 #ifdef VK_KHR_get_memory_requirements2
17692     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR")) {
17693         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
17694         return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
17695     }
17696     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR")) {
17697         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
17698         return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
17699     }
17700     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR")) {
17701         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
17702         return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
17703     }
17704 #endif
17705 #ifdef VK_KHR_sampler_ycbcr_conversion
17706     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR")) {
17707         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
17708         return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
17709     }
17710     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR")) {
17711         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
17712         return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
17713     }
17714 #endif
17715 #ifdef VK_KHR_bind_memory2
17716     if (!strcmp(name, "vkBindBufferMemory2KHR")) {
17717         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
17718         return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
17719     }
17720     if (!strcmp(name, "vkBindImageMemory2KHR")) {
17721         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
17722         return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
17723     }
17724 #endif
17725 #ifdef VK_KHR_maintenance3
17726     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR")) {
17727         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
17728         return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
17729     }
17730 #endif
17731 #ifdef VK_KHR_draw_indirect_count
17732     if (!strcmp(name, "vkCmdDrawIndirectCountKHR")) {
17733         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
17734         return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
17735     }
17736     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR")) {
17737         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
17738         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
17739     }
17740 #endif
17741 #ifdef VK_KHR_timeline_semaphore
17742     if (!strcmp(name, "vkGetSemaphoreCounterValueKHR")) {
17743         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
17744         return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
17745     }
17746     if (!strcmp(name, "vkWaitSemaphoresKHR")) {
17747         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
17748         return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
17749     }
17750     if (!strcmp(name, "vkSignalSemaphoreKHR")) {
17751         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
17752         return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
17753     }
17754 #endif
17755 #ifdef VK_KHR_fragment_shading_rate
17756     if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR")) {
17757         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
17758         return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
17759     }
17760     if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR")) {
17761         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
17762         return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
17763     }
17764 #endif
17765 #ifdef VK_KHR_present_wait
17766     if (!strcmp(name, "vkWaitForPresentKHR")) {
17767         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_present_wait");
17768         return hasExt ? (void*)entry_vkWaitForPresentKHR : nullptr;
17769     }
17770 #endif
17771 #ifdef VK_KHR_buffer_device_address
17772     if (!strcmp(name, "vkGetBufferDeviceAddressKHR")) {
17773         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
17774         return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
17775     }
17776     if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR")) {
17777         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
17778         return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
17779     }
17780     if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR")) {
17781         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
17782         return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
17783     }
17784 #endif
17785 #ifdef VK_KHR_deferred_host_operations
17786     if (!strcmp(name, "vkCreateDeferredOperationKHR")) {
17787         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17788         return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
17789     }
17790     if (!strcmp(name, "vkDestroyDeferredOperationKHR")) {
17791         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17792         return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
17793     }
17794     if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR")) {
17795         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17796         return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
17797     }
17798     if (!strcmp(name, "vkGetDeferredOperationResultKHR")) {
17799         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17800         return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
17801     }
17802     if (!strcmp(name, "vkDeferredOperationJoinKHR")) {
17803         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17804         return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
17805     }
17806 #endif
17807 #ifdef VK_KHR_pipeline_executable_properties
17808     if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR")) {
17809         bool hasExt =
17810             resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
17811         return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
17812     }
17813     if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR")) {
17814         bool hasExt =
17815             resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
17816         return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
17817     }
17818     if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR")) {
17819         bool hasExt =
17820             resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
17821         return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
17822     }
17823 #endif
17824 #ifdef VK_KHR_map_memory2
17825     if (!strcmp(name, "vkMapMemory2KHR")) {
17826         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_map_memory2");
17827         return hasExt ? (void*)entry_vkMapMemory2KHR : nullptr;
17828     }
17829     if (!strcmp(name, "vkUnmapMemory2KHR")) {
17830         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_map_memory2");
17831         return hasExt ? (void*)entry_vkUnmapMemory2KHR : nullptr;
17832     }
17833 #endif
17834 #ifdef VK_KHR_video_encode_queue
17835     if (!strcmp(name, "vkCmdEncodeVideoKHR")) {
17836         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue");
17837         return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
17838     }
17839 #endif
17840 #ifdef VK_KHR_synchronization2
17841     if (!strcmp(name, "vkCmdSetEvent2KHR")) {
17842         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17843         return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
17844     }
17845     if (!strcmp(name, "vkCmdResetEvent2KHR")) {
17846         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17847         return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
17848     }
17849     if (!strcmp(name, "vkCmdWaitEvents2KHR")) {
17850         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17851         return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
17852     }
17853     if (!strcmp(name, "vkCmdPipelineBarrier2KHR")) {
17854         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17855         return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
17856     }
17857     if (!strcmp(name, "vkCmdWriteTimestamp2KHR")) {
17858         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17859         return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
17860     }
17861     if (!strcmp(name, "vkQueueSubmit2KHR")) {
17862         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17863         return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
17864     }
17865     if (!strcmp(name, "vkCmdWriteBufferMarker2AMD")) {
17866         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17867         return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
17868     }
17869     if (!strcmp(name, "vkGetQueueCheckpointData2NV")) {
17870         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17871         return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
17872     }
17873 #endif
17874 #ifdef VK_KHR_copy_commands2
17875     if (!strcmp(name, "vkCmdCopyBuffer2KHR")) {
17876         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17877         return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
17878     }
17879     if (!strcmp(name, "vkCmdCopyImage2KHR")) {
17880         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17881         return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
17882     }
17883     if (!strcmp(name, "vkCmdCopyBufferToImage2KHR")) {
17884         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17885         return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
17886     }
17887     if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR")) {
17888         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17889         return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
17890     }
17891     if (!strcmp(name, "vkCmdBlitImage2KHR")) {
17892         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17893         return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
17894     }
17895     if (!strcmp(name, "vkCmdResolveImage2KHR")) {
17896         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17897         return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
17898     }
17899 #endif
17900 #ifdef VK_KHR_ray_tracing_maintenance1
17901     if (!strcmp(name, "vkCmdTraceRaysIndirect2KHR")) {
17902         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_maintenance1");
17903         return hasExt ? (void*)entry_vkCmdTraceRaysIndirect2KHR : nullptr;
17904     }
17905 #endif
17906 #ifdef VK_KHR_maintenance4
17907     if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR")) {
17908         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
17909         return hasExt ? (void*)entry_vkGetDeviceBufferMemoryRequirementsKHR : nullptr;
17910     }
17911     if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR")) {
17912         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
17913         return hasExt ? (void*)entry_vkGetDeviceImageMemoryRequirementsKHR : nullptr;
17914     }
17915     if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR")) {
17916         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
17917         return hasExt ? (void*)entry_vkGetDeviceImageSparseMemoryRequirementsKHR : nullptr;
17918     }
17919 #endif
17920 #ifdef VK_ANDROID_native_buffer
17921     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID")) {
17922         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17923         return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
17924     }
17925     if (!strcmp(name, "vkAcquireImageANDROID")) {
17926         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17927         return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
17928     }
17929     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID")) {
17930         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17931         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
17932     }
17933     if (!strcmp(name, "vkGetSwapchainGrallocUsage2ANDROID")) {
17934         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17935         return hasExt ? (void*)entry_vkGetSwapchainGrallocUsage2ANDROID : nullptr;
17936     }
17937 #endif
17938 #ifdef VK_EXT_debug_report
17939     if (!strcmp(name, "vkCreateDebugReportCallbackEXT")) {
17940         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
17941         return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
17942     }
17943     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT")) {
17944         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
17945         return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
17946     }
17947     if (!strcmp(name, "vkDebugReportMessageEXT")) {
17948         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
17949         return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
17950     }
17951 #endif
17952 #ifdef VK_EXT_debug_marker
17953     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT")) {
17954         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17955         return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
17956     }
17957     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT")) {
17958         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17959         return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
17960     }
17961     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT")) {
17962         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17963         return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
17964     }
17965     if (!strcmp(name, "vkCmdDebugMarkerEndEXT")) {
17966         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17967         return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
17968     }
17969     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT")) {
17970         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17971         return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
17972     }
17973 #endif
17974 #ifdef VK_EXT_transform_feedback
17975     if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT")) {
17976         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17977         return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
17978     }
17979     if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT")) {
17980         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17981         return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
17982     }
17983     if (!strcmp(name, "vkCmdEndTransformFeedbackEXT")) {
17984         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17985         return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
17986     }
17987     if (!strcmp(name, "vkCmdBeginQueryIndexedEXT")) {
17988         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17989         return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
17990     }
17991     if (!strcmp(name, "vkCmdEndQueryIndexedEXT")) {
17992         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17993         return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
17994     }
17995     if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT")) {
17996         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17997         return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
17998     }
17999 #endif
18000 #ifdef VK_NVX_binary_import
18001     if (!strcmp(name, "vkCreateCuModuleNVX")) {
18002         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
18003         return hasExt ? (void*)entry_vkCreateCuModuleNVX : nullptr;
18004     }
18005     if (!strcmp(name, "vkCreateCuFunctionNVX")) {
18006         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
18007         return hasExt ? (void*)entry_vkCreateCuFunctionNVX : nullptr;
18008     }
18009     if (!strcmp(name, "vkDestroyCuModuleNVX")) {
18010         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
18011         return hasExt ? (void*)entry_vkDestroyCuModuleNVX : nullptr;
18012     }
18013     if (!strcmp(name, "vkDestroyCuFunctionNVX")) {
18014         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
18015         return hasExt ? (void*)entry_vkDestroyCuFunctionNVX : nullptr;
18016     }
18017     if (!strcmp(name, "vkCmdCuLaunchKernelNVX")) {
18018         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
18019         return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
18020     }
18021 #endif
18022 #ifdef VK_NVX_image_view_handle
18023     if (!strcmp(name, "vkGetImageViewHandleNVX")) {
18024         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
18025         return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
18026     }
18027     if (!strcmp(name, "vkGetImageViewAddressNVX")) {
18028         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
18029         return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
18030     }
18031 #endif
18032 #ifdef VK_AMD_draw_indirect_count
18033     if (!strcmp(name, "vkCmdDrawIndirectCountAMD")) {
18034         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
18035         return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
18036     }
18037     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD")) {
18038         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
18039         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
18040     }
18041 #endif
18042 #ifdef VK_AMD_shader_info
18043     if (!strcmp(name, "vkGetShaderInfoAMD")) {
18044         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
18045         return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
18046     }
18047 #endif
18048 #ifdef VK_GGP_stream_descriptor_surface
18049     if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP")) {
18050         bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
18051         return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
18052     }
18053 #endif
18054 #ifdef VK_NV_external_memory_capabilities
18055     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV")) {
18056         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
18057         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
18058     }
18059 #endif
18060 #ifdef VK_NV_external_memory_win32
18061     if (!strcmp(name, "vkGetMemoryWin32HandleNV")) {
18062         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
18063         return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
18064     }
18065 #endif
18066 #ifdef VK_NN_vi_surface
18067     if (!strcmp(name, "vkCreateViSurfaceNN")) {
18068         bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
18069         return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
18070     }
18071 #endif
18072 #ifdef VK_EXT_conditional_rendering
18073     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT")) {
18074         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
18075         return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
18076     }
18077     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT")) {
18078         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
18079         return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
18080     }
18081 #endif
18082 #ifdef VK_NV_clip_space_w_scaling
18083     if (!strcmp(name, "vkCmdSetViewportWScalingNV")) {
18084         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
18085         return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
18086     }
18087 #endif
18088 #ifdef VK_EXT_direct_mode_display
18089     if (!strcmp(name, "vkReleaseDisplayEXT")) {
18090         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
18091         return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
18092     }
18093 #endif
18094 #ifdef VK_EXT_acquire_xlib_display
18095     if (!strcmp(name, "vkAcquireXlibDisplayEXT")) {
18096         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
18097         return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
18098     }
18099     if (!strcmp(name, "vkGetRandROutputDisplayEXT")) {
18100         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
18101         return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
18102     }
18103 #endif
18104 #ifdef VK_EXT_display_surface_counter
18105     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT")) {
18106         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
18107         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
18108     }
18109 #endif
18110 #ifdef VK_EXT_display_control
18111     if (!strcmp(name, "vkDisplayPowerControlEXT")) {
18112         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
18113         return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
18114     }
18115     if (!strcmp(name, "vkRegisterDeviceEventEXT")) {
18116         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
18117         return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
18118     }
18119     if (!strcmp(name, "vkRegisterDisplayEventEXT")) {
18120         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
18121         return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
18122     }
18123     if (!strcmp(name, "vkGetSwapchainCounterEXT")) {
18124         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
18125         return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
18126     }
18127 #endif
18128 #ifdef VK_GOOGLE_display_timing
18129     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE")) {
18130         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
18131         return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
18132     }
18133     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE")) {
18134         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
18135         return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
18136     }
18137 #endif
18138 #ifdef VK_EXT_discard_rectangles
18139     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT")) {
18140         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
18141         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
18142     }
18143     if (!strcmp(name, "vkCmdSetDiscardRectangleEnableEXT")) {
18144         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
18145         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEnableEXT : nullptr;
18146     }
18147     if (!strcmp(name, "vkCmdSetDiscardRectangleModeEXT")) {
18148         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
18149         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleModeEXT : nullptr;
18150     }
18151 #endif
18152 #ifdef VK_EXT_hdr_metadata
18153     if (!strcmp(name, "vkSetHdrMetadataEXT")) {
18154         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
18155         return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
18156     }
18157 #endif
18158 #ifdef VK_MVK_ios_surface
18159     if (!strcmp(name, "vkCreateIOSSurfaceMVK")) {
18160         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
18161         return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
18162     }
18163 #endif
18164 #ifdef VK_MVK_macos_surface
18165     if (!strcmp(name, "vkCreateMacOSSurfaceMVK")) {
18166         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
18167         return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
18168     }
18169 #endif
18170 #ifdef VK_EXT_debug_utils
18171     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT")) {
18172         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18173         return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
18174     }
18175     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT")) {
18176         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18177         return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
18178     }
18179     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT")) {
18180         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18181         return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
18182     }
18183     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT")) {
18184         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18185         return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
18186     }
18187     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT")) {
18188         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18189         return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
18190     }
18191     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT")) {
18192         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18193         return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
18194     }
18195     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT")) {
18196         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18197         return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
18198     }
18199     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT")) {
18200         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18201         return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
18202     }
18203     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT")) {
18204         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18205         return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
18206     }
18207     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT")) {
18208         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18209         return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
18210     }
18211     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT")) {
18212         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
18213         return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
18214     }
18215 #endif
18216 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
18217     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID")) {
18218         bool hasExt = resources->hasDeviceExtension(
18219             device, "VK_ANDROID_external_memory_android_hardware_buffer");
18220         return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
18221     }
18222     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID")) {
18223         bool hasExt = resources->hasDeviceExtension(
18224             device, "VK_ANDROID_external_memory_android_hardware_buffer");
18225         return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
18226     }
18227 #endif
18228 #ifdef VK_EXT_sample_locations
18229     if (!strcmp(name, "vkCmdSetSampleLocationsEXT")) {
18230         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
18231         return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
18232     }
18233     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT")) {
18234         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
18235         return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
18236     }
18237 #endif
18238 #ifdef VK_EXT_image_drm_format_modifier
18239     if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT")) {
18240         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
18241         return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
18242     }
18243 #endif
18244 #ifdef VK_EXT_validation_cache
18245     if (!strcmp(name, "vkCreateValidationCacheEXT")) {
18246         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
18247         return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
18248     }
18249     if (!strcmp(name, "vkDestroyValidationCacheEXT")) {
18250         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
18251         return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
18252     }
18253     if (!strcmp(name, "vkMergeValidationCachesEXT")) {
18254         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
18255         return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
18256     }
18257     if (!strcmp(name, "vkGetValidationCacheDataEXT")) {
18258         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
18259         return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
18260     }
18261 #endif
18262 #ifdef VK_NV_shading_rate_image
18263     if (!strcmp(name, "vkCmdBindShadingRateImageNV")) {
18264         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
18265         return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
18266     }
18267     if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV")) {
18268         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
18269         return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
18270     }
18271     if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV")) {
18272         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
18273         return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
18274     }
18275 #endif
18276 #ifdef VK_NV_ray_tracing
18277     if (!strcmp(name, "vkCreateAccelerationStructureNV")) {
18278         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18279         return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
18280     }
18281     if (!strcmp(name, "vkDestroyAccelerationStructureNV")) {
18282         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18283         return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
18284     }
18285     if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV")) {
18286         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18287         return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
18288     }
18289     if (!strcmp(name, "vkBindAccelerationStructureMemoryNV")) {
18290         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18291         return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
18292     }
18293     if (!strcmp(name, "vkCmdBuildAccelerationStructureNV")) {
18294         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18295         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
18296     }
18297     if (!strcmp(name, "vkCmdCopyAccelerationStructureNV")) {
18298         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18299         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
18300     }
18301     if (!strcmp(name, "vkCmdTraceRaysNV")) {
18302         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18303         return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
18304     }
18305     if (!strcmp(name, "vkCreateRayTracingPipelinesNV")) {
18306         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18307         return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
18308     }
18309     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR")) {
18310         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18311         return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
18312     }
18313     if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV")) {
18314         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18315         return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
18316     }
18317     if (!strcmp(name, "vkGetAccelerationStructureHandleNV")) {
18318         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18319         return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
18320     }
18321     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV")) {
18322         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18323         return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
18324     }
18325     if (!strcmp(name, "vkCompileDeferredNV")) {
18326         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
18327         return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
18328     }
18329 #endif
18330 #ifdef VK_EXT_external_memory_host
18331     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT")) {
18332         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
18333         return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
18334     }
18335 #endif
18336 #ifdef VK_AMD_buffer_marker
18337     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD")) {
18338         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
18339         return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
18340     }
18341 #endif
18342 #ifdef VK_EXT_calibrated_timestamps
18343     if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT")) {
18344         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
18345         return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
18346     }
18347     if (!strcmp(name, "vkGetCalibratedTimestampsEXT")) {
18348         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
18349         return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
18350     }
18351 #endif
18352 #ifdef VK_NV_mesh_shader
18353     if (!strcmp(name, "vkCmdDrawMeshTasksNV")) {
18354         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
18355         return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
18356     }
18357     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV")) {
18358         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
18359         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
18360     }
18361     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV")) {
18362         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
18363         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
18364     }
18365 #endif
18366 #ifdef VK_NV_scissor_exclusive
18367     if (!strcmp(name, "vkCmdSetExclusiveScissorEnableNV")) {
18368         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
18369         return hasExt ? (void*)entry_vkCmdSetExclusiveScissorEnableNV : nullptr;
18370     }
18371     if (!strcmp(name, "vkCmdSetExclusiveScissorNV")) {
18372         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
18373         return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
18374     }
18375 #endif
18376 #ifdef VK_NV_device_diagnostic_checkpoints
18377     if (!strcmp(name, "vkCmdSetCheckpointNV")) {
18378         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
18379         return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
18380     }
18381     if (!strcmp(name, "vkGetQueueCheckpointDataNV")) {
18382         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
18383         return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
18384     }
18385 #endif
18386 #ifdef VK_INTEL_performance_query
18387     if (!strcmp(name, "vkInitializePerformanceApiINTEL")) {
18388         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18389         return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
18390     }
18391     if (!strcmp(name, "vkUninitializePerformanceApiINTEL")) {
18392         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18393         return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
18394     }
18395     if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL")) {
18396         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18397         return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
18398     }
18399     if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL")) {
18400         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18401         return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
18402     }
18403     if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL")) {
18404         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18405         return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
18406     }
18407     if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL")) {
18408         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18409         return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
18410     }
18411     if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL")) {
18412         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18413         return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
18414     }
18415     if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL")) {
18416         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18417         return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
18418     }
18419     if (!strcmp(name, "vkGetPerformanceParameterINTEL")) {
18420         bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
18421         return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
18422     }
18423 #endif
18424 #ifdef VK_AMD_display_native_hdr
18425     if (!strcmp(name, "vkSetLocalDimmingAMD")) {
18426         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
18427         return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
18428     }
18429 #endif
18430 #ifdef VK_FUCHSIA_imagepipe_surface
18431     if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA")) {
18432         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
18433         return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
18434     }
18435 #endif
18436 #ifdef VK_EXT_metal_surface
18437     if (!strcmp(name, "vkCreateMetalSurfaceEXT")) {
18438         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
18439         return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
18440     }
18441 #endif
18442 #ifdef VK_EXT_buffer_device_address
18443     if (!strcmp(name, "vkGetBufferDeviceAddressEXT")) {
18444         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
18445         return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
18446     }
18447 #endif
18448 #ifdef VK_EXT_tooling_info
18449     if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT")) {
18450         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
18451         return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
18452     }
18453 #endif
18454 #ifdef VK_NV_cooperative_matrix
18455     if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV")) {
18456         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
18457         return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
18458     }
18459 #endif
18460 #ifdef VK_NV_coverage_reduction_mode
18461     if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV")) {
18462         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
18463         return hasExt
18464                    ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
18465                    : nullptr;
18466     }
18467 #endif
18468 #ifdef VK_EXT_full_screen_exclusive
18469     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT")) {
18470         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
18471         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
18472     }
18473     if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT")) {
18474         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
18475         return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
18476     }
18477     if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT")) {
18478         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
18479         return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
18480     }
18481     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT")) {
18482         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
18483         return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
18484     }
18485 #endif
18486 #ifdef VK_EXT_headless_surface
18487     if (!strcmp(name, "vkCreateHeadlessSurfaceEXT")) {
18488         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
18489         return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
18490     }
18491 #endif
18492 #ifdef VK_EXT_line_rasterization
18493     if (!strcmp(name, "vkCmdSetLineStippleEXT")) {
18494         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
18495         return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
18496     }
18497 #endif
18498 #ifdef VK_EXT_host_query_reset
18499     if (!strcmp(name, "vkResetQueryPoolEXT")) {
18500         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
18501         return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
18502     }
18503 #endif
18504 #ifdef VK_EXT_extended_dynamic_state
18505     if (!strcmp(name, "vkCmdSetCullModeEXT")) {
18506         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18507         return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
18508     }
18509     if (!strcmp(name, "vkCmdSetFrontFaceEXT")) {
18510         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18511         return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
18512     }
18513     if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT")) {
18514         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18515         return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
18516     }
18517     if (!strcmp(name, "vkCmdSetViewportWithCountEXT")) {
18518         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18519         return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
18520     }
18521     if (!strcmp(name, "vkCmdSetScissorWithCountEXT")) {
18522         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18523         return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
18524     }
18525     if (!strcmp(name, "vkCmdBindVertexBuffers2EXT")) {
18526         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18527         return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
18528     }
18529     if (!strcmp(name, "vkCmdSetDepthTestEnableEXT")) {
18530         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18531         return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
18532     }
18533     if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT")) {
18534         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18535         return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
18536     }
18537     if (!strcmp(name, "vkCmdSetDepthCompareOpEXT")) {
18538         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18539         return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
18540     }
18541     if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT")) {
18542         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18543         return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
18544     }
18545     if (!strcmp(name, "vkCmdSetStencilTestEnableEXT")) {
18546         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18547         return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
18548     }
18549     if (!strcmp(name, "vkCmdSetStencilOpEXT")) {
18550         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18551         return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
18552     }
18553 #endif
18554 #ifdef VK_EXT_swapchain_maintenance1
18555     if (!strcmp(name, "vkReleaseSwapchainImagesEXT")) {
18556         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_swapchain_maintenance1");
18557         return hasExt ? (void*)entry_vkReleaseSwapchainImagesEXT : nullptr;
18558     }
18559 #endif
18560 #ifdef VK_NV_device_generated_commands
18561     if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV")) {
18562         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18563         return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
18564     }
18565     if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV")) {
18566         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18567         return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
18568     }
18569     if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV")) {
18570         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18571         return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
18572     }
18573     if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV")) {
18574         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18575         return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
18576     }
18577     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV")) {
18578         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18579         return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
18580     }
18581     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV")) {
18582         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18583         return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
18584     }
18585 #endif
18586 #ifdef VK_EXT_acquire_drm_display
18587     if (!strcmp(name, "vkAcquireDrmDisplayEXT")) {
18588         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
18589         return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
18590     }
18591     if (!strcmp(name, "vkGetDrmDisplayEXT")) {
18592         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
18593         return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
18594     }
18595 #endif
18596 #ifdef VK_EXT_private_data
18597     if (!strcmp(name, "vkCreatePrivateDataSlotEXT")) {
18598         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18599         return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
18600     }
18601     if (!strcmp(name, "vkDestroyPrivateDataSlotEXT")) {
18602         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18603         return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
18604     }
18605     if (!strcmp(name, "vkSetPrivateDataEXT")) {
18606         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18607         return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
18608     }
18609     if (!strcmp(name, "vkGetPrivateDataEXT")) {
18610         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18611         return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
18612     }
18613 #endif
18614 #ifdef VK_EXT_metal_objects
18615     if (!strcmp(name, "vkExportMetalObjectsEXT")) {
18616         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_objects");
18617         return hasExt ? (void*)entry_vkExportMetalObjectsEXT : nullptr;
18618     }
18619 #endif
18620 #ifdef VK_EXT_descriptor_buffer
18621     if (!strcmp(name, "vkGetDescriptorSetLayoutSizeEXT")) {
18622         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18623         return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSizeEXT : nullptr;
18624     }
18625     if (!strcmp(name, "vkGetDescriptorSetLayoutBindingOffsetEXT")) {
18626         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18627         return hasExt ? (void*)entry_vkGetDescriptorSetLayoutBindingOffsetEXT : nullptr;
18628     }
18629     if (!strcmp(name, "vkGetDescriptorEXT")) {
18630         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18631         return hasExt ? (void*)entry_vkGetDescriptorEXT : nullptr;
18632     }
18633     if (!strcmp(name, "vkCmdBindDescriptorBuffersEXT")) {
18634         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18635         return hasExt ? (void*)entry_vkCmdBindDescriptorBuffersEXT : nullptr;
18636     }
18637     if (!strcmp(name, "vkCmdSetDescriptorBufferOffsetsEXT")) {
18638         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18639         return hasExt ? (void*)entry_vkCmdSetDescriptorBufferOffsetsEXT : nullptr;
18640     }
18641     if (!strcmp(name, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT")) {
18642         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18643         return hasExt ? (void*)entry_vkCmdBindDescriptorBufferEmbeddedSamplersEXT : nullptr;
18644     }
18645     if (!strcmp(name, "vkGetBufferOpaqueCaptureDescriptorDataEXT")) {
18646         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18647         return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureDescriptorDataEXT : nullptr;
18648     }
18649     if (!strcmp(name, "vkGetImageOpaqueCaptureDescriptorDataEXT")) {
18650         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18651         return hasExt ? (void*)entry_vkGetImageOpaqueCaptureDescriptorDataEXT : nullptr;
18652     }
18653     if (!strcmp(name, "vkGetImageViewOpaqueCaptureDescriptorDataEXT")) {
18654         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18655         return hasExt ? (void*)entry_vkGetImageViewOpaqueCaptureDescriptorDataEXT : nullptr;
18656     }
18657     if (!strcmp(name, "vkGetSamplerOpaqueCaptureDescriptorDataEXT")) {
18658         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18659         return hasExt ? (void*)entry_vkGetSamplerOpaqueCaptureDescriptorDataEXT : nullptr;
18660     }
18661     if (!strcmp(name, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT")) {
18662         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_descriptor_buffer");
18663         return hasExt ? (void*)entry_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT
18664                       : nullptr;
18665     }
18666 #endif
18667 #ifdef VK_NV_fragment_shading_rate_enums
18668     if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV")) {
18669         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
18670         return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
18671     }
18672 #endif
18673 #ifdef VK_EXT_image_compression_control
18674     if (!strcmp(name, "vkGetImageSubresourceLayout2EXT")) {
18675         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_compression_control");
18676         return hasExt ? (void*)entry_vkGetImageSubresourceLayout2EXT : nullptr;
18677     }
18678 #endif
18679 #ifdef VK_EXT_device_fault
18680     if (!strcmp(name, "vkGetDeviceFaultInfoEXT")) {
18681         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_device_fault");
18682         return hasExt ? (void*)entry_vkGetDeviceFaultInfoEXT : nullptr;
18683     }
18684 #endif
18685 #ifdef VK_NV_acquire_winrt_display
18686     if (!strcmp(name, "vkAcquireWinrtDisplayNV")) {
18687         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
18688         return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
18689     }
18690     if (!strcmp(name, "vkGetWinrtDisplayNV")) {
18691         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
18692         return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
18693     }
18694 #endif
18695 #ifdef VK_EXT_directfb_surface
18696     if (!strcmp(name, "vkCreateDirectFBSurfaceEXT")) {
18697         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
18698         return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
18699     }
18700     if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT")) {
18701         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
18702         return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
18703     }
18704 #endif
18705 #ifdef VK_EXT_vertex_input_dynamic_state
18706     if (!strcmp(name, "vkCmdSetVertexInputEXT")) {
18707         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state");
18708         return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
18709     }
18710 #endif
18711 #ifdef VK_FUCHSIA_external_memory
18712     if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA")) {
18713         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
18714         return hasExt ? (void*)entry_vkGetMemoryZirconHandleFUCHSIA : nullptr;
18715     }
18716     if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA")) {
18717         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
18718         return hasExt ? (void*)entry_vkGetMemoryZirconHandlePropertiesFUCHSIA : nullptr;
18719     }
18720 #endif
18721 #ifdef VK_FUCHSIA_external_semaphore
18722     if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA")) {
18723         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
18724         return hasExt ? (void*)entry_vkImportSemaphoreZirconHandleFUCHSIA : nullptr;
18725     }
18726     if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA")) {
18727         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
18728         return hasExt ? (void*)entry_vkGetSemaphoreZirconHandleFUCHSIA : nullptr;
18729     }
18730 #endif
18731 #ifdef VK_FUCHSIA_buffer_collection
18732     if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA")) {
18733         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18734         return hasExt ? (void*)entry_vkCreateBufferCollectionFUCHSIA : nullptr;
18735     }
18736     if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA")) {
18737         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18738         return hasExt ? (void*)entry_vkSetBufferCollectionImageConstraintsFUCHSIA : nullptr;
18739     }
18740     if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA")) {
18741         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18742         return hasExt ? (void*)entry_vkSetBufferCollectionBufferConstraintsFUCHSIA : nullptr;
18743     }
18744     if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA")) {
18745         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18746         return hasExt ? (void*)entry_vkDestroyBufferCollectionFUCHSIA : nullptr;
18747     }
18748     if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA")) {
18749         bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18750         return hasExt ? (void*)entry_vkGetBufferCollectionPropertiesFUCHSIA : nullptr;
18751     }
18752 #endif
18753 #ifdef VK_HUAWEI_subpass_shading
18754     if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI")) {
18755         bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
18756         return hasExt ? (void*)entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI : nullptr;
18757     }
18758     if (!strcmp(name, "vkCmdSubpassShadingHUAWEI")) {
18759         bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
18760         return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
18761     }
18762 #endif
18763 #ifdef VK_HUAWEI_invocation_mask
18764     if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI")) {
18765         bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask");
18766         return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
18767     }
18768 #endif
18769 #ifdef VK_NV_external_memory_rdma
18770     if (!strcmp(name, "vkGetMemoryRemoteAddressNV")) {
18771         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma");
18772         return hasExt ? (void*)entry_vkGetMemoryRemoteAddressNV : nullptr;
18773     }
18774 #endif
18775 #ifdef VK_EXT_pipeline_properties
18776     if (!strcmp(name, "vkGetPipelinePropertiesEXT")) {
18777         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_pipeline_properties");
18778         return hasExt ? (void*)entry_vkGetPipelinePropertiesEXT : nullptr;
18779     }
18780 #endif
18781 #ifdef VK_EXT_extended_dynamic_state2
18782     if (!strcmp(name, "vkCmdSetPatchControlPointsEXT")) {
18783         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18784         return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
18785     }
18786     if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT")) {
18787         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18788         return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
18789     }
18790     if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT")) {
18791         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18792         return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
18793     }
18794     if (!strcmp(name, "vkCmdSetLogicOpEXT")) {
18795         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18796         return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
18797     }
18798     if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT")) {
18799         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18800         return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
18801     }
18802 #endif
18803 #ifdef VK_QNX_screen_surface
18804     if (!strcmp(name, "vkCreateScreenSurfaceQNX")) {
18805         bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
18806         return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
18807     }
18808     if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX")) {
18809         bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
18810         return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
18811     }
18812 #endif
18813 #ifdef VK_EXT_color_write_enable
18814     if (!strcmp(name, "vkCmdSetColorWriteEnableEXT")) {
18815         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_color_write_enable");
18816         return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
18817     }
18818 #endif
18819 #ifdef VK_GOOGLE_gfxstream
18820     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE")) {
18821         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18822         return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
18823     }
18824     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE")) {
18825         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18826         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
18827     }
18828     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE")) {
18829         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18830         return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
18831     }
18832     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE")) {
18833         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18834         return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
18835     }
18836     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE")) {
18837         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18838         return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
18839     }
18840     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE")) {
18841         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18842         return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
18843     }
18844     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE")) {
18845         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18846         return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
18847     }
18848     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE")) {
18849         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18850         return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
18851     }
18852     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE")) {
18853         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18854         return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
18855     }
18856     if (!strcmp(name, "vkFreeMemorySyncGOOGLE")) {
18857         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18858         return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
18859     }
18860     if (!strcmp(name, "vkQueueHostSyncGOOGLE")) {
18861         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18862         return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
18863     }
18864     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE")) {
18865         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18866         return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
18867     }
18868     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE")) {
18869         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18870         return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
18871     }
18872     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE")) {
18873         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18874         return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
18875     }
18876     if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE")) {
18877         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18878         return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
18879     }
18880     if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE")) {
18881         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18882         return hasExt ? (void*)entry_vkGetLinearImageLayout2GOOGLE : nullptr;
18883     }
18884     if (!strcmp(name, "vkQueueFlushCommandsGOOGLE")) {
18885         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18886         return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
18887     }
18888     if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE")) {
18889         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18890         return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
18891     }
18892     if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE")) {
18893         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18894         return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
18895     }
18896     if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE")) {
18897         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18898         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
18899     }
18900     if (!strcmp(name, "vkQueueFlushCommandsFromAuxMemoryGOOGLE")) {
18901         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18902         return hasExt ? (void*)entry_vkQueueFlushCommandsFromAuxMemoryGOOGLE : nullptr;
18903     }
18904     if (!strcmp(name, "vkGetBlobGOOGLE")) {
18905         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18906         return hasExt ? (void*)entry_vkGetBlobGOOGLE : nullptr;
18907     }
18908     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE")) {
18909         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18910         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSized2GOOGLE : nullptr;
18911     }
18912     if (!strcmp(name, "vkQueueSubmitAsync2GOOGLE")) {
18913         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18914         return hasExt ? (void*)entry_vkQueueSubmitAsync2GOOGLE : nullptr;
18915     }
18916 #endif
18917 #ifdef VK_EXT_multi_draw
18918     if (!strcmp(name, "vkCmdDrawMultiEXT")) {
18919         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
18920         return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
18921     }
18922     if (!strcmp(name, "vkCmdDrawMultiIndexedEXT")) {
18923         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
18924         return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
18925     }
18926 #endif
18927 #ifdef VK_EXT_opacity_micromap
18928     if (!strcmp(name, "vkCreateMicromapEXT")) {
18929         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18930         return hasExt ? (void*)entry_vkCreateMicromapEXT : nullptr;
18931     }
18932     if (!strcmp(name, "vkDestroyMicromapEXT")) {
18933         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18934         return hasExt ? (void*)entry_vkDestroyMicromapEXT : nullptr;
18935     }
18936     if (!strcmp(name, "vkCmdBuildMicromapsEXT")) {
18937         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18938         return hasExt ? (void*)entry_vkCmdBuildMicromapsEXT : nullptr;
18939     }
18940     if (!strcmp(name, "vkBuildMicromapsEXT")) {
18941         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18942         return hasExt ? (void*)entry_vkBuildMicromapsEXT : nullptr;
18943     }
18944     if (!strcmp(name, "vkCopyMicromapEXT")) {
18945         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18946         return hasExt ? (void*)entry_vkCopyMicromapEXT : nullptr;
18947     }
18948     if (!strcmp(name, "vkCopyMicromapToMemoryEXT")) {
18949         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18950         return hasExt ? (void*)entry_vkCopyMicromapToMemoryEXT : nullptr;
18951     }
18952     if (!strcmp(name, "vkCopyMemoryToMicromapEXT")) {
18953         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18954         return hasExt ? (void*)entry_vkCopyMemoryToMicromapEXT : nullptr;
18955     }
18956     if (!strcmp(name, "vkWriteMicromapsPropertiesEXT")) {
18957         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18958         return hasExt ? (void*)entry_vkWriteMicromapsPropertiesEXT : nullptr;
18959     }
18960     if (!strcmp(name, "vkCmdCopyMicromapEXT")) {
18961         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18962         return hasExt ? (void*)entry_vkCmdCopyMicromapEXT : nullptr;
18963     }
18964     if (!strcmp(name, "vkCmdCopyMicromapToMemoryEXT")) {
18965         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18966         return hasExt ? (void*)entry_vkCmdCopyMicromapToMemoryEXT : nullptr;
18967     }
18968     if (!strcmp(name, "vkCmdCopyMemoryToMicromapEXT")) {
18969         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18970         return hasExt ? (void*)entry_vkCmdCopyMemoryToMicromapEXT : nullptr;
18971     }
18972     if (!strcmp(name, "vkCmdWriteMicromapsPropertiesEXT")) {
18973         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18974         return hasExt ? (void*)entry_vkCmdWriteMicromapsPropertiesEXT : nullptr;
18975     }
18976     if (!strcmp(name, "vkGetDeviceMicromapCompatibilityEXT")) {
18977         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18978         return hasExt ? (void*)entry_vkGetDeviceMicromapCompatibilityEXT : nullptr;
18979     }
18980     if (!strcmp(name, "vkGetMicromapBuildSizesEXT")) {
18981         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_opacity_micromap");
18982         return hasExt ? (void*)entry_vkGetMicromapBuildSizesEXT : nullptr;
18983     }
18984 #endif
18985 #ifdef VK_HUAWEI_cluster_culling_shader
18986     if (!strcmp(name, "vkCmdDrawClusterHUAWEI")) {
18987         bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_cluster_culling_shader");
18988         return hasExt ? (void*)entry_vkCmdDrawClusterHUAWEI : nullptr;
18989     }
18990     if (!strcmp(name, "vkCmdDrawClusterIndirectHUAWEI")) {
18991         bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_cluster_culling_shader");
18992         return hasExt ? (void*)entry_vkCmdDrawClusterIndirectHUAWEI : nullptr;
18993     }
18994 #endif
18995 #ifdef VK_EXT_pageable_device_local_memory
18996     if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT")) {
18997         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory");
18998         return hasExt ? (void*)entry_vkSetDeviceMemoryPriorityEXT : nullptr;
18999     }
19000 #endif
19001 #ifdef VK_VALVE_descriptor_set_host_mapping
19002     if (!strcmp(name, "vkGetDescriptorSetLayoutHostMappingInfoVALVE")) {
19003         bool hasExt = resources->hasDeviceExtension(device, "VK_VALVE_descriptor_set_host_mapping");
19004         return hasExt ? (void*)entry_vkGetDescriptorSetLayoutHostMappingInfoVALVE : nullptr;
19005     }
19006     if (!strcmp(name, "vkGetDescriptorSetHostMappingVALVE")) {
19007         bool hasExt = resources->hasDeviceExtension(device, "VK_VALVE_descriptor_set_host_mapping");
19008         return hasExt ? (void*)entry_vkGetDescriptorSetHostMappingVALVE : nullptr;
19009     }
19010 #endif
19011 #ifdef VK_NV_copy_memory_indirect
19012     if (!strcmp(name, "vkCmdCopyMemoryIndirectNV")) {
19013         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_copy_memory_indirect");
19014         return hasExt ? (void*)entry_vkCmdCopyMemoryIndirectNV : nullptr;
19015     }
19016     if (!strcmp(name, "vkCmdCopyMemoryToImageIndirectNV")) {
19017         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_copy_memory_indirect");
19018         return hasExt ? (void*)entry_vkCmdCopyMemoryToImageIndirectNV : nullptr;
19019     }
19020 #endif
19021 #ifdef VK_NV_memory_decompression
19022     if (!strcmp(name, "vkCmdDecompressMemoryNV")) {
19023         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_memory_decompression");
19024         return hasExt ? (void*)entry_vkCmdDecompressMemoryNV : nullptr;
19025     }
19026     if (!strcmp(name, "vkCmdDecompressMemoryIndirectCountNV")) {
19027         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_memory_decompression");
19028         return hasExt ? (void*)entry_vkCmdDecompressMemoryIndirectCountNV : nullptr;
19029     }
19030 #endif
19031 #ifdef VK_EXT_extended_dynamic_state3
19032     if (!strcmp(name, "vkCmdSetTessellationDomainOriginEXT")) {
19033         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19034         return hasExt ? (void*)entry_vkCmdSetTessellationDomainOriginEXT : nullptr;
19035     }
19036     if (!strcmp(name, "vkCmdSetDepthClampEnableEXT")) {
19037         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19038         return hasExt ? (void*)entry_vkCmdSetDepthClampEnableEXT : nullptr;
19039     }
19040     if (!strcmp(name, "vkCmdSetPolygonModeEXT")) {
19041         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19042         return hasExt ? (void*)entry_vkCmdSetPolygonModeEXT : nullptr;
19043     }
19044     if (!strcmp(name, "vkCmdSetRasterizationSamplesEXT")) {
19045         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19046         return hasExt ? (void*)entry_vkCmdSetRasterizationSamplesEXT : nullptr;
19047     }
19048     if (!strcmp(name, "vkCmdSetSampleMaskEXT")) {
19049         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19050         return hasExt ? (void*)entry_vkCmdSetSampleMaskEXT : nullptr;
19051     }
19052     if (!strcmp(name, "vkCmdSetAlphaToCoverageEnableEXT")) {
19053         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19054         return hasExt ? (void*)entry_vkCmdSetAlphaToCoverageEnableEXT : nullptr;
19055     }
19056     if (!strcmp(name, "vkCmdSetAlphaToOneEnableEXT")) {
19057         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19058         return hasExt ? (void*)entry_vkCmdSetAlphaToOneEnableEXT : nullptr;
19059     }
19060     if (!strcmp(name, "vkCmdSetLogicOpEnableEXT")) {
19061         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19062         return hasExt ? (void*)entry_vkCmdSetLogicOpEnableEXT : nullptr;
19063     }
19064     if (!strcmp(name, "vkCmdSetColorBlendEnableEXT")) {
19065         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19066         return hasExt ? (void*)entry_vkCmdSetColorBlendEnableEXT : nullptr;
19067     }
19068     if (!strcmp(name, "vkCmdSetColorBlendEquationEXT")) {
19069         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19070         return hasExt ? (void*)entry_vkCmdSetColorBlendEquationEXT : nullptr;
19071     }
19072     if (!strcmp(name, "vkCmdSetColorWriteMaskEXT")) {
19073         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19074         return hasExt ? (void*)entry_vkCmdSetColorWriteMaskEXT : nullptr;
19075     }
19076     if (!strcmp(name, "vkCmdSetRasterizationStreamEXT")) {
19077         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19078         return hasExt ? (void*)entry_vkCmdSetRasterizationStreamEXT : nullptr;
19079     }
19080     if (!strcmp(name, "vkCmdSetConservativeRasterizationModeEXT")) {
19081         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19082         return hasExt ? (void*)entry_vkCmdSetConservativeRasterizationModeEXT : nullptr;
19083     }
19084     if (!strcmp(name, "vkCmdSetExtraPrimitiveOverestimationSizeEXT")) {
19085         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19086         return hasExt ? (void*)entry_vkCmdSetExtraPrimitiveOverestimationSizeEXT : nullptr;
19087     }
19088     if (!strcmp(name, "vkCmdSetDepthClipEnableEXT")) {
19089         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19090         return hasExt ? (void*)entry_vkCmdSetDepthClipEnableEXT : nullptr;
19091     }
19092     if (!strcmp(name, "vkCmdSetSampleLocationsEnableEXT")) {
19093         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19094         return hasExt ? (void*)entry_vkCmdSetSampleLocationsEnableEXT : nullptr;
19095     }
19096     if (!strcmp(name, "vkCmdSetColorBlendAdvancedEXT")) {
19097         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19098         return hasExt ? (void*)entry_vkCmdSetColorBlendAdvancedEXT : nullptr;
19099     }
19100     if (!strcmp(name, "vkCmdSetProvokingVertexModeEXT")) {
19101         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19102         return hasExt ? (void*)entry_vkCmdSetProvokingVertexModeEXT : nullptr;
19103     }
19104     if (!strcmp(name, "vkCmdSetLineRasterizationModeEXT")) {
19105         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19106         return hasExt ? (void*)entry_vkCmdSetLineRasterizationModeEXT : nullptr;
19107     }
19108     if (!strcmp(name, "vkCmdSetLineStippleEnableEXT")) {
19109         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19110         return hasExt ? (void*)entry_vkCmdSetLineStippleEnableEXT : nullptr;
19111     }
19112     if (!strcmp(name, "vkCmdSetDepthClipNegativeOneToOneEXT")) {
19113         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19114         return hasExt ? (void*)entry_vkCmdSetDepthClipNegativeOneToOneEXT : nullptr;
19115     }
19116     if (!strcmp(name, "vkCmdSetViewportWScalingEnableNV")) {
19117         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19118         return hasExt ? (void*)entry_vkCmdSetViewportWScalingEnableNV : nullptr;
19119     }
19120     if (!strcmp(name, "vkCmdSetViewportSwizzleNV")) {
19121         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19122         return hasExt ? (void*)entry_vkCmdSetViewportSwizzleNV : nullptr;
19123     }
19124     if (!strcmp(name, "vkCmdSetCoverageToColorEnableNV")) {
19125         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19126         return hasExt ? (void*)entry_vkCmdSetCoverageToColorEnableNV : nullptr;
19127     }
19128     if (!strcmp(name, "vkCmdSetCoverageToColorLocationNV")) {
19129         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19130         return hasExt ? (void*)entry_vkCmdSetCoverageToColorLocationNV : nullptr;
19131     }
19132     if (!strcmp(name, "vkCmdSetCoverageModulationModeNV")) {
19133         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19134         return hasExt ? (void*)entry_vkCmdSetCoverageModulationModeNV : nullptr;
19135     }
19136     if (!strcmp(name, "vkCmdSetCoverageModulationTableEnableNV")) {
19137         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19138         return hasExt ? (void*)entry_vkCmdSetCoverageModulationTableEnableNV : nullptr;
19139     }
19140     if (!strcmp(name, "vkCmdSetCoverageModulationTableNV")) {
19141         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19142         return hasExt ? (void*)entry_vkCmdSetCoverageModulationTableNV : nullptr;
19143     }
19144     if (!strcmp(name, "vkCmdSetShadingRateImageEnableNV")) {
19145         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19146         return hasExt ? (void*)entry_vkCmdSetShadingRateImageEnableNV : nullptr;
19147     }
19148     if (!strcmp(name, "vkCmdSetRepresentativeFragmentTestEnableNV")) {
19149         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19150         return hasExt ? (void*)entry_vkCmdSetRepresentativeFragmentTestEnableNV : nullptr;
19151     }
19152     if (!strcmp(name, "vkCmdSetCoverageReductionModeNV")) {
19153         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state3");
19154         return hasExt ? (void*)entry_vkCmdSetCoverageReductionModeNV : nullptr;
19155     }
19156 #endif
19157 #ifdef VK_EXT_shader_module_identifier
19158     if (!strcmp(name, "vkGetShaderModuleIdentifierEXT")) {
19159         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_shader_module_identifier");
19160         return hasExt ? (void*)entry_vkGetShaderModuleIdentifierEXT : nullptr;
19161     }
19162     if (!strcmp(name, "vkGetShaderModuleCreateInfoIdentifierEXT")) {
19163         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_shader_module_identifier");
19164         return hasExt ? (void*)entry_vkGetShaderModuleCreateInfoIdentifierEXT : nullptr;
19165     }
19166 #endif
19167 #ifdef VK_NV_optical_flow
19168     if (!strcmp(name, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV")) {
19169         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_optical_flow");
19170         return hasExt ? (void*)entry_vkGetPhysicalDeviceOpticalFlowImageFormatsNV : nullptr;
19171     }
19172     if (!strcmp(name, "vkCreateOpticalFlowSessionNV")) {
19173         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_optical_flow");
19174         return hasExt ? (void*)entry_vkCreateOpticalFlowSessionNV : nullptr;
19175     }
19176     if (!strcmp(name, "vkDestroyOpticalFlowSessionNV")) {
19177         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_optical_flow");
19178         return hasExt ? (void*)entry_vkDestroyOpticalFlowSessionNV : nullptr;
19179     }
19180     if (!strcmp(name, "vkBindOpticalFlowSessionImageNV")) {
19181         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_optical_flow");
19182         return hasExt ? (void*)entry_vkBindOpticalFlowSessionImageNV : nullptr;
19183     }
19184     if (!strcmp(name, "vkCmdOpticalFlowExecuteNV")) {
19185         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_optical_flow");
19186         return hasExt ? (void*)entry_vkCmdOpticalFlowExecuteNV : nullptr;
19187     }
19188 #endif
19189 #ifdef VK_EXT_shader_object
19190     if (!strcmp(name, "vkCreateShadersEXT")) {
19191         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_shader_object");
19192         return hasExt ? (void*)entry_vkCreateShadersEXT : nullptr;
19193     }
19194     if (!strcmp(name, "vkDestroyShaderEXT")) {
19195         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_shader_object");
19196         return hasExt ? (void*)entry_vkDestroyShaderEXT : nullptr;
19197     }
19198     if (!strcmp(name, "vkGetShaderBinaryDataEXT")) {
19199         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_shader_object");
19200         return hasExt ? (void*)entry_vkGetShaderBinaryDataEXT : nullptr;
19201     }
19202     if (!strcmp(name, "vkCmdBindShadersEXT")) {
19203         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_shader_object");
19204         return hasExt ? (void*)entry_vkCmdBindShadersEXT : nullptr;
19205     }
19206 #endif
19207 #ifdef VK_QCOM_tile_properties
19208     if (!strcmp(name, "vkGetFramebufferTilePropertiesQCOM")) {
19209         bool hasExt = resources->hasDeviceExtension(device, "VK_QCOM_tile_properties");
19210         return hasExt ? (void*)entry_vkGetFramebufferTilePropertiesQCOM : nullptr;
19211     }
19212     if (!strcmp(name, "vkGetDynamicRenderingTilePropertiesQCOM")) {
19213         bool hasExt = resources->hasDeviceExtension(device, "VK_QCOM_tile_properties");
19214         return hasExt ? (void*)entry_vkGetDynamicRenderingTilePropertiesQCOM : nullptr;
19215     }
19216 #endif
19217 #ifdef VK_EXT_attachment_feedback_loop_dynamic_state
19218     if (!strcmp(name, "vkCmdSetAttachmentFeedbackLoopEnableEXT")) {
19219         bool hasExt =
19220             resources->hasDeviceExtension(device, "VK_EXT_attachment_feedback_loop_dynamic_state");
19221         return hasExt ? (void*)entry_vkCmdSetAttachmentFeedbackLoopEnableEXT : nullptr;
19222     }
19223 #endif
19224 #ifdef VK_KHR_acceleration_structure
19225     if (!strcmp(name, "vkCreateAccelerationStructureKHR")) {
19226         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19227         return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
19228     }
19229     if (!strcmp(name, "vkDestroyAccelerationStructureKHR")) {
19230         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19231         return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
19232     }
19233     if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR")) {
19234         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19235         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
19236     }
19237     if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR")) {
19238         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19239         return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
19240     }
19241     if (!strcmp(name, "vkBuildAccelerationStructuresKHR")) {
19242         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19243         return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
19244     }
19245     if (!strcmp(name, "vkCopyAccelerationStructureKHR")) {
19246         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19247         return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
19248     }
19249     if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR")) {
19250         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19251         return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
19252     }
19253     if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR")) {
19254         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19255         return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
19256     }
19257     if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR")) {
19258         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19259         return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
19260     }
19261     if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR")) {
19262         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19263         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
19264     }
19265     if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR")) {
19266         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19267         return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
19268     }
19269     if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR")) {
19270         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19271         return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
19272     }
19273     if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR")) {
19274         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19275         return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
19276     }
19277     if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR")) {
19278         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19279         return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
19280     }
19281     if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR")) {
19282         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19283         return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
19284     }
19285     if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR")) {
19286         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
19287         return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
19288     }
19289 #endif
19290 #ifdef VK_KHR_ray_tracing_pipeline
19291     if (!strcmp(name, "vkCmdTraceRaysKHR")) {
19292         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
19293         return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
19294     }
19295     if (!strcmp(name, "vkCreateRayTracingPipelinesKHR")) {
19296         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
19297         return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
19298     }
19299     if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR")) {
19300         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
19301         return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
19302     }
19303     if (!strcmp(name, "vkCmdTraceRaysIndirectKHR")) {
19304         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
19305         return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
19306     }
19307     if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR")) {
19308         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
19309         return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
19310     }
19311     if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR")) {
19312         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
19313         return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
19314     }
19315 #endif
19316 #ifdef VK_EXT_mesh_shader
19317     if (!strcmp(name, "vkCmdDrawMeshTasksEXT")) {
19318         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_mesh_shader");
19319         return hasExt ? (void*)entry_vkCmdDrawMeshTasksEXT : nullptr;
19320     }
19321     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectEXT")) {
19322         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_mesh_shader");
19323         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectEXT : nullptr;
19324     }
19325     if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountEXT")) {
19326         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_mesh_shader");
19327         return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountEXT : nullptr;
19328     }
19329 #endif
19330     return nullptr;
19331 }
19332 
19333 }  // namespace vk
19334 }  // namespace gfxstream
19335