1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module func_table
17 // (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18 // Please do not modify directly;
19 // re-run android/scripts/generate-vulkan-sources.sh,
20 // or directly from Python by defining:
21 // VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
23 // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24 
25 #include "func_table.h"
26 
27 
28 #include "VkEncoder.h"
29 #include "HostConnection.h"
30 #include "ResourceTracker.h"
31 
32 #include "goldfish_vk_private_defs.h"
33 
34 #include <log/log.h>
35 
36 // Stuff we are not going to use but if included,
37 // will cause compile errors. These are Android Vulkan
38 // required extensions, but the approach will be to
39 // implement them completely on the guest side.
40 #undef VK_KHR_android_surface
41 
42 
43 namespace goldfish_vk {
44 
sOnInvalidDynamicallyCheckedCall(const char * apiname,const char * neededFeature)45 static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46 {
47     ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48     abort();
49 }
50 #ifdef VK_VERSION_1_0
entry_vkCreateInstance(const VkInstanceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkInstance * pInstance)51 static VkResult entry_vkCreateInstance(
52     const VkInstanceCreateInfo* pCreateInfo,
53     const VkAllocationCallbacks* pAllocator,
54     VkInstance* pInstance)
55 {
56     AEMU_SCOPED_TRACE("vkCreateInstance");
57     auto vkEnc = HostConnection::get()->vkEncoder();
58     VkResult vkCreateInstance_VkResult_return = (VkResult)0;
59     vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance);
60     return vkCreateInstance_VkResult_return;
61 }
entry_vkDestroyInstance(VkInstance instance,const VkAllocationCallbacks * pAllocator)62 static void entry_vkDestroyInstance(
63     VkInstance instance,
64     const VkAllocationCallbacks* pAllocator)
65 {
66     AEMU_SCOPED_TRACE("vkDestroyInstance");
67     auto vkEnc = HostConnection::get()->vkEncoder();
68     vkEnc->vkDestroyInstance(instance, pAllocator);
69 }
entry_vkEnumeratePhysicalDevices(VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)70 static VkResult entry_vkEnumeratePhysicalDevices(
71     VkInstance instance,
72     uint32_t* pPhysicalDeviceCount,
73     VkPhysicalDevice* pPhysicalDevices)
74 {
75     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
76     auto vkEnc = HostConnection::get()->vkEncoder();
77     VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
78     auto resources = ResourceTracker::get();
79     vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
80     return vkEnumeratePhysicalDevices_VkResult_return;
81 }
entry_vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)82 static void entry_vkGetPhysicalDeviceFeatures(
83     VkPhysicalDevice physicalDevice,
84     VkPhysicalDeviceFeatures* pFeatures)
85 {
86     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
87     auto vkEnc = HostConnection::get()->vkEncoder();
88     vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures);
89 }
entry_vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)90 static void entry_vkGetPhysicalDeviceFormatProperties(
91     VkPhysicalDevice physicalDevice,
92     VkFormat format,
93     VkFormatProperties* pFormatProperties)
94 {
95     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
96     auto vkEnc = HostConnection::get()->vkEncoder();
97     vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
98 }
entry_vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)99 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
100     VkPhysicalDevice physicalDevice,
101     VkFormat format,
102     VkImageType type,
103     VkImageTiling tiling,
104     VkImageUsageFlags usage,
105     VkImageCreateFlags flags,
106     VkImageFormatProperties* pImageFormatProperties)
107 {
108     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
109     auto vkEnc = HostConnection::get()->vkEncoder();
110     VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
111     vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
112     return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113 }
entry_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)114 static void entry_vkGetPhysicalDeviceProperties(
115     VkPhysicalDevice physicalDevice,
116     VkPhysicalDeviceProperties* pProperties)
117 {
118     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
119     auto vkEnc = HostConnection::get()->vkEncoder();
120     vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties);
121 }
entry_vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)122 static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123     VkPhysicalDevice physicalDevice,
124     uint32_t* pQueueFamilyPropertyCount,
125     VkQueueFamilyProperties* pQueueFamilyProperties)
126 {
127     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
128     auto vkEnc = HostConnection::get()->vkEncoder();
129     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
130 }
entry_vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)131 static void entry_vkGetPhysicalDeviceMemoryProperties(
132     VkPhysicalDevice physicalDevice,
133     VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134 {
135     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
136     auto vkEnc = HostConnection::get()->vkEncoder();
137     vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
138 }
entry_vkGetInstanceProcAddr(VkInstance instance,const char * pName)139 static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140     VkInstance instance,
141     const char* pName)
142 {
143     AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
144     auto vkEnc = HostConnection::get()->vkEncoder();
145     PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
146     vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName);
147     return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148 }
entry_vkGetDeviceProcAddr(VkDevice device,const char * pName)149 static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150     VkDevice device,
151     const char* pName)
152 {
153     AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
154     auto vkEnc = HostConnection::get()->vkEncoder();
155     PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
156     vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName);
157     return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158 }
entry_vkCreateDevice(VkPhysicalDevice physicalDevice,const VkDeviceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDevice * pDevice)159 static VkResult entry_vkCreateDevice(
160     VkPhysicalDevice physicalDevice,
161     const VkDeviceCreateInfo* pCreateInfo,
162     const VkAllocationCallbacks* pAllocator,
163     VkDevice* pDevice)
164 {
165     AEMU_SCOPED_TRACE("vkCreateDevice");
166     auto vkEnc = HostConnection::get()->vkEncoder();
167     VkResult vkCreateDevice_VkResult_return = (VkResult)0;
168     vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
169     return vkCreateDevice_VkResult_return;
170 }
entry_vkDestroyDevice(VkDevice device,const VkAllocationCallbacks * pAllocator)171 static void entry_vkDestroyDevice(
172     VkDevice device,
173     const VkAllocationCallbacks* pAllocator)
174 {
175     AEMU_SCOPED_TRACE("vkDestroyDevice");
176     auto vkEnc = HostConnection::get()->vkEncoder();
177     vkEnc->vkDestroyDevice(device, pAllocator);
178 }
entry_vkEnumerateInstanceExtensionProperties(const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)179 static VkResult entry_vkEnumerateInstanceExtensionProperties(
180     const char* pLayerName,
181     uint32_t* pPropertyCount,
182     VkExtensionProperties* pProperties)
183 {
184     AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
185     auto vkEnc = HostConnection::get()->vkEncoder();
186     VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
187     auto resources = ResourceTracker::get();
188     vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
189     return vkEnumerateInstanceExtensionProperties_VkResult_return;
190 }
entry_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)191 static VkResult entry_vkEnumerateDeviceExtensionProperties(
192     VkPhysicalDevice physicalDevice,
193     const char* pLayerName,
194     uint32_t* pPropertyCount,
195     VkExtensionProperties* pProperties)
196 {
197     AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
198     auto vkEnc = HostConnection::get()->vkEncoder();
199     VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
200     auto resources = ResourceTracker::get();
201     vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
202     return vkEnumerateDeviceExtensionProperties_VkResult_return;
203 }
entry_vkEnumerateInstanceLayerProperties(uint32_t * pPropertyCount,VkLayerProperties * pProperties)204 static VkResult entry_vkEnumerateInstanceLayerProperties(
205     uint32_t* pPropertyCount,
206     VkLayerProperties* pProperties)
207 {
208     AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
209     auto vkEnc = HostConnection::get()->vkEncoder();
210     VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
211     vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties);
212     return vkEnumerateInstanceLayerProperties_VkResult_return;
213 }
entry_vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkLayerProperties * pProperties)214 static VkResult entry_vkEnumerateDeviceLayerProperties(
215     VkPhysicalDevice physicalDevice,
216     uint32_t* pPropertyCount,
217     VkLayerProperties* pProperties)
218 {
219     AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
220     auto vkEnc = HostConnection::get()->vkEncoder();
221     VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
222     vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
223     return vkEnumerateDeviceLayerProperties_VkResult_return;
224 }
entry_vkGetDeviceQueue(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)225 static void entry_vkGetDeviceQueue(
226     VkDevice device,
227     uint32_t queueFamilyIndex,
228     uint32_t queueIndex,
229     VkQueue* pQueue)
230 {
231     AEMU_SCOPED_TRACE("vkGetDeviceQueue");
232     auto vkEnc = HostConnection::get()->vkEncoder();
233     vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
234 }
entry_vkQueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)235 static VkResult entry_vkQueueSubmit(
236     VkQueue queue,
237     uint32_t submitCount,
238     const VkSubmitInfo* pSubmits,
239     VkFence fence)
240 {
241     AEMU_SCOPED_TRACE("vkQueueSubmit");
242     auto vkEnc = HostConnection::get()->vkEncoder();
243     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
244     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
245     auto resources = ResourceTracker::get();
246     vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
247     return vkQueueSubmit_VkResult_return;
248 }
entry_vkQueueWaitIdle(VkQueue queue)249 static VkResult entry_vkQueueWaitIdle(
250     VkQueue queue)
251 {
252     AEMU_SCOPED_TRACE("vkQueueWaitIdle");
253     auto vkEnc = HostConnection::get()->vkEncoder();
254     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
255     VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
256     auto resources = ResourceTracker::get();
257     vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
258     return vkQueueWaitIdle_VkResult_return;
259 }
entry_vkDeviceWaitIdle(VkDevice device)260 static VkResult entry_vkDeviceWaitIdle(
261     VkDevice device)
262 {
263     AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
264     auto vkEnc = HostConnection::get()->vkEncoder();
265     VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
266     vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device);
267     return vkDeviceWaitIdle_VkResult_return;
268 }
entry_vkAllocateMemory(VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)269 static VkResult entry_vkAllocateMemory(
270     VkDevice device,
271     const VkMemoryAllocateInfo* pAllocateInfo,
272     const VkAllocationCallbacks* pAllocator,
273     VkDeviceMemory* pMemory)
274 {
275     AEMU_SCOPED_TRACE("vkAllocateMemory");
276     auto vkEnc = HostConnection::get()->vkEncoder();
277     VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
278     auto resources = ResourceTracker::get();
279     vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
280     return vkAllocateMemory_VkResult_return;
281 }
entry_vkFreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)282 static void entry_vkFreeMemory(
283     VkDevice device,
284     VkDeviceMemory memory,
285     const VkAllocationCallbacks* pAllocator)
286 {
287     AEMU_SCOPED_TRACE("vkFreeMemory");
288     auto vkEnc = HostConnection::get()->vkEncoder();
289     auto resources = ResourceTracker::get();
290     resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
291 }
entry_vkMapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)292 static VkResult entry_vkMapMemory(
293     VkDevice device,
294     VkDeviceMemory memory,
295     VkDeviceSize offset,
296     VkDeviceSize size,
297     VkMemoryMapFlags flags,
298     void** ppData)
299 {
300     AEMU_SCOPED_TRACE("vkMapMemory");
301     auto vkEnc = HostConnection::get()->vkEncoder();
302     VkResult vkMapMemory_VkResult_return = (VkResult)0;
303     vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData);
304     return vkMapMemory_VkResult_return;
305 }
entry_vkUnmapMemory(VkDevice device,VkDeviceMemory memory)306 static void entry_vkUnmapMemory(
307     VkDevice device,
308     VkDeviceMemory memory)
309 {
310     AEMU_SCOPED_TRACE("vkUnmapMemory");
311     auto vkEnc = HostConnection::get()->vkEncoder();
312     vkEnc->vkUnmapMemory(device, memory);
313 }
entry_vkFlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)314 static VkResult entry_vkFlushMappedMemoryRanges(
315     VkDevice device,
316     uint32_t memoryRangeCount,
317     const VkMappedMemoryRange* pMemoryRanges)
318 {
319     AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
320     auto vkEnc = HostConnection::get()->vkEncoder();
321     VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
322     vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
323     return vkFlushMappedMemoryRanges_VkResult_return;
324 }
entry_vkInvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)325 static VkResult entry_vkInvalidateMappedMemoryRanges(
326     VkDevice device,
327     uint32_t memoryRangeCount,
328     const VkMappedMemoryRange* pMemoryRanges)
329 {
330     AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
331     auto vkEnc = HostConnection::get()->vkEncoder();
332     VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
333     vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
334     return vkInvalidateMappedMemoryRanges_VkResult_return;
335 }
entry_vkGetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)336 static void entry_vkGetDeviceMemoryCommitment(
337     VkDevice device,
338     VkDeviceMemory memory,
339     VkDeviceSize* pCommittedMemoryInBytes)
340 {
341     AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
342     auto vkEnc = HostConnection::get()->vkEncoder();
343     vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
344 }
entry_vkBindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)345 static VkResult entry_vkBindBufferMemory(
346     VkDevice device,
347     VkBuffer buffer,
348     VkDeviceMemory memory,
349     VkDeviceSize memoryOffset)
350 {
351     AEMU_SCOPED_TRACE("vkBindBufferMemory");
352     auto vkEnc = HostConnection::get()->vkEncoder();
353     VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
354     auto resources = ResourceTracker::get();
355     vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
356     return vkBindBufferMemory_VkResult_return;
357 }
entry_vkBindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)358 static VkResult entry_vkBindImageMemory(
359     VkDevice device,
360     VkImage image,
361     VkDeviceMemory memory,
362     VkDeviceSize memoryOffset)
363 {
364     AEMU_SCOPED_TRACE("vkBindImageMemory");
365     auto vkEnc = HostConnection::get()->vkEncoder();
366     VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
367     auto resources = ResourceTracker::get();
368     vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
369     return vkBindImageMemory_VkResult_return;
370 }
entry_vkGetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)371 static void entry_vkGetBufferMemoryRequirements(
372     VkDevice device,
373     VkBuffer buffer,
374     VkMemoryRequirements* pMemoryRequirements)
375 {
376     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
377     auto vkEnc = HostConnection::get()->vkEncoder();
378     auto resources = ResourceTracker::get();
379     resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
380 }
entry_vkGetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)381 static void entry_vkGetImageMemoryRequirements(
382     VkDevice device,
383     VkImage image,
384     VkMemoryRequirements* pMemoryRequirements)
385 {
386     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
387     auto vkEnc = HostConnection::get()->vkEncoder();
388     auto resources = ResourceTracker::get();
389     resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
390 }
entry_vkGetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)391 static void entry_vkGetImageSparseMemoryRequirements(
392     VkDevice device,
393     VkImage image,
394     uint32_t* pSparseMemoryRequirementCount,
395     VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
396 {
397     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
398     auto vkEnc = HostConnection::get()->vkEncoder();
399     vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
400 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)401 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
402     VkPhysicalDevice physicalDevice,
403     VkFormat format,
404     VkImageType type,
405     VkSampleCountFlagBits samples,
406     VkImageUsageFlags usage,
407     VkImageTiling tiling,
408     uint32_t* pPropertyCount,
409     VkSparseImageFormatProperties* pProperties)
410 {
411     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
412     auto vkEnc = HostConnection::get()->vkEncoder();
413     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
414 }
entry_vkQueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)415 static VkResult entry_vkQueueBindSparse(
416     VkQueue queue,
417     uint32_t bindInfoCount,
418     const VkBindSparseInfo* pBindInfo,
419     VkFence fence)
420 {
421     AEMU_SCOPED_TRACE("vkQueueBindSparse");
422     auto vkEnc = HostConnection::get()->vkEncoder();
423     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
424     VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
425     vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
426     return vkQueueBindSparse_VkResult_return;
427 }
entry_vkCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)428 static VkResult entry_vkCreateFence(
429     VkDevice device,
430     const VkFenceCreateInfo* pCreateInfo,
431     const VkAllocationCallbacks* pAllocator,
432     VkFence* pFence)
433 {
434     AEMU_SCOPED_TRACE("vkCreateFence");
435     auto vkEnc = HostConnection::get()->vkEncoder();
436     VkResult vkCreateFence_VkResult_return = (VkResult)0;
437     auto resources = ResourceTracker::get();
438     vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
439     return vkCreateFence_VkResult_return;
440 }
entry_vkDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)441 static void entry_vkDestroyFence(
442     VkDevice device,
443     VkFence fence,
444     const VkAllocationCallbacks* pAllocator)
445 {
446     AEMU_SCOPED_TRACE("vkDestroyFence");
447     auto vkEnc = HostConnection::get()->vkEncoder();
448     vkEnc->vkDestroyFence(device, fence, pAllocator);
449 }
entry_vkResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)450 static VkResult entry_vkResetFences(
451     VkDevice device,
452     uint32_t fenceCount,
453     const VkFence* pFences)
454 {
455     AEMU_SCOPED_TRACE("vkResetFences");
456     auto vkEnc = HostConnection::get()->vkEncoder();
457     VkResult vkResetFences_VkResult_return = (VkResult)0;
458     auto resources = ResourceTracker::get();
459     vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
460     return vkResetFences_VkResult_return;
461 }
entry_vkGetFenceStatus(VkDevice device,VkFence fence)462 static VkResult entry_vkGetFenceStatus(
463     VkDevice device,
464     VkFence fence)
465 {
466     AEMU_SCOPED_TRACE("vkGetFenceStatus");
467     auto vkEnc = HostConnection::get()->vkEncoder();
468     VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
469     vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence);
470     return vkGetFenceStatus_VkResult_return;
471 }
entry_vkWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)472 static VkResult entry_vkWaitForFences(
473     VkDevice device,
474     uint32_t fenceCount,
475     const VkFence* pFences,
476     VkBool32 waitAll,
477     uint64_t timeout)
478 {
479     AEMU_SCOPED_TRACE("vkWaitForFences");
480     auto vkEnc = HostConnection::get()->vkEncoder();
481     VkResult vkWaitForFences_VkResult_return = (VkResult)0;
482     auto resources = ResourceTracker::get();
483     vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
484     return vkWaitForFences_VkResult_return;
485 }
entry_vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)486 static VkResult entry_vkCreateSemaphore(
487     VkDevice device,
488     const VkSemaphoreCreateInfo* pCreateInfo,
489     const VkAllocationCallbacks* pAllocator,
490     VkSemaphore* pSemaphore)
491 {
492     AEMU_SCOPED_TRACE("vkCreateSemaphore");
493     auto vkEnc = HostConnection::get()->vkEncoder();
494     VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
495     auto resources = ResourceTracker::get();
496     vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
497     return vkCreateSemaphore_VkResult_return;
498 }
entry_vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)499 static void entry_vkDestroySemaphore(
500     VkDevice device,
501     VkSemaphore semaphore,
502     const VkAllocationCallbacks* pAllocator)
503 {
504     AEMU_SCOPED_TRACE("vkDestroySemaphore");
505     auto vkEnc = HostConnection::get()->vkEncoder();
506     auto resources = ResourceTracker::get();
507     resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
508 }
entry_vkCreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)509 static VkResult entry_vkCreateEvent(
510     VkDevice device,
511     const VkEventCreateInfo* pCreateInfo,
512     const VkAllocationCallbacks* pAllocator,
513     VkEvent* pEvent)
514 {
515     AEMU_SCOPED_TRACE("vkCreateEvent");
516     auto vkEnc = HostConnection::get()->vkEncoder();
517     VkResult vkCreateEvent_VkResult_return = (VkResult)0;
518     vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent);
519     return vkCreateEvent_VkResult_return;
520 }
entry_vkDestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)521 static void entry_vkDestroyEvent(
522     VkDevice device,
523     VkEvent event,
524     const VkAllocationCallbacks* pAllocator)
525 {
526     AEMU_SCOPED_TRACE("vkDestroyEvent");
527     auto vkEnc = HostConnection::get()->vkEncoder();
528     vkEnc->vkDestroyEvent(device, event, pAllocator);
529 }
entry_vkGetEventStatus(VkDevice device,VkEvent event)530 static VkResult entry_vkGetEventStatus(
531     VkDevice device,
532     VkEvent event)
533 {
534     AEMU_SCOPED_TRACE("vkGetEventStatus");
535     auto vkEnc = HostConnection::get()->vkEncoder();
536     VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
537     vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event);
538     return vkGetEventStatus_VkResult_return;
539 }
entry_vkSetEvent(VkDevice device,VkEvent event)540 static VkResult entry_vkSetEvent(
541     VkDevice device,
542     VkEvent event)
543 {
544     AEMU_SCOPED_TRACE("vkSetEvent");
545     auto vkEnc = HostConnection::get()->vkEncoder();
546     VkResult vkSetEvent_VkResult_return = (VkResult)0;
547     vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event);
548     return vkSetEvent_VkResult_return;
549 }
entry_vkResetEvent(VkDevice device,VkEvent event)550 static VkResult entry_vkResetEvent(
551     VkDevice device,
552     VkEvent event)
553 {
554     AEMU_SCOPED_TRACE("vkResetEvent");
555     auto vkEnc = HostConnection::get()->vkEncoder();
556     VkResult vkResetEvent_VkResult_return = (VkResult)0;
557     vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event);
558     return vkResetEvent_VkResult_return;
559 }
entry_vkCreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)560 static VkResult entry_vkCreateQueryPool(
561     VkDevice device,
562     const VkQueryPoolCreateInfo* pCreateInfo,
563     const VkAllocationCallbacks* pAllocator,
564     VkQueryPool* pQueryPool)
565 {
566     AEMU_SCOPED_TRACE("vkCreateQueryPool");
567     auto vkEnc = HostConnection::get()->vkEncoder();
568     VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
569     vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
570     return vkCreateQueryPool_VkResult_return;
571 }
entry_vkDestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)572 static void entry_vkDestroyQueryPool(
573     VkDevice device,
574     VkQueryPool queryPool,
575     const VkAllocationCallbacks* pAllocator)
576 {
577     AEMU_SCOPED_TRACE("vkDestroyQueryPool");
578     auto vkEnc = HostConnection::get()->vkEncoder();
579     vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator);
580 }
entry_vkGetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)581 static VkResult entry_vkGetQueryPoolResults(
582     VkDevice device,
583     VkQueryPool queryPool,
584     uint32_t firstQuery,
585     uint32_t queryCount,
586     size_t dataSize,
587     void* pData,
588     VkDeviceSize stride,
589     VkQueryResultFlags flags)
590 {
591     AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
592     auto vkEnc = HostConnection::get()->vkEncoder();
593     VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
594     vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
595     return vkGetQueryPoolResults_VkResult_return;
596 }
entry_vkCreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)597 static VkResult entry_vkCreateBuffer(
598     VkDevice device,
599     const VkBufferCreateInfo* pCreateInfo,
600     const VkAllocationCallbacks* pAllocator,
601     VkBuffer* pBuffer)
602 {
603     AEMU_SCOPED_TRACE("vkCreateBuffer");
604     auto vkEnc = HostConnection::get()->vkEncoder();
605     VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
606     auto resources = ResourceTracker::get();
607     vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
608     return vkCreateBuffer_VkResult_return;
609 }
entry_vkDestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)610 static void entry_vkDestroyBuffer(
611     VkDevice device,
612     VkBuffer buffer,
613     const VkAllocationCallbacks* pAllocator)
614 {
615     AEMU_SCOPED_TRACE("vkDestroyBuffer");
616     auto vkEnc = HostConnection::get()->vkEncoder();
617     auto resources = ResourceTracker::get();
618     resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
619 }
entry_vkCreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)620 static VkResult entry_vkCreateBufferView(
621     VkDevice device,
622     const VkBufferViewCreateInfo* pCreateInfo,
623     const VkAllocationCallbacks* pAllocator,
624     VkBufferView* pView)
625 {
626     AEMU_SCOPED_TRACE("vkCreateBufferView");
627     auto vkEnc = HostConnection::get()->vkEncoder();
628     VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
629     vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView);
630     return vkCreateBufferView_VkResult_return;
631 }
entry_vkDestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)632 static void entry_vkDestroyBufferView(
633     VkDevice device,
634     VkBufferView bufferView,
635     const VkAllocationCallbacks* pAllocator)
636 {
637     AEMU_SCOPED_TRACE("vkDestroyBufferView");
638     auto vkEnc = HostConnection::get()->vkEncoder();
639     vkEnc->vkDestroyBufferView(device, bufferView, pAllocator);
640 }
entry_vkCreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)641 static VkResult entry_vkCreateImage(
642     VkDevice device,
643     const VkImageCreateInfo* pCreateInfo,
644     const VkAllocationCallbacks* pAllocator,
645     VkImage* pImage)
646 {
647     AEMU_SCOPED_TRACE("vkCreateImage");
648     auto vkEnc = HostConnection::get()->vkEncoder();
649     VkResult vkCreateImage_VkResult_return = (VkResult)0;
650     auto resources = ResourceTracker::get();
651     vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
652     return vkCreateImage_VkResult_return;
653 }
entry_vkDestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)654 static void entry_vkDestroyImage(
655     VkDevice device,
656     VkImage image,
657     const VkAllocationCallbacks* pAllocator)
658 {
659     AEMU_SCOPED_TRACE("vkDestroyImage");
660     auto vkEnc = HostConnection::get()->vkEncoder();
661     auto resources = ResourceTracker::get();
662     resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
663 }
entry_vkGetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)664 static void entry_vkGetImageSubresourceLayout(
665     VkDevice device,
666     VkImage image,
667     const VkImageSubresource* pSubresource,
668     VkSubresourceLayout* pLayout)
669 {
670     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
671     auto vkEnc = HostConnection::get()->vkEncoder();
672     vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout);
673 }
entry_vkCreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)674 static VkResult entry_vkCreateImageView(
675     VkDevice device,
676     const VkImageViewCreateInfo* pCreateInfo,
677     const VkAllocationCallbacks* pAllocator,
678     VkImageView* pView)
679 {
680     AEMU_SCOPED_TRACE("vkCreateImageView");
681     auto vkEnc = HostConnection::get()->vkEncoder();
682     VkResult vkCreateImageView_VkResult_return = (VkResult)0;
683     auto resources = ResourceTracker::get();
684     vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
685     return vkCreateImageView_VkResult_return;
686 }
entry_vkDestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)687 static void entry_vkDestroyImageView(
688     VkDevice device,
689     VkImageView imageView,
690     const VkAllocationCallbacks* pAllocator)
691 {
692     AEMU_SCOPED_TRACE("vkDestroyImageView");
693     auto vkEnc = HostConnection::get()->vkEncoder();
694     vkEnc->vkDestroyImageView(device, imageView, pAllocator);
695 }
entry_vkCreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)696 static VkResult entry_vkCreateShaderModule(
697     VkDevice device,
698     const VkShaderModuleCreateInfo* pCreateInfo,
699     const VkAllocationCallbacks* pAllocator,
700     VkShaderModule* pShaderModule)
701 {
702     AEMU_SCOPED_TRACE("vkCreateShaderModule");
703     auto vkEnc = HostConnection::get()->vkEncoder();
704     VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
705     vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
706     return vkCreateShaderModule_VkResult_return;
707 }
entry_vkDestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)708 static void entry_vkDestroyShaderModule(
709     VkDevice device,
710     VkShaderModule shaderModule,
711     const VkAllocationCallbacks* pAllocator)
712 {
713     AEMU_SCOPED_TRACE("vkDestroyShaderModule");
714     auto vkEnc = HostConnection::get()->vkEncoder();
715     vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator);
716 }
entry_vkCreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)717 static VkResult entry_vkCreatePipelineCache(
718     VkDevice device,
719     const VkPipelineCacheCreateInfo* pCreateInfo,
720     const VkAllocationCallbacks* pAllocator,
721     VkPipelineCache* pPipelineCache)
722 {
723     AEMU_SCOPED_TRACE("vkCreatePipelineCache");
724     auto vkEnc = HostConnection::get()->vkEncoder();
725     VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
726     vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
727     return vkCreatePipelineCache_VkResult_return;
728 }
entry_vkDestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)729 static void entry_vkDestroyPipelineCache(
730     VkDevice device,
731     VkPipelineCache pipelineCache,
732     const VkAllocationCallbacks* pAllocator)
733 {
734     AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
735     auto vkEnc = HostConnection::get()->vkEncoder();
736     vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator);
737 }
entry_vkGetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)738 static VkResult entry_vkGetPipelineCacheData(
739     VkDevice device,
740     VkPipelineCache pipelineCache,
741     size_t* pDataSize,
742     void* pData)
743 {
744     AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
745     auto vkEnc = HostConnection::get()->vkEncoder();
746     VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
747     vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData);
748     return vkGetPipelineCacheData_VkResult_return;
749 }
entry_vkMergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)750 static VkResult entry_vkMergePipelineCaches(
751     VkDevice device,
752     VkPipelineCache dstCache,
753     uint32_t srcCacheCount,
754     const VkPipelineCache* pSrcCaches)
755 {
756     AEMU_SCOPED_TRACE("vkMergePipelineCaches");
757     auto vkEnc = HostConnection::get()->vkEncoder();
758     VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
759     vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
760     return vkMergePipelineCaches_VkResult_return;
761 }
entry_vkCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)762 static VkResult entry_vkCreateGraphicsPipelines(
763     VkDevice device,
764     VkPipelineCache pipelineCache,
765     uint32_t createInfoCount,
766     const VkGraphicsPipelineCreateInfo* pCreateInfos,
767     const VkAllocationCallbacks* pAllocator,
768     VkPipeline* pPipelines)
769 {
770     AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
771     auto vkEnc = HostConnection::get()->vkEncoder();
772     VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
773     vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
774     return vkCreateGraphicsPipelines_VkResult_return;
775 }
entry_vkCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)776 static VkResult entry_vkCreateComputePipelines(
777     VkDevice device,
778     VkPipelineCache pipelineCache,
779     uint32_t createInfoCount,
780     const VkComputePipelineCreateInfo* pCreateInfos,
781     const VkAllocationCallbacks* pAllocator,
782     VkPipeline* pPipelines)
783 {
784     AEMU_SCOPED_TRACE("vkCreateComputePipelines");
785     auto vkEnc = HostConnection::get()->vkEncoder();
786     VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
787     vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
788     return vkCreateComputePipelines_VkResult_return;
789 }
entry_vkDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)790 static void entry_vkDestroyPipeline(
791     VkDevice device,
792     VkPipeline pipeline,
793     const VkAllocationCallbacks* pAllocator)
794 {
795     AEMU_SCOPED_TRACE("vkDestroyPipeline");
796     auto vkEnc = HostConnection::get()->vkEncoder();
797     vkEnc->vkDestroyPipeline(device, pipeline, pAllocator);
798 }
entry_vkCreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)799 static VkResult entry_vkCreatePipelineLayout(
800     VkDevice device,
801     const VkPipelineLayoutCreateInfo* pCreateInfo,
802     const VkAllocationCallbacks* pAllocator,
803     VkPipelineLayout* pPipelineLayout)
804 {
805     AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
806     auto vkEnc = HostConnection::get()->vkEncoder();
807     VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
808     vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
809     return vkCreatePipelineLayout_VkResult_return;
810 }
entry_vkDestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)811 static void entry_vkDestroyPipelineLayout(
812     VkDevice device,
813     VkPipelineLayout pipelineLayout,
814     const VkAllocationCallbacks* pAllocator)
815 {
816     AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
817     auto vkEnc = HostConnection::get()->vkEncoder();
818     vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator);
819 }
entry_vkCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)820 static VkResult entry_vkCreateSampler(
821     VkDevice device,
822     const VkSamplerCreateInfo* pCreateInfo,
823     const VkAllocationCallbacks* pAllocator,
824     VkSampler* pSampler)
825 {
826     AEMU_SCOPED_TRACE("vkCreateSampler");
827     auto vkEnc = HostConnection::get()->vkEncoder();
828     VkResult vkCreateSampler_VkResult_return = (VkResult)0;
829     auto resources = ResourceTracker::get();
830     vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
831     return vkCreateSampler_VkResult_return;
832 }
entry_vkDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)833 static void entry_vkDestroySampler(
834     VkDevice device,
835     VkSampler sampler,
836     const VkAllocationCallbacks* pAllocator)
837 {
838     AEMU_SCOPED_TRACE("vkDestroySampler");
839     auto vkEnc = HostConnection::get()->vkEncoder();
840     vkEnc->vkDestroySampler(device, sampler, pAllocator);
841 }
entry_vkCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)842 static VkResult entry_vkCreateDescriptorSetLayout(
843     VkDevice device,
844     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
845     const VkAllocationCallbacks* pAllocator,
846     VkDescriptorSetLayout* pSetLayout)
847 {
848     AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
849     auto vkEnc = HostConnection::get()->vkEncoder();
850     VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
851     auto resources = ResourceTracker::get();
852     vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
853     return vkCreateDescriptorSetLayout_VkResult_return;
854 }
entry_vkDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)855 static void entry_vkDestroyDescriptorSetLayout(
856     VkDevice device,
857     VkDescriptorSetLayout descriptorSetLayout,
858     const VkAllocationCallbacks* pAllocator)
859 {
860     AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
861     auto vkEnc = HostConnection::get()->vkEncoder();
862     vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
863 }
entry_vkCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)864 static VkResult entry_vkCreateDescriptorPool(
865     VkDevice device,
866     const VkDescriptorPoolCreateInfo* pCreateInfo,
867     const VkAllocationCallbacks* pAllocator,
868     VkDescriptorPool* pDescriptorPool)
869 {
870     AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
871     auto vkEnc = HostConnection::get()->vkEncoder();
872     VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
873     auto resources = ResourceTracker::get();
874     vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
875     return vkCreateDescriptorPool_VkResult_return;
876 }
entry_vkDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)877 static void entry_vkDestroyDescriptorPool(
878     VkDevice device,
879     VkDescriptorPool descriptorPool,
880     const VkAllocationCallbacks* pAllocator)
881 {
882     AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
883     auto vkEnc = HostConnection::get()->vkEncoder();
884     auto resources = ResourceTracker::get();
885     resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
886 }
entry_vkResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)887 static VkResult entry_vkResetDescriptorPool(
888     VkDevice device,
889     VkDescriptorPool descriptorPool,
890     VkDescriptorPoolResetFlags flags)
891 {
892     AEMU_SCOPED_TRACE("vkResetDescriptorPool");
893     auto vkEnc = HostConnection::get()->vkEncoder();
894     VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
895     auto resources = ResourceTracker::get();
896     vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
897     return vkResetDescriptorPool_VkResult_return;
898 }
entry_vkAllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)899 static VkResult entry_vkAllocateDescriptorSets(
900     VkDevice device,
901     const VkDescriptorSetAllocateInfo* pAllocateInfo,
902     VkDescriptorSet* pDescriptorSets)
903 {
904     AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
905     auto vkEnc = HostConnection::get()->vkEncoder();
906     VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
907     auto resources = ResourceTracker::get();
908     vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
909     return vkAllocateDescriptorSets_VkResult_return;
910 }
entry_vkFreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)911 static VkResult entry_vkFreeDescriptorSets(
912     VkDevice device,
913     VkDescriptorPool descriptorPool,
914     uint32_t descriptorSetCount,
915     const VkDescriptorSet* pDescriptorSets)
916 {
917     AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
918     auto vkEnc = HostConnection::get()->vkEncoder();
919     VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
920     auto resources = ResourceTracker::get();
921     vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
922     return vkFreeDescriptorSets_VkResult_return;
923 }
entry_vkUpdateDescriptorSets(VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)924 static void entry_vkUpdateDescriptorSets(
925     VkDevice device,
926     uint32_t descriptorWriteCount,
927     const VkWriteDescriptorSet* pDescriptorWrites,
928     uint32_t descriptorCopyCount,
929     const VkCopyDescriptorSet* pDescriptorCopies)
930 {
931     AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
932     auto vkEnc = HostConnection::get()->vkEncoder();
933     auto resources = ResourceTracker::get();
934     resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
935 }
entry_vkCreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)936 static VkResult entry_vkCreateFramebuffer(
937     VkDevice device,
938     const VkFramebufferCreateInfo* pCreateInfo,
939     const VkAllocationCallbacks* pAllocator,
940     VkFramebuffer* pFramebuffer)
941 {
942     AEMU_SCOPED_TRACE("vkCreateFramebuffer");
943     auto vkEnc = HostConnection::get()->vkEncoder();
944     VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
945     vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
946     return vkCreateFramebuffer_VkResult_return;
947 }
entry_vkDestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)948 static void entry_vkDestroyFramebuffer(
949     VkDevice device,
950     VkFramebuffer framebuffer,
951     const VkAllocationCallbacks* pAllocator)
952 {
953     AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
954     auto vkEnc = HostConnection::get()->vkEncoder();
955     vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator);
956 }
entry_vkCreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)957 static VkResult entry_vkCreateRenderPass(
958     VkDevice device,
959     const VkRenderPassCreateInfo* pCreateInfo,
960     const VkAllocationCallbacks* pAllocator,
961     VkRenderPass* pRenderPass)
962 {
963     AEMU_SCOPED_TRACE("vkCreateRenderPass");
964     auto vkEnc = HostConnection::get()->vkEncoder();
965     VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
966     vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
967     return vkCreateRenderPass_VkResult_return;
968 }
entry_vkDestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)969 static void entry_vkDestroyRenderPass(
970     VkDevice device,
971     VkRenderPass renderPass,
972     const VkAllocationCallbacks* pAllocator)
973 {
974     AEMU_SCOPED_TRACE("vkDestroyRenderPass");
975     auto vkEnc = HostConnection::get()->vkEncoder();
976     vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator);
977 }
entry_vkGetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)978 static void entry_vkGetRenderAreaGranularity(
979     VkDevice device,
980     VkRenderPass renderPass,
981     VkExtent2D* pGranularity)
982 {
983     AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
984     auto vkEnc = HostConnection::get()->vkEncoder();
985     vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity);
986 }
entry_vkCreateCommandPool(VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)987 static VkResult entry_vkCreateCommandPool(
988     VkDevice device,
989     const VkCommandPoolCreateInfo* pCreateInfo,
990     const VkAllocationCallbacks* pAllocator,
991     VkCommandPool* pCommandPool)
992 {
993     AEMU_SCOPED_TRACE("vkCreateCommandPool");
994     auto vkEnc = HostConnection::get()->vkEncoder();
995     VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
996     vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
997     return vkCreateCommandPool_VkResult_return;
998 }
entry_vkDestroyCommandPool(VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)999 static void entry_vkDestroyCommandPool(
1000     VkDevice device,
1001     VkCommandPool commandPool,
1002     const VkAllocationCallbacks* pAllocator)
1003 {
1004     AEMU_SCOPED_TRACE("vkDestroyCommandPool");
1005     auto vkEnc = HostConnection::get()->vkEncoder();
1006     vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator);
1007 }
entry_vkResetCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)1008 static VkResult entry_vkResetCommandPool(
1009     VkDevice device,
1010     VkCommandPool commandPool,
1011     VkCommandPoolResetFlags flags)
1012 {
1013     AEMU_SCOPED_TRACE("vkResetCommandPool");
1014     auto vkEnc = HostConnection::get()->vkEncoder();
1015     VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
1016     vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags);
1017     return vkResetCommandPool_VkResult_return;
1018 }
entry_vkAllocateCommandBuffers(VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)1019 static VkResult entry_vkAllocateCommandBuffers(
1020     VkDevice device,
1021     const VkCommandBufferAllocateInfo* pAllocateInfo,
1022     VkCommandBuffer* pCommandBuffers)
1023 {
1024     AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
1025     auto vkEnc = HostConnection::get()->vkEncoder();
1026     VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1027     vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
1028     return vkAllocateCommandBuffers_VkResult_return;
1029 }
entry_vkFreeCommandBuffers(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1030 static void entry_vkFreeCommandBuffers(
1031     VkDevice device,
1032     VkCommandPool commandPool,
1033     uint32_t commandBufferCount,
1034     const VkCommandBuffer* pCommandBuffers)
1035 {
1036     AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
1037     auto vkEnc = HostConnection::get()->vkEncoder();
1038     vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
1039 }
entry_vkBeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)1040 static VkResult entry_vkBeginCommandBuffer(
1041     VkCommandBuffer commandBuffer,
1042     const VkCommandBufferBeginInfo* pBeginInfo)
1043 {
1044     AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
1045     auto vkEnc = HostConnection::get()->vkEncoder();
1046     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1047     VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
1048     auto resources = ResourceTracker::get();
1049     vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
1050     return vkBeginCommandBuffer_VkResult_return;
1051 }
entry_vkEndCommandBuffer(VkCommandBuffer commandBuffer)1052 static VkResult entry_vkEndCommandBuffer(
1053     VkCommandBuffer commandBuffer)
1054 {
1055     AEMU_SCOPED_TRACE("vkEndCommandBuffer");
1056     auto vkEnc = HostConnection::get()->vkEncoder();
1057     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1058     VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
1059     auto resources = ResourceTracker::get();
1060     vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
1061     return vkEndCommandBuffer_VkResult_return;
1062 }
entry_vkResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)1063 static VkResult entry_vkResetCommandBuffer(
1064     VkCommandBuffer commandBuffer,
1065     VkCommandBufferResetFlags flags)
1066 {
1067     AEMU_SCOPED_TRACE("vkResetCommandBuffer");
1068     auto vkEnc = HostConnection::get()->vkEncoder();
1069     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1070     VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
1071     auto resources = ResourceTracker::get();
1072     vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
1073     return vkResetCommandBuffer_VkResult_return;
1074 }
entry_vkCmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)1075 static void entry_vkCmdBindPipeline(
1076     VkCommandBuffer commandBuffer,
1077     VkPipelineBindPoint pipelineBindPoint,
1078     VkPipeline pipeline)
1079 {
1080     AEMU_SCOPED_TRACE("vkCmdBindPipeline");
1081     auto vkEnc = HostConnection::get()->vkEncoder();
1082     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1083     vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
1084 }
entry_vkCmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)1085 static void entry_vkCmdSetViewport(
1086     VkCommandBuffer commandBuffer,
1087     uint32_t firstViewport,
1088     uint32_t viewportCount,
1089     const VkViewport* pViewports)
1090 {
1091     AEMU_SCOPED_TRACE("vkCmdSetViewport");
1092     auto vkEnc = HostConnection::get()->vkEncoder();
1093     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1094     vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
1095 }
entry_vkCmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)1096 static void entry_vkCmdSetScissor(
1097     VkCommandBuffer commandBuffer,
1098     uint32_t firstScissor,
1099     uint32_t scissorCount,
1100     const VkRect2D* pScissors)
1101 {
1102     AEMU_SCOPED_TRACE("vkCmdSetScissor");
1103     auto vkEnc = HostConnection::get()->vkEncoder();
1104     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1105     vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
1106 }
entry_vkCmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)1107 static void entry_vkCmdSetLineWidth(
1108     VkCommandBuffer commandBuffer,
1109     float lineWidth)
1110 {
1111     AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
1112     auto vkEnc = HostConnection::get()->vkEncoder();
1113     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1114     vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth);
1115 }
entry_vkCmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)1116 static void entry_vkCmdSetDepthBias(
1117     VkCommandBuffer commandBuffer,
1118     float depthBiasConstantFactor,
1119     float depthBiasClamp,
1120     float depthBiasSlopeFactor)
1121 {
1122     AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
1123     auto vkEnc = HostConnection::get()->vkEncoder();
1124     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1125     vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1126 }
entry_vkCmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])1127 static void entry_vkCmdSetBlendConstants(
1128     VkCommandBuffer commandBuffer,
1129     const float blendConstants[4])
1130 {
1131     AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
1132     auto vkEnc = HostConnection::get()->vkEncoder();
1133     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1134     vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants);
1135 }
entry_vkCmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)1136 static void entry_vkCmdSetDepthBounds(
1137     VkCommandBuffer commandBuffer,
1138     float minDepthBounds,
1139     float maxDepthBounds)
1140 {
1141     AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
1142     auto vkEnc = HostConnection::get()->vkEncoder();
1143     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1144     vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1145 }
entry_vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)1146 static void entry_vkCmdSetStencilCompareMask(
1147     VkCommandBuffer commandBuffer,
1148     VkStencilFaceFlags faceMask,
1149     uint32_t compareMask)
1150 {
1151     AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
1152     auto vkEnc = HostConnection::get()->vkEncoder();
1153     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1154     vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1155 }
entry_vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)1156 static void entry_vkCmdSetStencilWriteMask(
1157     VkCommandBuffer commandBuffer,
1158     VkStencilFaceFlags faceMask,
1159     uint32_t writeMask)
1160 {
1161     AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
1162     auto vkEnc = HostConnection::get()->vkEncoder();
1163     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1164     vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1165 }
entry_vkCmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)1166 static void entry_vkCmdSetStencilReference(
1167     VkCommandBuffer commandBuffer,
1168     VkStencilFaceFlags faceMask,
1169     uint32_t reference)
1170 {
1171     AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
1172     auto vkEnc = HostConnection::get()->vkEncoder();
1173     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1174     vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference);
1175 }
entry_vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)1176 static void entry_vkCmdBindDescriptorSets(
1177     VkCommandBuffer commandBuffer,
1178     VkPipelineBindPoint pipelineBindPoint,
1179     VkPipelineLayout layout,
1180     uint32_t firstSet,
1181     uint32_t descriptorSetCount,
1182     const VkDescriptorSet* pDescriptorSets,
1183     uint32_t dynamicOffsetCount,
1184     const uint32_t* pDynamicOffsets)
1185 {
1186     AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
1187     auto vkEnc = HostConnection::get()->vkEncoder();
1188     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1189     vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1190 }
entry_vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)1191 static void entry_vkCmdBindIndexBuffer(
1192     VkCommandBuffer commandBuffer,
1193     VkBuffer buffer,
1194     VkDeviceSize offset,
1195     VkIndexType indexType)
1196 {
1197     AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
1198     auto vkEnc = HostConnection::get()->vkEncoder();
1199     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1200     vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1201 }
entry_vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)1202 static void entry_vkCmdBindVertexBuffers(
1203     VkCommandBuffer commandBuffer,
1204     uint32_t firstBinding,
1205     uint32_t bindingCount,
1206     const VkBuffer* pBuffers,
1207     const VkDeviceSize* pOffsets)
1208 {
1209     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
1210     auto vkEnc = HostConnection::get()->vkEncoder();
1211     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1212     vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1213 }
entry_vkCmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)1214 static void entry_vkCmdDraw(
1215     VkCommandBuffer commandBuffer,
1216     uint32_t vertexCount,
1217     uint32_t instanceCount,
1218     uint32_t firstVertex,
1219     uint32_t firstInstance)
1220 {
1221     AEMU_SCOPED_TRACE("vkCmdDraw");
1222     auto vkEnc = HostConnection::get()->vkEncoder();
1223     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1224     vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1225 }
entry_vkCmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)1226 static void entry_vkCmdDrawIndexed(
1227     VkCommandBuffer commandBuffer,
1228     uint32_t indexCount,
1229     uint32_t instanceCount,
1230     uint32_t firstIndex,
1231     int32_t vertexOffset,
1232     uint32_t firstInstance)
1233 {
1234     AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
1235     auto vkEnc = HostConnection::get()->vkEncoder();
1236     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1237     vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1238 }
entry_vkCmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1239 static void entry_vkCmdDrawIndirect(
1240     VkCommandBuffer commandBuffer,
1241     VkBuffer buffer,
1242     VkDeviceSize offset,
1243     uint32_t drawCount,
1244     uint32_t stride)
1245 {
1246     AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
1247     auto vkEnc = HostConnection::get()->vkEncoder();
1248     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1249     vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1250 }
entry_vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1251 static void entry_vkCmdDrawIndexedIndirect(
1252     VkCommandBuffer commandBuffer,
1253     VkBuffer buffer,
1254     VkDeviceSize offset,
1255     uint32_t drawCount,
1256     uint32_t stride)
1257 {
1258     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
1259     auto vkEnc = HostConnection::get()->vkEncoder();
1260     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1261     vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1262 }
entry_vkCmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1263 static void entry_vkCmdDispatch(
1264     VkCommandBuffer commandBuffer,
1265     uint32_t groupCountX,
1266     uint32_t groupCountY,
1267     uint32_t groupCountZ)
1268 {
1269     AEMU_SCOPED_TRACE("vkCmdDispatch");
1270     auto vkEnc = HostConnection::get()->vkEncoder();
1271     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1272     vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
1273 }
entry_vkCmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)1274 static void entry_vkCmdDispatchIndirect(
1275     VkCommandBuffer commandBuffer,
1276     VkBuffer buffer,
1277     VkDeviceSize offset)
1278 {
1279     AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
1280     auto vkEnc = HostConnection::get()->vkEncoder();
1281     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1282     vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset);
1283 }
entry_vkCmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)1284 static void entry_vkCmdCopyBuffer(
1285     VkCommandBuffer commandBuffer,
1286     VkBuffer srcBuffer,
1287     VkBuffer dstBuffer,
1288     uint32_t regionCount,
1289     const VkBufferCopy* pRegions)
1290 {
1291     AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
1292     auto vkEnc = HostConnection::get()->vkEncoder();
1293     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1294     vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1295 }
entry_vkCmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)1296 static void entry_vkCmdCopyImage(
1297     VkCommandBuffer commandBuffer,
1298     VkImage srcImage,
1299     VkImageLayout srcImageLayout,
1300     VkImage dstImage,
1301     VkImageLayout dstImageLayout,
1302     uint32_t regionCount,
1303     const VkImageCopy* pRegions)
1304 {
1305     AEMU_SCOPED_TRACE("vkCmdCopyImage");
1306     auto vkEnc = HostConnection::get()->vkEncoder();
1307     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1308     vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1309 }
entry_vkCmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)1310 static void entry_vkCmdBlitImage(
1311     VkCommandBuffer commandBuffer,
1312     VkImage srcImage,
1313     VkImageLayout srcImageLayout,
1314     VkImage dstImage,
1315     VkImageLayout dstImageLayout,
1316     uint32_t regionCount,
1317     const VkImageBlit* pRegions,
1318     VkFilter filter)
1319 {
1320     AEMU_SCOPED_TRACE("vkCmdBlitImage");
1321     auto vkEnc = HostConnection::get()->vkEncoder();
1322     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1323     vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1324 }
entry_vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)1325 static void entry_vkCmdCopyBufferToImage(
1326     VkCommandBuffer commandBuffer,
1327     VkBuffer srcBuffer,
1328     VkImage dstImage,
1329     VkImageLayout dstImageLayout,
1330     uint32_t regionCount,
1331     const VkBufferImageCopy* pRegions)
1332 {
1333     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
1334     auto vkEnc = HostConnection::get()->vkEncoder();
1335     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1336     vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1337 }
entry_vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)1338 static void entry_vkCmdCopyImageToBuffer(
1339     VkCommandBuffer commandBuffer,
1340     VkImage srcImage,
1341     VkImageLayout srcImageLayout,
1342     VkBuffer dstBuffer,
1343     uint32_t regionCount,
1344     const VkBufferImageCopy* pRegions)
1345 {
1346     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
1347     auto vkEnc = HostConnection::get()->vkEncoder();
1348     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1349     vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1350 }
entry_vkCmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)1351 static void entry_vkCmdUpdateBuffer(
1352     VkCommandBuffer commandBuffer,
1353     VkBuffer dstBuffer,
1354     VkDeviceSize dstOffset,
1355     VkDeviceSize dataSize,
1356     const void* pData)
1357 {
1358     AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
1359     auto vkEnc = HostConnection::get()->vkEncoder();
1360     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1361     vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1362 }
entry_vkCmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)1363 static void entry_vkCmdFillBuffer(
1364     VkCommandBuffer commandBuffer,
1365     VkBuffer dstBuffer,
1366     VkDeviceSize dstOffset,
1367     VkDeviceSize size,
1368     uint32_t data)
1369 {
1370     AEMU_SCOPED_TRACE("vkCmdFillBuffer");
1371     auto vkEnc = HostConnection::get()->vkEncoder();
1372     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1373     vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1374 }
entry_vkCmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1375 static void entry_vkCmdClearColorImage(
1376     VkCommandBuffer commandBuffer,
1377     VkImage image,
1378     VkImageLayout imageLayout,
1379     const VkClearColorValue* pColor,
1380     uint32_t rangeCount,
1381     const VkImageSubresourceRange* pRanges)
1382 {
1383     AEMU_SCOPED_TRACE("vkCmdClearColorImage");
1384     auto vkEnc = HostConnection::get()->vkEncoder();
1385     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1386     vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1387 }
entry_vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1388 static void entry_vkCmdClearDepthStencilImage(
1389     VkCommandBuffer commandBuffer,
1390     VkImage image,
1391     VkImageLayout imageLayout,
1392     const VkClearDepthStencilValue* pDepthStencil,
1393     uint32_t rangeCount,
1394     const VkImageSubresourceRange* pRanges)
1395 {
1396     AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
1397     auto vkEnc = HostConnection::get()->vkEncoder();
1398     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1399     vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1400 }
entry_vkCmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)1401 static void entry_vkCmdClearAttachments(
1402     VkCommandBuffer commandBuffer,
1403     uint32_t attachmentCount,
1404     const VkClearAttachment* pAttachments,
1405     uint32_t rectCount,
1406     const VkClearRect* pRects)
1407 {
1408     AEMU_SCOPED_TRACE("vkCmdClearAttachments");
1409     auto vkEnc = HostConnection::get()->vkEncoder();
1410     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1411     vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1412 }
entry_vkCmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)1413 static void entry_vkCmdResolveImage(
1414     VkCommandBuffer commandBuffer,
1415     VkImage srcImage,
1416     VkImageLayout srcImageLayout,
1417     VkImage dstImage,
1418     VkImageLayout dstImageLayout,
1419     uint32_t regionCount,
1420     const VkImageResolve* pRegions)
1421 {
1422     AEMU_SCOPED_TRACE("vkCmdResolveImage");
1423     auto vkEnc = HostConnection::get()->vkEncoder();
1424     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1425     vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1426 }
entry_vkCmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1427 static void entry_vkCmdSetEvent(
1428     VkCommandBuffer commandBuffer,
1429     VkEvent event,
1430     VkPipelineStageFlags stageMask)
1431 {
1432     AEMU_SCOPED_TRACE("vkCmdSetEvent");
1433     auto vkEnc = HostConnection::get()->vkEncoder();
1434     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1435     vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask);
1436 }
entry_vkCmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1437 static void entry_vkCmdResetEvent(
1438     VkCommandBuffer commandBuffer,
1439     VkEvent event,
1440     VkPipelineStageFlags stageMask)
1441 {
1442     AEMU_SCOPED_TRACE("vkCmdResetEvent");
1443     auto vkEnc = HostConnection::get()->vkEncoder();
1444     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1445     vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask);
1446 }
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)1447 static void entry_vkCmdWaitEvents(
1448     VkCommandBuffer commandBuffer,
1449     uint32_t eventCount,
1450     const VkEvent* pEvents,
1451     VkPipelineStageFlags srcStageMask,
1452     VkPipelineStageFlags dstStageMask,
1453     uint32_t memoryBarrierCount,
1454     const VkMemoryBarrier* pMemoryBarriers,
1455     uint32_t bufferMemoryBarrierCount,
1456     const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1457     uint32_t imageMemoryBarrierCount,
1458     const VkImageMemoryBarrier* pImageMemoryBarriers)
1459 {
1460     AEMU_SCOPED_TRACE("vkCmdWaitEvents");
1461     auto vkEnc = HostConnection::get()->vkEncoder();
1462     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1463     vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1464 }
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)1465 static void entry_vkCmdPipelineBarrier(
1466     VkCommandBuffer commandBuffer,
1467     VkPipelineStageFlags srcStageMask,
1468     VkPipelineStageFlags dstStageMask,
1469     VkDependencyFlags dependencyFlags,
1470     uint32_t memoryBarrierCount,
1471     const VkMemoryBarrier* pMemoryBarriers,
1472     uint32_t bufferMemoryBarrierCount,
1473     const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1474     uint32_t imageMemoryBarrierCount,
1475     const VkImageMemoryBarrier* pImageMemoryBarriers)
1476 {
1477     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
1478     auto vkEnc = HostConnection::get()->vkEncoder();
1479     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1480     vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1481 }
entry_vkCmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)1482 static void entry_vkCmdBeginQuery(
1483     VkCommandBuffer commandBuffer,
1484     VkQueryPool queryPool,
1485     uint32_t query,
1486     VkQueryControlFlags flags)
1487 {
1488     AEMU_SCOPED_TRACE("vkCmdBeginQuery");
1489     auto vkEnc = HostConnection::get()->vkEncoder();
1490     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1491     vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags);
1492 }
entry_vkCmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)1493 static void entry_vkCmdEndQuery(
1494     VkCommandBuffer commandBuffer,
1495     VkQueryPool queryPool,
1496     uint32_t query)
1497 {
1498     AEMU_SCOPED_TRACE("vkCmdEndQuery");
1499     auto vkEnc = HostConnection::get()->vkEncoder();
1500     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1501     vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query);
1502 }
entry_vkCmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1503 static void entry_vkCmdResetQueryPool(
1504     VkCommandBuffer commandBuffer,
1505     VkQueryPool queryPool,
1506     uint32_t firstQuery,
1507     uint32_t queryCount)
1508 {
1509     AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
1510     auto vkEnc = HostConnection::get()->vkEncoder();
1511     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1512     vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1513 }
entry_vkCmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)1514 static void entry_vkCmdWriteTimestamp(
1515     VkCommandBuffer commandBuffer,
1516     VkPipelineStageFlagBits pipelineStage,
1517     VkQueryPool queryPool,
1518     uint32_t query)
1519 {
1520     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
1521     auto vkEnc = HostConnection::get()->vkEncoder();
1522     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1523     vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1524 }
entry_vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)1525 static void entry_vkCmdCopyQueryPoolResults(
1526     VkCommandBuffer commandBuffer,
1527     VkQueryPool queryPool,
1528     uint32_t firstQuery,
1529     uint32_t queryCount,
1530     VkBuffer dstBuffer,
1531     VkDeviceSize dstOffset,
1532     VkDeviceSize stride,
1533     VkQueryResultFlags flags)
1534 {
1535     AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
1536     auto vkEnc = HostConnection::get()->vkEncoder();
1537     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1538     vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1539 }
entry_vkCmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)1540 static void entry_vkCmdPushConstants(
1541     VkCommandBuffer commandBuffer,
1542     VkPipelineLayout layout,
1543     VkShaderStageFlags stageFlags,
1544     uint32_t offset,
1545     uint32_t size,
1546     const void* pValues)
1547 {
1548     AEMU_SCOPED_TRACE("vkCmdPushConstants");
1549     auto vkEnc = HostConnection::get()->vkEncoder();
1550     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1551     vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1552 }
entry_vkCmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)1553 static void entry_vkCmdBeginRenderPass(
1554     VkCommandBuffer commandBuffer,
1555     const VkRenderPassBeginInfo* pRenderPassBegin,
1556     VkSubpassContents contents)
1557 {
1558     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
1559     auto vkEnc = HostConnection::get()->vkEncoder();
1560     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1561     vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1562 }
entry_vkCmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)1563 static void entry_vkCmdNextSubpass(
1564     VkCommandBuffer commandBuffer,
1565     VkSubpassContents contents)
1566 {
1567     AEMU_SCOPED_TRACE("vkCmdNextSubpass");
1568     auto vkEnc = HostConnection::get()->vkEncoder();
1569     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1570     vkEnc->vkCmdNextSubpass(commandBuffer, contents);
1571 }
entry_vkCmdEndRenderPass(VkCommandBuffer commandBuffer)1572 static void entry_vkCmdEndRenderPass(
1573     VkCommandBuffer commandBuffer)
1574 {
1575     AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
1576     auto vkEnc = HostConnection::get()->vkEncoder();
1577     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1578     vkEnc->vkCmdEndRenderPass(commandBuffer);
1579 }
entry_vkCmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1580 static void entry_vkCmdExecuteCommands(
1581     VkCommandBuffer commandBuffer,
1582     uint32_t commandBufferCount,
1583     const VkCommandBuffer* pCommandBuffers)
1584 {
1585     AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
1586     auto vkEnc = HostConnection::get()->vkEncoder();
1587     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1588     vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1589 }
1590 #endif
1591 #ifdef VK_VERSION_1_1
entry_vkEnumerateInstanceVersion(uint32_t * pApiVersion)1592 static VkResult entry_vkEnumerateInstanceVersion(
1593     uint32_t* pApiVersion)
1594 {
1595     AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
1596     auto vkEnc = HostConnection::get()->vkEncoder();
1597     VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1598     vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion);
1599     return vkEnumerateInstanceVersion_VkResult_return;
1600 }
entry_vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1601 static VkResult entry_vkBindBufferMemory2(
1602     VkDevice device,
1603     uint32_t bindInfoCount,
1604     const VkBindBufferMemoryInfo* pBindInfos)
1605 {
1606     AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1607     auto vkEnc = HostConnection::get()->vkEncoder();
1608     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1609     auto resources = ResourceTracker::get();
1610     vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1611     return vkBindBufferMemory2_VkResult_return;
1612 }
dynCheck_entry_vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1613 static VkResult dynCheck_entry_vkBindBufferMemory2(
1614     VkDevice device,
1615     uint32_t bindInfoCount,
1616     const VkBindBufferMemoryInfo* pBindInfos)
1617 {
1618     auto resources = ResourceTracker::get();
1619     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1620     {
1621         sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1622     }
1623     AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1624     auto vkEnc = HostConnection::get()->vkEncoder();
1625     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1626     vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1627     return vkBindBufferMemory2_VkResult_return;
1628 }
entry_vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1629 static VkResult entry_vkBindImageMemory2(
1630     VkDevice device,
1631     uint32_t bindInfoCount,
1632     const VkBindImageMemoryInfo* pBindInfos)
1633 {
1634     AEMU_SCOPED_TRACE("vkBindImageMemory2");
1635     auto vkEnc = HostConnection::get()->vkEncoder();
1636     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1637     auto resources = ResourceTracker::get();
1638     vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1639     return vkBindImageMemory2_VkResult_return;
1640 }
dynCheck_entry_vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1641 static VkResult dynCheck_entry_vkBindImageMemory2(
1642     VkDevice device,
1643     uint32_t bindInfoCount,
1644     const VkBindImageMemoryInfo* pBindInfos)
1645 {
1646     auto resources = ResourceTracker::get();
1647     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1648     {
1649         sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1650     }
1651     AEMU_SCOPED_TRACE("vkBindImageMemory2");
1652     auto vkEnc = HostConnection::get()->vkEncoder();
1653     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1654     vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1655     return vkBindImageMemory2_VkResult_return;
1656 }
entry_vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1657 static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1658     VkDevice device,
1659     uint32_t heapIndex,
1660     uint32_t localDeviceIndex,
1661     uint32_t remoteDeviceIndex,
1662     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1663 {
1664     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1665     auto vkEnc = HostConnection::get()->vkEncoder();
1666     vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1667 }
dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1668 static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1669     VkDevice device,
1670     uint32_t heapIndex,
1671     uint32_t localDeviceIndex,
1672     uint32_t remoteDeviceIndex,
1673     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1674 {
1675     auto resources = ResourceTracker::get();
1676     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1677     {
1678         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1679     }
1680     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1681     auto vkEnc = HostConnection::get()->vkEncoder();
1682     vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1683 }
entry_vkCmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)1684 static void entry_vkCmdSetDeviceMask(
1685     VkCommandBuffer commandBuffer,
1686     uint32_t deviceMask)
1687 {
1688     AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
1689     auto vkEnc = HostConnection::get()->vkEncoder();
1690     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1691     vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask);
1692 }
entry_vkCmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1693 static void entry_vkCmdDispatchBase(
1694     VkCommandBuffer commandBuffer,
1695     uint32_t baseGroupX,
1696     uint32_t baseGroupY,
1697     uint32_t baseGroupZ,
1698     uint32_t groupCountX,
1699     uint32_t groupCountY,
1700     uint32_t groupCountZ)
1701 {
1702     AEMU_SCOPED_TRACE("vkCmdDispatchBase");
1703     auto vkEnc = HostConnection::get()->vkEncoder();
1704     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
1705     vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1706 }
entry_vkEnumeratePhysicalDeviceGroups(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)1707 static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1708     VkInstance instance,
1709     uint32_t* pPhysicalDeviceGroupCount,
1710     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1711 {
1712     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
1713     auto vkEnc = HostConnection::get()->vkEncoder();
1714     VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1715     vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1716     return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1717 }
entry_vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1718 static void entry_vkGetImageMemoryRequirements2(
1719     VkDevice device,
1720     const VkImageMemoryRequirementsInfo2* pInfo,
1721     VkMemoryRequirements2* pMemoryRequirements)
1722 {
1723     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1724     auto vkEnc = HostConnection::get()->vkEncoder();
1725     auto resources = ResourceTracker::get();
1726     resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1727 }
dynCheck_entry_vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1728 static void dynCheck_entry_vkGetImageMemoryRequirements2(
1729     VkDevice device,
1730     const VkImageMemoryRequirementsInfo2* pInfo,
1731     VkMemoryRequirements2* pMemoryRequirements)
1732 {
1733     auto resources = ResourceTracker::get();
1734     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1735     {
1736         sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1737     }
1738     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1739     auto vkEnc = HostConnection::get()->vkEncoder();
1740     resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1741 }
entry_vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1742 static void entry_vkGetBufferMemoryRequirements2(
1743     VkDevice device,
1744     const VkBufferMemoryRequirementsInfo2* pInfo,
1745     VkMemoryRequirements2* pMemoryRequirements)
1746 {
1747     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1748     auto vkEnc = HostConnection::get()->vkEncoder();
1749     auto resources = ResourceTracker::get();
1750     resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1751 }
dynCheck_entry_vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1752 static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1753     VkDevice device,
1754     const VkBufferMemoryRequirementsInfo2* pInfo,
1755     VkMemoryRequirements2* pMemoryRequirements)
1756 {
1757     auto resources = ResourceTracker::get();
1758     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1759     {
1760         sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1761     }
1762     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1763     auto vkEnc = HostConnection::get()->vkEncoder();
1764     resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1765 }
entry_vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1766 static void entry_vkGetImageSparseMemoryRequirements2(
1767     VkDevice device,
1768     const VkImageSparseMemoryRequirementsInfo2* pInfo,
1769     uint32_t* pSparseMemoryRequirementCount,
1770     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1771 {
1772     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1773     auto vkEnc = HostConnection::get()->vkEncoder();
1774     vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1775 }
dynCheck_entry_vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1776 static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1777     VkDevice device,
1778     const VkImageSparseMemoryRequirementsInfo2* pInfo,
1779     uint32_t* pSparseMemoryRequirementCount,
1780     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1781 {
1782     auto resources = ResourceTracker::get();
1783     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1784     {
1785         sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1786     }
1787     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1788     auto vkEnc = HostConnection::get()->vkEncoder();
1789     vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1790 }
entry_vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)1791 static void entry_vkGetPhysicalDeviceFeatures2(
1792     VkPhysicalDevice physicalDevice,
1793     VkPhysicalDeviceFeatures2* pFeatures)
1794 {
1795     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
1796     auto vkEnc = HostConnection::get()->vkEncoder();
1797     vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
1798 }
entry_vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)1799 static void entry_vkGetPhysicalDeviceProperties2(
1800     VkPhysicalDevice physicalDevice,
1801     VkPhysicalDeviceProperties2* pProperties)
1802 {
1803     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
1804     auto vkEnc = HostConnection::get()->vkEncoder();
1805     vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
1806 }
entry_vkGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)1807 static void entry_vkGetPhysicalDeviceFormatProperties2(
1808     VkPhysicalDevice physicalDevice,
1809     VkFormat format,
1810     VkFormatProperties2* pFormatProperties)
1811 {
1812     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
1813     auto vkEnc = HostConnection::get()->vkEncoder();
1814     vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
1815 }
entry_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)1816 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1817     VkPhysicalDevice physicalDevice,
1818     const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1819     VkImageFormatProperties2* pImageFormatProperties)
1820 {
1821     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
1822     auto vkEnc = HostConnection::get()->vkEncoder();
1823     VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
1824     auto resources = ResourceTracker::get();
1825     vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
1826     return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1827 }
entry_vkGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)1828 static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1829     VkPhysicalDevice physicalDevice,
1830     uint32_t* pQueueFamilyPropertyCount,
1831     VkQueueFamilyProperties2* pQueueFamilyProperties)
1832 {
1833     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
1834     auto vkEnc = HostConnection::get()->vkEncoder();
1835     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1836 }
entry_vkGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)1837 static void entry_vkGetPhysicalDeviceMemoryProperties2(
1838     VkPhysicalDevice physicalDevice,
1839     VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1840 {
1841     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
1842     auto vkEnc = HostConnection::get()->vkEncoder();
1843     vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
1844 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)1845 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1846     VkPhysicalDevice physicalDevice,
1847     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1848     uint32_t* pPropertyCount,
1849     VkSparseImageFormatProperties2* pProperties)
1850 {
1851     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
1852     auto vkEnc = HostConnection::get()->vkEncoder();
1853     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
1854 }
entry_vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1855 static void entry_vkTrimCommandPool(
1856     VkDevice device,
1857     VkCommandPool commandPool,
1858     VkCommandPoolTrimFlags flags)
1859 {
1860     AEMU_SCOPED_TRACE("vkTrimCommandPool");
1861     auto vkEnc = HostConnection::get()->vkEncoder();
1862     vkEnc->vkTrimCommandPool(device, commandPool, flags);
1863 }
dynCheck_entry_vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1864 static void dynCheck_entry_vkTrimCommandPool(
1865     VkDevice device,
1866     VkCommandPool commandPool,
1867     VkCommandPoolTrimFlags flags)
1868 {
1869     auto resources = ResourceTracker::get();
1870     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1871     {
1872         sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1873     }
1874     AEMU_SCOPED_TRACE("vkTrimCommandPool");
1875     auto vkEnc = HostConnection::get()->vkEncoder();
1876     vkEnc->vkTrimCommandPool(device, commandPool, flags);
1877 }
entry_vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1878 static void entry_vkGetDeviceQueue2(
1879     VkDevice device,
1880     const VkDeviceQueueInfo2* pQueueInfo,
1881     VkQueue* pQueue)
1882 {
1883     AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1884     auto vkEnc = HostConnection::get()->vkEncoder();
1885     vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1886 }
dynCheck_entry_vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1887 static void dynCheck_entry_vkGetDeviceQueue2(
1888     VkDevice device,
1889     const VkDeviceQueueInfo2* pQueueInfo,
1890     VkQueue* pQueue)
1891 {
1892     auto resources = ResourceTracker::get();
1893     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1894     {
1895         sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1896     }
1897     AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1898     auto vkEnc = HostConnection::get()->vkEncoder();
1899     vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1900 }
entry_vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1901 static VkResult entry_vkCreateSamplerYcbcrConversion(
1902     VkDevice device,
1903     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1904     const VkAllocationCallbacks* pAllocator,
1905     VkSamplerYcbcrConversion* pYcbcrConversion)
1906 {
1907     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1908     auto vkEnc = HostConnection::get()->vkEncoder();
1909     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1910     auto resources = ResourceTracker::get();
1911     vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1912     return vkCreateSamplerYcbcrConversion_VkResult_return;
1913 }
dynCheck_entry_vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1914 static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1915     VkDevice device,
1916     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1917     const VkAllocationCallbacks* pAllocator,
1918     VkSamplerYcbcrConversion* pYcbcrConversion)
1919 {
1920     auto resources = ResourceTracker::get();
1921     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1922     {
1923         sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1924     }
1925     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1926     auto vkEnc = HostConnection::get()->vkEncoder();
1927     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1928     vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1929     return vkCreateSamplerYcbcrConversion_VkResult_return;
1930 }
entry_vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1931 static void entry_vkDestroySamplerYcbcrConversion(
1932     VkDevice device,
1933     VkSamplerYcbcrConversion ycbcrConversion,
1934     const VkAllocationCallbacks* pAllocator)
1935 {
1936     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1937     auto vkEnc = HostConnection::get()->vkEncoder();
1938     auto resources = ResourceTracker::get();
1939     resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1940 }
dynCheck_entry_vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1941 static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1942     VkDevice device,
1943     VkSamplerYcbcrConversion ycbcrConversion,
1944     const VkAllocationCallbacks* pAllocator)
1945 {
1946     auto resources = ResourceTracker::get();
1947     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1948     {
1949         sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1950     }
1951     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1952     auto vkEnc = HostConnection::get()->vkEncoder();
1953     resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1954 }
entry_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1955 static VkResult entry_vkCreateDescriptorUpdateTemplate(
1956     VkDevice device,
1957     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1958     const VkAllocationCallbacks* pAllocator,
1959     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1960 {
1961     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1962     auto vkEnc = HostConnection::get()->vkEncoder();
1963     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1964     vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1965     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1966 }
dynCheck_entry_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1967 static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1968     VkDevice device,
1969     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1970     const VkAllocationCallbacks* pAllocator,
1971     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1972 {
1973     auto resources = ResourceTracker::get();
1974     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1975     {
1976         sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1977     }
1978     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1979     auto vkEnc = HostConnection::get()->vkEncoder();
1980     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1981     vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1982     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1983 }
entry_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1984 static void entry_vkDestroyDescriptorUpdateTemplate(
1985     VkDevice device,
1986     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1987     const VkAllocationCallbacks* pAllocator)
1988 {
1989     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1990     auto vkEnc = HostConnection::get()->vkEncoder();
1991     vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1992 }
dynCheck_entry_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1993 static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1994     VkDevice device,
1995     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1996     const VkAllocationCallbacks* pAllocator)
1997 {
1998     auto resources = ResourceTracker::get();
1999     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2000     {
2001         sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
2002     }
2003     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
2004     auto vkEnc = HostConnection::get()->vkEncoder();
2005     vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
2006 }
entry_vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)2007 static void entry_vkUpdateDescriptorSetWithTemplate(
2008     VkDevice device,
2009     VkDescriptorSet descriptorSet,
2010     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2011     const void* pData)
2012 {
2013     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
2014     auto vkEnc = HostConnection::get()->vkEncoder();
2015     auto resources = ResourceTracker::get();
2016     resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2017 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)2018 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
2019     VkDevice device,
2020     VkDescriptorSet descriptorSet,
2021     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2022     const void* pData)
2023 {
2024     auto resources = ResourceTracker::get();
2025     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2026     {
2027         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
2028     }
2029     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
2030     auto vkEnc = HostConnection::get()->vkEncoder();
2031     resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2032 }
entry_vkGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)2033 static void entry_vkGetPhysicalDeviceExternalBufferProperties(
2034     VkPhysicalDevice physicalDevice,
2035     const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2036     VkExternalBufferProperties* pExternalBufferProperties)
2037 {
2038     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
2039     auto vkEnc = HostConnection::get()->vkEncoder();
2040     vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2041 }
entry_vkGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)2042 static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2043     VkPhysicalDevice physicalDevice,
2044     const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2045     VkExternalFenceProperties* pExternalFenceProperties)
2046 {
2047     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
2048     auto vkEnc = HostConnection::get()->vkEncoder();
2049     auto resources = ResourceTracker::get();
2050     resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
2051 }
entry_vkGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)2052 static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2053     VkPhysicalDevice physicalDevice,
2054     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2055     VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2056 {
2057     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
2058     auto vkEnc = HostConnection::get()->vkEncoder();
2059     vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2060 }
entry_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)2061 static void entry_vkGetDescriptorSetLayoutSupport(
2062     VkDevice device,
2063     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2064     VkDescriptorSetLayoutSupport* pSupport)
2065 {
2066     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2067     auto vkEnc = HostConnection::get()->vkEncoder();
2068     vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2069 }
dynCheck_entry_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)2070 static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2071     VkDevice device,
2072     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2073     VkDescriptorSetLayoutSupport* pSupport)
2074 {
2075     auto resources = ResourceTracker::get();
2076     if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2077     {
2078         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2079     }
2080     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2081     auto vkEnc = HostConnection::get()->vkEncoder();
2082     vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2083 }
2084 #endif
2085 #ifdef VK_KHR_surface
entry_vkDestroySurfaceKHR(VkInstance instance,VkSurfaceKHR surface,const VkAllocationCallbacks * pAllocator)2086 static void entry_vkDestroySurfaceKHR(
2087     VkInstance instance,
2088     VkSurfaceKHR surface,
2089     const VkAllocationCallbacks* pAllocator)
2090 {
2091     AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
2092     auto vkEnc = HostConnection::get()->vkEncoder();
2093     vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator);
2094 }
entry_vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32 * pSupported)2095 static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2096     VkPhysicalDevice physicalDevice,
2097     uint32_t queueFamilyIndex,
2098     VkSurfaceKHR surface,
2099     VkBool32* pSupported)
2100 {
2101     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
2102     auto vkEnc = HostConnection::get()->vkEncoder();
2103     VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2104     vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
2105     return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2106 }
entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR * pSurfaceCapabilities)2107 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2108     VkPhysicalDevice physicalDevice,
2109     VkSurfaceKHR surface,
2110     VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2111 {
2112     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
2113     auto vkEnc = HostConnection::get()->vkEncoder();
2114     VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2115     vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
2116     return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2117 }
entry_vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pSurfaceFormatCount,VkSurfaceFormatKHR * pSurfaceFormats)2118 static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2119     VkPhysicalDevice physicalDevice,
2120     VkSurfaceKHR surface,
2121     uint32_t* pSurfaceFormatCount,
2122     VkSurfaceFormatKHR* pSurfaceFormats)
2123 {
2124     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
2125     auto vkEnc = HostConnection::get()->vkEncoder();
2126     VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2127     vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
2128     return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2129 }
entry_vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)2130 static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2131     VkPhysicalDevice physicalDevice,
2132     VkSurfaceKHR surface,
2133     uint32_t* pPresentModeCount,
2134     VkPresentModeKHR* pPresentModes)
2135 {
2136     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
2137     auto vkEnc = HostConnection::get()->vkEncoder();
2138     VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2139     vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
2140     return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2141 }
2142 #endif
2143 #ifdef VK_KHR_swapchain
entry_vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2144 static VkResult entry_vkCreateSwapchainKHR(
2145     VkDevice device,
2146     const VkSwapchainCreateInfoKHR* pCreateInfo,
2147     const VkAllocationCallbacks* pAllocator,
2148     VkSwapchainKHR* pSwapchain)
2149 {
2150     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2151     auto vkEnc = HostConnection::get()->vkEncoder();
2152     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2153     vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2154     return vkCreateSwapchainKHR_VkResult_return;
2155 }
dynCheck_entry_vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2156 static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2157     VkDevice device,
2158     const VkSwapchainCreateInfoKHR* pCreateInfo,
2159     const VkAllocationCallbacks* pAllocator,
2160     VkSwapchainKHR* pSwapchain)
2161 {
2162     auto resources = ResourceTracker::get();
2163     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2164     {
2165         sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2166     }
2167     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2168     auto vkEnc = HostConnection::get()->vkEncoder();
2169     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2170     vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2171     return vkCreateSwapchainKHR_VkResult_return;
2172 }
entry_vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2173 static void entry_vkDestroySwapchainKHR(
2174     VkDevice device,
2175     VkSwapchainKHR swapchain,
2176     const VkAllocationCallbacks* pAllocator)
2177 {
2178     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2179     auto vkEnc = HostConnection::get()->vkEncoder();
2180     vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2181 }
dynCheck_entry_vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2182 static void dynCheck_entry_vkDestroySwapchainKHR(
2183     VkDevice device,
2184     VkSwapchainKHR swapchain,
2185     const VkAllocationCallbacks* pAllocator)
2186 {
2187     auto resources = ResourceTracker::get();
2188     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2189     {
2190         sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2191     }
2192     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2193     auto vkEnc = HostConnection::get()->vkEncoder();
2194     vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2195 }
entry_vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2196 static VkResult entry_vkGetSwapchainImagesKHR(
2197     VkDevice device,
2198     VkSwapchainKHR swapchain,
2199     uint32_t* pSwapchainImageCount,
2200     VkImage* pSwapchainImages)
2201 {
2202     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2203     auto vkEnc = HostConnection::get()->vkEncoder();
2204     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2205     vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2206     return vkGetSwapchainImagesKHR_VkResult_return;
2207 }
dynCheck_entry_vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2208 static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2209     VkDevice device,
2210     VkSwapchainKHR swapchain,
2211     uint32_t* pSwapchainImageCount,
2212     VkImage* pSwapchainImages)
2213 {
2214     auto resources = ResourceTracker::get();
2215     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2216     {
2217         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2218     }
2219     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2220     auto vkEnc = HostConnection::get()->vkEncoder();
2221     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2222     vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2223     return vkGetSwapchainImagesKHR_VkResult_return;
2224 }
entry_vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2225 static VkResult entry_vkAcquireNextImageKHR(
2226     VkDevice device,
2227     VkSwapchainKHR swapchain,
2228     uint64_t timeout,
2229     VkSemaphore semaphore,
2230     VkFence fence,
2231     uint32_t* pImageIndex)
2232 {
2233     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2234     auto vkEnc = HostConnection::get()->vkEncoder();
2235     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2236     vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2237     return vkAcquireNextImageKHR_VkResult_return;
2238 }
dynCheck_entry_vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2239 static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2240     VkDevice device,
2241     VkSwapchainKHR swapchain,
2242     uint64_t timeout,
2243     VkSemaphore semaphore,
2244     VkFence fence,
2245     uint32_t* pImageIndex)
2246 {
2247     auto resources = ResourceTracker::get();
2248     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2249     {
2250         sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2251     }
2252     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2253     auto vkEnc = HostConnection::get()->vkEncoder();
2254     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2255     vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2256     return vkAcquireNextImageKHR_VkResult_return;
2257 }
entry_vkQueuePresentKHR(VkQueue queue,const VkPresentInfoKHR * pPresentInfo)2258 static VkResult entry_vkQueuePresentKHR(
2259     VkQueue queue,
2260     const VkPresentInfoKHR* pPresentInfo)
2261 {
2262     AEMU_SCOPED_TRACE("vkQueuePresentKHR");
2263     auto vkEnc = HostConnection::get()->vkEncoder();
2264     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
2265     VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2266     vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo);
2267     return vkQueuePresentKHR_VkResult_return;
2268 }
entry_vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2269 static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2270     VkDevice device,
2271     VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2272 {
2273     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2274     auto vkEnc = HostConnection::get()->vkEncoder();
2275     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2276     vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2277     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2278 }
dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2279 static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2280     VkDevice device,
2281     VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2282 {
2283     auto resources = ResourceTracker::get();
2284     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2285     {
2286         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2287     }
2288     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2289     auto vkEnc = HostConnection::get()->vkEncoder();
2290     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2291     vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2292     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2293 }
entry_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2294 static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2295     VkDevice device,
2296     VkSurfaceKHR surface,
2297     VkDeviceGroupPresentModeFlagsKHR* pModes)
2298 {
2299     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2300     auto vkEnc = HostConnection::get()->vkEncoder();
2301     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2302     vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2303     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2304 }
dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2305 static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2306     VkDevice device,
2307     VkSurfaceKHR surface,
2308     VkDeviceGroupPresentModeFlagsKHR* pModes)
2309 {
2310     auto resources = ResourceTracker::get();
2311     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2312     {
2313         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2314     }
2315     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2316     auto vkEnc = HostConnection::get()->vkEncoder();
2317     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2318     vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2319     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2320 }
entry_vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)2321 static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2322     VkPhysicalDevice physicalDevice,
2323     VkSurfaceKHR surface,
2324     uint32_t* pRectCount,
2325     VkRect2D* pRects)
2326 {
2327     AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
2328     auto vkEnc = HostConnection::get()->vkEncoder();
2329     VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2330     vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
2331     return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2332 }
entry_vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2333 static VkResult entry_vkAcquireNextImage2KHR(
2334     VkDevice device,
2335     const VkAcquireNextImageInfoKHR* pAcquireInfo,
2336     uint32_t* pImageIndex)
2337 {
2338     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2339     auto vkEnc = HostConnection::get()->vkEncoder();
2340     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2341     vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2342     return vkAcquireNextImage2KHR_VkResult_return;
2343 }
dynCheck_entry_vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2344 static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2345     VkDevice device,
2346     const VkAcquireNextImageInfoKHR* pAcquireInfo,
2347     uint32_t* pImageIndex)
2348 {
2349     auto resources = ResourceTracker::get();
2350     if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2351     {
2352         sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2353     }
2354     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2355     auto vkEnc = HostConnection::get()->vkEncoder();
2356     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2357     vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2358     return vkAcquireNextImage2KHR_VkResult_return;
2359 }
2360 #endif
2361 #ifdef VK_KHR_display
entry_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPropertiesKHR * pProperties)2362 static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2363     VkPhysicalDevice physicalDevice,
2364     uint32_t* pPropertyCount,
2365     VkDisplayPropertiesKHR* pProperties)
2366 {
2367     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
2368     auto vkEnc = HostConnection::get()->vkEncoder();
2369     VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2370     vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2371     return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2372 }
entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlanePropertiesKHR * pProperties)2373 static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2374     VkPhysicalDevice physicalDevice,
2375     uint32_t* pPropertyCount,
2376     VkDisplayPlanePropertiesKHR* pProperties)
2377 {
2378     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
2379     auto vkEnc = HostConnection::get()->vkEncoder();
2380     VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2381     vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2382     return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2383 }
entry_vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t * pDisplayCount,VkDisplayKHR * pDisplays)2384 static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2385     VkPhysicalDevice physicalDevice,
2386     uint32_t planeIndex,
2387     uint32_t* pDisplayCount,
2388     VkDisplayKHR* pDisplays)
2389 {
2390     AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
2391     auto vkEnc = HostConnection::get()->vkEncoder();
2392     VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2393     vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
2394     return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2395 }
entry_vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModePropertiesKHR * pProperties)2396 static VkResult entry_vkGetDisplayModePropertiesKHR(
2397     VkPhysicalDevice physicalDevice,
2398     VkDisplayKHR display,
2399     uint32_t* pPropertyCount,
2400     VkDisplayModePropertiesKHR* pProperties)
2401 {
2402     AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
2403     auto vkEnc = HostConnection::get()->vkEncoder();
2404     VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2405     vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
2406     return vkGetDisplayModePropertiesKHR_VkResult_return;
2407 }
entry_vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const VkDisplayModeCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDisplayModeKHR * pMode)2408 static VkResult entry_vkCreateDisplayModeKHR(
2409     VkPhysicalDevice physicalDevice,
2410     VkDisplayKHR display,
2411     const VkDisplayModeCreateInfoKHR* pCreateInfo,
2412     const VkAllocationCallbacks* pAllocator,
2413     VkDisplayModeKHR* pMode)
2414 {
2415     AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
2416     auto vkEnc = HostConnection::get()->vkEncoder();
2417     VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2418     vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
2419     return vkCreateDisplayModeKHR_VkResult_return;
2420 }
entry_vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR * pCapabilities)2421 static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2422     VkPhysicalDevice physicalDevice,
2423     VkDisplayModeKHR mode,
2424     uint32_t planeIndex,
2425     VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2426 {
2427     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
2428     auto vkEnc = HostConnection::get()->vkEncoder();
2429     VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2430     vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
2431     return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2432 }
entry_vkCreateDisplayPlaneSurfaceKHR(VkInstance instance,const VkDisplaySurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2433 static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2434     VkInstance instance,
2435     const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2436     const VkAllocationCallbacks* pAllocator,
2437     VkSurfaceKHR* pSurface)
2438 {
2439     AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
2440     auto vkEnc = HostConnection::get()->vkEncoder();
2441     VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2442     vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2443     return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2444 }
2445 #endif
2446 #ifdef VK_KHR_display_swapchain
entry_vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)2447 static VkResult entry_vkCreateSharedSwapchainsKHR(
2448     VkDevice device,
2449     uint32_t swapchainCount,
2450     const VkSwapchainCreateInfoKHR* pCreateInfos,
2451     const VkAllocationCallbacks* pAllocator,
2452     VkSwapchainKHR* pSwapchains)
2453 {
2454     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2455     auto vkEnc = HostConnection::get()->vkEncoder();
2456     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2457     vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2458     return vkCreateSharedSwapchainsKHR_VkResult_return;
2459 }
dynCheck_entry_vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)2460 static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2461     VkDevice device,
2462     uint32_t swapchainCount,
2463     const VkSwapchainCreateInfoKHR* pCreateInfos,
2464     const VkAllocationCallbacks* pAllocator,
2465     VkSwapchainKHR* pSwapchains)
2466 {
2467     auto resources = ResourceTracker::get();
2468     if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2469     {
2470         sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2471     }
2472     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2473     auto vkEnc = HostConnection::get()->vkEncoder();
2474     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2475     vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2476     return vkCreateSharedSwapchainsKHR_VkResult_return;
2477 }
2478 #endif
2479 #ifdef VK_KHR_xlib_surface
entry_vkCreateXlibSurfaceKHR(VkInstance instance,const VkXlibSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2480 static VkResult entry_vkCreateXlibSurfaceKHR(
2481     VkInstance instance,
2482     const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2483     const VkAllocationCallbacks* pAllocator,
2484     VkSurfaceKHR* pSurface)
2485 {
2486     AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
2487     auto vkEnc = HostConnection::get()->vkEncoder();
2488     VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2489     vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2490     return vkCreateXlibSurfaceKHR_VkResult_return;
2491 }
entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,Display * dpy,VisualID visualID)2492 static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2493     VkPhysicalDevice physicalDevice,
2494     uint32_t queueFamilyIndex,
2495     Display* dpy,
2496     VisualID visualID)
2497 {
2498     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
2499     auto vkEnc = HostConnection::get()->vkEncoder();
2500     VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2501     vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
2502     return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2503 }
2504 #endif
2505 #ifdef VK_KHR_xcb_surface
entry_vkCreateXcbSurfaceKHR(VkInstance instance,const VkXcbSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2506 static VkResult entry_vkCreateXcbSurfaceKHR(
2507     VkInstance instance,
2508     const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2509     const VkAllocationCallbacks* pAllocator,
2510     VkSurfaceKHR* pSurface)
2511 {
2512     AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
2513     auto vkEnc = HostConnection::get()->vkEncoder();
2514     VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2515     vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2516     return vkCreateXcbSurfaceKHR_VkResult_return;
2517 }
entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,xcb_connection_t * connection,xcb_visualid_t visual_id)2518 static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2519     VkPhysicalDevice physicalDevice,
2520     uint32_t queueFamilyIndex,
2521     xcb_connection_t* connection,
2522     xcb_visualid_t visual_id)
2523 {
2524     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
2525     auto vkEnc = HostConnection::get()->vkEncoder();
2526     VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2527     vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
2528     return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2529 }
2530 #endif
2531 #ifdef VK_KHR_wayland_surface
entry_vkCreateWaylandSurfaceKHR(VkInstance instance,const VkWaylandSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2532 static VkResult entry_vkCreateWaylandSurfaceKHR(
2533     VkInstance instance,
2534     const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2535     const VkAllocationCallbacks* pAllocator,
2536     VkSurfaceKHR* pSurface)
2537 {
2538     AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
2539     auto vkEnc = HostConnection::get()->vkEncoder();
2540     VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2541     vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2542     return vkCreateWaylandSurfaceKHR_VkResult_return;
2543 }
entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,wl_display * display)2544 static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2545     VkPhysicalDevice physicalDevice,
2546     uint32_t queueFamilyIndex,
2547     wl_display* display)
2548 {
2549     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
2550     auto vkEnc = HostConnection::get()->vkEncoder();
2551     VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2552     vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
2553     return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2554 }
2555 #endif
2556 #ifdef VK_KHR_mir_surface
entry_vkCreateMirSurfaceKHR(VkInstance instance,const VkMirSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2557 static VkResult entry_vkCreateMirSurfaceKHR(
2558     VkInstance instance,
2559     const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2560     const VkAllocationCallbacks* pAllocator,
2561     VkSurfaceKHR* pSurface)
2562 {
2563     AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
2564     auto vkEnc = HostConnection::get()->vkEncoder();
2565     VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
2566     vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2567     return vkCreateMirSurfaceKHR_VkResult_return;
2568 }
entry_vkGetPhysicalDeviceMirPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,MirConnection * connection)2569 static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2570     VkPhysicalDevice physicalDevice,
2571     uint32_t queueFamilyIndex,
2572     MirConnection* connection)
2573 {
2574     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
2575     auto vkEnc = HostConnection::get()->vkEncoder();
2576     VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2577     vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection);
2578     return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2579 }
2580 #endif
2581 #ifdef VK_KHR_android_surface
entry_vkCreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2582 static VkResult entry_vkCreateAndroidSurfaceKHR(
2583     VkInstance instance,
2584     const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2585     const VkAllocationCallbacks* pAllocator,
2586     VkSurfaceKHR* pSurface)
2587 {
2588     AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
2589     auto vkEnc = HostConnection::get()->vkEncoder();
2590     VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2591     vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
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(
2597     VkInstance instance,
2598     const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2599     const VkAllocationCallbacks* pAllocator,
2600     VkSurfaceKHR* pSurface)
2601 {
2602     AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
2603     auto vkEnc = HostConnection::get()->vkEncoder();
2604     VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2605     vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2606     return vkCreateWin32SurfaceKHR_VkResult_return;
2607 }
entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex)2608 static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2609     VkPhysicalDevice physicalDevice,
2610     uint32_t queueFamilyIndex)
2611 {
2612     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
2613     auto vkEnc = HostConnection::get()->vkEncoder();
2614     VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2615     vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
2616     return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2617 }
2618 #endif
2619 #ifdef VK_KHR_sampler_mirror_clamp_to_edge
2620 #endif
2621 #ifdef VK_KHR_multiview
2622 #endif
2623 #ifdef VK_KHR_get_physical_device_properties2
entry_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)2624 static void entry_vkGetPhysicalDeviceFeatures2KHR(
2625     VkPhysicalDevice physicalDevice,
2626     VkPhysicalDeviceFeatures2* pFeatures)
2627 {
2628     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
2629     auto vkEnc = HostConnection::get()->vkEncoder();
2630     vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
2631 }
entry_vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)2632 static void entry_vkGetPhysicalDeviceProperties2KHR(
2633     VkPhysicalDevice physicalDevice,
2634     VkPhysicalDeviceProperties2* pProperties)
2635 {
2636     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
2637     auto vkEnc = HostConnection::get()->vkEncoder();
2638     vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
2639 }
entry_vkGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)2640 static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2641     VkPhysicalDevice physicalDevice,
2642     VkFormat format,
2643     VkFormatProperties2* pFormatProperties)
2644 {
2645     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
2646     auto vkEnc = HostConnection::get()->vkEncoder();
2647     vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
2648 }
entry_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)2649 static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2650     VkPhysicalDevice physicalDevice,
2651     const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2652     VkImageFormatProperties2* pImageFormatProperties)
2653 {
2654     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
2655     auto vkEnc = HostConnection::get()->vkEncoder();
2656     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
2657     auto resources = ResourceTracker::get();
2658     vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
2659     return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2660 }
entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)2661 static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2662     VkPhysicalDevice physicalDevice,
2663     uint32_t* pQueueFamilyPropertyCount,
2664     VkQueueFamilyProperties2* pQueueFamilyProperties)
2665 {
2666     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
2667     auto vkEnc = HostConnection::get()->vkEncoder();
2668     vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2669 }
entry_vkGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)2670 static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2671     VkPhysicalDevice physicalDevice,
2672     VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2673 {
2674     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
2675     auto vkEnc = HostConnection::get()->vkEncoder();
2676     vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
2677 }
entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)2678 static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2679     VkPhysicalDevice physicalDevice,
2680     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2681     uint32_t* pPropertyCount,
2682     VkSparseImageFormatProperties2* pProperties)
2683 {
2684     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
2685     auto vkEnc = HostConnection::get()->vkEncoder();
2686     vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2687 }
2688 #endif
2689 #ifdef VK_KHR_device_group
entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2690 static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2691     VkDevice device,
2692     uint32_t heapIndex,
2693     uint32_t localDeviceIndex,
2694     uint32_t remoteDeviceIndex,
2695     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2696 {
2697     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2698     auto vkEnc = HostConnection::get()->vkEncoder();
2699     vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2700 }
dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2701 static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2702     VkDevice device,
2703     uint32_t heapIndex,
2704     uint32_t localDeviceIndex,
2705     uint32_t remoteDeviceIndex,
2706     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2707 {
2708     auto resources = ResourceTracker::get();
2709     if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2710     {
2711         sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2712     }
2713     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2714     auto vkEnc = HostConnection::get()->vkEncoder();
2715     vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2716 }
entry_vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)2717 static void entry_vkCmdSetDeviceMaskKHR(
2718     VkCommandBuffer commandBuffer,
2719     uint32_t deviceMask)
2720 {
2721     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
2722     auto vkEnc = HostConnection::get()->vkEncoder();
2723     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
2724     vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2725 }
entry_vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)2726 static void entry_vkCmdDispatchBaseKHR(
2727     VkCommandBuffer commandBuffer,
2728     uint32_t baseGroupX,
2729     uint32_t baseGroupY,
2730     uint32_t baseGroupZ,
2731     uint32_t groupCountX,
2732     uint32_t groupCountY,
2733     uint32_t groupCountZ)
2734 {
2735     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
2736     auto vkEnc = HostConnection::get()->vkEncoder();
2737     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
2738     vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2739 }
2740 #endif
2741 #ifdef VK_KHR_shader_draw_parameters
2742 #endif
2743 #ifdef VK_KHR_maintenance1
entry_vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2744 static void entry_vkTrimCommandPoolKHR(
2745     VkDevice device,
2746     VkCommandPool commandPool,
2747     VkCommandPoolTrimFlags flags)
2748 {
2749     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2750     auto vkEnc = HostConnection::get()->vkEncoder();
2751     vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2752 }
dynCheck_entry_vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2753 static void dynCheck_entry_vkTrimCommandPoolKHR(
2754     VkDevice device,
2755     VkCommandPool commandPool,
2756     VkCommandPoolTrimFlags flags)
2757 {
2758     auto resources = ResourceTracker::get();
2759     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2760     {
2761         sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2762     }
2763     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2764     auto vkEnc = HostConnection::get()->vkEncoder();
2765     vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2766 }
2767 #endif
2768 #ifdef VK_KHR_device_group_creation
entry_vkEnumeratePhysicalDeviceGroupsKHR(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)2769 static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2770     VkInstance instance,
2771     uint32_t* pPhysicalDeviceGroupCount,
2772     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2773 {
2774     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
2775     auto vkEnc = HostConnection::get()->vkEncoder();
2776     VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2777     vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
2778     return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2779 }
2780 #endif
2781 #ifdef VK_KHR_external_memory_capabilities
entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)2782 static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2783     VkPhysicalDevice physicalDevice,
2784     const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2785     VkExternalBufferProperties* pExternalBufferProperties)
2786 {
2787     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
2788     auto vkEnc = HostConnection::get()->vkEncoder();
2789     vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2790 }
2791 #endif
2792 #ifdef VK_KHR_external_memory
2793 #endif
2794 #ifdef VK_KHR_external_memory_win32
entry_vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2795 static VkResult entry_vkGetMemoryWin32HandleKHR(
2796     VkDevice device,
2797     const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2798     HANDLE* pHandle)
2799 {
2800     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2801     auto vkEnc = HostConnection::get()->vkEncoder();
2802     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2803     vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2804     return vkGetMemoryWin32HandleKHR_VkResult_return;
2805 }
dynCheck_entry_vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2806 static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2807     VkDevice device,
2808     const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2809     HANDLE* pHandle)
2810 {
2811     auto resources = ResourceTracker::get();
2812     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2813     {
2814         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
2815     }
2816     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2817     auto vkEnc = HostConnection::get()->vkEncoder();
2818     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2819     vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2820     return vkGetMemoryWin32HandleKHR_VkResult_return;
2821 }
entry_vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)2822 static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2823     VkDevice device,
2824     VkExternalMemoryHandleTypeFlagBits handleType,
2825     HANDLE handle,
2826     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2827 {
2828     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
2829     auto vkEnc = HostConnection::get()->vkEncoder();
2830     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2831     vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2832     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2833 }
dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)2834 static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
2835     VkDevice device,
2836     VkExternalMemoryHandleTypeFlagBits handleType,
2837     HANDLE handle,
2838     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2839 {
2840     auto resources = ResourceTracker::get();
2841     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2842     {
2843         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
2844     }
2845     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
2846     auto vkEnc = HostConnection::get()->vkEncoder();
2847     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2848     vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2849     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2850 }
2851 #endif
2852 #ifdef VK_KHR_external_memory_fd
entry_vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)2853 static VkResult entry_vkGetMemoryFdKHR(
2854     VkDevice device,
2855     const VkMemoryGetFdInfoKHR* pGetFdInfo,
2856     int* pFd)
2857 {
2858     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
2859     auto vkEnc = HostConnection::get()->vkEncoder();
2860     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2861     vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2862     return vkGetMemoryFdKHR_VkResult_return;
2863 }
dynCheck_entry_vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)2864 static VkResult dynCheck_entry_vkGetMemoryFdKHR(
2865     VkDevice device,
2866     const VkMemoryGetFdInfoKHR* pGetFdInfo,
2867     int* pFd)
2868 {
2869     auto resources = ResourceTracker::get();
2870     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2871     {
2872         sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
2873     }
2874     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
2875     auto vkEnc = HostConnection::get()->vkEncoder();
2876     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2877     vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2878     return vkGetMemoryFdKHR_VkResult_return;
2879 }
entry_vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)2880 static VkResult entry_vkGetMemoryFdPropertiesKHR(
2881     VkDevice device,
2882     VkExternalMemoryHandleTypeFlagBits handleType,
2883     int fd,
2884     VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2885 {
2886     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
2887     auto vkEnc = HostConnection::get()->vkEncoder();
2888     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2889     vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2890     return vkGetMemoryFdPropertiesKHR_VkResult_return;
2891 }
dynCheck_entry_vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)2892 static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
2893     VkDevice device,
2894     VkExternalMemoryHandleTypeFlagBits handleType,
2895     int fd,
2896     VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2897 {
2898     auto resources = ResourceTracker::get();
2899     if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2900     {
2901         sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
2902     }
2903     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
2904     auto vkEnc = HostConnection::get()->vkEncoder();
2905     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2906     vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2907     return vkGetMemoryFdPropertiesKHR_VkResult_return;
2908 }
2909 #endif
2910 #ifdef VK_KHR_win32_keyed_mutex
2911 #endif
2912 #ifdef VK_KHR_external_semaphore_capabilities
entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)2913 static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2914     VkPhysicalDevice physicalDevice,
2915     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2916     VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2917 {
2918     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
2919     auto vkEnc = HostConnection::get()->vkEncoder();
2920     vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2921 }
2922 #endif
2923 #ifdef VK_KHR_external_semaphore
2924 #endif
2925 #ifdef VK_KHR_external_semaphore_win32
entry_vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)2926 static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2927     VkDevice device,
2928     const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2929 {
2930     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
2931     auto vkEnc = HostConnection::get()->vkEncoder();
2932     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2933     vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2934     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2935 }
dynCheck_entry_vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)2936 static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
2937     VkDevice device,
2938     const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2939 {
2940     auto resources = ResourceTracker::get();
2941     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2942     {
2943         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2944     }
2945     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
2946     auto vkEnc = HostConnection::get()->vkEncoder();
2947     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2948     vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2949     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2950 }
entry_vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2951 static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2952     VkDevice device,
2953     const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2954     HANDLE* pHandle)
2955 {
2956     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
2957     auto vkEnc = HostConnection::get()->vkEncoder();
2958     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2959     vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2960     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2961 }
dynCheck_entry_vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2962 static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
2963     VkDevice device,
2964     const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2965     HANDLE* pHandle)
2966 {
2967     auto resources = ResourceTracker::get();
2968     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2969     {
2970         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2971     }
2972     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
2973     auto vkEnc = HostConnection::get()->vkEncoder();
2974     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2975     vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2976     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2977 }
2978 #endif
2979 #ifdef VK_KHR_external_semaphore_fd
entry_vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)2980 static VkResult entry_vkImportSemaphoreFdKHR(
2981     VkDevice device,
2982     const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2983 {
2984     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
2985     auto vkEnc = HostConnection::get()->vkEncoder();
2986     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
2987     auto resources = ResourceTracker::get();
2988     vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
2989     return vkImportSemaphoreFdKHR_VkResult_return;
2990 }
dynCheck_entry_vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)2991 static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
2992     VkDevice device,
2993     const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2994 {
2995     auto resources = ResourceTracker::get();
2996     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2997     {
2998         sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2999     }
3000     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
3001     auto vkEnc = HostConnection::get()->vkEncoder();
3002     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3003     vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3004     return vkImportSemaphoreFdKHR_VkResult_return;
3005 }
entry_vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3006 static VkResult entry_vkGetSemaphoreFdKHR(
3007     VkDevice device,
3008     const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3009     int* pFd)
3010 {
3011     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3012     auto vkEnc = HostConnection::get()->vkEncoder();
3013     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3014     auto resources = ResourceTracker::get();
3015     vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3016     return vkGetSemaphoreFdKHR_VkResult_return;
3017 }
dynCheck_entry_vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3018 static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3019     VkDevice device,
3020     const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3021     int* pFd)
3022 {
3023     auto resources = ResourceTracker::get();
3024     if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3025     {
3026         sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3027     }
3028     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3029     auto vkEnc = HostConnection::get()->vkEncoder();
3030     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3031     vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3032     return vkGetSemaphoreFdKHR_VkResult_return;
3033 }
3034 #endif
3035 #ifdef VK_KHR_push_descriptor
entry_vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)3036 static void entry_vkCmdPushDescriptorSetKHR(
3037     VkCommandBuffer commandBuffer,
3038     VkPipelineBindPoint pipelineBindPoint,
3039     VkPipelineLayout layout,
3040     uint32_t set,
3041     uint32_t descriptorWriteCount,
3042     const VkWriteDescriptorSet* pDescriptorWrites)
3043 {
3044     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
3045     auto vkEnc = HostConnection::get()->vkEncoder();
3046     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3047     vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3048 }
entry_vkCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)3049 static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3050     VkCommandBuffer commandBuffer,
3051     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3052     VkPipelineLayout layout,
3053     uint32_t set,
3054     const void* pData)
3055 {
3056     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
3057     auto vkEnc = HostConnection::get()->vkEncoder();
3058     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3059     vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3060 }
3061 #endif
3062 #ifdef VK_KHR_16bit_storage
3063 #endif
3064 #ifdef VK_KHR_incremental_present
3065 #endif
3066 #ifdef VK_KHR_descriptor_update_template
entry_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3067 static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3068     VkDevice device,
3069     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3070     const VkAllocationCallbacks* pAllocator,
3071     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3072 {
3073     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3074     auto vkEnc = HostConnection::get()->vkEncoder();
3075     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3076     vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3077     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3078 }
dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3079 static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3080     VkDevice device,
3081     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3082     const VkAllocationCallbacks* pAllocator,
3083     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3084 {
3085     auto resources = ResourceTracker::get();
3086     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3087     {
3088         sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3089     }
3090     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3091     auto vkEnc = HostConnection::get()->vkEncoder();
3092     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3093     vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3094     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3095 }
entry_vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3096 static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3097     VkDevice device,
3098     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3099     const VkAllocationCallbacks* pAllocator)
3100 {
3101     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3102     auto vkEnc = HostConnection::get()->vkEncoder();
3103     vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3104 }
dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3105 static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3106     VkDevice device,
3107     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3108     const VkAllocationCallbacks* pAllocator)
3109 {
3110     auto resources = ResourceTracker::get();
3111     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3112     {
3113         sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3114     }
3115     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3116     auto vkEnc = HostConnection::get()->vkEncoder();
3117     vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3118 }
entry_vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3119 static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3120     VkDevice device,
3121     VkDescriptorSet descriptorSet,
3122     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3123     const void* pData)
3124 {
3125     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3126     auto vkEnc = HostConnection::get()->vkEncoder();
3127     vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3128 }
dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3129 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3130     VkDevice device,
3131     VkDescriptorSet descriptorSet,
3132     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3133     const void* pData)
3134 {
3135     auto resources = ResourceTracker::get();
3136     if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3137     {
3138         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3139     }
3140     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3141     auto vkEnc = HostConnection::get()->vkEncoder();
3142     vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3143 }
3144 #endif
3145 #ifdef VK_KHR_create_renderpass2
entry_vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2KHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3146 static VkResult entry_vkCreateRenderPass2KHR(
3147     VkDevice device,
3148     const VkRenderPassCreateInfo2KHR* pCreateInfo,
3149     const VkAllocationCallbacks* pAllocator,
3150     VkRenderPass* pRenderPass)
3151 {
3152     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3153     auto vkEnc = HostConnection::get()->vkEncoder();
3154     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3155     vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3156     return vkCreateRenderPass2KHR_VkResult_return;
3157 }
dynCheck_entry_vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2KHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3158 static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3159     VkDevice device,
3160     const VkRenderPassCreateInfo2KHR* pCreateInfo,
3161     const VkAllocationCallbacks* pAllocator,
3162     VkRenderPass* pRenderPass)
3163 {
3164     auto resources = ResourceTracker::get();
3165     if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3166     {
3167         sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3168     }
3169     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3170     auto vkEnc = HostConnection::get()->vkEncoder();
3171     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3172     vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3173     return vkCreateRenderPass2KHR_VkResult_return;
3174 }
entry_vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfoKHR * pSubpassBeginInfo)3175 static void entry_vkCmdBeginRenderPass2KHR(
3176     VkCommandBuffer commandBuffer,
3177     const VkRenderPassBeginInfo* pRenderPassBegin,
3178     const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
3179 {
3180     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
3181     auto vkEnc = HostConnection::get()->vkEncoder();
3182     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3183     vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3184 }
entry_vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfoKHR * pSubpassBeginInfo,const VkSubpassEndInfoKHR * pSubpassEndInfo)3185 static void entry_vkCmdNextSubpass2KHR(
3186     VkCommandBuffer commandBuffer,
3187     const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3188     const VkSubpassEndInfoKHR* pSubpassEndInfo)
3189 {
3190     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
3191     auto vkEnc = HostConnection::get()->vkEncoder();
3192     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3193     vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3194 }
entry_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfoKHR * pSubpassEndInfo)3195 static void entry_vkCmdEndRenderPass2KHR(
3196     VkCommandBuffer commandBuffer,
3197     const VkSubpassEndInfoKHR* pSubpassEndInfo)
3198 {
3199     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
3200     auto vkEnc = HostConnection::get()->vkEncoder();
3201     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3202     vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3203 }
3204 #endif
3205 #ifdef VK_KHR_shared_presentable_image
entry_vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3206 static VkResult entry_vkGetSwapchainStatusKHR(
3207     VkDevice device,
3208     VkSwapchainKHR swapchain)
3209 {
3210     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3211     auto vkEnc = HostConnection::get()->vkEncoder();
3212     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3213     vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3214     return vkGetSwapchainStatusKHR_VkResult_return;
3215 }
dynCheck_entry_vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3216 static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3217     VkDevice device,
3218     VkSwapchainKHR swapchain)
3219 {
3220     auto resources = ResourceTracker::get();
3221     if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3222     {
3223         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3224     }
3225     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3226     auto vkEnc = HostConnection::get()->vkEncoder();
3227     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3228     vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3229     return vkGetSwapchainStatusKHR_VkResult_return;
3230 }
3231 #endif
3232 #ifdef VK_KHR_external_fence_capabilities
entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)3233 static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3234     VkPhysicalDevice physicalDevice,
3235     const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3236     VkExternalFenceProperties* pExternalFenceProperties)
3237 {
3238     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
3239     auto vkEnc = HostConnection::get()->vkEncoder();
3240     auto resources = ResourceTracker::get();
3241     resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
3242 }
3243 #endif
3244 #ifdef VK_KHR_external_fence
3245 #endif
3246 #ifdef VK_KHR_external_fence_win32
entry_vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3247 static VkResult entry_vkImportFenceWin32HandleKHR(
3248     VkDevice device,
3249     const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3250 {
3251     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3252     auto vkEnc = HostConnection::get()->vkEncoder();
3253     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3254     vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3255     return vkImportFenceWin32HandleKHR_VkResult_return;
3256 }
dynCheck_entry_vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3257 static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3258     VkDevice device,
3259     const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3260 {
3261     auto resources = ResourceTracker::get();
3262     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3263     {
3264         sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3265     }
3266     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3267     auto vkEnc = HostConnection::get()->vkEncoder();
3268     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3269     vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3270     return vkImportFenceWin32HandleKHR_VkResult_return;
3271 }
entry_vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3272 static VkResult entry_vkGetFenceWin32HandleKHR(
3273     VkDevice device,
3274     const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3275     HANDLE* pHandle)
3276 {
3277     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3278     auto vkEnc = HostConnection::get()->vkEncoder();
3279     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3280     vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3281     return vkGetFenceWin32HandleKHR_VkResult_return;
3282 }
dynCheck_entry_vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3283 static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3284     VkDevice device,
3285     const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3286     HANDLE* pHandle)
3287 {
3288     auto resources = ResourceTracker::get();
3289     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3290     {
3291         sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3292     }
3293     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3294     auto vkEnc = HostConnection::get()->vkEncoder();
3295     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3296     vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3297     return vkGetFenceWin32HandleKHR_VkResult_return;
3298 }
3299 #endif
3300 #ifdef VK_KHR_external_fence_fd
entry_vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3301 static VkResult entry_vkImportFenceFdKHR(
3302     VkDevice device,
3303     const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3304 {
3305     AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3306     auto vkEnc = HostConnection::get()->vkEncoder();
3307     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3308     auto resources = ResourceTracker::get();
3309     vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3310     return vkImportFenceFdKHR_VkResult_return;
3311 }
dynCheck_entry_vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3312 static VkResult dynCheck_entry_vkImportFenceFdKHR(
3313     VkDevice device,
3314     const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3315 {
3316     auto resources = ResourceTracker::get();
3317     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3318     {
3319         sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3320     }
3321     AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3322     auto vkEnc = HostConnection::get()->vkEncoder();
3323     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3324     vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3325     return vkImportFenceFdKHR_VkResult_return;
3326 }
entry_vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3327 static VkResult entry_vkGetFenceFdKHR(
3328     VkDevice device,
3329     const VkFenceGetFdInfoKHR* pGetFdInfo,
3330     int* pFd)
3331 {
3332     AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3333     auto vkEnc = HostConnection::get()->vkEncoder();
3334     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3335     auto resources = ResourceTracker::get();
3336     vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3337     return vkGetFenceFdKHR_VkResult_return;
3338 }
dynCheck_entry_vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3339 static VkResult dynCheck_entry_vkGetFenceFdKHR(
3340     VkDevice device,
3341     const VkFenceGetFdInfoKHR* pGetFdInfo,
3342     int* pFd)
3343 {
3344     auto resources = ResourceTracker::get();
3345     if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3346     {
3347         sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3348     }
3349     AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3350     auto vkEnc = HostConnection::get()->vkEncoder();
3351     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3352     vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3353     return vkGetFenceFdKHR_VkResult_return;
3354 }
3355 #endif
3356 #ifdef VK_KHR_maintenance2
3357 #endif
3358 #ifdef VK_KHR_get_surface_capabilities2
entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkSurfaceCapabilities2KHR * pSurfaceCapabilities)3359 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3360     VkPhysicalDevice physicalDevice,
3361     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3362     VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3363 {
3364     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
3365     auto vkEnc = HostConnection::get()->vkEncoder();
3366     VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3367     vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
3368     return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3369 }
entry_vkGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pSurfaceFormatCount,VkSurfaceFormat2KHR * pSurfaceFormats)3370 static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3371     VkPhysicalDevice physicalDevice,
3372     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3373     uint32_t* pSurfaceFormatCount,
3374     VkSurfaceFormat2KHR* pSurfaceFormats)
3375 {
3376     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
3377     auto vkEnc = HostConnection::get()->vkEncoder();
3378     VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3379     vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
3380     return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3381 }
3382 #endif
3383 #ifdef VK_KHR_variable_pointers
3384 #endif
3385 #ifdef VK_KHR_get_display_properties2
entry_vkGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayProperties2KHR * pProperties)3386 static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3387     VkPhysicalDevice physicalDevice,
3388     uint32_t* pPropertyCount,
3389     VkDisplayProperties2KHR* pProperties)
3390 {
3391     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
3392     auto vkEnc = HostConnection::get()->vkEncoder();
3393     VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3394     vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3395     return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3396 }
entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlaneProperties2KHR * pProperties)3397 static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3398     VkPhysicalDevice physicalDevice,
3399     uint32_t* pPropertyCount,
3400     VkDisplayPlaneProperties2KHR* pProperties)
3401 {
3402     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
3403     auto vkEnc = HostConnection::get()->vkEncoder();
3404     VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3405     vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3406     return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3407 }
entry_vkGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModeProperties2KHR * pProperties)3408 static VkResult entry_vkGetDisplayModeProperties2KHR(
3409     VkPhysicalDevice physicalDevice,
3410     VkDisplayKHR display,
3411     uint32_t* pPropertyCount,
3412     VkDisplayModeProperties2KHR* pProperties)
3413 {
3414     AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
3415     auto vkEnc = HostConnection::get()->vkEncoder();
3416     VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3417     vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
3418     return vkGetDisplayModeProperties2KHR_VkResult_return;
3419 }
entry_vkGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo,VkDisplayPlaneCapabilities2KHR * pCapabilities)3420 static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3421     VkPhysicalDevice physicalDevice,
3422     const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3423     VkDisplayPlaneCapabilities2KHR* pCapabilities)
3424 {
3425     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
3426     auto vkEnc = HostConnection::get()->vkEncoder();
3427     VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3428     vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
3429     return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3430 }
3431 #endif
3432 #ifdef VK_KHR_dedicated_allocation
3433 #endif
3434 #ifdef VK_KHR_storage_buffer_storage_class
3435 #endif
3436 #ifdef VK_KHR_relaxed_block_layout
3437 #endif
3438 #ifdef VK_KHR_get_memory_requirements2
entry_vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3439 static void entry_vkGetImageMemoryRequirements2KHR(
3440     VkDevice device,
3441     const VkImageMemoryRequirementsInfo2* pInfo,
3442     VkMemoryRequirements2* pMemoryRequirements)
3443 {
3444     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3445     auto vkEnc = HostConnection::get()->vkEncoder();
3446     auto resources = ResourceTracker::get();
3447     resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3448 }
dynCheck_entry_vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3449 static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3450     VkDevice device,
3451     const VkImageMemoryRequirementsInfo2* pInfo,
3452     VkMemoryRequirements2* pMemoryRequirements)
3453 {
3454     auto resources = ResourceTracker::get();
3455     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3456     {
3457         sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3458     }
3459     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3460     auto vkEnc = HostConnection::get()->vkEncoder();
3461     resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3462 }
entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3463 static void entry_vkGetBufferMemoryRequirements2KHR(
3464     VkDevice device,
3465     const VkBufferMemoryRequirementsInfo2* pInfo,
3466     VkMemoryRequirements2* pMemoryRequirements)
3467 {
3468     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3469     auto vkEnc = HostConnection::get()->vkEncoder();
3470     auto resources = ResourceTracker::get();
3471     resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3472 }
dynCheck_entry_vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3473 static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3474     VkDevice device,
3475     const VkBufferMemoryRequirementsInfo2* pInfo,
3476     VkMemoryRequirements2* pMemoryRequirements)
3477 {
3478     auto resources = ResourceTracker::get();
3479     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3480     {
3481         sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3482     }
3483     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3484     auto vkEnc = HostConnection::get()->vkEncoder();
3485     resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3486 }
entry_vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3487 static void entry_vkGetImageSparseMemoryRequirements2KHR(
3488     VkDevice device,
3489     const VkImageSparseMemoryRequirementsInfo2* pInfo,
3490     uint32_t* pSparseMemoryRequirementCount,
3491     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3492 {
3493     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3494     auto vkEnc = HostConnection::get()->vkEncoder();
3495     vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3496 }
dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3497 static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3498     VkDevice device,
3499     const VkImageSparseMemoryRequirementsInfo2* pInfo,
3500     uint32_t* pSparseMemoryRequirementCount,
3501     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3502 {
3503     auto resources = ResourceTracker::get();
3504     if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3505     {
3506         sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3507     }
3508     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3509     auto vkEnc = HostConnection::get()->vkEncoder();
3510     vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3511 }
3512 #endif
3513 #ifdef VK_KHR_image_format_list
3514 #endif
3515 #ifdef VK_KHR_sampler_ycbcr_conversion
entry_vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3516 static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3517     VkDevice device,
3518     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3519     const VkAllocationCallbacks* pAllocator,
3520     VkSamplerYcbcrConversion* pYcbcrConversion)
3521 {
3522     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3523     auto vkEnc = HostConnection::get()->vkEncoder();
3524     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3525     auto resources = ResourceTracker::get();
3526     vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3527     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3528 }
dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3529 static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3530     VkDevice device,
3531     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3532     const VkAllocationCallbacks* pAllocator,
3533     VkSamplerYcbcrConversion* pYcbcrConversion)
3534 {
3535     auto resources = ResourceTracker::get();
3536     if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3537     {
3538         sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3539     }
3540     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3541     auto vkEnc = HostConnection::get()->vkEncoder();
3542     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3543     vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3544     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3545 }
entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3546 static void entry_vkDestroySamplerYcbcrConversionKHR(
3547     VkDevice device,
3548     VkSamplerYcbcrConversion ycbcrConversion,
3549     const VkAllocationCallbacks* pAllocator)
3550 {
3551     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3552     auto vkEnc = HostConnection::get()->vkEncoder();
3553     auto resources = ResourceTracker::get();
3554     resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3555 }
dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3556 static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3557     VkDevice device,
3558     VkSamplerYcbcrConversion ycbcrConversion,
3559     const VkAllocationCallbacks* pAllocator)
3560 {
3561     auto resources = ResourceTracker::get();
3562     if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3563     {
3564         sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3565     }
3566     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3567     auto vkEnc = HostConnection::get()->vkEncoder();
3568     resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3569 }
3570 #endif
3571 #ifdef VK_KHR_bind_memory2
entry_vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3572 static VkResult entry_vkBindBufferMemory2KHR(
3573     VkDevice device,
3574     uint32_t bindInfoCount,
3575     const VkBindBufferMemoryInfo* pBindInfos)
3576 {
3577     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3578     auto vkEnc = HostConnection::get()->vkEncoder();
3579     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3580     auto resources = ResourceTracker::get();
3581     vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3582     return vkBindBufferMemory2KHR_VkResult_return;
3583 }
dynCheck_entry_vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3584 static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3585     VkDevice device,
3586     uint32_t bindInfoCount,
3587     const VkBindBufferMemoryInfo* pBindInfos)
3588 {
3589     auto resources = ResourceTracker::get();
3590     if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3591     {
3592         sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3593     }
3594     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3595     auto vkEnc = HostConnection::get()->vkEncoder();
3596     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3597     vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3598     return vkBindBufferMemory2KHR_VkResult_return;
3599 }
entry_vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3600 static VkResult entry_vkBindImageMemory2KHR(
3601     VkDevice device,
3602     uint32_t bindInfoCount,
3603     const VkBindImageMemoryInfo* pBindInfos)
3604 {
3605     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3606     auto vkEnc = HostConnection::get()->vkEncoder();
3607     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3608     auto resources = ResourceTracker::get();
3609     vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3610     return vkBindImageMemory2KHR_VkResult_return;
3611 }
dynCheck_entry_vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3612 static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3613     VkDevice device,
3614     uint32_t bindInfoCount,
3615     const VkBindImageMemoryInfo* pBindInfos)
3616 {
3617     auto resources = ResourceTracker::get();
3618     if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3619     {
3620         sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3621     }
3622     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3623     auto vkEnc = HostConnection::get()->vkEncoder();
3624     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3625     vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3626     return vkBindImageMemory2KHR_VkResult_return;
3627 }
3628 #endif
3629 #ifdef VK_KHR_maintenance3
entry_vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3630 static void entry_vkGetDescriptorSetLayoutSupportKHR(
3631     VkDevice device,
3632     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3633     VkDescriptorSetLayoutSupport* pSupport)
3634 {
3635     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3636     auto vkEnc = HostConnection::get()->vkEncoder();
3637     vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3638 }
dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3639 static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3640     VkDevice device,
3641     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3642     VkDescriptorSetLayoutSupport* pSupport)
3643 {
3644     auto resources = ResourceTracker::get();
3645     if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3646     {
3647         sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3648     }
3649     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3650     auto vkEnc = HostConnection::get()->vkEncoder();
3651     vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3652 }
3653 #endif
3654 #ifdef VK_KHR_draw_indirect_count
entry_vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3655 static void entry_vkCmdDrawIndirectCountKHR(
3656     VkCommandBuffer commandBuffer,
3657     VkBuffer buffer,
3658     VkDeviceSize offset,
3659     VkBuffer countBuffer,
3660     VkDeviceSize countBufferOffset,
3661     uint32_t maxDrawCount,
3662     uint32_t stride)
3663 {
3664     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
3665     auto vkEnc = HostConnection::get()->vkEncoder();
3666     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3667     vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3668 }
entry_vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3669 static void entry_vkCmdDrawIndexedIndirectCountKHR(
3670     VkCommandBuffer commandBuffer,
3671     VkBuffer buffer,
3672     VkDeviceSize offset,
3673     VkBuffer countBuffer,
3674     VkDeviceSize countBufferOffset,
3675     uint32_t maxDrawCount,
3676     uint32_t stride)
3677 {
3678     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
3679     auto vkEnc = HostConnection::get()->vkEncoder();
3680     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3681     vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3682 }
3683 #endif
3684 #ifdef VK_KHR_8bit_storage
3685 #endif
3686 #ifdef VK_KHR_shader_float16_int8
3687 #endif
3688 #ifdef VK_ANDROID_native_buffer
entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)3689 static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3690     VkDevice device,
3691     VkFormat format,
3692     VkImageUsageFlags imageUsage,
3693     int* grallocUsage)
3694 {
3695     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3696     auto vkEnc = HostConnection::get()->vkEncoder();
3697     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3698     vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3699     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3700 }
dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)3701 static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3702     VkDevice device,
3703     VkFormat format,
3704     VkImageUsageFlags imageUsage,
3705     int* grallocUsage)
3706 {
3707     auto resources = ResourceTracker::get();
3708     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3709     {
3710         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3711     }
3712     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3713     auto vkEnc = HostConnection::get()->vkEncoder();
3714     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3715     vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3716     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3717 }
entry_vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)3718 static VkResult entry_vkAcquireImageANDROID(
3719     VkDevice device,
3720     VkImage image,
3721     int nativeFenceFd,
3722     VkSemaphore semaphore,
3723     VkFence fence)
3724 {
3725     AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3726     auto vkEnc = HostConnection::get()->vkEncoder();
3727     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3728     vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3729     return vkAcquireImageANDROID_VkResult_return;
3730 }
dynCheck_entry_vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)3731 static VkResult dynCheck_entry_vkAcquireImageANDROID(
3732     VkDevice device,
3733     VkImage image,
3734     int nativeFenceFd,
3735     VkSemaphore semaphore,
3736     VkFence fence)
3737 {
3738     auto resources = ResourceTracker::get();
3739     if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3740     {
3741         sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3742     }
3743     AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3744     auto vkEnc = HostConnection::get()->vkEncoder();
3745     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3746     vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3747     return vkAcquireImageANDROID_VkResult_return;
3748 }
entry_vkQueueSignalReleaseImageANDROID(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int * pNativeFenceFd)3749 static VkResult entry_vkQueueSignalReleaseImageANDROID(
3750     VkQueue queue,
3751     uint32_t waitSemaphoreCount,
3752     const VkSemaphore* pWaitSemaphores,
3753     VkImage image,
3754     int* pNativeFenceFd)
3755 {
3756     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
3757     auto vkEnc = HostConnection::get()->vkEncoder();
3758     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
3759     VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3760     vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
3761     return vkQueueSignalReleaseImageANDROID_VkResult_return;
3762 }
3763 #endif
3764 #ifdef VK_EXT_debug_report
entry_vkCreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugReportCallbackEXT * pCallback)3765 static VkResult entry_vkCreateDebugReportCallbackEXT(
3766     VkInstance instance,
3767     const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3768     const VkAllocationCallbacks* pAllocator,
3769     VkDebugReportCallbackEXT* pCallback)
3770 {
3771     AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
3772     auto vkEnc = HostConnection::get()->vkEncoder();
3773     VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
3774     vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
3775     return vkCreateDebugReportCallbackEXT_VkResult_return;
3776 }
entry_vkDestroyDebugReportCallbackEXT(VkInstance instance,VkDebugReportCallbackEXT callback,const VkAllocationCallbacks * pAllocator)3777 static void entry_vkDestroyDebugReportCallbackEXT(
3778     VkInstance instance,
3779     VkDebugReportCallbackEXT callback,
3780     const VkAllocationCallbacks* pAllocator)
3781 {
3782     AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
3783     auto vkEnc = HostConnection::get()->vkEncoder();
3784     vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
3785 }
entry_vkDebugReportMessageEXT(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const char * pLayerPrefix,const char * pMessage)3786 static void entry_vkDebugReportMessageEXT(
3787     VkInstance instance,
3788     VkDebugReportFlagsEXT flags,
3789     VkDebugReportObjectTypeEXT objectType,
3790     uint64_t object,
3791     size_t location,
3792     int32_t messageCode,
3793     const char* pLayerPrefix,
3794     const char* pMessage)
3795 {
3796     AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
3797     auto vkEnc = HostConnection::get()->vkEncoder();
3798     vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
3799 }
3800 #endif
3801 #ifdef VK_NV_glsl_shader
3802 #endif
3803 #ifdef VK_EXT_depth_range_unrestricted
3804 #endif
3805 #ifdef VK_IMG_filter_cubic
3806 #endif
3807 #ifdef VK_AMD_rasterization_order
3808 #endif
3809 #ifdef VK_AMD_shader_trinary_minmax
3810 #endif
3811 #ifdef VK_AMD_shader_explicit_vertex_parameter
3812 #endif
3813 #ifdef VK_EXT_debug_marker
entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)3814 static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3815     VkDevice device,
3816     const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3817 {
3818     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3819     auto vkEnc = HostConnection::get()->vkEncoder();
3820     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3821     vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3822     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3823 }
dynCheck_entry_vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)3824 static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3825     VkDevice device,
3826     const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3827 {
3828     auto resources = ResourceTracker::get();
3829     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3830     {
3831         sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3832     }
3833     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3834     auto vkEnc = HostConnection::get()->vkEncoder();
3835     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3836     vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3837     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3838 }
entry_vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)3839 static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3840     VkDevice device,
3841     const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3842 {
3843     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3844     auto vkEnc = HostConnection::get()->vkEncoder();
3845     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3846     vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3847     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3848 }
dynCheck_entry_vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)3849 static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3850     VkDevice device,
3851     const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3852 {
3853     auto resources = ResourceTracker::get();
3854     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3855     {
3856         sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3857     }
3858     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3859     auto vkEnc = HostConnection::get()->vkEncoder();
3860     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3861     vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3862     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3863 }
entry_vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)3864 static void entry_vkCmdDebugMarkerBeginEXT(
3865     VkCommandBuffer commandBuffer,
3866     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3867 {
3868     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
3869     auto vkEnc = HostConnection::get()->vkEncoder();
3870     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3871     vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3872 }
entry_vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)3873 static void entry_vkCmdDebugMarkerEndEXT(
3874     VkCommandBuffer commandBuffer)
3875 {
3876     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
3877     auto vkEnc = HostConnection::get()->vkEncoder();
3878     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3879     vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer);
3880 }
entry_vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)3881 static void entry_vkCmdDebugMarkerInsertEXT(
3882     VkCommandBuffer commandBuffer,
3883     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3884 {
3885     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
3886     auto vkEnc = HostConnection::get()->vkEncoder();
3887     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3888     vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3889 }
3890 #endif
3891 #ifdef VK_AMD_gcn_shader
3892 #endif
3893 #ifdef VK_NV_dedicated_allocation
3894 #endif
3895 #ifdef VK_AMD_draw_indirect_count
entry_vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3896 static void entry_vkCmdDrawIndirectCountAMD(
3897     VkCommandBuffer commandBuffer,
3898     VkBuffer buffer,
3899     VkDeviceSize offset,
3900     VkBuffer countBuffer,
3901     VkDeviceSize countBufferOffset,
3902     uint32_t maxDrawCount,
3903     uint32_t stride)
3904 {
3905     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
3906     auto vkEnc = HostConnection::get()->vkEncoder();
3907     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3908     vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3909 }
entry_vkCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3910 static void entry_vkCmdDrawIndexedIndirectCountAMD(
3911     VkCommandBuffer commandBuffer,
3912     VkBuffer buffer,
3913     VkDeviceSize offset,
3914     VkBuffer countBuffer,
3915     VkDeviceSize countBufferOffset,
3916     uint32_t maxDrawCount,
3917     uint32_t stride)
3918 {
3919     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
3920     auto vkEnc = HostConnection::get()->vkEncoder();
3921     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3922     vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3923 }
3924 #endif
3925 #ifdef VK_AMD_negative_viewport_height
3926 #endif
3927 #ifdef VK_AMD_gpu_shader_half_float
3928 #endif
3929 #ifdef VK_AMD_shader_ballot
3930 #endif
3931 #ifdef VK_AMD_texture_gather_bias_lod
3932 #endif
3933 #ifdef VK_AMD_shader_info
entry_vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)3934 static VkResult entry_vkGetShaderInfoAMD(
3935     VkDevice device,
3936     VkPipeline pipeline,
3937     VkShaderStageFlagBits shaderStage,
3938     VkShaderInfoTypeAMD infoType,
3939     size_t* pInfoSize,
3940     void* pInfo)
3941 {
3942     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3943     auto vkEnc = HostConnection::get()->vkEncoder();
3944     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3945     vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3946     return vkGetShaderInfoAMD_VkResult_return;
3947 }
dynCheck_entry_vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)3948 static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3949     VkDevice device,
3950     VkPipeline pipeline,
3951     VkShaderStageFlagBits shaderStage,
3952     VkShaderInfoTypeAMD infoType,
3953     size_t* pInfoSize,
3954     void* pInfo)
3955 {
3956     auto resources = ResourceTracker::get();
3957     if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3958     {
3959         sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3960     }
3961     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3962     auto vkEnc = HostConnection::get()->vkEncoder();
3963     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3964     vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3965     return vkGetShaderInfoAMD_VkResult_return;
3966 }
3967 #endif
3968 #ifdef VK_AMD_shader_image_load_store_lod
3969 #endif
3970 #ifdef VK_IMG_format_pvrtc
3971 #endif
3972 #ifdef VK_NV_external_memory_capabilities
entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkExternalMemoryHandleTypeFlagsNV externalHandleType,VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties)3973 static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3974     VkPhysicalDevice physicalDevice,
3975     VkFormat format,
3976     VkImageType type,
3977     VkImageTiling tiling,
3978     VkImageUsageFlags usage,
3979     VkImageCreateFlags flags,
3980     VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3981     VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3982 {
3983     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
3984     auto vkEnc = HostConnection::get()->vkEncoder();
3985     VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3986     vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3987     return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3988 }
3989 #endif
3990 #ifdef VK_NV_external_memory
3991 #endif
3992 #ifdef VK_NV_external_memory_win32
entry_vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)3993 static VkResult entry_vkGetMemoryWin32HandleNV(
3994     VkDevice device,
3995     VkDeviceMemory memory,
3996     VkExternalMemoryHandleTypeFlagsNV handleType,
3997     HANDLE* pHandle)
3998 {
3999     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4000     auto vkEnc = HostConnection::get()->vkEncoder();
4001     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4002     vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4003     return vkGetMemoryWin32HandleNV_VkResult_return;
4004 }
dynCheck_entry_vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)4005 static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4006     VkDevice device,
4007     VkDeviceMemory memory,
4008     VkExternalMemoryHandleTypeFlagsNV handleType,
4009     HANDLE* pHandle)
4010 {
4011     auto resources = ResourceTracker::get();
4012     if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4013     {
4014         sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4015     }
4016     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4017     auto vkEnc = HostConnection::get()->vkEncoder();
4018     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4019     vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4020     return vkGetMemoryWin32HandleNV_VkResult_return;
4021 }
4022 #endif
4023 #ifdef VK_NV_win32_keyed_mutex
4024 #endif
4025 #ifdef VK_EXT_validation_flags
4026 #endif
4027 #ifdef VK_NN_vi_surface
entry_vkCreateViSurfaceNN(VkInstance instance,const VkViSurfaceCreateInfoNN * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)4028 static VkResult entry_vkCreateViSurfaceNN(
4029     VkInstance instance,
4030     const VkViSurfaceCreateInfoNN* pCreateInfo,
4031     const VkAllocationCallbacks* pAllocator,
4032     VkSurfaceKHR* pSurface)
4033 {
4034     AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
4035     auto vkEnc = HostConnection::get()->vkEncoder();
4036     VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4037     vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
4038     return vkCreateViSurfaceNN_VkResult_return;
4039 }
4040 #endif
4041 #ifdef VK_EXT_shader_subgroup_ballot
4042 #endif
4043 #ifdef VK_EXT_shader_subgroup_vote
4044 #endif
4045 #ifdef VK_EXT_conditional_rendering
entry_vkCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)4046 static void entry_vkCmdBeginConditionalRenderingEXT(
4047     VkCommandBuffer commandBuffer,
4048     const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4049 {
4050     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
4051     auto vkEnc = HostConnection::get()->vkEncoder();
4052     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4053     vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4054 }
entry_vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)4055 static void entry_vkCmdEndConditionalRenderingEXT(
4056     VkCommandBuffer commandBuffer)
4057 {
4058     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
4059     auto vkEnc = HostConnection::get()->vkEncoder();
4060     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4061     vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
4062 }
4063 #endif
4064 #ifdef VK_NVX_device_generated_commands
entry_vkCmdProcessCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdProcessCommandsInfoNVX * pProcessCommandsInfo)4065 static void entry_vkCmdProcessCommandsNVX(
4066     VkCommandBuffer commandBuffer,
4067     const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4068 {
4069     AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
4070     auto vkEnc = HostConnection::get()->vkEncoder();
4071     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4072     vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
4073 }
entry_vkCmdReserveSpaceForCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdReserveSpaceForCommandsInfoNVX * pReserveSpaceInfo)4074 static void entry_vkCmdReserveSpaceForCommandsNVX(
4075     VkCommandBuffer commandBuffer,
4076     const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4077 {
4078     AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
4079     auto vkEnc = HostConnection::get()->vkEncoder();
4080     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4081     vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
4082 }
entry_vkCreateIndirectCommandsLayoutNVX(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNVX * pIndirectCommandsLayout)4083 static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4084     VkDevice device,
4085     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4086     const VkAllocationCallbacks* pAllocator,
4087     VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4088 {
4089     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4090     auto vkEnc = HostConnection::get()->vkEncoder();
4091     VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4092     vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4093     return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4094 }
dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNVX * pIndirectCommandsLayout)4095 static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4096     VkDevice device,
4097     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4098     const VkAllocationCallbacks* pAllocator,
4099     VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4100 {
4101     auto resources = ResourceTracker::get();
4102     if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4103     {
4104         sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4105     }
4106     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4107     auto vkEnc = HostConnection::get()->vkEncoder();
4108     VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4109     vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4110     return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4111 }
entry_vkDestroyIndirectCommandsLayoutNVX(VkDevice device,VkIndirectCommandsLayoutNVX indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)4112 static void entry_vkDestroyIndirectCommandsLayoutNVX(
4113     VkDevice device,
4114     VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4115     const VkAllocationCallbacks* pAllocator)
4116 {
4117     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4118     auto vkEnc = HostConnection::get()->vkEncoder();
4119     vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4120 }
dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(VkDevice device,VkIndirectCommandsLayoutNVX indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)4121 static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4122     VkDevice device,
4123     VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4124     const VkAllocationCallbacks* pAllocator)
4125 {
4126     auto resources = ResourceTracker::get();
4127     if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4128     {
4129         sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4130     }
4131     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4132     auto vkEnc = HostConnection::get()->vkEncoder();
4133     vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4134 }
entry_vkCreateObjectTableNVX(VkDevice device,const VkObjectTableCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkObjectTableNVX * pObjectTable)4135 static VkResult entry_vkCreateObjectTableNVX(
4136     VkDevice device,
4137     const VkObjectTableCreateInfoNVX* pCreateInfo,
4138     const VkAllocationCallbacks* pAllocator,
4139     VkObjectTableNVX* pObjectTable)
4140 {
4141     AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4142     auto vkEnc = HostConnection::get()->vkEncoder();
4143     VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4144     vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4145     return vkCreateObjectTableNVX_VkResult_return;
4146 }
dynCheck_entry_vkCreateObjectTableNVX(VkDevice device,const VkObjectTableCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkObjectTableNVX * pObjectTable)4147 static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4148     VkDevice device,
4149     const VkObjectTableCreateInfoNVX* pCreateInfo,
4150     const VkAllocationCallbacks* pAllocator,
4151     VkObjectTableNVX* pObjectTable)
4152 {
4153     auto resources = ResourceTracker::get();
4154     if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4155     {
4156         sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4157     }
4158     AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4159     auto vkEnc = HostConnection::get()->vkEncoder();
4160     VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4161     vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4162     return vkCreateObjectTableNVX_VkResult_return;
4163 }
entry_vkDestroyObjectTableNVX(VkDevice device,VkObjectTableNVX objectTable,const VkAllocationCallbacks * pAllocator)4164 static void entry_vkDestroyObjectTableNVX(
4165     VkDevice device,
4166     VkObjectTableNVX objectTable,
4167     const VkAllocationCallbacks* pAllocator)
4168 {
4169     AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4170     auto vkEnc = HostConnection::get()->vkEncoder();
4171     vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4172 }
dynCheck_entry_vkDestroyObjectTableNVX(VkDevice device,VkObjectTableNVX objectTable,const VkAllocationCallbacks * pAllocator)4173 static void dynCheck_entry_vkDestroyObjectTableNVX(
4174     VkDevice device,
4175     VkObjectTableNVX objectTable,
4176     const VkAllocationCallbacks* pAllocator)
4177 {
4178     auto resources = ResourceTracker::get();
4179     if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4180     {
4181         sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4182     }
4183     AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4184     auto vkEnc = HostConnection::get()->vkEncoder();
4185     vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4186 }
entry_vkRegisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectTableEntryNVX * const * ppObjectTableEntries,const uint32_t * pObjectIndices)4187 static VkResult entry_vkRegisterObjectsNVX(
4188     VkDevice device,
4189     VkObjectTableNVX objectTable,
4190     uint32_t objectCount,
4191     const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4192     const uint32_t* pObjectIndices)
4193 {
4194     AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4195     auto vkEnc = HostConnection::get()->vkEncoder();
4196     VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4197     vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4198     return vkRegisterObjectsNVX_VkResult_return;
4199 }
dynCheck_entry_vkRegisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectTableEntryNVX * const * ppObjectTableEntries,const uint32_t * pObjectIndices)4200 static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4201     VkDevice device,
4202     VkObjectTableNVX objectTable,
4203     uint32_t objectCount,
4204     const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4205     const uint32_t* pObjectIndices)
4206 {
4207     auto resources = ResourceTracker::get();
4208     if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4209     {
4210         sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4211     }
4212     AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4213     auto vkEnc = HostConnection::get()->vkEncoder();
4214     VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4215     vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4216     return vkRegisterObjectsNVX_VkResult_return;
4217 }
entry_vkUnregisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectEntryTypeNVX * pObjectEntryTypes,const uint32_t * pObjectIndices)4218 static VkResult entry_vkUnregisterObjectsNVX(
4219     VkDevice device,
4220     VkObjectTableNVX objectTable,
4221     uint32_t objectCount,
4222     const VkObjectEntryTypeNVX* pObjectEntryTypes,
4223     const uint32_t* pObjectIndices)
4224 {
4225     AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4226     auto vkEnc = HostConnection::get()->vkEncoder();
4227     VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4228     vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4229     return vkUnregisterObjectsNVX_VkResult_return;
4230 }
dynCheck_entry_vkUnregisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectEntryTypeNVX * pObjectEntryTypes,const uint32_t * pObjectIndices)4231 static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4232     VkDevice device,
4233     VkObjectTableNVX objectTable,
4234     uint32_t objectCount,
4235     const VkObjectEntryTypeNVX* pObjectEntryTypes,
4236     const uint32_t* pObjectIndices)
4237 {
4238     auto resources = ResourceTracker::get();
4239     if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4240     {
4241         sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4242     }
4243     AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4244     auto vkEnc = HostConnection::get()->vkEncoder();
4245     VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4246     vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4247     return vkUnregisterObjectsNVX_VkResult_return;
4248 }
entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(VkPhysicalDevice physicalDevice,VkDeviceGeneratedCommandsFeaturesNVX * pFeatures,VkDeviceGeneratedCommandsLimitsNVX * pLimits)4249 static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4250     VkPhysicalDevice physicalDevice,
4251     VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4252     VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4253 {
4254     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
4255     auto vkEnc = HostConnection::get()->vkEncoder();
4256     vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
4257 }
4258 #endif
4259 #ifdef VK_NV_clip_space_w_scaling
entry_vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)4260 static void entry_vkCmdSetViewportWScalingNV(
4261     VkCommandBuffer commandBuffer,
4262     uint32_t firstViewport,
4263     uint32_t viewportCount,
4264     const VkViewportWScalingNV* pViewportWScalings)
4265 {
4266     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
4267     auto vkEnc = HostConnection::get()->vkEncoder();
4268     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4269     vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4270 }
4271 #endif
4272 #ifdef VK_EXT_direct_mode_display
entry_vkReleaseDisplayEXT(VkPhysicalDevice physicalDevice,VkDisplayKHR display)4273 static VkResult entry_vkReleaseDisplayEXT(
4274     VkPhysicalDevice physicalDevice,
4275     VkDisplayKHR display)
4276 {
4277     AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
4278     auto vkEnc = HostConnection::get()->vkEncoder();
4279     VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4280     vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
4281     return vkReleaseDisplayEXT_VkResult_return;
4282 }
4283 #endif
4284 #ifdef VK_EXT_acquire_xlib_display
entry_vkAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,VkDisplayKHR display)4285 static VkResult entry_vkAcquireXlibDisplayEXT(
4286     VkPhysicalDevice physicalDevice,
4287     Display* dpy,
4288     VkDisplayKHR display)
4289 {
4290     AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
4291     auto vkEnc = HostConnection::get()->vkEncoder();
4292     VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4293     vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
4294     return vkAcquireXlibDisplayEXT_VkResult_return;
4295 }
entry_vkGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,RROutput rrOutput,VkDisplayKHR * pDisplay)4296 static VkResult entry_vkGetRandROutputDisplayEXT(
4297     VkPhysicalDevice physicalDevice,
4298     Display* dpy,
4299     RROutput rrOutput,
4300     VkDisplayKHR* pDisplay)
4301 {
4302     AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
4303     auto vkEnc = HostConnection::get()->vkEncoder();
4304     VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4305     vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
4306     return vkGetRandROutputDisplayEXT_VkResult_return;
4307 }
4308 #endif
4309 #ifdef VK_EXT_display_surface_counter
entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilities2EXT * pSurfaceCapabilities)4310 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4311     VkPhysicalDevice physicalDevice,
4312     VkSurfaceKHR surface,
4313     VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4314 {
4315     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
4316     auto vkEnc = HostConnection::get()->vkEncoder();
4317     VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4318     vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
4319     return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4320 }
4321 #endif
4322 #ifdef VK_EXT_display_control
entry_vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)4323 static VkResult entry_vkDisplayPowerControlEXT(
4324     VkDevice device,
4325     VkDisplayKHR display,
4326     const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4327 {
4328     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4329     auto vkEnc = HostConnection::get()->vkEncoder();
4330     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4331     vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4332     return vkDisplayPowerControlEXT_VkResult_return;
4333 }
dynCheck_entry_vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)4334 static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4335     VkDevice device,
4336     VkDisplayKHR display,
4337     const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4338 {
4339     auto resources = ResourceTracker::get();
4340     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4341     {
4342         sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4343     }
4344     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4345     auto vkEnc = HostConnection::get()->vkEncoder();
4346     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4347     vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4348     return vkDisplayPowerControlEXT_VkResult_return;
4349 }
entry_vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)4350 static VkResult entry_vkRegisterDeviceEventEXT(
4351     VkDevice device,
4352     const VkDeviceEventInfoEXT* pDeviceEventInfo,
4353     const VkAllocationCallbacks* pAllocator,
4354     VkFence* pFence)
4355 {
4356     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4357     auto vkEnc = HostConnection::get()->vkEncoder();
4358     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4359     vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4360     return vkRegisterDeviceEventEXT_VkResult_return;
4361 }
dynCheck_entry_vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)4362 static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4363     VkDevice device,
4364     const VkDeviceEventInfoEXT* pDeviceEventInfo,
4365     const VkAllocationCallbacks* pAllocator,
4366     VkFence* pFence)
4367 {
4368     auto resources = ResourceTracker::get();
4369     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4370     {
4371         sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4372     }
4373     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4374     auto vkEnc = HostConnection::get()->vkEncoder();
4375     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4376     vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4377     return vkRegisterDeviceEventEXT_VkResult_return;
4378 }
entry_vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)4379 static VkResult entry_vkRegisterDisplayEventEXT(
4380     VkDevice device,
4381     VkDisplayKHR display,
4382     const VkDisplayEventInfoEXT* pDisplayEventInfo,
4383     const VkAllocationCallbacks* pAllocator,
4384     VkFence* pFence)
4385 {
4386     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4387     auto vkEnc = HostConnection::get()->vkEncoder();
4388     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4389     vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4390     return vkRegisterDisplayEventEXT_VkResult_return;
4391 }
dynCheck_entry_vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)4392 static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4393     VkDevice device,
4394     VkDisplayKHR display,
4395     const VkDisplayEventInfoEXT* pDisplayEventInfo,
4396     const VkAllocationCallbacks* pAllocator,
4397     VkFence* pFence)
4398 {
4399     auto resources = ResourceTracker::get();
4400     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4401     {
4402         sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4403     }
4404     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4405     auto vkEnc = HostConnection::get()->vkEncoder();
4406     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4407     vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4408     return vkRegisterDisplayEventEXT_VkResult_return;
4409 }
entry_vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)4410 static VkResult entry_vkGetSwapchainCounterEXT(
4411     VkDevice device,
4412     VkSwapchainKHR swapchain,
4413     VkSurfaceCounterFlagBitsEXT counter,
4414     uint64_t* pCounterValue)
4415 {
4416     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4417     auto vkEnc = HostConnection::get()->vkEncoder();
4418     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4419     vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4420     return vkGetSwapchainCounterEXT_VkResult_return;
4421 }
dynCheck_entry_vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)4422 static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4423     VkDevice device,
4424     VkSwapchainKHR swapchain,
4425     VkSurfaceCounterFlagBitsEXT counter,
4426     uint64_t* pCounterValue)
4427 {
4428     auto resources = ResourceTracker::get();
4429     if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4430     {
4431         sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4432     }
4433     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4434     auto vkEnc = HostConnection::get()->vkEncoder();
4435     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4436     vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4437     return vkGetSwapchainCounterEXT_VkResult_return;
4438 }
4439 #endif
4440 #ifdef VK_GOOGLE_display_timing
entry_vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)4441 static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4442     VkDevice device,
4443     VkSwapchainKHR swapchain,
4444     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4445 {
4446     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4447     auto vkEnc = HostConnection::get()->vkEncoder();
4448     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4449     vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4450     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4451 }
dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)4452 static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4453     VkDevice device,
4454     VkSwapchainKHR swapchain,
4455     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4456 {
4457     auto resources = ResourceTracker::get();
4458     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4459     {
4460         sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4461     }
4462     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4463     auto vkEnc = HostConnection::get()->vkEncoder();
4464     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4465     vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4466     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4467 }
entry_vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)4468 static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4469     VkDevice device,
4470     VkSwapchainKHR swapchain,
4471     uint32_t* pPresentationTimingCount,
4472     VkPastPresentationTimingGOOGLE* pPresentationTimings)
4473 {
4474     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4475     auto vkEnc = HostConnection::get()->vkEncoder();
4476     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4477     vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4478     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4479 }
dynCheck_entry_vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)4480 static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4481     VkDevice device,
4482     VkSwapchainKHR swapchain,
4483     uint32_t* pPresentationTimingCount,
4484     VkPastPresentationTimingGOOGLE* pPresentationTimings)
4485 {
4486     auto resources = ResourceTracker::get();
4487     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4488     {
4489         sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4490     }
4491     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4492     auto vkEnc = HostConnection::get()->vkEncoder();
4493     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4494     vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4495     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4496 }
4497 #endif
4498 #ifdef VK_NV_sample_mask_override_coverage
4499 #endif
4500 #ifdef VK_NV_geometry_shader_passthrough
4501 #endif
4502 #ifdef VK_NV_viewport_array2
4503 #endif
4504 #ifdef VK_NVX_multiview_per_view_attributes
4505 #endif
4506 #ifdef VK_NV_viewport_swizzle
4507 #endif
4508 #ifdef VK_EXT_discard_rectangles
entry_vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)4509 static void entry_vkCmdSetDiscardRectangleEXT(
4510     VkCommandBuffer commandBuffer,
4511     uint32_t firstDiscardRectangle,
4512     uint32_t discardRectangleCount,
4513     const VkRect2D* pDiscardRectangles)
4514 {
4515     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
4516     auto vkEnc = HostConnection::get()->vkEncoder();
4517     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4518     vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4519 }
4520 #endif
4521 #ifdef VK_EXT_conservative_rasterization
4522 #endif
4523 #ifdef VK_EXT_swapchain_colorspace
4524 #endif
4525 #ifdef VK_EXT_hdr_metadata
entry_vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)4526 static void entry_vkSetHdrMetadataEXT(
4527     VkDevice device,
4528     uint32_t swapchainCount,
4529     const VkSwapchainKHR* pSwapchains,
4530     const VkHdrMetadataEXT* pMetadata)
4531 {
4532     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4533     auto vkEnc = HostConnection::get()->vkEncoder();
4534     vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4535 }
dynCheck_entry_vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)4536 static void dynCheck_entry_vkSetHdrMetadataEXT(
4537     VkDevice device,
4538     uint32_t swapchainCount,
4539     const VkSwapchainKHR* pSwapchains,
4540     const VkHdrMetadataEXT* pMetadata)
4541 {
4542     auto resources = ResourceTracker::get();
4543     if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4544     {
4545         sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4546     }
4547     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4548     auto vkEnc = HostConnection::get()->vkEncoder();
4549     vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4550 }
4551 #endif
4552 #ifdef VK_MVK_ios_surface
entry_vkCreateIOSSurfaceMVK(VkInstance instance,const VkIOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)4553 static VkResult entry_vkCreateIOSSurfaceMVK(
4554     VkInstance instance,
4555     const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4556     const VkAllocationCallbacks* pAllocator,
4557     VkSurfaceKHR* pSurface)
4558 {
4559     AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
4560     auto vkEnc = HostConnection::get()->vkEncoder();
4561     VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
4562     vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4563     return vkCreateIOSSurfaceMVK_VkResult_return;
4564 }
4565 #endif
4566 #ifdef VK_MVK_macos_surface
entry_vkCreateMacOSSurfaceMVK(VkInstance instance,const VkMacOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)4567 static VkResult entry_vkCreateMacOSSurfaceMVK(
4568     VkInstance instance,
4569     const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4570     const VkAllocationCallbacks* pAllocator,
4571     VkSurfaceKHR* pSurface)
4572 {
4573     AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
4574     auto vkEnc = HostConnection::get()->vkEncoder();
4575     VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
4576     vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4577     return vkCreateMacOSSurfaceMVK_VkResult_return;
4578 }
4579 #endif
4580 #ifdef VK_EXT_external_memory_dma_buf
4581 #endif
4582 #ifdef VK_EXT_queue_family_foreign
4583 #endif
4584 #ifdef VK_EXT_debug_utils
entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)4585 static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4586     VkDevice device,
4587     const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4588 {
4589     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4590     auto vkEnc = HostConnection::get()->vkEncoder();
4591     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4592     vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4593     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4594 }
dynCheck_entry_vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)4595 static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4596     VkDevice device,
4597     const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4598 {
4599     auto resources = ResourceTracker::get();
4600     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4601     {
4602         sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4603     }
4604     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4605     auto vkEnc = HostConnection::get()->vkEncoder();
4606     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4607     vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4608     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4609 }
entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)4610 static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4611     VkDevice device,
4612     const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4613 {
4614     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4615     auto vkEnc = HostConnection::get()->vkEncoder();
4616     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4617     vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4618     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4619 }
dynCheck_entry_vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)4620 static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4621     VkDevice device,
4622     const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4623 {
4624     auto resources = ResourceTracker::get();
4625     if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4626     {
4627         sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4628     }
4629     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4630     auto vkEnc = HostConnection::get()->vkEncoder();
4631     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4632     vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4633     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4634 }
entry_vkQueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)4635 static void entry_vkQueueBeginDebugUtilsLabelEXT(
4636     VkQueue queue,
4637     const VkDebugUtilsLabelEXT* pLabelInfo)
4638 {
4639     AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
4640     auto vkEnc = HostConnection::get()->vkEncoder();
4641     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
4642     vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4643 }
entry_vkQueueEndDebugUtilsLabelEXT(VkQueue queue)4644 static void entry_vkQueueEndDebugUtilsLabelEXT(
4645     VkQueue queue)
4646 {
4647     AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
4648     auto vkEnc = HostConnection::get()->vkEncoder();
4649     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
4650     vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
4651 }
entry_vkQueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)4652 static void entry_vkQueueInsertDebugUtilsLabelEXT(
4653     VkQueue queue,
4654     const VkDebugUtilsLabelEXT* pLabelInfo)
4655 {
4656     AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
4657     auto vkEnc = HostConnection::get()->vkEncoder();
4658     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
4659     vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4660 }
entry_vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)4661 static void entry_vkCmdBeginDebugUtilsLabelEXT(
4662     VkCommandBuffer commandBuffer,
4663     const VkDebugUtilsLabelEXT* pLabelInfo)
4664 {
4665     AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
4666     auto vkEnc = HostConnection::get()->vkEncoder();
4667     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4668     vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4669 }
entry_vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)4670 static void entry_vkCmdEndDebugUtilsLabelEXT(
4671     VkCommandBuffer commandBuffer)
4672 {
4673     AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
4674     auto vkEnc = HostConnection::get()->vkEncoder();
4675     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4676     vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
4677 }
entry_vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)4678 static void entry_vkCmdInsertDebugUtilsLabelEXT(
4679     VkCommandBuffer commandBuffer,
4680     const VkDebugUtilsLabelEXT* pLabelInfo)
4681 {
4682     AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
4683     auto vkEnc = HostConnection::get()->vkEncoder();
4684     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4685     vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4686 }
entry_vkCreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugUtilsMessengerEXT * pMessenger)4687 static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4688     VkInstance instance,
4689     const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4690     const VkAllocationCallbacks* pAllocator,
4691     VkDebugUtilsMessengerEXT* pMessenger)
4692 {
4693     AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
4694     auto vkEnc = HostConnection::get()->vkEncoder();
4695     VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
4696     vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
4697     return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4698 }
entry_vkDestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT messenger,const VkAllocationCallbacks * pAllocator)4699 static void entry_vkDestroyDebugUtilsMessengerEXT(
4700     VkInstance instance,
4701     VkDebugUtilsMessengerEXT messenger,
4702     const VkAllocationCallbacks* pAllocator)
4703 {
4704     AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
4705     auto vkEnc = HostConnection::get()->vkEncoder();
4706     vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
4707 }
entry_vkSubmitDebugUtilsMessageEXT(VkInstance instance,VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)4708 static void entry_vkSubmitDebugUtilsMessageEXT(
4709     VkInstance instance,
4710     VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4711     VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4712     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4713 {
4714     AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
4715     auto vkEnc = HostConnection::get()->vkEncoder();
4716     vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
4717 }
4718 #endif
4719 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
entry_vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)4720 static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4721     VkDevice device,
4722     const AHardwareBuffer* buffer,
4723     VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4724 {
4725     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4726     auto vkEnc = HostConnection::get()->vkEncoder();
4727     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4728     auto resources = ResourceTracker::get();
4729     vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4730     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4731 }
dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)4732 static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4733     VkDevice device,
4734     const AHardwareBuffer* buffer,
4735     VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4736 {
4737     auto resources = ResourceTracker::get();
4738     if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4739     {
4740         sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4741     }
4742     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4743     auto vkEnc = HostConnection::get()->vkEncoder();
4744     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4745     vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4746     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4747 }
entry_vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)4748 static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4749     VkDevice device,
4750     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4751     AHardwareBuffer** pBuffer)
4752 {
4753     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4754     auto vkEnc = HostConnection::get()->vkEncoder();
4755     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4756     auto resources = ResourceTracker::get();
4757     vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4758     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4759 }
dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)4760 static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4761     VkDevice device,
4762     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4763     AHardwareBuffer** pBuffer)
4764 {
4765     auto resources = ResourceTracker::get();
4766     if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4767     {
4768         sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4769     }
4770     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4771     auto vkEnc = HostConnection::get()->vkEncoder();
4772     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4773     vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4774     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4775 }
4776 #endif
4777 #ifdef VK_EXT_sampler_filter_minmax
4778 #endif
4779 #ifdef VK_AMD_gpu_shader_int16
4780 #endif
4781 #ifdef VK_AMD_mixed_attachment_samples
4782 #endif
4783 #ifdef VK_AMD_shader_fragment_mask
4784 #endif
4785 #ifdef VK_EXT_shader_stencil_export
4786 #endif
4787 #ifdef VK_EXT_sample_locations
entry_vkCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)4788 static void entry_vkCmdSetSampleLocationsEXT(
4789     VkCommandBuffer commandBuffer,
4790     const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4791 {
4792     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
4793     auto vkEnc = HostConnection::get()->vkEncoder();
4794     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4795     vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4796 }
entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)4797 static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4798     VkPhysicalDevice physicalDevice,
4799     VkSampleCountFlagBits samples,
4800     VkMultisamplePropertiesEXT* pMultisampleProperties)
4801 {
4802     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
4803     auto vkEnc = HostConnection::get()->vkEncoder();
4804     vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
4805 }
4806 #endif
4807 #ifdef VK_EXT_blend_operation_advanced
4808 #endif
4809 #ifdef VK_NV_fragment_coverage_to_color
4810 #endif
4811 #ifdef VK_NV_framebuffer_mixed_samples
4812 #endif
4813 #ifdef VK_NV_fill_rectangle
4814 #endif
4815 #ifdef VK_EXT_post_depth_coverage
4816 #endif
4817 #ifdef VK_EXT_validation_cache
entry_vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)4818 static VkResult entry_vkCreateValidationCacheEXT(
4819     VkDevice device,
4820     const VkValidationCacheCreateInfoEXT* pCreateInfo,
4821     const VkAllocationCallbacks* pAllocator,
4822     VkValidationCacheEXT* pValidationCache)
4823 {
4824     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4825     auto vkEnc = HostConnection::get()->vkEncoder();
4826     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4827     vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4828     return vkCreateValidationCacheEXT_VkResult_return;
4829 }
dynCheck_entry_vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)4830 static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4831     VkDevice device,
4832     const VkValidationCacheCreateInfoEXT* pCreateInfo,
4833     const VkAllocationCallbacks* pAllocator,
4834     VkValidationCacheEXT* pValidationCache)
4835 {
4836     auto resources = ResourceTracker::get();
4837     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4838     {
4839         sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4840     }
4841     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4842     auto vkEnc = HostConnection::get()->vkEncoder();
4843     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4844     vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4845     return vkCreateValidationCacheEXT_VkResult_return;
4846 }
entry_vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)4847 static void entry_vkDestroyValidationCacheEXT(
4848     VkDevice device,
4849     VkValidationCacheEXT validationCache,
4850     const VkAllocationCallbacks* pAllocator)
4851 {
4852     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4853     auto vkEnc = HostConnection::get()->vkEncoder();
4854     vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4855 }
dynCheck_entry_vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)4856 static void dynCheck_entry_vkDestroyValidationCacheEXT(
4857     VkDevice device,
4858     VkValidationCacheEXT validationCache,
4859     const VkAllocationCallbacks* pAllocator)
4860 {
4861     auto resources = ResourceTracker::get();
4862     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4863     {
4864         sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4865     }
4866     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4867     auto vkEnc = HostConnection::get()->vkEncoder();
4868     vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4869 }
entry_vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)4870 static VkResult entry_vkMergeValidationCachesEXT(
4871     VkDevice device,
4872     VkValidationCacheEXT dstCache,
4873     uint32_t srcCacheCount,
4874     const VkValidationCacheEXT* pSrcCaches)
4875 {
4876     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4877     auto vkEnc = HostConnection::get()->vkEncoder();
4878     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4879     vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4880     return vkMergeValidationCachesEXT_VkResult_return;
4881 }
dynCheck_entry_vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)4882 static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4883     VkDevice device,
4884     VkValidationCacheEXT dstCache,
4885     uint32_t srcCacheCount,
4886     const VkValidationCacheEXT* pSrcCaches)
4887 {
4888     auto resources = ResourceTracker::get();
4889     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4890     {
4891         sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4892     }
4893     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4894     auto vkEnc = HostConnection::get()->vkEncoder();
4895     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4896     vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4897     return vkMergeValidationCachesEXT_VkResult_return;
4898 }
entry_vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)4899 static VkResult entry_vkGetValidationCacheDataEXT(
4900     VkDevice device,
4901     VkValidationCacheEXT validationCache,
4902     size_t* pDataSize,
4903     void* pData)
4904 {
4905     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4906     auto vkEnc = HostConnection::get()->vkEncoder();
4907     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4908     vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4909     return vkGetValidationCacheDataEXT_VkResult_return;
4910 }
dynCheck_entry_vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)4911 static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4912     VkDevice device,
4913     VkValidationCacheEXT validationCache,
4914     size_t* pDataSize,
4915     void* pData)
4916 {
4917     auto resources = ResourceTracker::get();
4918     if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4919     {
4920         sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4921     }
4922     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4923     auto vkEnc = HostConnection::get()->vkEncoder();
4924     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4925     vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4926     return vkGetValidationCacheDataEXT_VkResult_return;
4927 }
4928 #endif
4929 #ifdef VK_EXT_descriptor_indexing
4930 #endif
4931 #ifdef VK_EXT_shader_viewport_index_layer
4932 #endif
4933 #ifdef VK_EXT_global_priority
4934 #endif
4935 #ifdef VK_EXT_external_memory_host
entry_vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)4936 static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4937     VkDevice device,
4938     VkExternalMemoryHandleTypeFlagBits handleType,
4939     const void* pHostPointer,
4940     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4941 {
4942     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4943     auto vkEnc = HostConnection::get()->vkEncoder();
4944     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4945     vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4946     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4947 }
dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)4948 static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4949     VkDevice device,
4950     VkExternalMemoryHandleTypeFlagBits handleType,
4951     const void* pHostPointer,
4952     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4953 {
4954     auto resources = ResourceTracker::get();
4955     if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4956     {
4957         sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4958     }
4959     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4960     auto vkEnc = HostConnection::get()->vkEncoder();
4961     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4962     vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4963     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4964 }
4965 #endif
4966 #ifdef VK_AMD_buffer_marker
entry_vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)4967 static void entry_vkCmdWriteBufferMarkerAMD(
4968     VkCommandBuffer commandBuffer,
4969     VkPipelineStageFlagBits pipelineStage,
4970     VkBuffer dstBuffer,
4971     VkDeviceSize dstOffset,
4972     uint32_t marker)
4973 {
4974     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
4975     auto vkEnc = HostConnection::get()->vkEncoder();
4976     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4977     vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
4978 }
4979 #endif
4980 #ifdef VK_AMD_shader_core_properties
4981 #endif
4982 #ifdef VK_EXT_vertex_attribute_divisor
4983 #endif
4984 #ifdef VK_NV_shader_subgroup_partitioned
4985 #endif
4986 #ifdef VK_NV_device_diagnostic_checkpoints
entry_vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)4987 static void entry_vkCmdSetCheckpointNV(
4988     VkCommandBuffer commandBuffer,
4989     const void* pCheckpointMarker)
4990 {
4991     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
4992     auto vkEnc = HostConnection::get()->vkEncoder();
4993     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
4994     vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
4995 }
entry_vkGetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)4996 static void entry_vkGetQueueCheckpointDataNV(
4997     VkQueue queue,
4998     uint32_t* pCheckpointDataCount,
4999     VkCheckpointDataNV* pCheckpointData)
5000 {
5001     AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
5002     auto vkEnc = HostConnection::get()->vkEncoder();
5003     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5004     vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
5005 }
5006 #endif
5007 #ifdef VK_GOOGLE_address_space
entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)5008 static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5009     VkDevice device,
5010     VkDeviceMemory memory,
5011     uint64_t* pAddress)
5012 {
5013     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5014     auto vkEnc = HostConnection::get()->vkEncoder();
5015     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5016     vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5017     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5018 }
dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)5019 static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5020     VkDevice device,
5021     VkDeviceMemory memory,
5022     uint64_t* pAddress)
5023 {
5024     auto resources = ResourceTracker::get();
5025     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
5026     {
5027         sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
5028     }
5029     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5030     auto vkEnc = HostConnection::get()->vkEncoder();
5031     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5032     vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5033     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5034 }
5035 #endif
5036 #ifdef VK_GOOGLE_color_buffer
entry_vkRegisterImageColorBufferGOOGLE(VkDevice device,VkImage image,uint32_t colorBuffer)5037 static VkResult entry_vkRegisterImageColorBufferGOOGLE(
5038     VkDevice device,
5039     VkImage image,
5040     uint32_t colorBuffer)
5041 {
5042     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5043     auto vkEnc = HostConnection::get()->vkEncoder();
5044     VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5045     vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5046     return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5047 }
dynCheck_entry_vkRegisterImageColorBufferGOOGLE(VkDevice device,VkImage image,uint32_t colorBuffer)5048 static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
5049     VkDevice device,
5050     VkImage image,
5051     uint32_t colorBuffer)
5052 {
5053     auto resources = ResourceTracker::get();
5054     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5055     {
5056         sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5057     }
5058     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5059     auto vkEnc = HostConnection::get()->vkEncoder();
5060     VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5061     vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5062     return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5063 }
entry_vkRegisterBufferColorBufferGOOGLE(VkDevice device,VkBuffer buffer,uint32_t colorBuffer)5064 static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
5065     VkDevice device,
5066     VkBuffer buffer,
5067     uint32_t colorBuffer)
5068 {
5069     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5070     auto vkEnc = HostConnection::get()->vkEncoder();
5071     VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5072     vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5073     return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5074 }
dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(VkDevice device,VkBuffer buffer,uint32_t colorBuffer)5075 static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
5076     VkDevice device,
5077     VkBuffer buffer,
5078     uint32_t colorBuffer)
5079 {
5080     auto resources = ResourceTracker::get();
5081     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5082     {
5083         sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5084     }
5085     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5086     auto vkEnc = HostConnection::get()->vkEncoder();
5087     VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5088     vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5089     return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5090 }
5091 #endif
5092 #ifdef VK_GOOGLE_sized_descriptor_update_template
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)5093 static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5094     VkDevice device,
5095     VkDescriptorSet descriptorSet,
5096     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5097     uint32_t imageInfoCount,
5098     uint32_t bufferInfoCount,
5099     uint32_t bufferViewCount,
5100     const uint32_t* pImageInfoEntryIndices,
5101     const uint32_t* pBufferInfoEntryIndices,
5102     const uint32_t* pBufferViewEntryIndices,
5103     const VkDescriptorImageInfo* pImageInfos,
5104     const VkDescriptorBufferInfo* pBufferInfos,
5105     const VkBufferView* pBufferViews)
5106 {
5107     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5108     auto vkEnc = HostConnection::get()->vkEncoder();
5109     vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5110 }
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)5111 static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5112     VkDevice device,
5113     VkDescriptorSet descriptorSet,
5114     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5115     uint32_t imageInfoCount,
5116     uint32_t bufferInfoCount,
5117     uint32_t bufferViewCount,
5118     const uint32_t* pImageInfoEntryIndices,
5119     const uint32_t* pBufferInfoEntryIndices,
5120     const uint32_t* pBufferViewEntryIndices,
5121     const VkDescriptorImageInfo* pImageInfos,
5122     const VkDescriptorBufferInfo* pBufferInfos,
5123     const VkBufferView* pBufferViews)
5124 {
5125     auto resources = ResourceTracker::get();
5126     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5127     {
5128         sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5129     }
5130     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5131     auto vkEnc = HostConnection::get()->vkEncoder();
5132     vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5133 }
5134 #endif
5135 #ifdef VK_GOOGLE_async_command_buffers
entry_vkBeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)5136 static void entry_vkBeginCommandBufferAsyncGOOGLE(
5137     VkCommandBuffer commandBuffer,
5138     const VkCommandBufferBeginInfo* pBeginInfo)
5139 {
5140     AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
5141     auto vkEnc = HostConnection::get()->vkEncoder();
5142     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5143     vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
5144 }
entry_vkEndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer)5145 static void entry_vkEndCommandBufferAsyncGOOGLE(
5146     VkCommandBuffer commandBuffer)
5147 {
5148     AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
5149     auto vkEnc = HostConnection::get()->vkEncoder();
5150     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5151     vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
5152 }
entry_vkResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)5153 static void entry_vkResetCommandBufferAsyncGOOGLE(
5154     VkCommandBuffer commandBuffer,
5155     VkCommandBufferResetFlags flags)
5156 {
5157     AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
5158     auto vkEnc = HostConnection::get()->vkEncoder();
5159     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5160     vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
5161 }
entry_vkCommandBufferHostSyncGOOGLE(VkCommandBuffer commandBuffer,uint32_t needHostSync,uint32_t sequenceNumber)5162 static void entry_vkCommandBufferHostSyncGOOGLE(
5163     VkCommandBuffer commandBuffer,
5164     uint32_t needHostSync,
5165     uint32_t sequenceNumber)
5166 {
5167     AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
5168     auto vkEnc = HostConnection::get()->vkEncoder();
5169     ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5170     vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
5171 }
5172 #endif
5173 #ifdef VK_GOOGLE_create_resources_with_requirements
entry_vkCreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)5174 static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5175     VkDevice device,
5176     const VkImageCreateInfo* pCreateInfo,
5177     const VkAllocationCallbacks* pAllocator,
5178     VkImage* pImage,
5179     VkMemoryRequirements* pMemoryRequirements)
5180 {
5181     AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5182     auto vkEnc = HostConnection::get()->vkEncoder();
5183     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5184     vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5185     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5186 }
dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)5187 static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5188     VkDevice device,
5189     const VkImageCreateInfo* pCreateInfo,
5190     const VkAllocationCallbacks* pAllocator,
5191     VkImage* pImage,
5192     VkMemoryRequirements* pMemoryRequirements)
5193 {
5194     auto resources = ResourceTracker::get();
5195     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5196     {
5197         sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5198     }
5199     AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5200     auto vkEnc = HostConnection::get()->vkEncoder();
5201     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5202     vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5203     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5204 }
entry_vkCreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)5205 static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5206     VkDevice device,
5207     const VkBufferCreateInfo* pCreateInfo,
5208     const VkAllocationCallbacks* pAllocator,
5209     VkBuffer* pBuffer,
5210     VkMemoryRequirements* pMemoryRequirements)
5211 {
5212     AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5213     auto vkEnc = HostConnection::get()->vkEncoder();
5214     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5215     vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5216     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5217 }
dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)5218 static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5219     VkDevice device,
5220     const VkBufferCreateInfo* pCreateInfo,
5221     const VkAllocationCallbacks* pAllocator,
5222     VkBuffer* pBuffer,
5223     VkMemoryRequirements* pMemoryRequirements)
5224 {
5225     auto resources = ResourceTracker::get();
5226     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5227     {
5228         sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5229     }
5230     AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5231     auto vkEnc = HostConnection::get()->vkEncoder();
5232     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5233     vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5234     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5235 }
5236 #endif
5237 #ifdef VK_GOOGLE_address_space_info
entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)5238 static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5239     VkDevice device,
5240     VkDeviceMemory memory,
5241     uint64_t* pAddress,
5242     uint64_t* pSize,
5243     uint64_t* pHostmemId)
5244 {
5245     AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5246     auto vkEnc = HostConnection::get()->vkEncoder();
5247     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5248     vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5249     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5250 }
dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)5251 static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5252     VkDevice device,
5253     VkDeviceMemory memory,
5254     uint64_t* pAddress,
5255     uint64_t* pSize,
5256     uint64_t* pHostmemId)
5257 {
5258     auto resources = ResourceTracker::get();
5259     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5260     {
5261         sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5262     }
5263     AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5264     auto vkEnc = HostConnection::get()->vkEncoder();
5265     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5266     vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5267     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5268 }
5269 #endif
5270 #ifdef VK_GOOGLE_free_memory_sync
entry_vkFreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)5271 static VkResult entry_vkFreeMemorySyncGOOGLE(
5272     VkDevice device,
5273     VkDeviceMemory memory,
5274     const VkAllocationCallbacks* pAllocator)
5275 {
5276     AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5277     auto vkEnc = HostConnection::get()->vkEncoder();
5278     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5279     vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5280     return vkFreeMemorySyncGOOGLE_VkResult_return;
5281 }
dynCheck_entry_vkFreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)5282 static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
5283     VkDevice device,
5284     VkDeviceMemory memory,
5285     const VkAllocationCallbacks* pAllocator)
5286 {
5287     auto resources = ResourceTracker::get();
5288     if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"))
5289     {
5290         sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync");
5291     }
5292     AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5293     auto vkEnc = HostConnection::get()->vkEncoder();
5294     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5295     vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5296     return vkFreeMemorySyncGOOGLE_VkResult_return;
5297 }
5298 #endif
5299 #ifdef VK_GOOGLE_async_queue_submit
entry_vkQueueHostSyncGOOGLE(VkQueue queue,uint32_t needHostSync,uint32_t sequenceNumber)5300 static void entry_vkQueueHostSyncGOOGLE(
5301     VkQueue queue,
5302     uint32_t needHostSync,
5303     uint32_t sequenceNumber)
5304 {
5305     AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
5306     auto vkEnc = HostConnection::get()->vkEncoder();
5307     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5308     vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber);
5309 }
entry_vkQueueSubmitAsyncGOOGLE(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)5310 static void entry_vkQueueSubmitAsyncGOOGLE(
5311     VkQueue queue,
5312     uint32_t submitCount,
5313     const VkSubmitInfo* pSubmits,
5314     VkFence fence)
5315 {
5316     AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
5317     auto vkEnc = HostConnection::get()->vkEncoder();
5318     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5319     vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence);
5320 }
entry_vkQueueWaitIdleAsyncGOOGLE(VkQueue queue)5321 static void entry_vkQueueWaitIdleAsyncGOOGLE(
5322     VkQueue queue)
5323 {
5324     AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
5325     auto vkEnc = HostConnection::get()->vkEncoder();
5326     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5327     vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue);
5328 }
entry_vkQueueBindSparseAsyncGOOGLE(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)5329 static void entry_vkQueueBindSparseAsyncGOOGLE(
5330     VkQueue queue,
5331     uint32_t bindInfoCount,
5332     const VkBindSparseInfo* pBindInfo,
5333     VkFence fence)
5334 {
5335     AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
5336     auto vkEnc = HostConnection::get()->vkEncoder();
5337     ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5338     vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence);
5339 }
5340 #endif
goldfish_vulkan_get_proc_address(const char * name)5341 void* goldfish_vulkan_get_proc_address(const char* name){
5342 #ifdef VK_VERSION_1_0
5343     if (!strcmp(name, "vkCreateInstance"))
5344     {
5345         return (void*)entry_vkCreateInstance;
5346     }
5347     if (!strcmp(name, "vkDestroyInstance"))
5348     {
5349         return (void*)entry_vkDestroyInstance;
5350     }
5351     if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5352     {
5353         return (void*)entry_vkEnumeratePhysicalDevices;
5354     }
5355     if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5356     {
5357         return (void*)entry_vkGetPhysicalDeviceFeatures;
5358     }
5359     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5360     {
5361         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5362     }
5363     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5364     {
5365         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5366     }
5367     if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5368     {
5369         return (void*)entry_vkGetPhysicalDeviceProperties;
5370     }
5371     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5372     {
5373         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5374     }
5375     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5376     {
5377         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5378     }
5379     if (!strcmp(name, "vkGetInstanceProcAddr"))
5380     {
5381         return (void*)entry_vkGetInstanceProcAddr;
5382     }
5383     if (!strcmp(name, "vkGetDeviceProcAddr"))
5384     {
5385         return (void*)entry_vkGetDeviceProcAddr;
5386     }
5387     if (!strcmp(name, "vkCreateDevice"))
5388     {
5389         return (void*)entry_vkCreateDevice;
5390     }
5391     if (!strcmp(name, "vkDestroyDevice"))
5392     {
5393         return (void*)entry_vkDestroyDevice;
5394     }
5395     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5396     {
5397         return (void*)entry_vkEnumerateInstanceExtensionProperties;
5398     }
5399     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5400     {
5401         return (void*)entry_vkEnumerateDeviceExtensionProperties;
5402     }
5403     if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5404     {
5405         return (void*)entry_vkEnumerateInstanceLayerProperties;
5406     }
5407     if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5408     {
5409         return (void*)entry_vkEnumerateDeviceLayerProperties;
5410     }
5411     if (!strcmp(name, "vkGetDeviceQueue"))
5412     {
5413         return (void*)entry_vkGetDeviceQueue;
5414     }
5415     if (!strcmp(name, "vkQueueSubmit"))
5416     {
5417         return (void*)entry_vkQueueSubmit;
5418     }
5419     if (!strcmp(name, "vkQueueWaitIdle"))
5420     {
5421         return (void*)entry_vkQueueWaitIdle;
5422     }
5423     if (!strcmp(name, "vkDeviceWaitIdle"))
5424     {
5425         return (void*)entry_vkDeviceWaitIdle;
5426     }
5427     if (!strcmp(name, "vkAllocateMemory"))
5428     {
5429         return (void*)entry_vkAllocateMemory;
5430     }
5431     if (!strcmp(name, "vkFreeMemory"))
5432     {
5433         return (void*)entry_vkFreeMemory;
5434     }
5435     if (!strcmp(name, "vkMapMemory"))
5436     {
5437         return (void*)entry_vkMapMemory;
5438     }
5439     if (!strcmp(name, "vkUnmapMemory"))
5440     {
5441         return (void*)entry_vkUnmapMemory;
5442     }
5443     if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5444     {
5445         return (void*)entry_vkFlushMappedMemoryRanges;
5446     }
5447     if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5448     {
5449         return (void*)entry_vkInvalidateMappedMemoryRanges;
5450     }
5451     if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5452     {
5453         return (void*)entry_vkGetDeviceMemoryCommitment;
5454     }
5455     if (!strcmp(name, "vkBindBufferMemory"))
5456     {
5457         return (void*)entry_vkBindBufferMemory;
5458     }
5459     if (!strcmp(name, "vkBindImageMemory"))
5460     {
5461         return (void*)entry_vkBindImageMemory;
5462     }
5463     if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5464     {
5465         return (void*)entry_vkGetBufferMemoryRequirements;
5466     }
5467     if (!strcmp(name, "vkGetImageMemoryRequirements"))
5468     {
5469         return (void*)entry_vkGetImageMemoryRequirements;
5470     }
5471     if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5472     {
5473         return (void*)entry_vkGetImageSparseMemoryRequirements;
5474     }
5475     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5476     {
5477         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5478     }
5479     if (!strcmp(name, "vkQueueBindSparse"))
5480     {
5481         return (void*)entry_vkQueueBindSparse;
5482     }
5483     if (!strcmp(name, "vkCreateFence"))
5484     {
5485         return (void*)entry_vkCreateFence;
5486     }
5487     if (!strcmp(name, "vkDestroyFence"))
5488     {
5489         return (void*)entry_vkDestroyFence;
5490     }
5491     if (!strcmp(name, "vkResetFences"))
5492     {
5493         return (void*)entry_vkResetFences;
5494     }
5495     if (!strcmp(name, "vkGetFenceStatus"))
5496     {
5497         return (void*)entry_vkGetFenceStatus;
5498     }
5499     if (!strcmp(name, "vkWaitForFences"))
5500     {
5501         return (void*)entry_vkWaitForFences;
5502     }
5503     if (!strcmp(name, "vkCreateSemaphore"))
5504     {
5505         return (void*)entry_vkCreateSemaphore;
5506     }
5507     if (!strcmp(name, "vkDestroySemaphore"))
5508     {
5509         return (void*)entry_vkDestroySemaphore;
5510     }
5511     if (!strcmp(name, "vkCreateEvent"))
5512     {
5513         return (void*)entry_vkCreateEvent;
5514     }
5515     if (!strcmp(name, "vkDestroyEvent"))
5516     {
5517         return (void*)entry_vkDestroyEvent;
5518     }
5519     if (!strcmp(name, "vkGetEventStatus"))
5520     {
5521         return (void*)entry_vkGetEventStatus;
5522     }
5523     if (!strcmp(name, "vkSetEvent"))
5524     {
5525         return (void*)entry_vkSetEvent;
5526     }
5527     if (!strcmp(name, "vkResetEvent"))
5528     {
5529         return (void*)entry_vkResetEvent;
5530     }
5531     if (!strcmp(name, "vkCreateQueryPool"))
5532     {
5533         return (void*)entry_vkCreateQueryPool;
5534     }
5535     if (!strcmp(name, "vkDestroyQueryPool"))
5536     {
5537         return (void*)entry_vkDestroyQueryPool;
5538     }
5539     if (!strcmp(name, "vkGetQueryPoolResults"))
5540     {
5541         return (void*)entry_vkGetQueryPoolResults;
5542     }
5543     if (!strcmp(name, "vkCreateBuffer"))
5544     {
5545         return (void*)entry_vkCreateBuffer;
5546     }
5547     if (!strcmp(name, "vkDestroyBuffer"))
5548     {
5549         return (void*)entry_vkDestroyBuffer;
5550     }
5551     if (!strcmp(name, "vkCreateBufferView"))
5552     {
5553         return (void*)entry_vkCreateBufferView;
5554     }
5555     if (!strcmp(name, "vkDestroyBufferView"))
5556     {
5557         return (void*)entry_vkDestroyBufferView;
5558     }
5559     if (!strcmp(name, "vkCreateImage"))
5560     {
5561         return (void*)entry_vkCreateImage;
5562     }
5563     if (!strcmp(name, "vkDestroyImage"))
5564     {
5565         return (void*)entry_vkDestroyImage;
5566     }
5567     if (!strcmp(name, "vkGetImageSubresourceLayout"))
5568     {
5569         return (void*)entry_vkGetImageSubresourceLayout;
5570     }
5571     if (!strcmp(name, "vkCreateImageView"))
5572     {
5573         return (void*)entry_vkCreateImageView;
5574     }
5575     if (!strcmp(name, "vkDestroyImageView"))
5576     {
5577         return (void*)entry_vkDestroyImageView;
5578     }
5579     if (!strcmp(name, "vkCreateShaderModule"))
5580     {
5581         return (void*)entry_vkCreateShaderModule;
5582     }
5583     if (!strcmp(name, "vkDestroyShaderModule"))
5584     {
5585         return (void*)entry_vkDestroyShaderModule;
5586     }
5587     if (!strcmp(name, "vkCreatePipelineCache"))
5588     {
5589         return (void*)entry_vkCreatePipelineCache;
5590     }
5591     if (!strcmp(name, "vkDestroyPipelineCache"))
5592     {
5593         return (void*)entry_vkDestroyPipelineCache;
5594     }
5595     if (!strcmp(name, "vkGetPipelineCacheData"))
5596     {
5597         return (void*)entry_vkGetPipelineCacheData;
5598     }
5599     if (!strcmp(name, "vkMergePipelineCaches"))
5600     {
5601         return (void*)entry_vkMergePipelineCaches;
5602     }
5603     if (!strcmp(name, "vkCreateGraphicsPipelines"))
5604     {
5605         return (void*)entry_vkCreateGraphicsPipelines;
5606     }
5607     if (!strcmp(name, "vkCreateComputePipelines"))
5608     {
5609         return (void*)entry_vkCreateComputePipelines;
5610     }
5611     if (!strcmp(name, "vkDestroyPipeline"))
5612     {
5613         return (void*)entry_vkDestroyPipeline;
5614     }
5615     if (!strcmp(name, "vkCreatePipelineLayout"))
5616     {
5617         return (void*)entry_vkCreatePipelineLayout;
5618     }
5619     if (!strcmp(name, "vkDestroyPipelineLayout"))
5620     {
5621         return (void*)entry_vkDestroyPipelineLayout;
5622     }
5623     if (!strcmp(name, "vkCreateSampler"))
5624     {
5625         return (void*)entry_vkCreateSampler;
5626     }
5627     if (!strcmp(name, "vkDestroySampler"))
5628     {
5629         return (void*)entry_vkDestroySampler;
5630     }
5631     if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5632     {
5633         return (void*)entry_vkCreateDescriptorSetLayout;
5634     }
5635     if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5636     {
5637         return (void*)entry_vkDestroyDescriptorSetLayout;
5638     }
5639     if (!strcmp(name, "vkCreateDescriptorPool"))
5640     {
5641         return (void*)entry_vkCreateDescriptorPool;
5642     }
5643     if (!strcmp(name, "vkDestroyDescriptorPool"))
5644     {
5645         return (void*)entry_vkDestroyDescriptorPool;
5646     }
5647     if (!strcmp(name, "vkResetDescriptorPool"))
5648     {
5649         return (void*)entry_vkResetDescriptorPool;
5650     }
5651     if (!strcmp(name, "vkAllocateDescriptorSets"))
5652     {
5653         return (void*)entry_vkAllocateDescriptorSets;
5654     }
5655     if (!strcmp(name, "vkFreeDescriptorSets"))
5656     {
5657         return (void*)entry_vkFreeDescriptorSets;
5658     }
5659     if (!strcmp(name, "vkUpdateDescriptorSets"))
5660     {
5661         return (void*)entry_vkUpdateDescriptorSets;
5662     }
5663     if (!strcmp(name, "vkCreateFramebuffer"))
5664     {
5665         return (void*)entry_vkCreateFramebuffer;
5666     }
5667     if (!strcmp(name, "vkDestroyFramebuffer"))
5668     {
5669         return (void*)entry_vkDestroyFramebuffer;
5670     }
5671     if (!strcmp(name, "vkCreateRenderPass"))
5672     {
5673         return (void*)entry_vkCreateRenderPass;
5674     }
5675     if (!strcmp(name, "vkDestroyRenderPass"))
5676     {
5677         return (void*)entry_vkDestroyRenderPass;
5678     }
5679     if (!strcmp(name, "vkGetRenderAreaGranularity"))
5680     {
5681         return (void*)entry_vkGetRenderAreaGranularity;
5682     }
5683     if (!strcmp(name, "vkCreateCommandPool"))
5684     {
5685         return (void*)entry_vkCreateCommandPool;
5686     }
5687     if (!strcmp(name, "vkDestroyCommandPool"))
5688     {
5689         return (void*)entry_vkDestroyCommandPool;
5690     }
5691     if (!strcmp(name, "vkResetCommandPool"))
5692     {
5693         return (void*)entry_vkResetCommandPool;
5694     }
5695     if (!strcmp(name, "vkAllocateCommandBuffers"))
5696     {
5697         return (void*)entry_vkAllocateCommandBuffers;
5698     }
5699     if (!strcmp(name, "vkFreeCommandBuffers"))
5700     {
5701         return (void*)entry_vkFreeCommandBuffers;
5702     }
5703     if (!strcmp(name, "vkBeginCommandBuffer"))
5704     {
5705         return (void*)entry_vkBeginCommandBuffer;
5706     }
5707     if (!strcmp(name, "vkEndCommandBuffer"))
5708     {
5709         return (void*)entry_vkEndCommandBuffer;
5710     }
5711     if (!strcmp(name, "vkResetCommandBuffer"))
5712     {
5713         return (void*)entry_vkResetCommandBuffer;
5714     }
5715     if (!strcmp(name, "vkCmdBindPipeline"))
5716     {
5717         return (void*)entry_vkCmdBindPipeline;
5718     }
5719     if (!strcmp(name, "vkCmdSetViewport"))
5720     {
5721         return (void*)entry_vkCmdSetViewport;
5722     }
5723     if (!strcmp(name, "vkCmdSetScissor"))
5724     {
5725         return (void*)entry_vkCmdSetScissor;
5726     }
5727     if (!strcmp(name, "vkCmdSetLineWidth"))
5728     {
5729         return (void*)entry_vkCmdSetLineWidth;
5730     }
5731     if (!strcmp(name, "vkCmdSetDepthBias"))
5732     {
5733         return (void*)entry_vkCmdSetDepthBias;
5734     }
5735     if (!strcmp(name, "vkCmdSetBlendConstants"))
5736     {
5737         return (void*)entry_vkCmdSetBlendConstants;
5738     }
5739     if (!strcmp(name, "vkCmdSetDepthBounds"))
5740     {
5741         return (void*)entry_vkCmdSetDepthBounds;
5742     }
5743     if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5744     {
5745         return (void*)entry_vkCmdSetStencilCompareMask;
5746     }
5747     if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5748     {
5749         return (void*)entry_vkCmdSetStencilWriteMask;
5750     }
5751     if (!strcmp(name, "vkCmdSetStencilReference"))
5752     {
5753         return (void*)entry_vkCmdSetStencilReference;
5754     }
5755     if (!strcmp(name, "vkCmdBindDescriptorSets"))
5756     {
5757         return (void*)entry_vkCmdBindDescriptorSets;
5758     }
5759     if (!strcmp(name, "vkCmdBindIndexBuffer"))
5760     {
5761         return (void*)entry_vkCmdBindIndexBuffer;
5762     }
5763     if (!strcmp(name, "vkCmdBindVertexBuffers"))
5764     {
5765         return (void*)entry_vkCmdBindVertexBuffers;
5766     }
5767     if (!strcmp(name, "vkCmdDraw"))
5768     {
5769         return (void*)entry_vkCmdDraw;
5770     }
5771     if (!strcmp(name, "vkCmdDrawIndexed"))
5772     {
5773         return (void*)entry_vkCmdDrawIndexed;
5774     }
5775     if (!strcmp(name, "vkCmdDrawIndirect"))
5776     {
5777         return (void*)entry_vkCmdDrawIndirect;
5778     }
5779     if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5780     {
5781         return (void*)entry_vkCmdDrawIndexedIndirect;
5782     }
5783     if (!strcmp(name, "vkCmdDispatch"))
5784     {
5785         return (void*)entry_vkCmdDispatch;
5786     }
5787     if (!strcmp(name, "vkCmdDispatchIndirect"))
5788     {
5789         return (void*)entry_vkCmdDispatchIndirect;
5790     }
5791     if (!strcmp(name, "vkCmdCopyBuffer"))
5792     {
5793         return (void*)entry_vkCmdCopyBuffer;
5794     }
5795     if (!strcmp(name, "vkCmdCopyImage"))
5796     {
5797         return (void*)entry_vkCmdCopyImage;
5798     }
5799     if (!strcmp(name, "vkCmdBlitImage"))
5800     {
5801         return (void*)entry_vkCmdBlitImage;
5802     }
5803     if (!strcmp(name, "vkCmdCopyBufferToImage"))
5804     {
5805         return (void*)entry_vkCmdCopyBufferToImage;
5806     }
5807     if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5808     {
5809         return (void*)entry_vkCmdCopyImageToBuffer;
5810     }
5811     if (!strcmp(name, "vkCmdUpdateBuffer"))
5812     {
5813         return (void*)entry_vkCmdUpdateBuffer;
5814     }
5815     if (!strcmp(name, "vkCmdFillBuffer"))
5816     {
5817         return (void*)entry_vkCmdFillBuffer;
5818     }
5819     if (!strcmp(name, "vkCmdClearColorImage"))
5820     {
5821         return (void*)entry_vkCmdClearColorImage;
5822     }
5823     if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5824     {
5825         return (void*)entry_vkCmdClearDepthStencilImage;
5826     }
5827     if (!strcmp(name, "vkCmdClearAttachments"))
5828     {
5829         return (void*)entry_vkCmdClearAttachments;
5830     }
5831     if (!strcmp(name, "vkCmdResolveImage"))
5832     {
5833         return (void*)entry_vkCmdResolveImage;
5834     }
5835     if (!strcmp(name, "vkCmdSetEvent"))
5836     {
5837         return (void*)entry_vkCmdSetEvent;
5838     }
5839     if (!strcmp(name, "vkCmdResetEvent"))
5840     {
5841         return (void*)entry_vkCmdResetEvent;
5842     }
5843     if (!strcmp(name, "vkCmdWaitEvents"))
5844     {
5845         return (void*)entry_vkCmdWaitEvents;
5846     }
5847     if (!strcmp(name, "vkCmdPipelineBarrier"))
5848     {
5849         return (void*)entry_vkCmdPipelineBarrier;
5850     }
5851     if (!strcmp(name, "vkCmdBeginQuery"))
5852     {
5853         return (void*)entry_vkCmdBeginQuery;
5854     }
5855     if (!strcmp(name, "vkCmdEndQuery"))
5856     {
5857         return (void*)entry_vkCmdEndQuery;
5858     }
5859     if (!strcmp(name, "vkCmdResetQueryPool"))
5860     {
5861         return (void*)entry_vkCmdResetQueryPool;
5862     }
5863     if (!strcmp(name, "vkCmdWriteTimestamp"))
5864     {
5865         return (void*)entry_vkCmdWriteTimestamp;
5866     }
5867     if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5868     {
5869         return (void*)entry_vkCmdCopyQueryPoolResults;
5870     }
5871     if (!strcmp(name, "vkCmdPushConstants"))
5872     {
5873         return (void*)entry_vkCmdPushConstants;
5874     }
5875     if (!strcmp(name, "vkCmdBeginRenderPass"))
5876     {
5877         return (void*)entry_vkCmdBeginRenderPass;
5878     }
5879     if (!strcmp(name, "vkCmdNextSubpass"))
5880     {
5881         return (void*)entry_vkCmdNextSubpass;
5882     }
5883     if (!strcmp(name, "vkCmdEndRenderPass"))
5884     {
5885         return (void*)entry_vkCmdEndRenderPass;
5886     }
5887     if (!strcmp(name, "vkCmdExecuteCommands"))
5888     {
5889         return (void*)entry_vkCmdExecuteCommands;
5890     }
5891 #endif
5892 #ifdef VK_VERSION_1_1
5893     if (!strcmp(name, "vkEnumerateInstanceVersion"))
5894     {
5895         return nullptr;
5896     }
5897     if (!strcmp(name, "vkBindBufferMemory2"))
5898     {
5899         return nullptr;
5900     }
5901     if (!strcmp(name, "vkBindImageMemory2"))
5902     {
5903         return nullptr;
5904     }
5905     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5906     {
5907         return nullptr;
5908     }
5909     if (!strcmp(name, "vkCmdSetDeviceMask"))
5910     {
5911         return nullptr;
5912     }
5913     if (!strcmp(name, "vkCmdDispatchBase"))
5914     {
5915         return nullptr;
5916     }
5917     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5918     {
5919         return nullptr;
5920     }
5921     if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5922     {
5923         return nullptr;
5924     }
5925     if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5926     {
5927         return nullptr;
5928     }
5929     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5930     {
5931         return nullptr;
5932     }
5933     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5934     {
5935         return nullptr;
5936     }
5937     if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5938     {
5939         return nullptr;
5940     }
5941     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5942     {
5943         return nullptr;
5944     }
5945     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5946     {
5947         return nullptr;
5948     }
5949     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5950     {
5951         return nullptr;
5952     }
5953     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5954     {
5955         return nullptr;
5956     }
5957     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5958     {
5959         return nullptr;
5960     }
5961     if (!strcmp(name, "vkTrimCommandPool"))
5962     {
5963         return nullptr;
5964     }
5965     if (!strcmp(name, "vkGetDeviceQueue2"))
5966     {
5967         return nullptr;
5968     }
5969     if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5970     {
5971         return nullptr;
5972     }
5973     if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5974     {
5975         return nullptr;
5976     }
5977     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5978     {
5979         return nullptr;
5980     }
5981     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5982     {
5983         return nullptr;
5984     }
5985     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5986     {
5987         return nullptr;
5988     }
5989     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5990     {
5991         return nullptr;
5992     }
5993     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5994     {
5995         return nullptr;
5996     }
5997     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5998     {
5999         return nullptr;
6000     }
6001     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
6002     {
6003         return nullptr;
6004     }
6005 #endif
6006 #ifdef VK_KHR_surface
6007     if (!strcmp(name, "vkDestroySurfaceKHR"))
6008     {
6009         return nullptr;
6010     }
6011     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
6012     {
6013         return nullptr;
6014     }
6015     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6016     {
6017         return nullptr;
6018     }
6019     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6020     {
6021         return nullptr;
6022     }
6023     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6024     {
6025         return nullptr;
6026     }
6027 #endif
6028 #ifdef VK_KHR_swapchain
6029     if (!strcmp(name, "vkCreateSwapchainKHR"))
6030     {
6031         return nullptr;
6032     }
6033     if (!strcmp(name, "vkDestroySwapchainKHR"))
6034     {
6035         return nullptr;
6036     }
6037     if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6038     {
6039         return nullptr;
6040     }
6041     if (!strcmp(name, "vkAcquireNextImageKHR"))
6042     {
6043         return nullptr;
6044     }
6045     if (!strcmp(name, "vkQueuePresentKHR"))
6046     {
6047         return nullptr;
6048     }
6049     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6050     {
6051         return nullptr;
6052     }
6053     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6054     {
6055         return nullptr;
6056     }
6057     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6058     {
6059         return nullptr;
6060     }
6061     if (!strcmp(name, "vkAcquireNextImage2KHR"))
6062     {
6063         return nullptr;
6064     }
6065 #endif
6066 #ifdef VK_KHR_display
6067     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6068     {
6069         return nullptr;
6070     }
6071     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6072     {
6073         return nullptr;
6074     }
6075     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6076     {
6077         return nullptr;
6078     }
6079     if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6080     {
6081         return nullptr;
6082     }
6083     if (!strcmp(name, "vkCreateDisplayModeKHR"))
6084     {
6085         return nullptr;
6086     }
6087     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6088     {
6089         return nullptr;
6090     }
6091     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6092     {
6093         return nullptr;
6094     }
6095 #endif
6096 #ifdef VK_KHR_display_swapchain
6097     if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6098     {
6099         return nullptr;
6100     }
6101 #endif
6102 #ifdef VK_KHR_xlib_surface
6103     if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6104     {
6105         return nullptr;
6106     }
6107     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6108     {
6109         return nullptr;
6110     }
6111 #endif
6112 #ifdef VK_KHR_xcb_surface
6113     if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6114     {
6115         return nullptr;
6116     }
6117     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6118     {
6119         return nullptr;
6120     }
6121 #endif
6122 #ifdef VK_KHR_wayland_surface
6123     if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6124     {
6125         return nullptr;
6126     }
6127     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6128     {
6129         return nullptr;
6130     }
6131 #endif
6132 #ifdef VK_KHR_mir_surface
6133     if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6134     {
6135         return nullptr;
6136     }
6137     if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6138     {
6139         return nullptr;
6140     }
6141 #endif
6142 #ifdef VK_KHR_android_surface
6143     if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6144     {
6145         return nullptr;
6146     }
6147 #endif
6148 #ifdef VK_KHR_win32_surface
6149     if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6150     {
6151         return nullptr;
6152     }
6153     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6154     {
6155         return nullptr;
6156     }
6157 #endif
6158 #ifdef VK_KHR_get_physical_device_properties2
6159     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6160     {
6161         return nullptr;
6162     }
6163     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6164     {
6165         return nullptr;
6166     }
6167     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6168     {
6169         return nullptr;
6170     }
6171     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6172     {
6173         return nullptr;
6174     }
6175     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6176     {
6177         return nullptr;
6178     }
6179     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6180     {
6181         return nullptr;
6182     }
6183     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6184     {
6185         return nullptr;
6186     }
6187 #endif
6188 #ifdef VK_KHR_device_group
6189     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6190     {
6191         return nullptr;
6192     }
6193     if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6194     {
6195         return nullptr;
6196     }
6197     if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6198     {
6199         return nullptr;
6200     }
6201 #endif
6202 #ifdef VK_KHR_maintenance1
6203     if (!strcmp(name, "vkTrimCommandPoolKHR"))
6204     {
6205         return nullptr;
6206     }
6207 #endif
6208 #ifdef VK_KHR_device_group_creation
6209     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6210     {
6211         return nullptr;
6212     }
6213 #endif
6214 #ifdef VK_KHR_external_memory_capabilities
6215     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6216     {
6217         return nullptr;
6218     }
6219 #endif
6220 #ifdef VK_KHR_external_memory_win32
6221     if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6222     {
6223         return nullptr;
6224     }
6225     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6226     {
6227         return nullptr;
6228     }
6229 #endif
6230 #ifdef VK_KHR_external_memory_fd
6231     if (!strcmp(name, "vkGetMemoryFdKHR"))
6232     {
6233         return nullptr;
6234     }
6235     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6236     {
6237         return nullptr;
6238     }
6239 #endif
6240 #ifdef VK_KHR_external_semaphore_capabilities
6241     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6242     {
6243         return nullptr;
6244     }
6245 #endif
6246 #ifdef VK_KHR_external_semaphore_win32
6247     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6248     {
6249         return nullptr;
6250     }
6251     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6252     {
6253         return nullptr;
6254     }
6255 #endif
6256 #ifdef VK_KHR_external_semaphore_fd
6257     if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6258     {
6259         return nullptr;
6260     }
6261     if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6262     {
6263         return nullptr;
6264     }
6265 #endif
6266 #ifdef VK_KHR_push_descriptor
6267     if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6268     {
6269         return nullptr;
6270     }
6271     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6272     {
6273         return nullptr;
6274     }
6275 #endif
6276 #ifdef VK_KHR_descriptor_update_template
6277     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6278     {
6279         return nullptr;
6280     }
6281     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6282     {
6283         return nullptr;
6284     }
6285     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6286     {
6287         return nullptr;
6288     }
6289 #endif
6290 #ifdef VK_KHR_create_renderpass2
6291     if (!strcmp(name, "vkCreateRenderPass2KHR"))
6292     {
6293         return nullptr;
6294     }
6295     if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6296     {
6297         return nullptr;
6298     }
6299     if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6300     {
6301         return nullptr;
6302     }
6303     if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6304     {
6305         return nullptr;
6306     }
6307 #endif
6308 #ifdef VK_KHR_shared_presentable_image
6309     if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6310     {
6311         return nullptr;
6312     }
6313 #endif
6314 #ifdef VK_KHR_external_fence_capabilities
6315     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6316     {
6317         return nullptr;
6318     }
6319 #endif
6320 #ifdef VK_KHR_external_fence_win32
6321     if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6322     {
6323         return nullptr;
6324     }
6325     if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6326     {
6327         return nullptr;
6328     }
6329 #endif
6330 #ifdef VK_KHR_external_fence_fd
6331     if (!strcmp(name, "vkImportFenceFdKHR"))
6332     {
6333         return nullptr;
6334     }
6335     if (!strcmp(name, "vkGetFenceFdKHR"))
6336     {
6337         return nullptr;
6338     }
6339 #endif
6340 #ifdef VK_KHR_get_surface_capabilities2
6341     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6342     {
6343         return nullptr;
6344     }
6345     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6346     {
6347         return nullptr;
6348     }
6349 #endif
6350 #ifdef VK_KHR_get_display_properties2
6351     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6352     {
6353         return nullptr;
6354     }
6355     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6356     {
6357         return nullptr;
6358     }
6359     if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6360     {
6361         return nullptr;
6362     }
6363     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6364     {
6365         return nullptr;
6366     }
6367 #endif
6368 #ifdef VK_KHR_get_memory_requirements2
6369     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6370     {
6371         return nullptr;
6372     }
6373     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6374     {
6375         return nullptr;
6376     }
6377     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6378     {
6379         return nullptr;
6380     }
6381 #endif
6382 #ifdef VK_KHR_sampler_ycbcr_conversion
6383     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6384     {
6385         return nullptr;
6386     }
6387     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6388     {
6389         return nullptr;
6390     }
6391 #endif
6392 #ifdef VK_KHR_bind_memory2
6393     if (!strcmp(name, "vkBindBufferMemory2KHR"))
6394     {
6395         return nullptr;
6396     }
6397     if (!strcmp(name, "vkBindImageMemory2KHR"))
6398     {
6399         return nullptr;
6400     }
6401 #endif
6402 #ifdef VK_KHR_maintenance3
6403     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6404     {
6405         return nullptr;
6406     }
6407 #endif
6408 #ifdef VK_KHR_draw_indirect_count
6409     if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6410     {
6411         return nullptr;
6412     }
6413     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6414     {
6415         return nullptr;
6416     }
6417 #endif
6418 #ifdef VK_ANDROID_native_buffer
6419     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6420     {
6421         return nullptr;
6422     }
6423     if (!strcmp(name, "vkAcquireImageANDROID"))
6424     {
6425         return nullptr;
6426     }
6427     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6428     {
6429         return nullptr;
6430     }
6431 #endif
6432 #ifdef VK_EXT_debug_report
6433     if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6434     {
6435         return nullptr;
6436     }
6437     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6438     {
6439         return nullptr;
6440     }
6441     if (!strcmp(name, "vkDebugReportMessageEXT"))
6442     {
6443         return nullptr;
6444     }
6445 #endif
6446 #ifdef VK_EXT_debug_marker
6447     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6448     {
6449         return nullptr;
6450     }
6451     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6452     {
6453         return nullptr;
6454     }
6455     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6456     {
6457         return nullptr;
6458     }
6459     if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6460     {
6461         return nullptr;
6462     }
6463     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6464     {
6465         return nullptr;
6466     }
6467 #endif
6468 #ifdef VK_AMD_draw_indirect_count
6469     if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6470     {
6471         return nullptr;
6472     }
6473     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6474     {
6475         return nullptr;
6476     }
6477 #endif
6478 #ifdef VK_AMD_shader_info
6479     if (!strcmp(name, "vkGetShaderInfoAMD"))
6480     {
6481         return nullptr;
6482     }
6483 #endif
6484 #ifdef VK_NV_external_memory_capabilities
6485     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6486     {
6487         return nullptr;
6488     }
6489 #endif
6490 #ifdef VK_NV_external_memory_win32
6491     if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6492     {
6493         return nullptr;
6494     }
6495 #endif
6496 #ifdef VK_NN_vi_surface
6497     if (!strcmp(name, "vkCreateViSurfaceNN"))
6498     {
6499         return nullptr;
6500     }
6501 #endif
6502 #ifdef VK_EXT_conditional_rendering
6503     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6504     {
6505         return nullptr;
6506     }
6507     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6508     {
6509         return nullptr;
6510     }
6511 #endif
6512 #ifdef VK_NVX_device_generated_commands
6513     if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6514     {
6515         return nullptr;
6516     }
6517     if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6518     {
6519         return nullptr;
6520     }
6521     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6522     {
6523         return nullptr;
6524     }
6525     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6526     {
6527         return nullptr;
6528     }
6529     if (!strcmp(name, "vkCreateObjectTableNVX"))
6530     {
6531         return nullptr;
6532     }
6533     if (!strcmp(name, "vkDestroyObjectTableNVX"))
6534     {
6535         return nullptr;
6536     }
6537     if (!strcmp(name, "vkRegisterObjectsNVX"))
6538     {
6539         return nullptr;
6540     }
6541     if (!strcmp(name, "vkUnregisterObjectsNVX"))
6542     {
6543         return nullptr;
6544     }
6545     if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6546     {
6547         return nullptr;
6548     }
6549 #endif
6550 #ifdef VK_NV_clip_space_w_scaling
6551     if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6552     {
6553         return nullptr;
6554     }
6555 #endif
6556 #ifdef VK_EXT_direct_mode_display
6557     if (!strcmp(name, "vkReleaseDisplayEXT"))
6558     {
6559         return nullptr;
6560     }
6561 #endif
6562 #ifdef VK_EXT_acquire_xlib_display
6563     if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6564     {
6565         return nullptr;
6566     }
6567     if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6568     {
6569         return nullptr;
6570     }
6571 #endif
6572 #ifdef VK_EXT_display_surface_counter
6573     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6574     {
6575         return nullptr;
6576     }
6577 #endif
6578 #ifdef VK_EXT_display_control
6579     if (!strcmp(name, "vkDisplayPowerControlEXT"))
6580     {
6581         return nullptr;
6582     }
6583     if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6584     {
6585         return nullptr;
6586     }
6587     if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6588     {
6589         return nullptr;
6590     }
6591     if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6592     {
6593         return nullptr;
6594     }
6595 #endif
6596 #ifdef VK_GOOGLE_display_timing
6597     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6598     {
6599         return nullptr;
6600     }
6601     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6602     {
6603         return nullptr;
6604     }
6605 #endif
6606 #ifdef VK_EXT_discard_rectangles
6607     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6608     {
6609         return nullptr;
6610     }
6611 #endif
6612 #ifdef VK_EXT_hdr_metadata
6613     if (!strcmp(name, "vkSetHdrMetadataEXT"))
6614     {
6615         return nullptr;
6616     }
6617 #endif
6618 #ifdef VK_MVK_ios_surface
6619     if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6620     {
6621         return nullptr;
6622     }
6623 #endif
6624 #ifdef VK_MVK_macos_surface
6625     if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6626     {
6627         return nullptr;
6628     }
6629 #endif
6630 #ifdef VK_EXT_debug_utils
6631     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6632     {
6633         return nullptr;
6634     }
6635     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6636     {
6637         return nullptr;
6638     }
6639     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6640     {
6641         return nullptr;
6642     }
6643     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6644     {
6645         return nullptr;
6646     }
6647     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6648     {
6649         return nullptr;
6650     }
6651     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6652     {
6653         return nullptr;
6654     }
6655     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6656     {
6657         return nullptr;
6658     }
6659     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6660     {
6661         return nullptr;
6662     }
6663     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6664     {
6665         return nullptr;
6666     }
6667     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6668     {
6669         return nullptr;
6670     }
6671     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6672     {
6673         return nullptr;
6674     }
6675 #endif
6676 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
6677     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6678     {
6679         return nullptr;
6680     }
6681     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6682     {
6683         return nullptr;
6684     }
6685 #endif
6686 #ifdef VK_EXT_sample_locations
6687     if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6688     {
6689         return nullptr;
6690     }
6691     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6692     {
6693         return nullptr;
6694     }
6695 #endif
6696 #ifdef VK_EXT_validation_cache
6697     if (!strcmp(name, "vkCreateValidationCacheEXT"))
6698     {
6699         return nullptr;
6700     }
6701     if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6702     {
6703         return nullptr;
6704     }
6705     if (!strcmp(name, "vkMergeValidationCachesEXT"))
6706     {
6707         return nullptr;
6708     }
6709     if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6710     {
6711         return nullptr;
6712     }
6713 #endif
6714 #ifdef VK_EXT_external_memory_host
6715     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6716     {
6717         return nullptr;
6718     }
6719 #endif
6720 #ifdef VK_AMD_buffer_marker
6721     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6722     {
6723         return nullptr;
6724     }
6725 #endif
6726 #ifdef VK_NV_device_diagnostic_checkpoints
6727     if (!strcmp(name, "vkCmdSetCheckpointNV"))
6728     {
6729         return nullptr;
6730     }
6731     if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6732     {
6733         return nullptr;
6734     }
6735 #endif
6736 #ifdef VK_GOOGLE_address_space
6737     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6738     {
6739         return nullptr;
6740     }
6741 #endif
6742 #ifdef VK_GOOGLE_color_buffer
6743     if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6744     {
6745         return nullptr;
6746     }
6747     if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6748     {
6749         return nullptr;
6750     }
6751 #endif
6752 #ifdef VK_GOOGLE_sized_descriptor_update_template
6753     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6754     {
6755         return nullptr;
6756     }
6757 #endif
6758 #ifdef VK_GOOGLE_async_command_buffers
6759     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6760     {
6761         return nullptr;
6762     }
6763     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6764     {
6765         return nullptr;
6766     }
6767     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6768     {
6769         return nullptr;
6770     }
6771     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6772     {
6773         return nullptr;
6774     }
6775 #endif
6776 #ifdef VK_GOOGLE_create_resources_with_requirements
6777     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6778     {
6779         return nullptr;
6780     }
6781     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6782     {
6783         return nullptr;
6784     }
6785 #endif
6786 #ifdef VK_GOOGLE_address_space_info
6787     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6788     {
6789         return nullptr;
6790     }
6791 #endif
6792 #ifdef VK_GOOGLE_free_memory_sync
6793     if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6794     {
6795         return nullptr;
6796     }
6797 #endif
6798 #ifdef VK_GOOGLE_async_queue_submit
6799     if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
6800     {
6801         return nullptr;
6802     }
6803     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
6804     {
6805         return nullptr;
6806     }
6807     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
6808     {
6809         return nullptr;
6810     }
6811     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
6812     {
6813         return nullptr;
6814     }
6815 #endif
6816     return nullptr;
6817 }
goldfish_vulkan_get_instance_proc_address(VkInstance instance,const char * name)6818 void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6819     auto resources = ResourceTracker::get();
6820     bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6821 #ifdef VK_VERSION_1_0
6822     if (!strcmp(name, "vkCreateInstance"))
6823     {
6824         return (void*)entry_vkCreateInstance;
6825     }
6826     if (!strcmp(name, "vkDestroyInstance"))
6827     {
6828         return (void*)entry_vkDestroyInstance;
6829     }
6830     if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6831     {
6832         return (void*)entry_vkEnumeratePhysicalDevices;
6833     }
6834     if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6835     {
6836         return (void*)entry_vkGetPhysicalDeviceFeatures;
6837     }
6838     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6839     {
6840         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6841     }
6842     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6843     {
6844         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6845     }
6846     if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6847     {
6848         return (void*)entry_vkGetPhysicalDeviceProperties;
6849     }
6850     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6851     {
6852         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6853     }
6854     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6855     {
6856         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6857     }
6858     if (!strcmp(name, "vkGetInstanceProcAddr"))
6859     {
6860         return (void*)entry_vkGetInstanceProcAddr;
6861     }
6862     if (!strcmp(name, "vkGetDeviceProcAddr"))
6863     {
6864         return (void*)entry_vkGetDeviceProcAddr;
6865     }
6866     if (!strcmp(name, "vkCreateDevice"))
6867     {
6868         return (void*)entry_vkCreateDevice;
6869     }
6870     if (!strcmp(name, "vkDestroyDevice"))
6871     {
6872         return (void*)entry_vkDestroyDevice;
6873     }
6874     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6875     {
6876         return (void*)entry_vkEnumerateInstanceExtensionProperties;
6877     }
6878     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6879     {
6880         return (void*)entry_vkEnumerateDeviceExtensionProperties;
6881     }
6882     if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6883     {
6884         return (void*)entry_vkEnumerateInstanceLayerProperties;
6885     }
6886     if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6887     {
6888         return (void*)entry_vkEnumerateDeviceLayerProperties;
6889     }
6890     if (!strcmp(name, "vkGetDeviceQueue"))
6891     {
6892         return (void*)entry_vkGetDeviceQueue;
6893     }
6894     if (!strcmp(name, "vkQueueSubmit"))
6895     {
6896         return (void*)entry_vkQueueSubmit;
6897     }
6898     if (!strcmp(name, "vkQueueWaitIdle"))
6899     {
6900         return (void*)entry_vkQueueWaitIdle;
6901     }
6902     if (!strcmp(name, "vkDeviceWaitIdle"))
6903     {
6904         return (void*)entry_vkDeviceWaitIdle;
6905     }
6906     if (!strcmp(name, "vkAllocateMemory"))
6907     {
6908         return (void*)entry_vkAllocateMemory;
6909     }
6910     if (!strcmp(name, "vkFreeMemory"))
6911     {
6912         return (void*)entry_vkFreeMemory;
6913     }
6914     if (!strcmp(name, "vkMapMemory"))
6915     {
6916         return (void*)entry_vkMapMemory;
6917     }
6918     if (!strcmp(name, "vkUnmapMemory"))
6919     {
6920         return (void*)entry_vkUnmapMemory;
6921     }
6922     if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6923     {
6924         return (void*)entry_vkFlushMappedMemoryRanges;
6925     }
6926     if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6927     {
6928         return (void*)entry_vkInvalidateMappedMemoryRanges;
6929     }
6930     if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6931     {
6932         return (void*)entry_vkGetDeviceMemoryCommitment;
6933     }
6934     if (!strcmp(name, "vkBindBufferMemory"))
6935     {
6936         return (void*)entry_vkBindBufferMemory;
6937     }
6938     if (!strcmp(name, "vkBindImageMemory"))
6939     {
6940         return (void*)entry_vkBindImageMemory;
6941     }
6942     if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6943     {
6944         return (void*)entry_vkGetBufferMemoryRequirements;
6945     }
6946     if (!strcmp(name, "vkGetImageMemoryRequirements"))
6947     {
6948         return (void*)entry_vkGetImageMemoryRequirements;
6949     }
6950     if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6951     {
6952         return (void*)entry_vkGetImageSparseMemoryRequirements;
6953     }
6954     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6955     {
6956         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6957     }
6958     if (!strcmp(name, "vkQueueBindSparse"))
6959     {
6960         return (void*)entry_vkQueueBindSparse;
6961     }
6962     if (!strcmp(name, "vkCreateFence"))
6963     {
6964         return (void*)entry_vkCreateFence;
6965     }
6966     if (!strcmp(name, "vkDestroyFence"))
6967     {
6968         return (void*)entry_vkDestroyFence;
6969     }
6970     if (!strcmp(name, "vkResetFences"))
6971     {
6972         return (void*)entry_vkResetFences;
6973     }
6974     if (!strcmp(name, "vkGetFenceStatus"))
6975     {
6976         return (void*)entry_vkGetFenceStatus;
6977     }
6978     if (!strcmp(name, "vkWaitForFences"))
6979     {
6980         return (void*)entry_vkWaitForFences;
6981     }
6982     if (!strcmp(name, "vkCreateSemaphore"))
6983     {
6984         return (void*)entry_vkCreateSemaphore;
6985     }
6986     if (!strcmp(name, "vkDestroySemaphore"))
6987     {
6988         return (void*)entry_vkDestroySemaphore;
6989     }
6990     if (!strcmp(name, "vkCreateEvent"))
6991     {
6992         return (void*)entry_vkCreateEvent;
6993     }
6994     if (!strcmp(name, "vkDestroyEvent"))
6995     {
6996         return (void*)entry_vkDestroyEvent;
6997     }
6998     if (!strcmp(name, "vkGetEventStatus"))
6999     {
7000         return (void*)entry_vkGetEventStatus;
7001     }
7002     if (!strcmp(name, "vkSetEvent"))
7003     {
7004         return (void*)entry_vkSetEvent;
7005     }
7006     if (!strcmp(name, "vkResetEvent"))
7007     {
7008         return (void*)entry_vkResetEvent;
7009     }
7010     if (!strcmp(name, "vkCreateQueryPool"))
7011     {
7012         return (void*)entry_vkCreateQueryPool;
7013     }
7014     if (!strcmp(name, "vkDestroyQueryPool"))
7015     {
7016         return (void*)entry_vkDestroyQueryPool;
7017     }
7018     if (!strcmp(name, "vkGetQueryPoolResults"))
7019     {
7020         return (void*)entry_vkGetQueryPoolResults;
7021     }
7022     if (!strcmp(name, "vkCreateBuffer"))
7023     {
7024         return (void*)entry_vkCreateBuffer;
7025     }
7026     if (!strcmp(name, "vkDestroyBuffer"))
7027     {
7028         return (void*)entry_vkDestroyBuffer;
7029     }
7030     if (!strcmp(name, "vkCreateBufferView"))
7031     {
7032         return (void*)entry_vkCreateBufferView;
7033     }
7034     if (!strcmp(name, "vkDestroyBufferView"))
7035     {
7036         return (void*)entry_vkDestroyBufferView;
7037     }
7038     if (!strcmp(name, "vkCreateImage"))
7039     {
7040         return (void*)entry_vkCreateImage;
7041     }
7042     if (!strcmp(name, "vkDestroyImage"))
7043     {
7044         return (void*)entry_vkDestroyImage;
7045     }
7046     if (!strcmp(name, "vkGetImageSubresourceLayout"))
7047     {
7048         return (void*)entry_vkGetImageSubresourceLayout;
7049     }
7050     if (!strcmp(name, "vkCreateImageView"))
7051     {
7052         return (void*)entry_vkCreateImageView;
7053     }
7054     if (!strcmp(name, "vkDestroyImageView"))
7055     {
7056         return (void*)entry_vkDestroyImageView;
7057     }
7058     if (!strcmp(name, "vkCreateShaderModule"))
7059     {
7060         return (void*)entry_vkCreateShaderModule;
7061     }
7062     if (!strcmp(name, "vkDestroyShaderModule"))
7063     {
7064         return (void*)entry_vkDestroyShaderModule;
7065     }
7066     if (!strcmp(name, "vkCreatePipelineCache"))
7067     {
7068         return (void*)entry_vkCreatePipelineCache;
7069     }
7070     if (!strcmp(name, "vkDestroyPipelineCache"))
7071     {
7072         return (void*)entry_vkDestroyPipelineCache;
7073     }
7074     if (!strcmp(name, "vkGetPipelineCacheData"))
7075     {
7076         return (void*)entry_vkGetPipelineCacheData;
7077     }
7078     if (!strcmp(name, "vkMergePipelineCaches"))
7079     {
7080         return (void*)entry_vkMergePipelineCaches;
7081     }
7082     if (!strcmp(name, "vkCreateGraphicsPipelines"))
7083     {
7084         return (void*)entry_vkCreateGraphicsPipelines;
7085     }
7086     if (!strcmp(name, "vkCreateComputePipelines"))
7087     {
7088         return (void*)entry_vkCreateComputePipelines;
7089     }
7090     if (!strcmp(name, "vkDestroyPipeline"))
7091     {
7092         return (void*)entry_vkDestroyPipeline;
7093     }
7094     if (!strcmp(name, "vkCreatePipelineLayout"))
7095     {
7096         return (void*)entry_vkCreatePipelineLayout;
7097     }
7098     if (!strcmp(name, "vkDestroyPipelineLayout"))
7099     {
7100         return (void*)entry_vkDestroyPipelineLayout;
7101     }
7102     if (!strcmp(name, "vkCreateSampler"))
7103     {
7104         return (void*)entry_vkCreateSampler;
7105     }
7106     if (!strcmp(name, "vkDestroySampler"))
7107     {
7108         return (void*)entry_vkDestroySampler;
7109     }
7110     if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7111     {
7112         return (void*)entry_vkCreateDescriptorSetLayout;
7113     }
7114     if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7115     {
7116         return (void*)entry_vkDestroyDescriptorSetLayout;
7117     }
7118     if (!strcmp(name, "vkCreateDescriptorPool"))
7119     {
7120         return (void*)entry_vkCreateDescriptorPool;
7121     }
7122     if (!strcmp(name, "vkDestroyDescriptorPool"))
7123     {
7124         return (void*)entry_vkDestroyDescriptorPool;
7125     }
7126     if (!strcmp(name, "vkResetDescriptorPool"))
7127     {
7128         return (void*)entry_vkResetDescriptorPool;
7129     }
7130     if (!strcmp(name, "vkAllocateDescriptorSets"))
7131     {
7132         return (void*)entry_vkAllocateDescriptorSets;
7133     }
7134     if (!strcmp(name, "vkFreeDescriptorSets"))
7135     {
7136         return (void*)entry_vkFreeDescriptorSets;
7137     }
7138     if (!strcmp(name, "vkUpdateDescriptorSets"))
7139     {
7140         return (void*)entry_vkUpdateDescriptorSets;
7141     }
7142     if (!strcmp(name, "vkCreateFramebuffer"))
7143     {
7144         return (void*)entry_vkCreateFramebuffer;
7145     }
7146     if (!strcmp(name, "vkDestroyFramebuffer"))
7147     {
7148         return (void*)entry_vkDestroyFramebuffer;
7149     }
7150     if (!strcmp(name, "vkCreateRenderPass"))
7151     {
7152         return (void*)entry_vkCreateRenderPass;
7153     }
7154     if (!strcmp(name, "vkDestroyRenderPass"))
7155     {
7156         return (void*)entry_vkDestroyRenderPass;
7157     }
7158     if (!strcmp(name, "vkGetRenderAreaGranularity"))
7159     {
7160         return (void*)entry_vkGetRenderAreaGranularity;
7161     }
7162     if (!strcmp(name, "vkCreateCommandPool"))
7163     {
7164         return (void*)entry_vkCreateCommandPool;
7165     }
7166     if (!strcmp(name, "vkDestroyCommandPool"))
7167     {
7168         return (void*)entry_vkDestroyCommandPool;
7169     }
7170     if (!strcmp(name, "vkResetCommandPool"))
7171     {
7172         return (void*)entry_vkResetCommandPool;
7173     }
7174     if (!strcmp(name, "vkAllocateCommandBuffers"))
7175     {
7176         return (void*)entry_vkAllocateCommandBuffers;
7177     }
7178     if (!strcmp(name, "vkFreeCommandBuffers"))
7179     {
7180         return (void*)entry_vkFreeCommandBuffers;
7181     }
7182     if (!strcmp(name, "vkBeginCommandBuffer"))
7183     {
7184         return (void*)entry_vkBeginCommandBuffer;
7185     }
7186     if (!strcmp(name, "vkEndCommandBuffer"))
7187     {
7188         return (void*)entry_vkEndCommandBuffer;
7189     }
7190     if (!strcmp(name, "vkResetCommandBuffer"))
7191     {
7192         return (void*)entry_vkResetCommandBuffer;
7193     }
7194     if (!strcmp(name, "vkCmdBindPipeline"))
7195     {
7196         return (void*)entry_vkCmdBindPipeline;
7197     }
7198     if (!strcmp(name, "vkCmdSetViewport"))
7199     {
7200         return (void*)entry_vkCmdSetViewport;
7201     }
7202     if (!strcmp(name, "vkCmdSetScissor"))
7203     {
7204         return (void*)entry_vkCmdSetScissor;
7205     }
7206     if (!strcmp(name, "vkCmdSetLineWidth"))
7207     {
7208         return (void*)entry_vkCmdSetLineWidth;
7209     }
7210     if (!strcmp(name, "vkCmdSetDepthBias"))
7211     {
7212         return (void*)entry_vkCmdSetDepthBias;
7213     }
7214     if (!strcmp(name, "vkCmdSetBlendConstants"))
7215     {
7216         return (void*)entry_vkCmdSetBlendConstants;
7217     }
7218     if (!strcmp(name, "vkCmdSetDepthBounds"))
7219     {
7220         return (void*)entry_vkCmdSetDepthBounds;
7221     }
7222     if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7223     {
7224         return (void*)entry_vkCmdSetStencilCompareMask;
7225     }
7226     if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7227     {
7228         return (void*)entry_vkCmdSetStencilWriteMask;
7229     }
7230     if (!strcmp(name, "vkCmdSetStencilReference"))
7231     {
7232         return (void*)entry_vkCmdSetStencilReference;
7233     }
7234     if (!strcmp(name, "vkCmdBindDescriptorSets"))
7235     {
7236         return (void*)entry_vkCmdBindDescriptorSets;
7237     }
7238     if (!strcmp(name, "vkCmdBindIndexBuffer"))
7239     {
7240         return (void*)entry_vkCmdBindIndexBuffer;
7241     }
7242     if (!strcmp(name, "vkCmdBindVertexBuffers"))
7243     {
7244         return (void*)entry_vkCmdBindVertexBuffers;
7245     }
7246     if (!strcmp(name, "vkCmdDraw"))
7247     {
7248         return (void*)entry_vkCmdDraw;
7249     }
7250     if (!strcmp(name, "vkCmdDrawIndexed"))
7251     {
7252         return (void*)entry_vkCmdDrawIndexed;
7253     }
7254     if (!strcmp(name, "vkCmdDrawIndirect"))
7255     {
7256         return (void*)entry_vkCmdDrawIndirect;
7257     }
7258     if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7259     {
7260         return (void*)entry_vkCmdDrawIndexedIndirect;
7261     }
7262     if (!strcmp(name, "vkCmdDispatch"))
7263     {
7264         return (void*)entry_vkCmdDispatch;
7265     }
7266     if (!strcmp(name, "vkCmdDispatchIndirect"))
7267     {
7268         return (void*)entry_vkCmdDispatchIndirect;
7269     }
7270     if (!strcmp(name, "vkCmdCopyBuffer"))
7271     {
7272         return (void*)entry_vkCmdCopyBuffer;
7273     }
7274     if (!strcmp(name, "vkCmdCopyImage"))
7275     {
7276         return (void*)entry_vkCmdCopyImage;
7277     }
7278     if (!strcmp(name, "vkCmdBlitImage"))
7279     {
7280         return (void*)entry_vkCmdBlitImage;
7281     }
7282     if (!strcmp(name, "vkCmdCopyBufferToImage"))
7283     {
7284         return (void*)entry_vkCmdCopyBufferToImage;
7285     }
7286     if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7287     {
7288         return (void*)entry_vkCmdCopyImageToBuffer;
7289     }
7290     if (!strcmp(name, "vkCmdUpdateBuffer"))
7291     {
7292         return (void*)entry_vkCmdUpdateBuffer;
7293     }
7294     if (!strcmp(name, "vkCmdFillBuffer"))
7295     {
7296         return (void*)entry_vkCmdFillBuffer;
7297     }
7298     if (!strcmp(name, "vkCmdClearColorImage"))
7299     {
7300         return (void*)entry_vkCmdClearColorImage;
7301     }
7302     if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7303     {
7304         return (void*)entry_vkCmdClearDepthStencilImage;
7305     }
7306     if (!strcmp(name, "vkCmdClearAttachments"))
7307     {
7308         return (void*)entry_vkCmdClearAttachments;
7309     }
7310     if (!strcmp(name, "vkCmdResolveImage"))
7311     {
7312         return (void*)entry_vkCmdResolveImage;
7313     }
7314     if (!strcmp(name, "vkCmdSetEvent"))
7315     {
7316         return (void*)entry_vkCmdSetEvent;
7317     }
7318     if (!strcmp(name, "vkCmdResetEvent"))
7319     {
7320         return (void*)entry_vkCmdResetEvent;
7321     }
7322     if (!strcmp(name, "vkCmdWaitEvents"))
7323     {
7324         return (void*)entry_vkCmdWaitEvents;
7325     }
7326     if (!strcmp(name, "vkCmdPipelineBarrier"))
7327     {
7328         return (void*)entry_vkCmdPipelineBarrier;
7329     }
7330     if (!strcmp(name, "vkCmdBeginQuery"))
7331     {
7332         return (void*)entry_vkCmdBeginQuery;
7333     }
7334     if (!strcmp(name, "vkCmdEndQuery"))
7335     {
7336         return (void*)entry_vkCmdEndQuery;
7337     }
7338     if (!strcmp(name, "vkCmdResetQueryPool"))
7339     {
7340         return (void*)entry_vkCmdResetQueryPool;
7341     }
7342     if (!strcmp(name, "vkCmdWriteTimestamp"))
7343     {
7344         return (void*)entry_vkCmdWriteTimestamp;
7345     }
7346     if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7347     {
7348         return (void*)entry_vkCmdCopyQueryPoolResults;
7349     }
7350     if (!strcmp(name, "vkCmdPushConstants"))
7351     {
7352         return (void*)entry_vkCmdPushConstants;
7353     }
7354     if (!strcmp(name, "vkCmdBeginRenderPass"))
7355     {
7356         return (void*)entry_vkCmdBeginRenderPass;
7357     }
7358     if (!strcmp(name, "vkCmdNextSubpass"))
7359     {
7360         return (void*)entry_vkCmdNextSubpass;
7361     }
7362     if (!strcmp(name, "vkCmdEndRenderPass"))
7363     {
7364         return (void*)entry_vkCmdEndRenderPass;
7365     }
7366     if (!strcmp(name, "vkCmdExecuteCommands"))
7367     {
7368         return (void*)entry_vkCmdExecuteCommands;
7369     }
7370 #endif
7371 #ifdef VK_VERSION_1_1
7372     if (!strcmp(name, "vkEnumerateInstanceVersion"))
7373     {
7374         return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7375     }
7376     if (!strcmp(name, "vkBindBufferMemory2"))
7377     {
7378         return (void*)dynCheck_entry_vkBindBufferMemory2;
7379     }
7380     if (!strcmp(name, "vkBindImageMemory2"))
7381     {
7382         return (void*)dynCheck_entry_vkBindImageMemory2;
7383     }
7384     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7385     {
7386         return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
7387     }
7388     if (!strcmp(name, "vkCmdSetDeviceMask"))
7389     {
7390         return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7391     }
7392     if (!strcmp(name, "vkCmdDispatchBase"))
7393     {
7394         return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7395     }
7396     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7397     {
7398         return nullptr;
7399     }
7400     if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7401     {
7402         return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
7403     }
7404     if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7405     {
7406         return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
7407     }
7408     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7409     {
7410         return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
7411     }
7412     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7413     {
7414         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7415     }
7416     if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7417     {
7418         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7419     }
7420     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7421     {
7422         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7423     }
7424     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7425     {
7426         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7427     }
7428     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7429     {
7430         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7431     }
7432     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7433     {
7434         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7435     }
7436     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7437     {
7438         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7439     }
7440     if (!strcmp(name, "vkTrimCommandPool"))
7441     {
7442         return (void*)dynCheck_entry_vkTrimCommandPool;
7443     }
7444     if (!strcmp(name, "vkGetDeviceQueue2"))
7445     {
7446         return (void*)dynCheck_entry_vkGetDeviceQueue2;
7447     }
7448     if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7449     {
7450         return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
7451     }
7452     if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7453     {
7454         return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
7455     }
7456     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7457     {
7458         return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
7459     }
7460     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7461     {
7462         return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
7463     }
7464     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7465     {
7466         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
7467     }
7468     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7469     {
7470         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7471     }
7472     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7473     {
7474         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7475     }
7476     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7477     {
7478         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7479     }
7480     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7481     {
7482         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
7483     }
7484 #endif
7485 #ifdef VK_KHR_surface
7486     if (!strcmp(name, "vkDestroySurfaceKHR"))
7487     {
7488         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7489         return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7490     }
7491     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7492     {
7493         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7494         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7495     }
7496     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7497     {
7498         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7499         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7500     }
7501     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7502     {
7503         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7504         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7505     }
7506     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7507     {
7508         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7509         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7510     }
7511 #endif
7512 #ifdef VK_KHR_swapchain
7513     if (!strcmp(name, "vkCreateSwapchainKHR"))
7514     {
7515         return (void*)dynCheck_entry_vkCreateSwapchainKHR;
7516     }
7517     if (!strcmp(name, "vkDestroySwapchainKHR"))
7518     {
7519         return (void*)dynCheck_entry_vkDestroySwapchainKHR;
7520     }
7521     if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7522     {
7523         return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
7524     }
7525     if (!strcmp(name, "vkAcquireNextImageKHR"))
7526     {
7527         return (void*)dynCheck_entry_vkAcquireNextImageKHR;
7528     }
7529     if (!strcmp(name, "vkQueuePresentKHR"))
7530     {
7531         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7532         return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7533     }
7534     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7535     {
7536         return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
7537     }
7538     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7539     {
7540         return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
7541     }
7542     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7543     {
7544         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7545         return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7546     }
7547     if (!strcmp(name, "vkAcquireNextImage2KHR"))
7548     {
7549         return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
7550     }
7551 #endif
7552 #ifdef VK_KHR_display
7553     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7554     {
7555         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7556         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7557     }
7558     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7559     {
7560         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7561         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7562     }
7563     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7564     {
7565         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7566         return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7567     }
7568     if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7569     {
7570         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7571         return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7572     }
7573     if (!strcmp(name, "vkCreateDisplayModeKHR"))
7574     {
7575         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7576         return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7577     }
7578     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7579     {
7580         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7581         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7582     }
7583     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7584     {
7585         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7586         return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7587     }
7588 #endif
7589 #ifdef VK_KHR_display_swapchain
7590     if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7591     {
7592         return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
7593     }
7594 #endif
7595 #ifdef VK_KHR_xlib_surface
7596     if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7597     {
7598         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7599         return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7600     }
7601     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7602     {
7603         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7604         return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7605     }
7606 #endif
7607 #ifdef VK_KHR_xcb_surface
7608     if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7609     {
7610         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7611         return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7612     }
7613     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7614     {
7615         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7616         return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7617     }
7618 #endif
7619 #ifdef VK_KHR_wayland_surface
7620     if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7621     {
7622         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7623         return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7624     }
7625     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7626     {
7627         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7628         return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7629     }
7630 #endif
7631 #ifdef VK_KHR_mir_surface
7632     if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7633     {
7634         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7635         return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7636     }
7637     if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7638     {
7639         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7640         return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7641     }
7642 #endif
7643 #ifdef VK_KHR_android_surface
7644     if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7645     {
7646         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7647         return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7648     }
7649 #endif
7650 #ifdef VK_KHR_win32_surface
7651     if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7652     {
7653         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7654         return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7655     }
7656     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7657     {
7658         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7659         return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7660     }
7661 #endif
7662 #ifdef VK_KHR_get_physical_device_properties2
7663     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7664     {
7665         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7666         return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7667     }
7668     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7669     {
7670         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7671         return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7672     }
7673     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7674     {
7675         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7676         return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7677     }
7678     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7679     {
7680         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7681         return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7682     }
7683     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7684     {
7685         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7686         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7687     }
7688     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7689     {
7690         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7691         return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7692     }
7693     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7694     {
7695         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7696         return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7697     }
7698 #endif
7699 #ifdef VK_KHR_device_group
7700     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7701     {
7702         return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
7703     }
7704     if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7705     {
7706         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7707         return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7708     }
7709     if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7710     {
7711         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7712         return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7713     }
7714 #endif
7715 #ifdef VK_KHR_maintenance1
7716     if (!strcmp(name, "vkTrimCommandPoolKHR"))
7717     {
7718         return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
7719     }
7720 #endif
7721 #ifdef VK_KHR_device_group_creation
7722     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7723     {
7724         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7725         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7726     }
7727 #endif
7728 #ifdef VK_KHR_external_memory_capabilities
7729     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7730     {
7731         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7732         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7733     }
7734 #endif
7735 #ifdef VK_KHR_external_memory_win32
7736     if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7737     {
7738         return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
7739     }
7740     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7741     {
7742         return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
7743     }
7744 #endif
7745 #ifdef VK_KHR_external_memory_fd
7746     if (!strcmp(name, "vkGetMemoryFdKHR"))
7747     {
7748         return (void*)dynCheck_entry_vkGetMemoryFdKHR;
7749     }
7750     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7751     {
7752         return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
7753     }
7754 #endif
7755 #ifdef VK_KHR_external_semaphore_capabilities
7756     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7757     {
7758         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7759         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7760     }
7761 #endif
7762 #ifdef VK_KHR_external_semaphore_win32
7763     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7764     {
7765         return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
7766     }
7767     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7768     {
7769         return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
7770     }
7771 #endif
7772 #ifdef VK_KHR_external_semaphore_fd
7773     if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7774     {
7775         return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
7776     }
7777     if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7778     {
7779         return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
7780     }
7781 #endif
7782 #ifdef VK_KHR_push_descriptor
7783     if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7784     {
7785         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7786         return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7787     }
7788     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7789     {
7790         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7791         return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7792     }
7793 #endif
7794 #ifdef VK_KHR_descriptor_update_template
7795     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7796     {
7797         return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
7798     }
7799     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7800     {
7801         return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
7802     }
7803     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7804     {
7805         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
7806     }
7807 #endif
7808 #ifdef VK_KHR_create_renderpass2
7809     if (!strcmp(name, "vkCreateRenderPass2KHR"))
7810     {
7811         return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
7812     }
7813     if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7814     {
7815         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7816         return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7817     }
7818     if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7819     {
7820         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7821         return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7822     }
7823     if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7824     {
7825         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7826         return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7827     }
7828 #endif
7829 #ifdef VK_KHR_shared_presentable_image
7830     if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7831     {
7832         return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
7833     }
7834 #endif
7835 #ifdef VK_KHR_external_fence_capabilities
7836     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7837     {
7838         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7839         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7840     }
7841 #endif
7842 #ifdef VK_KHR_external_fence_win32
7843     if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7844     {
7845         return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
7846     }
7847     if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7848     {
7849         return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
7850     }
7851 #endif
7852 #ifdef VK_KHR_external_fence_fd
7853     if (!strcmp(name, "vkImportFenceFdKHR"))
7854     {
7855         return (void*)dynCheck_entry_vkImportFenceFdKHR;
7856     }
7857     if (!strcmp(name, "vkGetFenceFdKHR"))
7858     {
7859         return (void*)dynCheck_entry_vkGetFenceFdKHR;
7860     }
7861 #endif
7862 #ifdef VK_KHR_get_surface_capabilities2
7863     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7864     {
7865         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7866         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7867     }
7868     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7869     {
7870         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7871         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7872     }
7873 #endif
7874 #ifdef VK_KHR_get_display_properties2
7875     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7876     {
7877         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7878         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7879     }
7880     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7881     {
7882         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7883         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7884     }
7885     if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7886     {
7887         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7888         return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7889     }
7890     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7891     {
7892         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7893         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7894     }
7895 #endif
7896 #ifdef VK_KHR_get_memory_requirements2
7897     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7898     {
7899         return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
7900     }
7901     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7902     {
7903         return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
7904     }
7905     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7906     {
7907         return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
7908     }
7909 #endif
7910 #ifdef VK_KHR_sampler_ycbcr_conversion
7911     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7912     {
7913         return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
7914     }
7915     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7916     {
7917         return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
7918     }
7919 #endif
7920 #ifdef VK_KHR_bind_memory2
7921     if (!strcmp(name, "vkBindBufferMemory2KHR"))
7922     {
7923         return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
7924     }
7925     if (!strcmp(name, "vkBindImageMemory2KHR"))
7926     {
7927         return (void*)dynCheck_entry_vkBindImageMemory2KHR;
7928     }
7929 #endif
7930 #ifdef VK_KHR_maintenance3
7931     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7932     {
7933         return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
7934     }
7935 #endif
7936 #ifdef VK_KHR_draw_indirect_count
7937     if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7938     {
7939         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7940         return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7941     }
7942     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7943     {
7944         bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7945         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7946     }
7947 #endif
7948 #ifdef VK_ANDROID_native_buffer
7949     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7950     {
7951         return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
7952     }
7953     if (!strcmp(name, "vkAcquireImageANDROID"))
7954     {
7955         return (void*)dynCheck_entry_vkAcquireImageANDROID;
7956     }
7957     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7958     {
7959         bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7960         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7961     }
7962 #endif
7963 #ifdef VK_EXT_debug_report
7964     if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7965     {
7966         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7967         return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7968     }
7969     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7970     {
7971         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7972         return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7973     }
7974     if (!strcmp(name, "vkDebugReportMessageEXT"))
7975     {
7976         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7977         return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7978     }
7979 #endif
7980 #ifdef VK_EXT_debug_marker
7981     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7982     {
7983         return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
7984     }
7985     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7986     {
7987         return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
7988     }
7989     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7990     {
7991         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7992         return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7993     }
7994     if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7995     {
7996         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7997         return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7998     }
7999     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8000     {
8001         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8002         return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8003     }
8004 #endif
8005 #ifdef VK_AMD_draw_indirect_count
8006     if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8007     {
8008         bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8009         return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8010     }
8011     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8012     {
8013         bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8014         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8015     }
8016 #endif
8017 #ifdef VK_AMD_shader_info
8018     if (!strcmp(name, "vkGetShaderInfoAMD"))
8019     {
8020         return (void*)dynCheck_entry_vkGetShaderInfoAMD;
8021     }
8022 #endif
8023 #ifdef VK_NV_external_memory_capabilities
8024     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8025     {
8026         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
8027         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8028     }
8029 #endif
8030 #ifdef VK_NV_external_memory_win32
8031     if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8032     {
8033         return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
8034     }
8035 #endif
8036 #ifdef VK_NN_vi_surface
8037     if (!strcmp(name, "vkCreateViSurfaceNN"))
8038     {
8039         bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
8040         return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8041     }
8042 #endif
8043 #ifdef VK_EXT_conditional_rendering
8044     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8045     {
8046         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8047         return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8048     }
8049     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8050     {
8051         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8052         return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8053     }
8054 #endif
8055 #ifdef VK_NVX_device_generated_commands
8056     if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8057     {
8058         bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8059         return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8060     }
8061     if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8062     {
8063         bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8064         return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8065     }
8066     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8067     {
8068         return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
8069     }
8070     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8071     {
8072         return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
8073     }
8074     if (!strcmp(name, "vkCreateObjectTableNVX"))
8075     {
8076         return (void*)dynCheck_entry_vkCreateObjectTableNVX;
8077     }
8078     if (!strcmp(name, "vkDestroyObjectTableNVX"))
8079     {
8080         return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
8081     }
8082     if (!strcmp(name, "vkRegisterObjectsNVX"))
8083     {
8084         return (void*)dynCheck_entry_vkRegisterObjectsNVX;
8085     }
8086     if (!strcmp(name, "vkUnregisterObjectsNVX"))
8087     {
8088         return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
8089     }
8090     if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8091     {
8092         bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8093         return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8094     }
8095 #endif
8096 #ifdef VK_NV_clip_space_w_scaling
8097     if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8098     {
8099         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8100         return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8101     }
8102 #endif
8103 #ifdef VK_EXT_direct_mode_display
8104     if (!strcmp(name, "vkReleaseDisplayEXT"))
8105     {
8106         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8107         return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8108     }
8109 #endif
8110 #ifdef VK_EXT_acquire_xlib_display
8111     if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8112     {
8113         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8114         return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8115     }
8116     if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8117     {
8118         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8119         return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8120     }
8121 #endif
8122 #ifdef VK_EXT_display_surface_counter
8123     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8124     {
8125         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8126         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8127     }
8128 #endif
8129 #ifdef VK_EXT_display_control
8130     if (!strcmp(name, "vkDisplayPowerControlEXT"))
8131     {
8132         return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
8133     }
8134     if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8135     {
8136         return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
8137     }
8138     if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8139     {
8140         return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
8141     }
8142     if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8143     {
8144         return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
8145     }
8146 #endif
8147 #ifdef VK_GOOGLE_display_timing
8148     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8149     {
8150         return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
8151     }
8152     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8153     {
8154         return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
8155     }
8156 #endif
8157 #ifdef VK_EXT_discard_rectangles
8158     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8159     {
8160         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8161         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8162     }
8163 #endif
8164 #ifdef VK_EXT_hdr_metadata
8165     if (!strcmp(name, "vkSetHdrMetadataEXT"))
8166     {
8167         return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
8168     }
8169 #endif
8170 #ifdef VK_MVK_ios_surface
8171     if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8172     {
8173         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8174         return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8175     }
8176 #endif
8177 #ifdef VK_MVK_macos_surface
8178     if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8179     {
8180         bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8181         return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8182     }
8183 #endif
8184 #ifdef VK_EXT_debug_utils
8185     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8186     {
8187         return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
8188     }
8189     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8190     {
8191         return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
8192     }
8193     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8194     {
8195         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8196         return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8197     }
8198     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8199     {
8200         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8201         return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8202     }
8203     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8204     {
8205         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8206         return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8207     }
8208     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8209     {
8210         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8211         return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8212     }
8213     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8214     {
8215         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8216         return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8217     }
8218     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8219     {
8220         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8221         return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8222     }
8223     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8224     {
8225         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8226         return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8227     }
8228     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8229     {
8230         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8231         return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8232     }
8233     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8234     {
8235         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8236         return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8237     }
8238 #endif
8239 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
8240     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8241     {
8242         return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
8243     }
8244     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8245     {
8246         return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
8247     }
8248 #endif
8249 #ifdef VK_EXT_sample_locations
8250     if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8251     {
8252         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8253         return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8254     }
8255     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8256     {
8257         bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8258         return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8259     }
8260 #endif
8261 #ifdef VK_EXT_validation_cache
8262     if (!strcmp(name, "vkCreateValidationCacheEXT"))
8263     {
8264         return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
8265     }
8266     if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8267     {
8268         return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
8269     }
8270     if (!strcmp(name, "vkMergeValidationCachesEXT"))
8271     {
8272         return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
8273     }
8274     if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8275     {
8276         return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
8277     }
8278 #endif
8279 #ifdef VK_EXT_external_memory_host
8280     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8281     {
8282         return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
8283     }
8284 #endif
8285 #ifdef VK_AMD_buffer_marker
8286     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8287     {
8288         bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8289         return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8290     }
8291 #endif
8292 #ifdef VK_NV_device_diagnostic_checkpoints
8293     if (!strcmp(name, "vkCmdSetCheckpointNV"))
8294     {
8295         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8296         return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8297     }
8298     if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8299     {
8300         bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8301         return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8302     }
8303 #endif
8304 #ifdef VK_GOOGLE_address_space
8305     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8306     {
8307         return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
8308     }
8309 #endif
8310 #ifdef VK_GOOGLE_color_buffer
8311     if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8312     {
8313         return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
8314     }
8315     if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8316     {
8317         return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
8318     }
8319 #endif
8320 #ifdef VK_GOOGLE_sized_descriptor_update_template
8321     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8322     {
8323         return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
8324     }
8325 #endif
8326 #ifdef VK_GOOGLE_async_command_buffers
8327     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8328     {
8329         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8330         return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8331     }
8332     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8333     {
8334         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8335         return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8336     }
8337     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8338     {
8339         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8340         return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8341     }
8342     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8343     {
8344         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8345         return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8346     }
8347 #endif
8348 #ifdef VK_GOOGLE_create_resources_with_requirements
8349     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8350     {
8351         return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
8352     }
8353     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8354     {
8355         return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
8356     }
8357 #endif
8358 #ifdef VK_GOOGLE_address_space_info
8359     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8360     {
8361         return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8362     }
8363 #endif
8364 #ifdef VK_GOOGLE_free_memory_sync
8365     if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8366     {
8367         return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8368     }
8369 #endif
8370 #ifdef VK_GOOGLE_async_queue_submit
8371     if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
8372     {
8373         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8374         return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
8375     }
8376     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
8377     {
8378         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8379         return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
8380     }
8381     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
8382     {
8383         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8384         return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
8385     }
8386     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
8387     {
8388         bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8389         return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
8390     }
8391 #endif
8392     return nullptr;
8393 }
goldfish_vulkan_get_device_proc_address(VkDevice device,const char * name)8394 void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8395     auto resources = ResourceTracker::get();
8396     bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8397 #ifdef VK_VERSION_1_0
8398     if (!strcmp(name, "vkCreateInstance"))
8399     {
8400         return (void*)entry_vkCreateInstance;
8401     }
8402     if (!strcmp(name, "vkDestroyInstance"))
8403     {
8404         return (void*)entry_vkDestroyInstance;
8405     }
8406     if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8407     {
8408         return (void*)entry_vkEnumeratePhysicalDevices;
8409     }
8410     if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8411     {
8412         return (void*)entry_vkGetPhysicalDeviceFeatures;
8413     }
8414     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8415     {
8416         return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8417     }
8418     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8419     {
8420         return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8421     }
8422     if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8423     {
8424         return (void*)entry_vkGetPhysicalDeviceProperties;
8425     }
8426     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8427     {
8428         return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8429     }
8430     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8431     {
8432         return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8433     }
8434     if (!strcmp(name, "vkGetInstanceProcAddr"))
8435     {
8436         return (void*)entry_vkGetInstanceProcAddr;
8437     }
8438     if (!strcmp(name, "vkGetDeviceProcAddr"))
8439     {
8440         return (void*)entry_vkGetDeviceProcAddr;
8441     }
8442     if (!strcmp(name, "vkCreateDevice"))
8443     {
8444         return (void*)entry_vkCreateDevice;
8445     }
8446     if (!strcmp(name, "vkDestroyDevice"))
8447     {
8448         return (void*)entry_vkDestroyDevice;
8449     }
8450     if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8451     {
8452         return (void*)entry_vkEnumerateInstanceExtensionProperties;
8453     }
8454     if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8455     {
8456         return (void*)entry_vkEnumerateDeviceExtensionProperties;
8457     }
8458     if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8459     {
8460         return (void*)entry_vkEnumerateInstanceLayerProperties;
8461     }
8462     if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8463     {
8464         return (void*)entry_vkEnumerateDeviceLayerProperties;
8465     }
8466     if (!strcmp(name, "vkGetDeviceQueue"))
8467     {
8468         return (void*)entry_vkGetDeviceQueue;
8469     }
8470     if (!strcmp(name, "vkQueueSubmit"))
8471     {
8472         return (void*)entry_vkQueueSubmit;
8473     }
8474     if (!strcmp(name, "vkQueueWaitIdle"))
8475     {
8476         return (void*)entry_vkQueueWaitIdle;
8477     }
8478     if (!strcmp(name, "vkDeviceWaitIdle"))
8479     {
8480         return (void*)entry_vkDeviceWaitIdle;
8481     }
8482     if (!strcmp(name, "vkAllocateMemory"))
8483     {
8484         return (void*)entry_vkAllocateMemory;
8485     }
8486     if (!strcmp(name, "vkFreeMemory"))
8487     {
8488         return (void*)entry_vkFreeMemory;
8489     }
8490     if (!strcmp(name, "vkMapMemory"))
8491     {
8492         return (void*)entry_vkMapMemory;
8493     }
8494     if (!strcmp(name, "vkUnmapMemory"))
8495     {
8496         return (void*)entry_vkUnmapMemory;
8497     }
8498     if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8499     {
8500         return (void*)entry_vkFlushMappedMemoryRanges;
8501     }
8502     if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8503     {
8504         return (void*)entry_vkInvalidateMappedMemoryRanges;
8505     }
8506     if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8507     {
8508         return (void*)entry_vkGetDeviceMemoryCommitment;
8509     }
8510     if (!strcmp(name, "vkBindBufferMemory"))
8511     {
8512         return (void*)entry_vkBindBufferMemory;
8513     }
8514     if (!strcmp(name, "vkBindImageMemory"))
8515     {
8516         return (void*)entry_vkBindImageMemory;
8517     }
8518     if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8519     {
8520         return (void*)entry_vkGetBufferMemoryRequirements;
8521     }
8522     if (!strcmp(name, "vkGetImageMemoryRequirements"))
8523     {
8524         return (void*)entry_vkGetImageMemoryRequirements;
8525     }
8526     if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8527     {
8528         return (void*)entry_vkGetImageSparseMemoryRequirements;
8529     }
8530     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8531     {
8532         return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8533     }
8534     if (!strcmp(name, "vkQueueBindSparse"))
8535     {
8536         return (void*)entry_vkQueueBindSparse;
8537     }
8538     if (!strcmp(name, "vkCreateFence"))
8539     {
8540         return (void*)entry_vkCreateFence;
8541     }
8542     if (!strcmp(name, "vkDestroyFence"))
8543     {
8544         return (void*)entry_vkDestroyFence;
8545     }
8546     if (!strcmp(name, "vkResetFences"))
8547     {
8548         return (void*)entry_vkResetFences;
8549     }
8550     if (!strcmp(name, "vkGetFenceStatus"))
8551     {
8552         return (void*)entry_vkGetFenceStatus;
8553     }
8554     if (!strcmp(name, "vkWaitForFences"))
8555     {
8556         return (void*)entry_vkWaitForFences;
8557     }
8558     if (!strcmp(name, "vkCreateSemaphore"))
8559     {
8560         return (void*)entry_vkCreateSemaphore;
8561     }
8562     if (!strcmp(name, "vkDestroySemaphore"))
8563     {
8564         return (void*)entry_vkDestroySemaphore;
8565     }
8566     if (!strcmp(name, "vkCreateEvent"))
8567     {
8568         return (void*)entry_vkCreateEvent;
8569     }
8570     if (!strcmp(name, "vkDestroyEvent"))
8571     {
8572         return (void*)entry_vkDestroyEvent;
8573     }
8574     if (!strcmp(name, "vkGetEventStatus"))
8575     {
8576         return (void*)entry_vkGetEventStatus;
8577     }
8578     if (!strcmp(name, "vkSetEvent"))
8579     {
8580         return (void*)entry_vkSetEvent;
8581     }
8582     if (!strcmp(name, "vkResetEvent"))
8583     {
8584         return (void*)entry_vkResetEvent;
8585     }
8586     if (!strcmp(name, "vkCreateQueryPool"))
8587     {
8588         return (void*)entry_vkCreateQueryPool;
8589     }
8590     if (!strcmp(name, "vkDestroyQueryPool"))
8591     {
8592         return (void*)entry_vkDestroyQueryPool;
8593     }
8594     if (!strcmp(name, "vkGetQueryPoolResults"))
8595     {
8596         return (void*)entry_vkGetQueryPoolResults;
8597     }
8598     if (!strcmp(name, "vkCreateBuffer"))
8599     {
8600         return (void*)entry_vkCreateBuffer;
8601     }
8602     if (!strcmp(name, "vkDestroyBuffer"))
8603     {
8604         return (void*)entry_vkDestroyBuffer;
8605     }
8606     if (!strcmp(name, "vkCreateBufferView"))
8607     {
8608         return (void*)entry_vkCreateBufferView;
8609     }
8610     if (!strcmp(name, "vkDestroyBufferView"))
8611     {
8612         return (void*)entry_vkDestroyBufferView;
8613     }
8614     if (!strcmp(name, "vkCreateImage"))
8615     {
8616         return (void*)entry_vkCreateImage;
8617     }
8618     if (!strcmp(name, "vkDestroyImage"))
8619     {
8620         return (void*)entry_vkDestroyImage;
8621     }
8622     if (!strcmp(name, "vkGetImageSubresourceLayout"))
8623     {
8624         return (void*)entry_vkGetImageSubresourceLayout;
8625     }
8626     if (!strcmp(name, "vkCreateImageView"))
8627     {
8628         return (void*)entry_vkCreateImageView;
8629     }
8630     if (!strcmp(name, "vkDestroyImageView"))
8631     {
8632         return (void*)entry_vkDestroyImageView;
8633     }
8634     if (!strcmp(name, "vkCreateShaderModule"))
8635     {
8636         return (void*)entry_vkCreateShaderModule;
8637     }
8638     if (!strcmp(name, "vkDestroyShaderModule"))
8639     {
8640         return (void*)entry_vkDestroyShaderModule;
8641     }
8642     if (!strcmp(name, "vkCreatePipelineCache"))
8643     {
8644         return (void*)entry_vkCreatePipelineCache;
8645     }
8646     if (!strcmp(name, "vkDestroyPipelineCache"))
8647     {
8648         return (void*)entry_vkDestroyPipelineCache;
8649     }
8650     if (!strcmp(name, "vkGetPipelineCacheData"))
8651     {
8652         return (void*)entry_vkGetPipelineCacheData;
8653     }
8654     if (!strcmp(name, "vkMergePipelineCaches"))
8655     {
8656         return (void*)entry_vkMergePipelineCaches;
8657     }
8658     if (!strcmp(name, "vkCreateGraphicsPipelines"))
8659     {
8660         return (void*)entry_vkCreateGraphicsPipelines;
8661     }
8662     if (!strcmp(name, "vkCreateComputePipelines"))
8663     {
8664         return (void*)entry_vkCreateComputePipelines;
8665     }
8666     if (!strcmp(name, "vkDestroyPipeline"))
8667     {
8668         return (void*)entry_vkDestroyPipeline;
8669     }
8670     if (!strcmp(name, "vkCreatePipelineLayout"))
8671     {
8672         return (void*)entry_vkCreatePipelineLayout;
8673     }
8674     if (!strcmp(name, "vkDestroyPipelineLayout"))
8675     {
8676         return (void*)entry_vkDestroyPipelineLayout;
8677     }
8678     if (!strcmp(name, "vkCreateSampler"))
8679     {
8680         return (void*)entry_vkCreateSampler;
8681     }
8682     if (!strcmp(name, "vkDestroySampler"))
8683     {
8684         return (void*)entry_vkDestroySampler;
8685     }
8686     if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8687     {
8688         return (void*)entry_vkCreateDescriptorSetLayout;
8689     }
8690     if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8691     {
8692         return (void*)entry_vkDestroyDescriptorSetLayout;
8693     }
8694     if (!strcmp(name, "vkCreateDescriptorPool"))
8695     {
8696         return (void*)entry_vkCreateDescriptorPool;
8697     }
8698     if (!strcmp(name, "vkDestroyDescriptorPool"))
8699     {
8700         return (void*)entry_vkDestroyDescriptorPool;
8701     }
8702     if (!strcmp(name, "vkResetDescriptorPool"))
8703     {
8704         return (void*)entry_vkResetDescriptorPool;
8705     }
8706     if (!strcmp(name, "vkAllocateDescriptorSets"))
8707     {
8708         return (void*)entry_vkAllocateDescriptorSets;
8709     }
8710     if (!strcmp(name, "vkFreeDescriptorSets"))
8711     {
8712         return (void*)entry_vkFreeDescriptorSets;
8713     }
8714     if (!strcmp(name, "vkUpdateDescriptorSets"))
8715     {
8716         return (void*)entry_vkUpdateDescriptorSets;
8717     }
8718     if (!strcmp(name, "vkCreateFramebuffer"))
8719     {
8720         return (void*)entry_vkCreateFramebuffer;
8721     }
8722     if (!strcmp(name, "vkDestroyFramebuffer"))
8723     {
8724         return (void*)entry_vkDestroyFramebuffer;
8725     }
8726     if (!strcmp(name, "vkCreateRenderPass"))
8727     {
8728         return (void*)entry_vkCreateRenderPass;
8729     }
8730     if (!strcmp(name, "vkDestroyRenderPass"))
8731     {
8732         return (void*)entry_vkDestroyRenderPass;
8733     }
8734     if (!strcmp(name, "vkGetRenderAreaGranularity"))
8735     {
8736         return (void*)entry_vkGetRenderAreaGranularity;
8737     }
8738     if (!strcmp(name, "vkCreateCommandPool"))
8739     {
8740         return (void*)entry_vkCreateCommandPool;
8741     }
8742     if (!strcmp(name, "vkDestroyCommandPool"))
8743     {
8744         return (void*)entry_vkDestroyCommandPool;
8745     }
8746     if (!strcmp(name, "vkResetCommandPool"))
8747     {
8748         return (void*)entry_vkResetCommandPool;
8749     }
8750     if (!strcmp(name, "vkAllocateCommandBuffers"))
8751     {
8752         return (void*)entry_vkAllocateCommandBuffers;
8753     }
8754     if (!strcmp(name, "vkFreeCommandBuffers"))
8755     {
8756         return (void*)entry_vkFreeCommandBuffers;
8757     }
8758     if (!strcmp(name, "vkBeginCommandBuffer"))
8759     {
8760         return (void*)entry_vkBeginCommandBuffer;
8761     }
8762     if (!strcmp(name, "vkEndCommandBuffer"))
8763     {
8764         return (void*)entry_vkEndCommandBuffer;
8765     }
8766     if (!strcmp(name, "vkResetCommandBuffer"))
8767     {
8768         return (void*)entry_vkResetCommandBuffer;
8769     }
8770     if (!strcmp(name, "vkCmdBindPipeline"))
8771     {
8772         return (void*)entry_vkCmdBindPipeline;
8773     }
8774     if (!strcmp(name, "vkCmdSetViewport"))
8775     {
8776         return (void*)entry_vkCmdSetViewport;
8777     }
8778     if (!strcmp(name, "vkCmdSetScissor"))
8779     {
8780         return (void*)entry_vkCmdSetScissor;
8781     }
8782     if (!strcmp(name, "vkCmdSetLineWidth"))
8783     {
8784         return (void*)entry_vkCmdSetLineWidth;
8785     }
8786     if (!strcmp(name, "vkCmdSetDepthBias"))
8787     {
8788         return (void*)entry_vkCmdSetDepthBias;
8789     }
8790     if (!strcmp(name, "vkCmdSetBlendConstants"))
8791     {
8792         return (void*)entry_vkCmdSetBlendConstants;
8793     }
8794     if (!strcmp(name, "vkCmdSetDepthBounds"))
8795     {
8796         return (void*)entry_vkCmdSetDepthBounds;
8797     }
8798     if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8799     {
8800         return (void*)entry_vkCmdSetStencilCompareMask;
8801     }
8802     if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8803     {
8804         return (void*)entry_vkCmdSetStencilWriteMask;
8805     }
8806     if (!strcmp(name, "vkCmdSetStencilReference"))
8807     {
8808         return (void*)entry_vkCmdSetStencilReference;
8809     }
8810     if (!strcmp(name, "vkCmdBindDescriptorSets"))
8811     {
8812         return (void*)entry_vkCmdBindDescriptorSets;
8813     }
8814     if (!strcmp(name, "vkCmdBindIndexBuffer"))
8815     {
8816         return (void*)entry_vkCmdBindIndexBuffer;
8817     }
8818     if (!strcmp(name, "vkCmdBindVertexBuffers"))
8819     {
8820         return (void*)entry_vkCmdBindVertexBuffers;
8821     }
8822     if (!strcmp(name, "vkCmdDraw"))
8823     {
8824         return (void*)entry_vkCmdDraw;
8825     }
8826     if (!strcmp(name, "vkCmdDrawIndexed"))
8827     {
8828         return (void*)entry_vkCmdDrawIndexed;
8829     }
8830     if (!strcmp(name, "vkCmdDrawIndirect"))
8831     {
8832         return (void*)entry_vkCmdDrawIndirect;
8833     }
8834     if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8835     {
8836         return (void*)entry_vkCmdDrawIndexedIndirect;
8837     }
8838     if (!strcmp(name, "vkCmdDispatch"))
8839     {
8840         return (void*)entry_vkCmdDispatch;
8841     }
8842     if (!strcmp(name, "vkCmdDispatchIndirect"))
8843     {
8844         return (void*)entry_vkCmdDispatchIndirect;
8845     }
8846     if (!strcmp(name, "vkCmdCopyBuffer"))
8847     {
8848         return (void*)entry_vkCmdCopyBuffer;
8849     }
8850     if (!strcmp(name, "vkCmdCopyImage"))
8851     {
8852         return (void*)entry_vkCmdCopyImage;
8853     }
8854     if (!strcmp(name, "vkCmdBlitImage"))
8855     {
8856         return (void*)entry_vkCmdBlitImage;
8857     }
8858     if (!strcmp(name, "vkCmdCopyBufferToImage"))
8859     {
8860         return (void*)entry_vkCmdCopyBufferToImage;
8861     }
8862     if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8863     {
8864         return (void*)entry_vkCmdCopyImageToBuffer;
8865     }
8866     if (!strcmp(name, "vkCmdUpdateBuffer"))
8867     {
8868         return (void*)entry_vkCmdUpdateBuffer;
8869     }
8870     if (!strcmp(name, "vkCmdFillBuffer"))
8871     {
8872         return (void*)entry_vkCmdFillBuffer;
8873     }
8874     if (!strcmp(name, "vkCmdClearColorImage"))
8875     {
8876         return (void*)entry_vkCmdClearColorImage;
8877     }
8878     if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8879     {
8880         return (void*)entry_vkCmdClearDepthStencilImage;
8881     }
8882     if (!strcmp(name, "vkCmdClearAttachments"))
8883     {
8884         return (void*)entry_vkCmdClearAttachments;
8885     }
8886     if (!strcmp(name, "vkCmdResolveImage"))
8887     {
8888         return (void*)entry_vkCmdResolveImage;
8889     }
8890     if (!strcmp(name, "vkCmdSetEvent"))
8891     {
8892         return (void*)entry_vkCmdSetEvent;
8893     }
8894     if (!strcmp(name, "vkCmdResetEvent"))
8895     {
8896         return (void*)entry_vkCmdResetEvent;
8897     }
8898     if (!strcmp(name, "vkCmdWaitEvents"))
8899     {
8900         return (void*)entry_vkCmdWaitEvents;
8901     }
8902     if (!strcmp(name, "vkCmdPipelineBarrier"))
8903     {
8904         return (void*)entry_vkCmdPipelineBarrier;
8905     }
8906     if (!strcmp(name, "vkCmdBeginQuery"))
8907     {
8908         return (void*)entry_vkCmdBeginQuery;
8909     }
8910     if (!strcmp(name, "vkCmdEndQuery"))
8911     {
8912         return (void*)entry_vkCmdEndQuery;
8913     }
8914     if (!strcmp(name, "vkCmdResetQueryPool"))
8915     {
8916         return (void*)entry_vkCmdResetQueryPool;
8917     }
8918     if (!strcmp(name, "vkCmdWriteTimestamp"))
8919     {
8920         return (void*)entry_vkCmdWriteTimestamp;
8921     }
8922     if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8923     {
8924         return (void*)entry_vkCmdCopyQueryPoolResults;
8925     }
8926     if (!strcmp(name, "vkCmdPushConstants"))
8927     {
8928         return (void*)entry_vkCmdPushConstants;
8929     }
8930     if (!strcmp(name, "vkCmdBeginRenderPass"))
8931     {
8932         return (void*)entry_vkCmdBeginRenderPass;
8933     }
8934     if (!strcmp(name, "vkCmdNextSubpass"))
8935     {
8936         return (void*)entry_vkCmdNextSubpass;
8937     }
8938     if (!strcmp(name, "vkCmdEndRenderPass"))
8939     {
8940         return (void*)entry_vkCmdEndRenderPass;
8941     }
8942     if (!strcmp(name, "vkCmdExecuteCommands"))
8943     {
8944         return (void*)entry_vkCmdExecuteCommands;
8945     }
8946 #endif
8947 #ifdef VK_VERSION_1_1
8948     if (!strcmp(name, "vkEnumerateInstanceVersion"))
8949     {
8950         return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8951     }
8952     if (!strcmp(name, "vkBindBufferMemory2"))
8953     {
8954         return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8955     }
8956     if (!strcmp(name, "vkBindImageMemory2"))
8957     {
8958         return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8959     }
8960     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8961     {
8962         return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8963     }
8964     if (!strcmp(name, "vkCmdSetDeviceMask"))
8965     {
8966         return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8967     }
8968     if (!strcmp(name, "vkCmdDispatchBase"))
8969     {
8970         return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8971     }
8972     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8973     {
8974         return nullptr;
8975     }
8976     if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8977     {
8978         return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8979     }
8980     if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8981     {
8982         return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8983     }
8984     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8985     {
8986         return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8987     }
8988     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8989     {
8990         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8991     }
8992     if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8993     {
8994         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8995     }
8996     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8997     {
8998         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8999     }
9000     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9001     {
9002         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
9003     }
9004     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9005     {
9006         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
9007     }
9008     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9009     {
9010         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
9011     }
9012     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9013     {
9014         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
9015     }
9016     if (!strcmp(name, "vkTrimCommandPool"))
9017     {
9018         return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
9019     }
9020     if (!strcmp(name, "vkGetDeviceQueue2"))
9021     {
9022         return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
9023     }
9024     if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9025     {
9026         return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
9027     }
9028     if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9029     {
9030         return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
9031     }
9032     if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9033     {
9034         return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
9035     }
9036     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9037     {
9038         return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
9039     }
9040     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9041     {
9042         return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
9043     }
9044     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9045     {
9046         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
9047     }
9048     if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9049     {
9050         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
9051     }
9052     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9053     {
9054         return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
9055     }
9056     if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9057     {
9058         return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
9059     }
9060 #endif
9061 #ifdef VK_KHR_surface
9062     if (!strcmp(name, "vkDestroySurfaceKHR"))
9063     {
9064         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9065         return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
9066     }
9067     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9068     {
9069         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9070         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
9071     }
9072     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9073     {
9074         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9075         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
9076     }
9077     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9078     {
9079         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9080         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
9081     }
9082     if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9083     {
9084         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9085         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
9086     }
9087 #endif
9088 #ifdef VK_KHR_swapchain
9089     if (!strcmp(name, "vkCreateSwapchainKHR"))
9090     {
9091         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9092         return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9093     }
9094     if (!strcmp(name, "vkDestroySwapchainKHR"))
9095     {
9096         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9097         return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9098     }
9099     if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9100     {
9101         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9102         return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9103     }
9104     if (!strcmp(name, "vkAcquireNextImageKHR"))
9105     {
9106         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9107         return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9108     }
9109     if (!strcmp(name, "vkQueuePresentKHR"))
9110     {
9111         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9112         return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9113     }
9114     if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9115     {
9116         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9117         return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9118     }
9119     if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9120     {
9121         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9122         return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9123     }
9124     if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9125     {
9126         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9127         return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9128     }
9129     if (!strcmp(name, "vkAcquireNextImage2KHR"))
9130     {
9131         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9132         return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9133     }
9134 #endif
9135 #ifdef VK_KHR_display
9136     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9137     {
9138         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9139         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9140     }
9141     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9142     {
9143         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9144         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9145     }
9146     if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9147     {
9148         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9149         return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9150     }
9151     if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9152     {
9153         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9154         return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9155     }
9156     if (!strcmp(name, "vkCreateDisplayModeKHR"))
9157     {
9158         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9159         return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9160     }
9161     if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9162     {
9163         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9164         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9165     }
9166     if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9167     {
9168         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9169         return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9170     }
9171 #endif
9172 #ifdef VK_KHR_display_swapchain
9173     if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9174     {
9175         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9176         return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9177     }
9178 #endif
9179 #ifdef VK_KHR_xlib_surface
9180     if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9181     {
9182         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9183         return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9184     }
9185     if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9186     {
9187         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9188         return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9189     }
9190 #endif
9191 #ifdef VK_KHR_xcb_surface
9192     if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9193     {
9194         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9195         return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9196     }
9197     if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9198     {
9199         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9200         return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9201     }
9202 #endif
9203 #ifdef VK_KHR_wayland_surface
9204     if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9205     {
9206         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9207         return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9208     }
9209     if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9210     {
9211         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9212         return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9213     }
9214 #endif
9215 #ifdef VK_KHR_mir_surface
9216     if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9217     {
9218         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9219         return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9220     }
9221     if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9222     {
9223         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9224         return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9225     }
9226 #endif
9227 #ifdef VK_KHR_android_surface
9228     if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9229     {
9230         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9231         return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9232     }
9233 #endif
9234 #ifdef VK_KHR_win32_surface
9235     if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9236     {
9237         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9238         return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9239     }
9240     if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9241     {
9242         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9243         return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9244     }
9245 #endif
9246 #ifdef VK_KHR_get_physical_device_properties2
9247     if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9248     {
9249         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9250         return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9251     }
9252     if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9253     {
9254         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9255         return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9256     }
9257     if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9258     {
9259         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9260         return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9261     }
9262     if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9263     {
9264         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9265         return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9266     }
9267     if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9268     {
9269         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9270         return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9271     }
9272     if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9273     {
9274         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9275         return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9276     }
9277     if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9278     {
9279         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9280         return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9281     }
9282 #endif
9283 #ifdef VK_KHR_device_group
9284     if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9285     {
9286         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9287         return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9288     }
9289     if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9290     {
9291         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9292         return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9293     }
9294     if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9295     {
9296         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9297         return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9298     }
9299 #endif
9300 #ifdef VK_KHR_maintenance1
9301     if (!strcmp(name, "vkTrimCommandPoolKHR"))
9302     {
9303         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9304         return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9305     }
9306 #endif
9307 #ifdef VK_KHR_device_group_creation
9308     if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9309     {
9310         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9311         return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9312     }
9313 #endif
9314 #ifdef VK_KHR_external_memory_capabilities
9315     if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9316     {
9317         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9318         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9319     }
9320 #endif
9321 #ifdef VK_KHR_external_memory_win32
9322     if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9323     {
9324         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9325         return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9326     }
9327     if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9328     {
9329         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9330         return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9331     }
9332 #endif
9333 #ifdef VK_KHR_external_memory_fd
9334     if (!strcmp(name, "vkGetMemoryFdKHR"))
9335     {
9336         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9337         return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9338     }
9339     if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9340     {
9341         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9342         return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9343     }
9344 #endif
9345 #ifdef VK_KHR_external_semaphore_capabilities
9346     if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9347     {
9348         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9349         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9350     }
9351 #endif
9352 #ifdef VK_KHR_external_semaphore_win32
9353     if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9354     {
9355         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9356         return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9357     }
9358     if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9359     {
9360         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9361         return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9362     }
9363 #endif
9364 #ifdef VK_KHR_external_semaphore_fd
9365     if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9366     {
9367         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9368         return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9369     }
9370     if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9371     {
9372         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9373         return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9374     }
9375 #endif
9376 #ifdef VK_KHR_push_descriptor
9377     if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9378     {
9379         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9380         return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9381     }
9382     if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9383     {
9384         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9385         return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9386     }
9387 #endif
9388 #ifdef VK_KHR_descriptor_update_template
9389     if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9390     {
9391         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9392         return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9393     }
9394     if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9395     {
9396         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9397         return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9398     }
9399     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9400     {
9401         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9402         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9403     }
9404 #endif
9405 #ifdef VK_KHR_create_renderpass2
9406     if (!strcmp(name, "vkCreateRenderPass2KHR"))
9407     {
9408         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9409         return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9410     }
9411     if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9412     {
9413         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9414         return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9415     }
9416     if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9417     {
9418         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9419         return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9420     }
9421     if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9422     {
9423         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9424         return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9425     }
9426 #endif
9427 #ifdef VK_KHR_shared_presentable_image
9428     if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9429     {
9430         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9431         return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9432     }
9433 #endif
9434 #ifdef VK_KHR_external_fence_capabilities
9435     if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9436     {
9437         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9438         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9439     }
9440 #endif
9441 #ifdef VK_KHR_external_fence_win32
9442     if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9443     {
9444         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9445         return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9446     }
9447     if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9448     {
9449         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9450         return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9451     }
9452 #endif
9453 #ifdef VK_KHR_external_fence_fd
9454     if (!strcmp(name, "vkImportFenceFdKHR"))
9455     {
9456         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9457         return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9458     }
9459     if (!strcmp(name, "vkGetFenceFdKHR"))
9460     {
9461         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9462         return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9463     }
9464 #endif
9465 #ifdef VK_KHR_get_surface_capabilities2
9466     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9467     {
9468         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9469         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9470     }
9471     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9472     {
9473         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9474         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9475     }
9476 #endif
9477 #ifdef VK_KHR_get_display_properties2
9478     if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9479     {
9480         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9481         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9482     }
9483     if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9484     {
9485         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9486         return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9487     }
9488     if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9489     {
9490         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9491         return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9492     }
9493     if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9494     {
9495         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9496         return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9497     }
9498 #endif
9499 #ifdef VK_KHR_get_memory_requirements2
9500     if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9501     {
9502         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9503         return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9504     }
9505     if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9506     {
9507         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9508         return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9509     }
9510     if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9511     {
9512         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9513         return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9514     }
9515 #endif
9516 #ifdef VK_KHR_sampler_ycbcr_conversion
9517     if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9518     {
9519         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9520         return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9521     }
9522     if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9523     {
9524         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9525         return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9526     }
9527 #endif
9528 #ifdef VK_KHR_bind_memory2
9529     if (!strcmp(name, "vkBindBufferMemory2KHR"))
9530     {
9531         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9532         return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9533     }
9534     if (!strcmp(name, "vkBindImageMemory2KHR"))
9535     {
9536         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9537         return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9538     }
9539 #endif
9540 #ifdef VK_KHR_maintenance3
9541     if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9542     {
9543         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9544         return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9545     }
9546 #endif
9547 #ifdef VK_KHR_draw_indirect_count
9548     if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9549     {
9550         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9551         return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9552     }
9553     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9554     {
9555         bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9556         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9557     }
9558 #endif
9559 #ifdef VK_ANDROID_native_buffer
9560     if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9561     {
9562         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9563         return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9564     }
9565     if (!strcmp(name, "vkAcquireImageANDROID"))
9566     {
9567         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9568         return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9569     }
9570     if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9571     {
9572         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9573         return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9574     }
9575 #endif
9576 #ifdef VK_EXT_debug_report
9577     if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9578     {
9579         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9580         return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9581     }
9582     if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9583     {
9584         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9585         return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9586     }
9587     if (!strcmp(name, "vkDebugReportMessageEXT"))
9588     {
9589         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9590         return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9591     }
9592 #endif
9593 #ifdef VK_EXT_debug_marker
9594     if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9595     {
9596         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9597         return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9598     }
9599     if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9600     {
9601         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9602         return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9603     }
9604     if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9605     {
9606         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9607         return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9608     }
9609     if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9610     {
9611         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9612         return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9613     }
9614     if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9615     {
9616         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9617         return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9618     }
9619 #endif
9620 #ifdef VK_AMD_draw_indirect_count
9621     if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9622     {
9623         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9624         return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9625     }
9626     if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9627     {
9628         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9629         return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9630     }
9631 #endif
9632 #ifdef VK_AMD_shader_info
9633     if (!strcmp(name, "vkGetShaderInfoAMD"))
9634     {
9635         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9636         return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9637     }
9638 #endif
9639 #ifdef VK_NV_external_memory_capabilities
9640     if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9641     {
9642         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9643         return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9644     }
9645 #endif
9646 #ifdef VK_NV_external_memory_win32
9647     if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9648     {
9649         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9650         return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9651     }
9652 #endif
9653 #ifdef VK_NN_vi_surface
9654     if (!strcmp(name, "vkCreateViSurfaceNN"))
9655     {
9656         bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9657         return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9658     }
9659 #endif
9660 #ifdef VK_EXT_conditional_rendering
9661     if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9662     {
9663         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9664         return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9665     }
9666     if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9667     {
9668         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9669         return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9670     }
9671 #endif
9672 #ifdef VK_NVX_device_generated_commands
9673     if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9674     {
9675         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9676         return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9677     }
9678     if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9679     {
9680         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9681         return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9682     }
9683     if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9684     {
9685         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9686         return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9687     }
9688     if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9689     {
9690         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9691         return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9692     }
9693     if (!strcmp(name, "vkCreateObjectTableNVX"))
9694     {
9695         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9696         return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9697     }
9698     if (!strcmp(name, "vkDestroyObjectTableNVX"))
9699     {
9700         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9701         return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9702     }
9703     if (!strcmp(name, "vkRegisterObjectsNVX"))
9704     {
9705         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9706         return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9707     }
9708     if (!strcmp(name, "vkUnregisterObjectsNVX"))
9709     {
9710         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9711         return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9712     }
9713     if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9714     {
9715         bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9716         return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9717     }
9718 #endif
9719 #ifdef VK_NV_clip_space_w_scaling
9720     if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9721     {
9722         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9723         return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9724     }
9725 #endif
9726 #ifdef VK_EXT_direct_mode_display
9727     if (!strcmp(name, "vkReleaseDisplayEXT"))
9728     {
9729         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9730         return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9731     }
9732 #endif
9733 #ifdef VK_EXT_acquire_xlib_display
9734     if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9735     {
9736         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9737         return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9738     }
9739     if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9740     {
9741         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9742         return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9743     }
9744 #endif
9745 #ifdef VK_EXT_display_surface_counter
9746     if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9747     {
9748         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9749         return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9750     }
9751 #endif
9752 #ifdef VK_EXT_display_control
9753     if (!strcmp(name, "vkDisplayPowerControlEXT"))
9754     {
9755         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9756         return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9757     }
9758     if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9759     {
9760         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9761         return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9762     }
9763     if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9764     {
9765         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9766         return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9767     }
9768     if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9769     {
9770         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9771         return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9772     }
9773 #endif
9774 #ifdef VK_GOOGLE_display_timing
9775     if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9776     {
9777         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9778         return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9779     }
9780     if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9781     {
9782         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9783         return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9784     }
9785 #endif
9786 #ifdef VK_EXT_discard_rectangles
9787     if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9788     {
9789         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9790         return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9791     }
9792 #endif
9793 #ifdef VK_EXT_hdr_metadata
9794     if (!strcmp(name, "vkSetHdrMetadataEXT"))
9795     {
9796         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9797         return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9798     }
9799 #endif
9800 #ifdef VK_MVK_ios_surface
9801     if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9802     {
9803         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9804         return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9805     }
9806 #endif
9807 #ifdef VK_MVK_macos_surface
9808     if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9809     {
9810         bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9811         return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9812     }
9813 #endif
9814 #ifdef VK_EXT_debug_utils
9815     if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9816     {
9817         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9818         return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9819     }
9820     if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9821     {
9822         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9823         return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9824     }
9825     if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9826     {
9827         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9828         return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9829     }
9830     if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9831     {
9832         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9833         return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9834     }
9835     if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9836     {
9837         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9838         return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9839     }
9840     if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9841     {
9842         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9843         return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9844     }
9845     if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9846     {
9847         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9848         return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9849     }
9850     if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9851     {
9852         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9853         return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9854     }
9855     if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9856     {
9857         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9858         return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9859     }
9860     if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9861     {
9862         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9863         return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9864     }
9865     if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9866     {
9867         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9868         return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9869     }
9870 #endif
9871 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
9872     if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9873     {
9874         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9875         return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9876     }
9877     if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9878     {
9879         bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9880         return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9881     }
9882 #endif
9883 #ifdef VK_EXT_sample_locations
9884     if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9885     {
9886         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9887         return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9888     }
9889     if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9890     {
9891         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9892         return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9893     }
9894 #endif
9895 #ifdef VK_EXT_validation_cache
9896     if (!strcmp(name, "vkCreateValidationCacheEXT"))
9897     {
9898         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9899         return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9900     }
9901     if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9902     {
9903         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9904         return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9905     }
9906     if (!strcmp(name, "vkMergeValidationCachesEXT"))
9907     {
9908         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9909         return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9910     }
9911     if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9912     {
9913         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9914         return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9915     }
9916 #endif
9917 #ifdef VK_EXT_external_memory_host
9918     if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9919     {
9920         bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9921         return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9922     }
9923 #endif
9924 #ifdef VK_AMD_buffer_marker
9925     if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9926     {
9927         bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9928         return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9929     }
9930 #endif
9931 #ifdef VK_NV_device_diagnostic_checkpoints
9932     if (!strcmp(name, "vkCmdSetCheckpointNV"))
9933     {
9934         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9935         return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9936     }
9937     if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9938     {
9939         bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9940         return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9941     }
9942 #endif
9943 #ifdef VK_GOOGLE_address_space
9944     if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9945     {
9946         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9947         return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
9948     }
9949 #endif
9950 #ifdef VK_GOOGLE_color_buffer
9951     if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9952     {
9953         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9954         return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9955     }
9956     if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9957     {
9958         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9959         return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9960     }
9961 #endif
9962 #ifdef VK_GOOGLE_sized_descriptor_update_template
9963     if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9964     {
9965         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9966         return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9967     }
9968 #endif
9969 #ifdef VK_GOOGLE_async_command_buffers
9970     if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9971     {
9972         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9973         return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9974     }
9975     if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9976     {
9977         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9978         return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9979     }
9980     if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9981     {
9982         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9983         return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9984     }
9985     if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9986     {
9987         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9988         return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9989     }
9990 #endif
9991 #ifdef VK_GOOGLE_create_resources_with_requirements
9992     if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9993     {
9994         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9995         return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9996     }
9997     if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9998     {
9999         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10000         return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
10001     }
10002 #endif
10003 #ifdef VK_GOOGLE_address_space_info
10004     if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
10005     {
10006         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
10007         return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
10008     }
10009 #endif
10010 #ifdef VK_GOOGLE_free_memory_sync
10011     if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
10012     {
10013         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
10014         return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
10015     }
10016 #endif
10017 #ifdef VK_GOOGLE_async_queue_submit
10018     if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
10019     {
10020         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10021         return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
10022     }
10023     if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
10024     {
10025         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10026         return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
10027     }
10028     if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
10029     {
10030         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10031         return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
10032     }
10033     if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
10034     {
10035         bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10036         return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
10037     }
10038 #endif
10039     return nullptr;
10040 }
10041 
10042 } // namespace goldfish_vk
10043