blob: 588ea533fb286453e493bad6c708acc4fab9beff [file] [log] [blame]
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001// Copyright (C) 2018 The Android Open Source Project
2// Copyright (C) 2018 Google Inc.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// Autogenerated module 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"
Lingfeng Yang239cd602021-01-22 22:57:35 -080029#include "../OpenglSystemCommon/HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080030#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080031
Lingfeng Yang808a6312018-11-13 21:06:15 -080032#include "goldfish_vk_private_defs.h"
33
Lingfeng Yang2f51a332019-10-30 09:25:25 -070034#include <log/log.h>
35
Lingfeng Yang0b81df22018-11-05 21:40:30 -080036// 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
Lingfeng Yang0b81df22018-11-05 21:40:30 -080041
42
43namespace goldfish_vk {
44
Lingfeng Yang2f51a332019-10-30 09:25:25 -070045static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46{
47 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48 abort();
49}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080050#ifdef VK_VERSION_1_0
51static VkResult entry_vkCreateInstance(
52 const VkInstanceCreateInfo* pCreateInfo,
53 const VkAllocationCallbacks* pAllocator,
54 VkInstance* pInstance)
55{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080056 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080058 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080059 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 return vkCreateInstance_VkResult_return;
61}
62static void entry_vkDestroyInstance(
63 VkInstance instance,
64 const VkAllocationCallbacks* pAllocator)
65{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080066 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080068 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080069}
70static VkResult entry_vkEnumeratePhysicalDevices(
71 VkInstance instance,
72 uint32_t* pPhysicalDeviceCount,
73 VkPhysicalDevice* pPhysicalDevices)
74{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080075 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080077 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080078 auto resources = ResourceTracker::get();
79 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080080 return vkEnumeratePhysicalDevices_VkResult_return;
81}
82static void entry_vkGetPhysicalDeviceFeatures(
83 VkPhysicalDevice physicalDevice,
84 VkPhysicalDeviceFeatures* pFeatures)
85{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080086 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080087 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080088 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080089}
90static void entry_vkGetPhysicalDeviceFormatProperties(
91 VkPhysicalDevice physicalDevice,
92 VkFormat format,
93 VkFormatProperties* pFormatProperties)
94{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080097 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080098}
99static 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{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800108 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800109 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800110 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800111 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113}
114static void entry_vkGetPhysicalDeviceProperties(
115 VkPhysicalDevice physicalDevice,
116 VkPhysicalDeviceProperties* pProperties)
117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800118 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800120 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800121}
122static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123 VkPhysicalDevice physicalDevice,
124 uint32_t* pQueueFamilyPropertyCount,
125 VkQueueFamilyProperties* pQueueFamilyProperties)
126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800129 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800130}
131static void entry_vkGetPhysicalDeviceMemoryProperties(
132 VkPhysicalDevice physicalDevice,
133 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800135 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800137 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800138}
139static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140 VkInstance instance,
141 const char* pName)
142{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800143 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800145 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800146 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148}
149static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150 VkDevice device,
151 const char* pName)
152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800153 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800154 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800155 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800156 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800157 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158}
159static VkResult entry_vkCreateDevice(
160 VkPhysicalDevice physicalDevice,
161 const VkDeviceCreateInfo* pCreateInfo,
162 const VkAllocationCallbacks* pAllocator,
163 VkDevice* pDevice)
164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800165 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800167 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800168 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 return vkCreateDevice_VkResult_return;
170}
171static void entry_vkDestroyDevice(
172 VkDevice device,
173 const VkAllocationCallbacks* pAllocator)
174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800175 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800177 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800178}
179static VkResult entry_vkEnumerateInstanceExtensionProperties(
180 const char* pLayerName,
181 uint32_t* pPropertyCount,
182 VkExtensionProperties* pProperties)
183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800184 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800186 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800187 auto resources = ResourceTracker::get();
188 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800189 return vkEnumerateInstanceExtensionProperties_VkResult_return;
190}
191static VkResult entry_vkEnumerateDeviceExtensionProperties(
192 VkPhysicalDevice physicalDevice,
193 const char* pLayerName,
194 uint32_t* pPropertyCount,
195 VkExtensionProperties* pProperties)
196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800197 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800198 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800199 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800200 auto resources = ResourceTracker::get();
201 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800202 return vkEnumerateDeviceExtensionProperties_VkResult_return;
203}
204static VkResult entry_vkEnumerateInstanceLayerProperties(
205 uint32_t* pPropertyCount,
206 VkLayerProperties* pProperties)
207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800208 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800210 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800211 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800212 return vkEnumerateInstanceLayerProperties_VkResult_return;
213}
214static VkResult entry_vkEnumerateDeviceLayerProperties(
215 VkPhysicalDevice physicalDevice,
216 uint32_t* pPropertyCount,
217 VkLayerProperties* pProperties)
218{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800219 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800220 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800221 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800222 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800223 return vkEnumerateDeviceLayerProperties_VkResult_return;
224}
225static void entry_vkGetDeviceQueue(
226 VkDevice device,
227 uint32_t queueFamilyIndex,
228 uint32_t queueIndex,
229 VkQueue* pQueue)
230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800231 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800233 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800234}
235static VkResult entry_vkQueueSubmit(
236 VkQueue queue,
237 uint32_t submitCount,
238 const VkSubmitInfo* pSubmits,
239 VkFence fence)
240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800241 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800242 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800243 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500244 auto resources = ResourceTracker::get();
245 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800246 return vkQueueSubmit_VkResult_return;
247}
248static VkResult entry_vkQueueWaitIdle(
249 VkQueue queue)
250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800251 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800252 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800253 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700254 auto resources = ResourceTracker::get();
255 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800256 return vkQueueWaitIdle_VkResult_return;
257}
258static VkResult entry_vkDeviceWaitIdle(
259 VkDevice device)
260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800261 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800263 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800264 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800265 return vkDeviceWaitIdle_VkResult_return;
266}
267static VkResult entry_vkAllocateMemory(
268 VkDevice device,
269 const VkMemoryAllocateInfo* pAllocateInfo,
270 const VkAllocationCallbacks* pAllocator,
271 VkDeviceMemory* pMemory)
272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800273 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800275 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800276 auto resources = ResourceTracker::get();
277 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800278 return vkAllocateMemory_VkResult_return;
279}
280static void entry_vkFreeMemory(
281 VkDevice device,
282 VkDeviceMemory memory,
283 const VkAllocationCallbacks* pAllocator)
284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800285 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800287 auto resources = ResourceTracker::get();
288 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800289}
290static VkResult entry_vkMapMemory(
291 VkDevice device,
292 VkDeviceMemory memory,
293 VkDeviceSize offset,
294 VkDeviceSize size,
295 VkMemoryMapFlags flags,
296 void** ppData)
297{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800298 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800300 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800301 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800302 return vkMapMemory_VkResult_return;
303}
304static void entry_vkUnmapMemory(
305 VkDevice device,
306 VkDeviceMemory memory)
307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800308 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800310 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800311}
312static VkResult entry_vkFlushMappedMemoryRanges(
313 VkDevice device,
314 uint32_t memoryRangeCount,
315 const VkMappedMemoryRange* pMemoryRanges)
316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800317 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800319 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800320 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 return vkFlushMappedMemoryRanges_VkResult_return;
322}
323static VkResult entry_vkInvalidateMappedMemoryRanges(
324 VkDevice device,
325 uint32_t memoryRangeCount,
326 const VkMappedMemoryRange* pMemoryRanges)
327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800328 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800329 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800330 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800331 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 return vkInvalidateMappedMemoryRanges_VkResult_return;
333}
334static void entry_vkGetDeviceMemoryCommitment(
335 VkDevice device,
336 VkDeviceMemory memory,
337 VkDeviceSize* pCommittedMemoryInBytes)
338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800339 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800341 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800342}
343static VkResult entry_vkBindBufferMemory(
344 VkDevice device,
345 VkBuffer buffer,
346 VkDeviceMemory memory,
347 VkDeviceSize memoryOffset)
348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800349 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800350 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800351 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800352 auto resources = ResourceTracker::get();
353 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800354 return vkBindBufferMemory_VkResult_return;
355}
356static VkResult entry_vkBindImageMemory(
357 VkDevice device,
358 VkImage image,
359 VkDeviceMemory memory,
360 VkDeviceSize memoryOffset)
361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800362 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800364 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800365 auto resources = ResourceTracker::get();
366 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800367 return vkBindImageMemory_VkResult_return;
368}
369static void entry_vkGetBufferMemoryRequirements(
370 VkDevice device,
371 VkBuffer buffer,
372 VkMemoryRequirements* pMemoryRequirements)
373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800374 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800375 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800376 auto resources = ResourceTracker::get();
377 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800378}
379static void entry_vkGetImageMemoryRequirements(
380 VkDevice device,
381 VkImage image,
382 VkMemoryRequirements* pMemoryRequirements)
383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800384 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800385 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800386 auto resources = ResourceTracker::get();
387 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800388}
389static void entry_vkGetImageSparseMemoryRequirements(
390 VkDevice device,
391 VkImage image,
392 uint32_t* pSparseMemoryRequirementCount,
393 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800395 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800396 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800397 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800398}
399static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
400 VkPhysicalDevice physicalDevice,
401 VkFormat format,
402 VkImageType type,
403 VkSampleCountFlagBits samples,
404 VkImageUsageFlags usage,
405 VkImageTiling tiling,
406 uint32_t* pPropertyCount,
407 VkSparseImageFormatProperties* pProperties)
408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800409 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800410 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800411 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800412}
413static VkResult entry_vkQueueBindSparse(
414 VkQueue queue,
415 uint32_t bindInfoCount,
416 const VkBindSparseInfo* pBindInfo,
417 VkFence fence)
418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800419 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800420 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800421 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800422 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800423 return vkQueueBindSparse_VkResult_return;
424}
425static VkResult entry_vkCreateFence(
426 VkDevice device,
427 const VkFenceCreateInfo* pCreateInfo,
428 const VkAllocationCallbacks* pAllocator,
429 VkFence* pFence)
430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800431 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800432 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800433 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700434 auto resources = ResourceTracker::get();
435 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800436 return vkCreateFence_VkResult_return;
437}
438static void entry_vkDestroyFence(
439 VkDevice device,
440 VkFence fence,
441 const VkAllocationCallbacks* pAllocator)
442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800443 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800445 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800446}
447static VkResult entry_vkResetFences(
448 VkDevice device,
449 uint32_t fenceCount,
450 const VkFence* pFences)
451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800452 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800453 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800454 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700455 auto resources = ResourceTracker::get();
456 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800457 return vkResetFences_VkResult_return;
458}
459static VkResult entry_vkGetFenceStatus(
460 VkDevice device,
461 VkFence fence)
462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800463 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800464 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800465 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800466 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 return vkGetFenceStatus_VkResult_return;
468}
469static VkResult entry_vkWaitForFences(
470 VkDevice device,
471 uint32_t fenceCount,
472 const VkFence* pFences,
473 VkBool32 waitAll,
474 uint64_t timeout)
475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800476 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800478 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700479 auto resources = ResourceTracker::get();
480 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800481 return vkWaitForFences_VkResult_return;
482}
483static VkResult entry_vkCreateSemaphore(
484 VkDevice device,
485 const VkSemaphoreCreateInfo* pCreateInfo,
486 const VkAllocationCallbacks* pAllocator,
487 VkSemaphore* pSemaphore)
488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800489 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800491 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500492 auto resources = ResourceTracker::get();
493 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800494 return vkCreateSemaphore_VkResult_return;
495}
496static void entry_vkDestroySemaphore(
497 VkDevice device,
498 VkSemaphore semaphore,
499 const VkAllocationCallbacks* pAllocator)
500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800501 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800502 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500503 auto resources = ResourceTracker::get();
504 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800505}
506static VkResult entry_vkCreateEvent(
507 VkDevice device,
508 const VkEventCreateInfo* pCreateInfo,
509 const VkAllocationCallbacks* pAllocator,
510 VkEvent* pEvent)
511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800512 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800514 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800515 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 return vkCreateEvent_VkResult_return;
517}
518static void entry_vkDestroyEvent(
519 VkDevice device,
520 VkEvent event,
521 const VkAllocationCallbacks* pAllocator)
522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800523 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800525 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800526}
527static VkResult entry_vkGetEventStatus(
528 VkDevice device,
529 VkEvent event)
530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800531 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800533 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800534 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 return vkGetEventStatus_VkResult_return;
536}
537static VkResult entry_vkSetEvent(
538 VkDevice device,
539 VkEvent event)
540{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800541 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800543 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800544 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 return vkSetEvent_VkResult_return;
546}
547static VkResult entry_vkResetEvent(
548 VkDevice device,
549 VkEvent event)
550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800551 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800552 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800553 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800554 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 return vkResetEvent_VkResult_return;
556}
557static VkResult entry_vkCreateQueryPool(
558 VkDevice device,
559 const VkQueryPoolCreateInfo* pCreateInfo,
560 const VkAllocationCallbacks* pAllocator,
561 VkQueryPool* pQueryPool)
562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800563 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800565 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800566 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 return vkCreateQueryPool_VkResult_return;
568}
569static void entry_vkDestroyQueryPool(
570 VkDevice device,
571 VkQueryPool queryPool,
572 const VkAllocationCallbacks* pAllocator)
573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800574 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800576 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800577}
578static VkResult entry_vkGetQueryPoolResults(
579 VkDevice device,
580 VkQueryPool queryPool,
581 uint32_t firstQuery,
582 uint32_t queryCount,
583 size_t dataSize,
584 void* pData,
585 VkDeviceSize stride,
586 VkQueryResultFlags flags)
587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800588 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800589 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800590 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800591 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 return vkGetQueryPoolResults_VkResult_return;
593}
594static VkResult entry_vkCreateBuffer(
595 VkDevice device,
596 const VkBufferCreateInfo* pCreateInfo,
597 const VkAllocationCallbacks* pAllocator,
598 VkBuffer* pBuffer)
599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800600 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800601 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800602 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800603 auto resources = ResourceTracker::get();
604 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800605 return vkCreateBuffer_VkResult_return;
606}
607static void entry_vkDestroyBuffer(
608 VkDevice device,
609 VkBuffer buffer,
610 const VkAllocationCallbacks* pAllocator)
611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800612 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800614 auto resources = ResourceTracker::get();
615 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800616}
617static VkResult entry_vkCreateBufferView(
618 VkDevice device,
619 const VkBufferViewCreateInfo* pCreateInfo,
620 const VkAllocationCallbacks* pAllocator,
621 VkBufferView* pView)
622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800623 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800625 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800626 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 return vkCreateBufferView_VkResult_return;
628}
629static void entry_vkDestroyBufferView(
630 VkDevice device,
631 VkBufferView bufferView,
632 const VkAllocationCallbacks* pAllocator)
633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800634 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800636 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800637}
638static VkResult entry_vkCreateImage(
639 VkDevice device,
640 const VkImageCreateInfo* pCreateInfo,
641 const VkAllocationCallbacks* pAllocator,
642 VkImage* pImage)
643{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800644 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800645 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800646 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800647 auto resources = ResourceTracker::get();
648 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800649 return vkCreateImage_VkResult_return;
650}
651static void entry_vkDestroyImage(
652 VkDevice device,
653 VkImage image,
654 const VkAllocationCallbacks* pAllocator)
655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800656 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800658 auto resources = ResourceTracker::get();
659 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800660}
661static void entry_vkGetImageSubresourceLayout(
662 VkDevice device,
663 VkImage image,
664 const VkImageSubresource* pSubresource,
665 VkSubresourceLayout* pLayout)
666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800667 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800669 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800670}
671static VkResult entry_vkCreateImageView(
672 VkDevice device,
673 const VkImageViewCreateInfo* pCreateInfo,
674 const VkAllocationCallbacks* pAllocator,
675 VkImageView* pView)
676{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800677 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800679 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700680 auto resources = ResourceTracker::get();
681 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800682 return vkCreateImageView_VkResult_return;
683}
684static void entry_vkDestroyImageView(
685 VkDevice device,
686 VkImageView imageView,
687 const VkAllocationCallbacks* pAllocator)
688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800689 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800690 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800691 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800692}
693static VkResult entry_vkCreateShaderModule(
694 VkDevice device,
695 const VkShaderModuleCreateInfo* pCreateInfo,
696 const VkAllocationCallbacks* pAllocator,
697 VkShaderModule* pShaderModule)
698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800699 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800700 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800701 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800702 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 return vkCreateShaderModule_VkResult_return;
704}
705static void entry_vkDestroyShaderModule(
706 VkDevice device,
707 VkShaderModule shaderModule,
708 const VkAllocationCallbacks* pAllocator)
709{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800710 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800711 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800712 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800713}
714static VkResult entry_vkCreatePipelineCache(
715 VkDevice device,
716 const VkPipelineCacheCreateInfo* pCreateInfo,
717 const VkAllocationCallbacks* pAllocator,
718 VkPipelineCache* pPipelineCache)
719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800720 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800722 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800723 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 return vkCreatePipelineCache_VkResult_return;
725}
726static void entry_vkDestroyPipelineCache(
727 VkDevice device,
728 VkPipelineCache pipelineCache,
729 const VkAllocationCallbacks* pAllocator)
730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800731 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800733 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800734}
735static VkResult entry_vkGetPipelineCacheData(
736 VkDevice device,
737 VkPipelineCache pipelineCache,
738 size_t* pDataSize,
739 void* pData)
740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800741 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800743 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800744 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 return vkGetPipelineCacheData_VkResult_return;
746}
747static VkResult entry_vkMergePipelineCaches(
748 VkDevice device,
749 VkPipelineCache dstCache,
750 uint32_t srcCacheCount,
751 const VkPipelineCache* pSrcCaches)
752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800753 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800755 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800756 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 return vkMergePipelineCaches_VkResult_return;
758}
759static VkResult entry_vkCreateGraphicsPipelines(
760 VkDevice device,
761 VkPipelineCache pipelineCache,
762 uint32_t createInfoCount,
763 const VkGraphicsPipelineCreateInfo* pCreateInfos,
764 const VkAllocationCallbacks* pAllocator,
765 VkPipeline* pPipelines)
766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800767 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800769 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800770 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 return vkCreateGraphicsPipelines_VkResult_return;
772}
773static VkResult entry_vkCreateComputePipelines(
774 VkDevice device,
775 VkPipelineCache pipelineCache,
776 uint32_t createInfoCount,
777 const VkComputePipelineCreateInfo* pCreateInfos,
778 const VkAllocationCallbacks* pAllocator,
779 VkPipeline* pPipelines)
780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800781 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800783 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800784 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 return vkCreateComputePipelines_VkResult_return;
786}
787static void entry_vkDestroyPipeline(
788 VkDevice device,
789 VkPipeline pipeline,
790 const VkAllocationCallbacks* pAllocator)
791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800792 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800794 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800795}
796static VkResult entry_vkCreatePipelineLayout(
797 VkDevice device,
798 const VkPipelineLayoutCreateInfo* pCreateInfo,
799 const VkAllocationCallbacks* pAllocator,
800 VkPipelineLayout* pPipelineLayout)
801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800802 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800803 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800804 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800805 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 return vkCreatePipelineLayout_VkResult_return;
807}
808static void entry_vkDestroyPipelineLayout(
809 VkDevice device,
810 VkPipelineLayout pipelineLayout,
811 const VkAllocationCallbacks* pAllocator)
812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800813 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800815 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800816}
817static VkResult entry_vkCreateSampler(
818 VkDevice device,
819 const VkSamplerCreateInfo* pCreateInfo,
820 const VkAllocationCallbacks* pAllocator,
821 VkSampler* pSampler)
822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800823 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800825 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700826 auto resources = ResourceTracker::get();
827 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800828 return vkCreateSampler_VkResult_return;
829}
830static void entry_vkDestroySampler(
831 VkDevice device,
832 VkSampler sampler,
833 const VkAllocationCallbacks* pAllocator)
834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800835 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800837 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800838}
839static VkResult entry_vkCreateDescriptorSetLayout(
840 VkDevice device,
841 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
842 const VkAllocationCallbacks* pAllocator,
843 VkDescriptorSetLayout* pSetLayout)
844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800845 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800847 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700848 auto resources = ResourceTracker::get();
849 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800850 return vkCreateDescriptorSetLayout_VkResult_return;
851}
852static void entry_vkDestroyDescriptorSetLayout(
853 VkDevice device,
854 VkDescriptorSetLayout descriptorSetLayout,
855 const VkAllocationCallbacks* pAllocator)
856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800857 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800859 vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800860}
861static VkResult entry_vkCreateDescriptorPool(
862 VkDevice device,
863 const VkDescriptorPoolCreateInfo* pCreateInfo,
864 const VkAllocationCallbacks* pAllocator,
865 VkDescriptorPool* pDescriptorPool)
866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800867 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800869 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700870 auto resources = ResourceTracker::get();
871 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800872 return vkCreateDescriptorPool_VkResult_return;
873}
874static void entry_vkDestroyDescriptorPool(
875 VkDevice device,
876 VkDescriptorPool descriptorPool,
877 const VkAllocationCallbacks* pAllocator)
878{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800879 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700881 auto resources = ResourceTracker::get();
882 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800883}
884static VkResult entry_vkResetDescriptorPool(
885 VkDevice device,
886 VkDescriptorPool descriptorPool,
887 VkDescriptorPoolResetFlags flags)
888{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800889 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800890 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800891 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700892 auto resources = ResourceTracker::get();
893 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800894 return vkResetDescriptorPool_VkResult_return;
895}
896static VkResult entry_vkAllocateDescriptorSets(
897 VkDevice device,
898 const VkDescriptorSetAllocateInfo* pAllocateInfo,
899 VkDescriptorSet* pDescriptorSets)
900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800901 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800902 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800903 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700904 auto resources = ResourceTracker::get();
905 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800906 return vkAllocateDescriptorSets_VkResult_return;
907}
908static VkResult entry_vkFreeDescriptorSets(
909 VkDevice device,
910 VkDescriptorPool descriptorPool,
911 uint32_t descriptorSetCount,
912 const VkDescriptorSet* pDescriptorSets)
913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800914 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800915 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800916 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700917 auto resources = ResourceTracker::get();
918 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800919 return vkFreeDescriptorSets_VkResult_return;
920}
921static void entry_vkUpdateDescriptorSets(
922 VkDevice device,
923 uint32_t descriptorWriteCount,
924 const VkWriteDescriptorSet* pDescriptorWrites,
925 uint32_t descriptorCopyCount,
926 const VkCopyDescriptorSet* pDescriptorCopies)
927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800928 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800929 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700930 auto resources = ResourceTracker::get();
931 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800932}
933static VkResult entry_vkCreateFramebuffer(
934 VkDevice device,
935 const VkFramebufferCreateInfo* pCreateInfo,
936 const VkAllocationCallbacks* pAllocator,
937 VkFramebuffer* pFramebuffer)
938{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800939 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800940 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800941 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800942 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800943 return vkCreateFramebuffer_VkResult_return;
944}
945static void entry_vkDestroyFramebuffer(
946 VkDevice device,
947 VkFramebuffer framebuffer,
948 const VkAllocationCallbacks* pAllocator)
949{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800950 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800951 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800952 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800953}
954static VkResult entry_vkCreateRenderPass(
955 VkDevice device,
956 const VkRenderPassCreateInfo* pCreateInfo,
957 const VkAllocationCallbacks* pAllocator,
958 VkRenderPass* pRenderPass)
959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800960 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800962 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800963 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800964 return vkCreateRenderPass_VkResult_return;
965}
966static void entry_vkDestroyRenderPass(
967 VkDevice device,
968 VkRenderPass renderPass,
969 const VkAllocationCallbacks* pAllocator)
970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800971 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800973 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800974}
975static void entry_vkGetRenderAreaGranularity(
976 VkDevice device,
977 VkRenderPass renderPass,
978 VkExtent2D* pGranularity)
979{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800980 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800982 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800983}
984static VkResult entry_vkCreateCommandPool(
985 VkDevice device,
986 const VkCommandPoolCreateInfo* pCreateInfo,
987 const VkAllocationCallbacks* pAllocator,
988 VkCommandPool* pCommandPool)
989{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800990 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800991 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800992 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800993 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800994 return vkCreateCommandPool_VkResult_return;
995}
996static void entry_vkDestroyCommandPool(
997 VkDevice device,
998 VkCommandPool commandPool,
999 const VkAllocationCallbacks* pAllocator)
1000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001001 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001002 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001003 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001004}
1005static VkResult entry_vkResetCommandPool(
1006 VkDevice device,
1007 VkCommandPool commandPool,
1008 VkCommandPoolResetFlags flags)
1009{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001010 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001011 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001012 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001013 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001014 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1015 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1016 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001017 return vkResetCommandPool_VkResult_return;
1018}
1019static VkResult entry_vkAllocateCommandBuffers(
1020 VkDevice device,
1021 const VkCommandBufferAllocateInfo* pAllocateInfo,
1022 VkCommandBuffer* pCommandBuffers)
1023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001024 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001026 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001027 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001028 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1029 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1030 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001031 return vkAllocateCommandBuffers_VkResult_return;
1032}
1033static void entry_vkFreeCommandBuffers(
1034 VkDevice device,
1035 VkCommandPool commandPool,
1036 uint32_t commandBufferCount,
1037 const VkCommandBuffer* pCommandBuffers)
1038{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001039 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001040 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001041 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001042}
1043static VkResult entry_vkBeginCommandBuffer(
1044 VkCommandBuffer commandBuffer,
1045 const VkCommandBufferBeginInfo* pBeginInfo)
1046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001047 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001048 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001049 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001050 auto resources = ResourceTracker::get();
1051 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001052 return vkBeginCommandBuffer_VkResult_return;
1053}
1054static VkResult entry_vkEndCommandBuffer(
1055 VkCommandBuffer commandBuffer)
1056{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001057 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001058 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001059 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001060 auto resources = ResourceTracker::get();
1061 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001062 return vkEndCommandBuffer_VkResult_return;
1063}
1064static VkResult entry_vkResetCommandBuffer(
1065 VkCommandBuffer commandBuffer,
1066 VkCommandBufferResetFlags flags)
1067{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001068 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001069 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001070 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001071 auto resources = ResourceTracker::get();
1072 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001073 return vkResetCommandBuffer_VkResult_return;
1074}
1075static void entry_vkCmdBindPipeline(
1076 VkCommandBuffer commandBuffer,
1077 VkPipelineBindPoint pipelineBindPoint,
1078 VkPipeline pipeline)
1079{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001080 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001081 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001082 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001083}
1084static void entry_vkCmdSetViewport(
1085 VkCommandBuffer commandBuffer,
1086 uint32_t firstViewport,
1087 uint32_t viewportCount,
1088 const VkViewport* pViewports)
1089{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001090 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001091 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001092 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001093}
1094static void entry_vkCmdSetScissor(
1095 VkCommandBuffer commandBuffer,
1096 uint32_t firstScissor,
1097 uint32_t scissorCount,
1098 const VkRect2D* pScissors)
1099{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001100 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001101 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001102 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001103}
1104static void entry_vkCmdSetLineWidth(
1105 VkCommandBuffer commandBuffer,
1106 float lineWidth)
1107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001108 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001109 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001110 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001111}
1112static void entry_vkCmdSetDepthBias(
1113 VkCommandBuffer commandBuffer,
1114 float depthBiasConstantFactor,
1115 float depthBiasClamp,
1116 float depthBiasSlopeFactor)
1117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001118 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001119 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001120 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001121}
1122static void entry_vkCmdSetBlendConstants(
1123 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001124 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001125{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001126 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001127 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001128 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001129}
1130static void entry_vkCmdSetDepthBounds(
1131 VkCommandBuffer commandBuffer,
1132 float minDepthBounds,
1133 float maxDepthBounds)
1134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001135 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001136 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001137 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001138}
1139static void entry_vkCmdSetStencilCompareMask(
1140 VkCommandBuffer commandBuffer,
1141 VkStencilFaceFlags faceMask,
1142 uint32_t compareMask)
1143{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001144 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001145 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001146 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001147}
1148static void entry_vkCmdSetStencilWriteMask(
1149 VkCommandBuffer commandBuffer,
1150 VkStencilFaceFlags faceMask,
1151 uint32_t writeMask)
1152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001153 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001154 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001155 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001156}
1157static void entry_vkCmdSetStencilReference(
1158 VkCommandBuffer commandBuffer,
1159 VkStencilFaceFlags faceMask,
1160 uint32_t reference)
1161{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001162 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001163 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001164 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001165}
1166static void entry_vkCmdBindDescriptorSets(
1167 VkCommandBuffer commandBuffer,
1168 VkPipelineBindPoint pipelineBindPoint,
1169 VkPipelineLayout layout,
1170 uint32_t firstSet,
1171 uint32_t descriptorSetCount,
1172 const VkDescriptorSet* pDescriptorSets,
1173 uint32_t dynamicOffsetCount,
1174 const uint32_t* pDynamicOffsets)
1175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001176 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001177 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001178 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001179}
1180static void entry_vkCmdBindIndexBuffer(
1181 VkCommandBuffer commandBuffer,
1182 VkBuffer buffer,
1183 VkDeviceSize offset,
1184 VkIndexType indexType)
1185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001186 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001187 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001188 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001189}
1190static void entry_vkCmdBindVertexBuffers(
1191 VkCommandBuffer commandBuffer,
1192 uint32_t firstBinding,
1193 uint32_t bindingCount,
1194 const VkBuffer* pBuffers,
1195 const VkDeviceSize* pOffsets)
1196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001197 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001198 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001199 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001200}
1201static void entry_vkCmdDraw(
1202 VkCommandBuffer commandBuffer,
1203 uint32_t vertexCount,
1204 uint32_t instanceCount,
1205 uint32_t firstVertex,
1206 uint32_t firstInstance)
1207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001208 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001209 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001210 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001211}
1212static void entry_vkCmdDrawIndexed(
1213 VkCommandBuffer commandBuffer,
1214 uint32_t indexCount,
1215 uint32_t instanceCount,
1216 uint32_t firstIndex,
1217 int32_t vertexOffset,
1218 uint32_t firstInstance)
1219{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001220 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001221 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001222 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001223}
1224static void entry_vkCmdDrawIndirect(
1225 VkCommandBuffer commandBuffer,
1226 VkBuffer buffer,
1227 VkDeviceSize offset,
1228 uint32_t drawCount,
1229 uint32_t stride)
1230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001231 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001232 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001233 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001234}
1235static void entry_vkCmdDrawIndexedIndirect(
1236 VkCommandBuffer commandBuffer,
1237 VkBuffer buffer,
1238 VkDeviceSize offset,
1239 uint32_t drawCount,
1240 uint32_t stride)
1241{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001242 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001243 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001244 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001245}
1246static void entry_vkCmdDispatch(
1247 VkCommandBuffer commandBuffer,
1248 uint32_t groupCountX,
1249 uint32_t groupCountY,
1250 uint32_t groupCountZ)
1251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001252 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001253 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001254 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001255}
1256static void entry_vkCmdDispatchIndirect(
1257 VkCommandBuffer commandBuffer,
1258 VkBuffer buffer,
1259 VkDeviceSize offset)
1260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001261 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001262 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001263 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001264}
1265static void entry_vkCmdCopyBuffer(
1266 VkCommandBuffer commandBuffer,
1267 VkBuffer srcBuffer,
1268 VkBuffer dstBuffer,
1269 uint32_t regionCount,
1270 const VkBufferCopy* pRegions)
1271{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001272 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001273 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001274 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001275}
1276static void entry_vkCmdCopyImage(
1277 VkCommandBuffer commandBuffer,
1278 VkImage srcImage,
1279 VkImageLayout srcImageLayout,
1280 VkImage dstImage,
1281 VkImageLayout dstImageLayout,
1282 uint32_t regionCount,
1283 const VkImageCopy* pRegions)
1284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001285 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001286 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001287 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001288}
1289static void entry_vkCmdBlitImage(
1290 VkCommandBuffer commandBuffer,
1291 VkImage srcImage,
1292 VkImageLayout srcImageLayout,
1293 VkImage dstImage,
1294 VkImageLayout dstImageLayout,
1295 uint32_t regionCount,
1296 const VkImageBlit* pRegions,
1297 VkFilter filter)
1298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001299 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001300 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001301 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001302}
1303static void entry_vkCmdCopyBufferToImage(
1304 VkCommandBuffer commandBuffer,
1305 VkBuffer srcBuffer,
1306 VkImage dstImage,
1307 VkImageLayout dstImageLayout,
1308 uint32_t regionCount,
1309 const VkBufferImageCopy* pRegions)
1310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001311 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001312 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001313 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001314}
1315static void entry_vkCmdCopyImageToBuffer(
1316 VkCommandBuffer commandBuffer,
1317 VkImage srcImage,
1318 VkImageLayout srcImageLayout,
1319 VkBuffer dstBuffer,
1320 uint32_t regionCount,
1321 const VkBufferImageCopy* pRegions)
1322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001323 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001324 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001325 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001326}
1327static void entry_vkCmdUpdateBuffer(
1328 VkCommandBuffer commandBuffer,
1329 VkBuffer dstBuffer,
1330 VkDeviceSize dstOffset,
1331 VkDeviceSize dataSize,
1332 const void* pData)
1333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001334 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001335 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001336 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001337}
1338static void entry_vkCmdFillBuffer(
1339 VkCommandBuffer commandBuffer,
1340 VkBuffer dstBuffer,
1341 VkDeviceSize dstOffset,
1342 VkDeviceSize size,
1343 uint32_t data)
1344{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001345 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001346 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001347 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001348}
1349static void entry_vkCmdClearColorImage(
1350 VkCommandBuffer commandBuffer,
1351 VkImage image,
1352 VkImageLayout imageLayout,
1353 const VkClearColorValue* pColor,
1354 uint32_t rangeCount,
1355 const VkImageSubresourceRange* pRanges)
1356{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001357 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001358 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001359 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001360}
1361static void entry_vkCmdClearDepthStencilImage(
1362 VkCommandBuffer commandBuffer,
1363 VkImage image,
1364 VkImageLayout imageLayout,
1365 const VkClearDepthStencilValue* pDepthStencil,
1366 uint32_t rangeCount,
1367 const VkImageSubresourceRange* pRanges)
1368{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001369 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001370 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001371 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001372}
1373static void entry_vkCmdClearAttachments(
1374 VkCommandBuffer commandBuffer,
1375 uint32_t attachmentCount,
1376 const VkClearAttachment* pAttachments,
1377 uint32_t rectCount,
1378 const VkClearRect* pRects)
1379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001380 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001381 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001382 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001383}
1384static void entry_vkCmdResolveImage(
1385 VkCommandBuffer commandBuffer,
1386 VkImage srcImage,
1387 VkImageLayout srcImageLayout,
1388 VkImage dstImage,
1389 VkImageLayout dstImageLayout,
1390 uint32_t regionCount,
1391 const VkImageResolve* pRegions)
1392{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001393 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001394 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001395 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001396}
1397static void entry_vkCmdSetEvent(
1398 VkCommandBuffer commandBuffer,
1399 VkEvent event,
1400 VkPipelineStageFlags stageMask)
1401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001402 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001403 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001404 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001405}
1406static void entry_vkCmdResetEvent(
1407 VkCommandBuffer commandBuffer,
1408 VkEvent event,
1409 VkPipelineStageFlags stageMask)
1410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001411 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001412 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001413 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001414}
1415static void entry_vkCmdWaitEvents(
1416 VkCommandBuffer commandBuffer,
1417 uint32_t eventCount,
1418 const VkEvent* pEvents,
1419 VkPipelineStageFlags srcStageMask,
1420 VkPipelineStageFlags dstStageMask,
1421 uint32_t memoryBarrierCount,
1422 const VkMemoryBarrier* pMemoryBarriers,
1423 uint32_t bufferMemoryBarrierCount,
1424 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1425 uint32_t imageMemoryBarrierCount,
1426 const VkImageMemoryBarrier* pImageMemoryBarriers)
1427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001428 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001429 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001430 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001431}
1432static void entry_vkCmdPipelineBarrier(
1433 VkCommandBuffer commandBuffer,
1434 VkPipelineStageFlags srcStageMask,
1435 VkPipelineStageFlags dstStageMask,
1436 VkDependencyFlags dependencyFlags,
1437 uint32_t memoryBarrierCount,
1438 const VkMemoryBarrier* pMemoryBarriers,
1439 uint32_t bufferMemoryBarrierCount,
1440 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1441 uint32_t imageMemoryBarrierCount,
1442 const VkImageMemoryBarrier* pImageMemoryBarriers)
1443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001444 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001445 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001446 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001447}
1448static void entry_vkCmdBeginQuery(
1449 VkCommandBuffer commandBuffer,
1450 VkQueryPool queryPool,
1451 uint32_t query,
1452 VkQueryControlFlags flags)
1453{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001454 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001455 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001456 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001457}
1458static void entry_vkCmdEndQuery(
1459 VkCommandBuffer commandBuffer,
1460 VkQueryPool queryPool,
1461 uint32_t query)
1462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001463 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001464 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001465 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001466}
1467static void entry_vkCmdResetQueryPool(
1468 VkCommandBuffer commandBuffer,
1469 VkQueryPool queryPool,
1470 uint32_t firstQuery,
1471 uint32_t queryCount)
1472{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001473 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001474 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001475 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001476}
1477static void entry_vkCmdWriteTimestamp(
1478 VkCommandBuffer commandBuffer,
1479 VkPipelineStageFlagBits pipelineStage,
1480 VkQueryPool queryPool,
1481 uint32_t query)
1482{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001483 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001484 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001485 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001486}
1487static void entry_vkCmdCopyQueryPoolResults(
1488 VkCommandBuffer commandBuffer,
1489 VkQueryPool queryPool,
1490 uint32_t firstQuery,
1491 uint32_t queryCount,
1492 VkBuffer dstBuffer,
1493 VkDeviceSize dstOffset,
1494 VkDeviceSize stride,
1495 VkQueryResultFlags flags)
1496{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001497 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001498 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001499 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001500}
1501static void entry_vkCmdPushConstants(
1502 VkCommandBuffer commandBuffer,
1503 VkPipelineLayout layout,
1504 VkShaderStageFlags stageFlags,
1505 uint32_t offset,
1506 uint32_t size,
1507 const void* pValues)
1508{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001509 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001510 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001511 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001512}
1513static void entry_vkCmdBeginRenderPass(
1514 VkCommandBuffer commandBuffer,
1515 const VkRenderPassBeginInfo* pRenderPassBegin,
1516 VkSubpassContents contents)
1517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001518 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001519 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001520 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001521}
1522static void entry_vkCmdNextSubpass(
1523 VkCommandBuffer commandBuffer,
1524 VkSubpassContents contents)
1525{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001526 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001527 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001528 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001529}
1530static void entry_vkCmdEndRenderPass(
1531 VkCommandBuffer commandBuffer)
1532{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001533 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001534 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001535 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001536}
1537static void entry_vkCmdExecuteCommands(
1538 VkCommandBuffer commandBuffer,
1539 uint32_t commandBufferCount,
1540 const VkCommandBuffer* pCommandBuffers)
1541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001542 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001543 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1544 auto resources = ResourceTracker::get();
1545 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001546}
1547#endif
1548#ifdef VK_VERSION_1_1
1549static VkResult entry_vkEnumerateInstanceVersion(
1550 uint32_t* pApiVersion)
1551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001552 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001554 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001555 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001556 return vkEnumerateInstanceVersion_VkResult_return;
1557}
1558static VkResult entry_vkBindBufferMemory2(
1559 VkDevice device,
1560 uint32_t bindInfoCount,
1561 const VkBindBufferMemoryInfo* pBindInfos)
1562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001563 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001565 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001566 auto resources = ResourceTracker::get();
1567 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001568 return vkBindBufferMemory2_VkResult_return;
1569}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001570static VkResult dynCheck_entry_vkBindBufferMemory2(
1571 VkDevice device,
1572 uint32_t bindInfoCount,
1573 const VkBindBufferMemoryInfo* pBindInfos)
1574{
1575 auto resources = ResourceTracker::get();
1576 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1577 {
1578 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1579 }
1580 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001581 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001582 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1583 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1584 return vkBindBufferMemory2_VkResult_return;
1585}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001586static VkResult entry_vkBindImageMemory2(
1587 VkDevice device,
1588 uint32_t bindInfoCount,
1589 const VkBindImageMemoryInfo* pBindInfos)
1590{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001591 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001592 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001593 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001594 auto resources = ResourceTracker::get();
1595 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001596 return vkBindImageMemory2_VkResult_return;
1597}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001598static VkResult dynCheck_entry_vkBindImageMemory2(
1599 VkDevice device,
1600 uint32_t bindInfoCount,
1601 const VkBindImageMemoryInfo* pBindInfos)
1602{
1603 auto resources = ResourceTracker::get();
1604 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1605 {
1606 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1607 }
1608 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001609 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001610 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1611 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1612 return vkBindImageMemory2_VkResult_return;
1613}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001614static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1615 VkDevice device,
1616 uint32_t heapIndex,
1617 uint32_t localDeviceIndex,
1618 uint32_t remoteDeviceIndex,
1619 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001621 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001623 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001624}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001625static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1626 VkDevice device,
1627 uint32_t heapIndex,
1628 uint32_t localDeviceIndex,
1629 uint32_t remoteDeviceIndex,
1630 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1631{
1632 auto resources = ResourceTracker::get();
1633 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1634 {
1635 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1636 }
1637 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001638 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001639 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001640}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001641static void entry_vkCmdSetDeviceMask(
1642 VkCommandBuffer commandBuffer,
1643 uint32_t deviceMask)
1644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001645 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001646 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001647 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001648}
1649static void entry_vkCmdDispatchBase(
1650 VkCommandBuffer commandBuffer,
1651 uint32_t baseGroupX,
1652 uint32_t baseGroupY,
1653 uint32_t baseGroupZ,
1654 uint32_t groupCountX,
1655 uint32_t groupCountY,
1656 uint32_t groupCountZ)
1657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001658 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001659 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001660 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001661}
1662static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1663 VkInstance instance,
1664 uint32_t* pPhysicalDeviceGroupCount,
1665 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001667 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001669 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001670 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001671 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1672}
1673static void entry_vkGetImageMemoryRequirements2(
1674 VkDevice device,
1675 const VkImageMemoryRequirementsInfo2* pInfo,
1676 VkMemoryRequirements2* pMemoryRequirements)
1677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001678 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001679 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001680 auto resources = ResourceTracker::get();
1681 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001682}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001683static void dynCheck_entry_vkGetImageMemoryRequirements2(
1684 VkDevice device,
1685 const VkImageMemoryRequirementsInfo2* pInfo,
1686 VkMemoryRequirements2* pMemoryRequirements)
1687{
1688 auto resources = ResourceTracker::get();
1689 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1690 {
1691 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1692 }
1693 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001694 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001695 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1696}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001697static void entry_vkGetBufferMemoryRequirements2(
1698 VkDevice device,
1699 const VkBufferMemoryRequirementsInfo2* pInfo,
1700 VkMemoryRequirements2* pMemoryRequirements)
1701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001702 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001703 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001704 auto resources = ResourceTracker::get();
1705 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001706}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001707static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1708 VkDevice device,
1709 const VkBufferMemoryRequirementsInfo2* pInfo,
1710 VkMemoryRequirements2* pMemoryRequirements)
1711{
1712 auto resources = ResourceTracker::get();
1713 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1714 {
1715 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1716 }
1717 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001718 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001719 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1720}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001721static void entry_vkGetImageSparseMemoryRequirements2(
1722 VkDevice device,
1723 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1724 uint32_t* pSparseMemoryRequirementCount,
1725 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1726{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001727 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001729 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001730}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001731static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1732 VkDevice device,
1733 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1734 uint32_t* pSparseMemoryRequirementCount,
1735 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1736{
1737 auto resources = ResourceTracker::get();
1738 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1739 {
1740 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1741 }
1742 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001744 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001745}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001746static void entry_vkGetPhysicalDeviceFeatures2(
1747 VkPhysicalDevice physicalDevice,
1748 VkPhysicalDeviceFeatures2* pFeatures)
1749{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001750 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001751 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001752 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001753}
1754static void entry_vkGetPhysicalDeviceProperties2(
1755 VkPhysicalDevice physicalDevice,
1756 VkPhysicalDeviceProperties2* pProperties)
1757{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001758 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001759 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001760 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001761}
1762static void entry_vkGetPhysicalDeviceFormatProperties2(
1763 VkPhysicalDevice physicalDevice,
1764 VkFormat format,
1765 VkFormatProperties2* pFormatProperties)
1766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001767 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001769 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001770}
1771static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1772 VkPhysicalDevice physicalDevice,
1773 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1774 VkImageFormatProperties2* pImageFormatProperties)
1775{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001776 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001777 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001778 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001779 auto resources = ResourceTracker::get();
1780 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001781 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1782}
1783static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1784 VkPhysicalDevice physicalDevice,
1785 uint32_t* pQueueFamilyPropertyCount,
1786 VkQueueFamilyProperties2* pQueueFamilyProperties)
1787{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001788 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001789 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001790 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001791}
1792static void entry_vkGetPhysicalDeviceMemoryProperties2(
1793 VkPhysicalDevice physicalDevice,
1794 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001796 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001798 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001799}
1800static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1801 VkPhysicalDevice physicalDevice,
1802 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1803 uint32_t* pPropertyCount,
1804 VkSparseImageFormatProperties2* pProperties)
1805{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001806 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001807 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001808 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001809}
1810static void entry_vkTrimCommandPool(
1811 VkDevice device,
1812 VkCommandPool commandPool,
1813 VkCommandPoolTrimFlags flags)
1814{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001815 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001817 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001818}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001819static void dynCheck_entry_vkTrimCommandPool(
1820 VkDevice device,
1821 VkCommandPool commandPool,
1822 VkCommandPoolTrimFlags flags)
1823{
1824 auto resources = ResourceTracker::get();
1825 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1826 {
1827 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1828 }
1829 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001830 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001831 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001832}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001833static void entry_vkGetDeviceQueue2(
1834 VkDevice device,
1835 const VkDeviceQueueInfo2* pQueueInfo,
1836 VkQueue* pQueue)
1837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001838 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001839 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001840 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001841}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001842static void dynCheck_entry_vkGetDeviceQueue2(
1843 VkDevice device,
1844 const VkDeviceQueueInfo2* pQueueInfo,
1845 VkQueue* pQueue)
1846{
1847 auto resources = ResourceTracker::get();
1848 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1849 {
1850 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1851 }
1852 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001854 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001855}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001856static VkResult entry_vkCreateSamplerYcbcrConversion(
1857 VkDevice device,
1858 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1859 const VkAllocationCallbacks* pAllocator,
1860 VkSamplerYcbcrConversion* pYcbcrConversion)
1861{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001862 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001863 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001864 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001865 auto resources = ResourceTracker::get();
1866 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001867 return vkCreateSamplerYcbcrConversion_VkResult_return;
1868}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001869static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1870 VkDevice device,
1871 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1872 const VkAllocationCallbacks* pAllocator,
1873 VkSamplerYcbcrConversion* pYcbcrConversion)
1874{
1875 auto resources = ResourceTracker::get();
1876 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1877 {
1878 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1879 }
1880 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001882 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1883 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1884 return vkCreateSamplerYcbcrConversion_VkResult_return;
1885}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001886static void entry_vkDestroySamplerYcbcrConversion(
1887 VkDevice device,
1888 VkSamplerYcbcrConversion ycbcrConversion,
1889 const VkAllocationCallbacks* pAllocator)
1890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001891 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001893 auto resources = ResourceTracker::get();
1894 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001895}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001896static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1897 VkDevice device,
1898 VkSamplerYcbcrConversion ycbcrConversion,
1899 const VkAllocationCallbacks* pAllocator)
1900{
1901 auto resources = ResourceTracker::get();
1902 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1903 {
1904 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1905 }
1906 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001907 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001908 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1909}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001910static VkResult entry_vkCreateDescriptorUpdateTemplate(
1911 VkDevice device,
1912 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1913 const VkAllocationCallbacks* pAllocator,
1914 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1915{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001916 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001917 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001918 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001919 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001920 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1921}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001922static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1923 VkDevice device,
1924 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1925 const VkAllocationCallbacks* pAllocator,
1926 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1927{
1928 auto resources = ResourceTracker::get();
1929 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1930 {
1931 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1932 }
1933 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001934 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001935 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001936 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001937 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1938}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001939static void entry_vkDestroyDescriptorUpdateTemplate(
1940 VkDevice device,
1941 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1942 const VkAllocationCallbacks* pAllocator)
1943{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001944 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001945 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001946 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001947}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001948static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1949 VkDevice device,
1950 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1951 const VkAllocationCallbacks* pAllocator)
1952{
1953 auto resources = ResourceTracker::get();
1954 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1955 {
1956 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1957 }
1958 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001959 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001960 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001961}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001962static void entry_vkUpdateDescriptorSetWithTemplate(
1963 VkDevice device,
1964 VkDescriptorSet descriptorSet,
1965 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1966 const void* pData)
1967{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001968 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001969 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001970 auto resources = ResourceTracker::get();
1971 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001972}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001973static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1974 VkDevice device,
1975 VkDescriptorSet descriptorSet,
1976 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1977 const void* pData)
1978{
1979 auto resources = ResourceTracker::get();
1980 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1981 {
1982 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1983 }
1984 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001985 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001986 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1987}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001988static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1989 VkPhysicalDevice physicalDevice,
1990 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1991 VkExternalBufferProperties* pExternalBufferProperties)
1992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001993 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001995 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001996}
1997static void entry_vkGetPhysicalDeviceExternalFenceProperties(
1998 VkPhysicalDevice physicalDevice,
1999 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2000 VkExternalFenceProperties* pExternalFenceProperties)
2001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002002 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002004 auto resources = ResourceTracker::get();
2005 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002006}
2007static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2008 VkPhysicalDevice physicalDevice,
2009 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2010 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2011{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002012 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002013 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002014 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002015}
2016static void entry_vkGetDescriptorSetLayoutSupport(
2017 VkDevice device,
2018 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2019 VkDescriptorSetLayoutSupport* pSupport)
2020{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002021 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002022 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002023 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002024}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002025static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2026 VkDevice device,
2027 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2028 VkDescriptorSetLayoutSupport* pSupport)
2029{
2030 auto resources = ResourceTracker::get();
2031 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2032 {
2033 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2034 }
2035 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002036 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002037 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002038}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002039#endif
2040#ifdef VK_KHR_surface
2041static void entry_vkDestroySurfaceKHR(
2042 VkInstance instance,
2043 VkSurfaceKHR surface,
2044 const VkAllocationCallbacks* pAllocator)
2045{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002046 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002047 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002048 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002049}
2050static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2051 VkPhysicalDevice physicalDevice,
2052 uint32_t queueFamilyIndex,
2053 VkSurfaceKHR surface,
2054 VkBool32* pSupported)
2055{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002056 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002058 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002059 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002060 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2061}
2062static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2063 VkPhysicalDevice physicalDevice,
2064 VkSurfaceKHR surface,
2065 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2066{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002067 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002068 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002069 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002070 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002071 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2072}
2073static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2074 VkPhysicalDevice physicalDevice,
2075 VkSurfaceKHR surface,
2076 uint32_t* pSurfaceFormatCount,
2077 VkSurfaceFormatKHR* pSurfaceFormats)
2078{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002079 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002081 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002082 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002083 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2084}
2085static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2086 VkPhysicalDevice physicalDevice,
2087 VkSurfaceKHR surface,
2088 uint32_t* pPresentModeCount,
2089 VkPresentModeKHR* pPresentModes)
2090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002091 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002092 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002093 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002094 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002095 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2096}
2097#endif
2098#ifdef VK_KHR_swapchain
2099static VkResult entry_vkCreateSwapchainKHR(
2100 VkDevice device,
2101 const VkSwapchainCreateInfoKHR* pCreateInfo,
2102 const VkAllocationCallbacks* pAllocator,
2103 VkSwapchainKHR* pSwapchain)
2104{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002105 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002106 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002107 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002108 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002109 return vkCreateSwapchainKHR_VkResult_return;
2110}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002111static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2112 VkDevice device,
2113 const VkSwapchainCreateInfoKHR* pCreateInfo,
2114 const VkAllocationCallbacks* pAllocator,
2115 VkSwapchainKHR* pSwapchain)
2116{
2117 auto resources = ResourceTracker::get();
2118 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2119 {
2120 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2121 }
2122 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002123 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002124 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002125 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002126 return vkCreateSwapchainKHR_VkResult_return;
2127}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002128static void entry_vkDestroySwapchainKHR(
2129 VkDevice device,
2130 VkSwapchainKHR swapchain,
2131 const VkAllocationCallbacks* pAllocator)
2132{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002133 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002134 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002135 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002136}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002137static void dynCheck_entry_vkDestroySwapchainKHR(
2138 VkDevice device,
2139 VkSwapchainKHR swapchain,
2140 const VkAllocationCallbacks* pAllocator)
2141{
2142 auto resources = ResourceTracker::get();
2143 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2144 {
2145 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2146 }
2147 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002148 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002149 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002150}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002151static VkResult entry_vkGetSwapchainImagesKHR(
2152 VkDevice device,
2153 VkSwapchainKHR swapchain,
2154 uint32_t* pSwapchainImageCount,
2155 VkImage* pSwapchainImages)
2156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002157 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002158 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002159 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002160 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002161 return vkGetSwapchainImagesKHR_VkResult_return;
2162}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002163static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2164 VkDevice device,
2165 VkSwapchainKHR swapchain,
2166 uint32_t* pSwapchainImageCount,
2167 VkImage* pSwapchainImages)
2168{
2169 auto resources = ResourceTracker::get();
2170 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2171 {
2172 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2173 }
2174 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002175 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002176 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002177 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002178 return vkGetSwapchainImagesKHR_VkResult_return;
2179}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002180static VkResult entry_vkAcquireNextImageKHR(
2181 VkDevice device,
2182 VkSwapchainKHR swapchain,
2183 uint64_t timeout,
2184 VkSemaphore semaphore,
2185 VkFence fence,
2186 uint32_t* pImageIndex)
2187{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002188 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002189 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002190 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002191 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002192 return vkAcquireNextImageKHR_VkResult_return;
2193}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002194static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2195 VkDevice device,
2196 VkSwapchainKHR swapchain,
2197 uint64_t timeout,
2198 VkSemaphore semaphore,
2199 VkFence fence,
2200 uint32_t* pImageIndex)
2201{
2202 auto resources = ResourceTracker::get();
2203 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2204 {
2205 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2206 }
2207 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002208 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002209 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002210 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002211 return vkAcquireNextImageKHR_VkResult_return;
2212}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002213static VkResult entry_vkQueuePresentKHR(
2214 VkQueue queue,
2215 const VkPresentInfoKHR* pPresentInfo)
2216{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002217 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002218 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002219 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002220 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002221 return vkQueuePresentKHR_VkResult_return;
2222}
2223static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2224 VkDevice device,
2225 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2226{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002227 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002228 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002229 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002230 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002231 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2232}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002233static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2234 VkDevice device,
2235 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2236{
2237 auto resources = ResourceTracker::get();
2238 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2239 {
2240 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2241 }
2242 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002243 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002244 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002245 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002246 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2247}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002248static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2249 VkDevice device,
2250 VkSurfaceKHR surface,
2251 VkDeviceGroupPresentModeFlagsKHR* pModes)
2252{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002253 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002254 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002255 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002256 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002257 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2258}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002259static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2260 VkDevice device,
2261 VkSurfaceKHR surface,
2262 VkDeviceGroupPresentModeFlagsKHR* pModes)
2263{
2264 auto resources = ResourceTracker::get();
2265 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2266 {
2267 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2268 }
2269 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002270 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002271 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002272 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002273 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2274}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002275static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2276 VkPhysicalDevice physicalDevice,
2277 VkSurfaceKHR surface,
2278 uint32_t* pRectCount,
2279 VkRect2D* pRects)
2280{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002281 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002282 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002283 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002284 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002285 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2286}
2287static VkResult entry_vkAcquireNextImage2KHR(
2288 VkDevice device,
2289 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2290 uint32_t* pImageIndex)
2291{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002292 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002293 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002294 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002295 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002296 return vkAcquireNextImage2KHR_VkResult_return;
2297}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002298static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2299 VkDevice device,
2300 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2301 uint32_t* pImageIndex)
2302{
2303 auto resources = ResourceTracker::get();
2304 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2305 {
2306 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2307 }
2308 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002310 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002311 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002312 return vkAcquireNextImage2KHR_VkResult_return;
2313}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002314#endif
2315#ifdef VK_KHR_display
2316static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2317 VkPhysicalDevice physicalDevice,
2318 uint32_t* pPropertyCount,
2319 VkDisplayPropertiesKHR* pProperties)
2320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002321 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002322 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002323 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002324 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002325 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2326}
2327static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2328 VkPhysicalDevice physicalDevice,
2329 uint32_t* pPropertyCount,
2330 VkDisplayPlanePropertiesKHR* pProperties)
2331{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002332 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002334 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002335 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002336 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2337}
2338static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2339 VkPhysicalDevice physicalDevice,
2340 uint32_t planeIndex,
2341 uint32_t* pDisplayCount,
2342 VkDisplayKHR* pDisplays)
2343{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002344 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002346 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002347 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002348 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2349}
2350static VkResult entry_vkGetDisplayModePropertiesKHR(
2351 VkPhysicalDevice physicalDevice,
2352 VkDisplayKHR display,
2353 uint32_t* pPropertyCount,
2354 VkDisplayModePropertiesKHR* pProperties)
2355{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002356 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002357 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002358 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002359 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002360 return vkGetDisplayModePropertiesKHR_VkResult_return;
2361}
2362static VkResult entry_vkCreateDisplayModeKHR(
2363 VkPhysicalDevice physicalDevice,
2364 VkDisplayKHR display,
2365 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2366 const VkAllocationCallbacks* pAllocator,
2367 VkDisplayModeKHR* pMode)
2368{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002369 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002370 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002371 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002372 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002373 return vkCreateDisplayModeKHR_VkResult_return;
2374}
2375static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2376 VkPhysicalDevice physicalDevice,
2377 VkDisplayModeKHR mode,
2378 uint32_t planeIndex,
2379 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2380{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002381 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002382 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002383 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002384 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002385 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2386}
2387static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2388 VkInstance instance,
2389 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2390 const VkAllocationCallbacks* pAllocator,
2391 VkSurfaceKHR* pSurface)
2392{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002393 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002394 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002395 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002396 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002397 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2398}
2399#endif
2400#ifdef VK_KHR_display_swapchain
2401static VkResult entry_vkCreateSharedSwapchainsKHR(
2402 VkDevice device,
2403 uint32_t swapchainCount,
2404 const VkSwapchainCreateInfoKHR* pCreateInfos,
2405 const VkAllocationCallbacks* pAllocator,
2406 VkSwapchainKHR* pSwapchains)
2407{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002408 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002409 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002410 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002411 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002412 return vkCreateSharedSwapchainsKHR_VkResult_return;
2413}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002414static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2415 VkDevice device,
2416 uint32_t swapchainCount,
2417 const VkSwapchainCreateInfoKHR* pCreateInfos,
2418 const VkAllocationCallbacks* pAllocator,
2419 VkSwapchainKHR* pSwapchains)
2420{
2421 auto resources = ResourceTracker::get();
2422 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2423 {
2424 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2425 }
2426 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002427 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002428 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002429 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002430 return vkCreateSharedSwapchainsKHR_VkResult_return;
2431}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002432#endif
2433#ifdef VK_KHR_xlib_surface
2434static VkResult entry_vkCreateXlibSurfaceKHR(
2435 VkInstance instance,
2436 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2437 const VkAllocationCallbacks* pAllocator,
2438 VkSurfaceKHR* pSurface)
2439{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002440 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002441 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002442 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002443 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002444 return vkCreateXlibSurfaceKHR_VkResult_return;
2445}
2446static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2447 VkPhysicalDevice physicalDevice,
2448 uint32_t queueFamilyIndex,
2449 Display* dpy,
2450 VisualID visualID)
2451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002452 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002453 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002454 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002455 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002456 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2457}
2458#endif
2459#ifdef VK_KHR_xcb_surface
2460static VkResult entry_vkCreateXcbSurfaceKHR(
2461 VkInstance instance,
2462 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2463 const VkAllocationCallbacks* pAllocator,
2464 VkSurfaceKHR* pSurface)
2465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002466 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002467 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002468 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002469 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002470 return vkCreateXcbSurfaceKHR_VkResult_return;
2471}
2472static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2473 VkPhysicalDevice physicalDevice,
2474 uint32_t queueFamilyIndex,
2475 xcb_connection_t* connection,
2476 xcb_visualid_t visual_id)
2477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002478 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002479 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002480 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002481 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002482 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2483}
2484#endif
2485#ifdef VK_KHR_wayland_surface
2486static VkResult entry_vkCreateWaylandSurfaceKHR(
2487 VkInstance instance,
2488 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2489 const VkAllocationCallbacks* pAllocator,
2490 VkSurfaceKHR* pSurface)
2491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002492 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002493 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002494 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002495 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002496 return vkCreateWaylandSurfaceKHR_VkResult_return;
2497}
2498static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2499 VkPhysicalDevice physicalDevice,
2500 uint32_t queueFamilyIndex,
2501 wl_display* display)
2502{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002503 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002504 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002505 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002506 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002507 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2508}
2509#endif
2510#ifdef VK_KHR_mir_surface
2511static VkResult entry_vkCreateMirSurfaceKHR(
2512 VkInstance instance,
2513 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2514 const VkAllocationCallbacks* pAllocator,
2515 VkSurfaceKHR* pSurface)
2516{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002517 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002518 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002519 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002520 vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002521 return vkCreateMirSurfaceKHR_VkResult_return;
2522}
2523static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2524 VkPhysicalDevice physicalDevice,
2525 uint32_t queueFamilyIndex,
2526 MirConnection* connection)
2527{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002528 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002529 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002530 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002531 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002532 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2533}
2534#endif
2535#ifdef VK_KHR_android_surface
2536static VkResult entry_vkCreateAndroidSurfaceKHR(
2537 VkInstance instance,
2538 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2539 const VkAllocationCallbacks* pAllocator,
2540 VkSurfaceKHR* pSurface)
2541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002542 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002544 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002545 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002546 return vkCreateAndroidSurfaceKHR_VkResult_return;
2547}
2548#endif
2549#ifdef VK_KHR_win32_surface
2550static VkResult entry_vkCreateWin32SurfaceKHR(
2551 VkInstance instance,
2552 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2553 const VkAllocationCallbacks* pAllocator,
2554 VkSurfaceKHR* pSurface)
2555{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002556 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002558 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002559 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002560 return vkCreateWin32SurfaceKHR_VkResult_return;
2561}
2562static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2563 VkPhysicalDevice physicalDevice,
2564 uint32_t queueFamilyIndex)
2565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002566 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002568 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002569 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002570 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2571}
2572#endif
2573#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2574#endif
2575#ifdef VK_KHR_multiview
2576#endif
2577#ifdef VK_KHR_get_physical_device_properties2
2578static void entry_vkGetPhysicalDeviceFeatures2KHR(
2579 VkPhysicalDevice physicalDevice,
2580 VkPhysicalDeviceFeatures2* pFeatures)
2581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002582 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002583 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002584 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002585}
2586static void entry_vkGetPhysicalDeviceProperties2KHR(
2587 VkPhysicalDevice physicalDevice,
2588 VkPhysicalDeviceProperties2* pProperties)
2589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002590 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002591 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002592 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002593}
2594static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2595 VkPhysicalDevice physicalDevice,
2596 VkFormat format,
2597 VkFormatProperties2* pFormatProperties)
2598{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002599 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002600 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002601 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002602}
2603static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2604 VkPhysicalDevice physicalDevice,
2605 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2606 VkImageFormatProperties2* pImageFormatProperties)
2607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002608 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002609 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002610 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002611 auto resources = ResourceTracker::get();
2612 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002613 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2614}
2615static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2616 VkPhysicalDevice physicalDevice,
2617 uint32_t* pQueueFamilyPropertyCount,
2618 VkQueueFamilyProperties2* pQueueFamilyProperties)
2619{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002620 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002622 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002623}
2624static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2625 VkPhysicalDevice physicalDevice,
2626 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2627{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002628 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002629 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002630 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002631}
2632static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2633 VkPhysicalDevice physicalDevice,
2634 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2635 uint32_t* pPropertyCount,
2636 VkSparseImageFormatProperties2* pProperties)
2637{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002638 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002639 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002640 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002641}
2642#endif
2643#ifdef VK_KHR_device_group
2644static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2645 VkDevice device,
2646 uint32_t heapIndex,
2647 uint32_t localDeviceIndex,
2648 uint32_t remoteDeviceIndex,
2649 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2650{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002651 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002652 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002653 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002654}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002655static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2656 VkDevice device,
2657 uint32_t heapIndex,
2658 uint32_t localDeviceIndex,
2659 uint32_t remoteDeviceIndex,
2660 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2661{
2662 auto resources = ResourceTracker::get();
2663 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2664 {
2665 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2666 }
2667 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002669 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002670}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002671static void entry_vkCmdSetDeviceMaskKHR(
2672 VkCommandBuffer commandBuffer,
2673 uint32_t deviceMask)
2674{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002675 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002676 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002677 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002678}
2679static void entry_vkCmdDispatchBaseKHR(
2680 VkCommandBuffer commandBuffer,
2681 uint32_t baseGroupX,
2682 uint32_t baseGroupY,
2683 uint32_t baseGroupZ,
2684 uint32_t groupCountX,
2685 uint32_t groupCountY,
2686 uint32_t groupCountZ)
2687{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002688 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002689 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002690 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002691}
2692#endif
2693#ifdef VK_KHR_shader_draw_parameters
2694#endif
2695#ifdef VK_KHR_maintenance1
2696static void entry_vkTrimCommandPoolKHR(
2697 VkDevice device,
2698 VkCommandPool commandPool,
2699 VkCommandPoolTrimFlags flags)
2700{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002701 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002702 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002703 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002704}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002705static void dynCheck_entry_vkTrimCommandPoolKHR(
2706 VkDevice device,
2707 VkCommandPool commandPool,
2708 VkCommandPoolTrimFlags flags)
2709{
2710 auto resources = ResourceTracker::get();
2711 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2712 {
2713 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2714 }
2715 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002716 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002717 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002718}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002719#endif
2720#ifdef VK_KHR_device_group_creation
2721static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2722 VkInstance instance,
2723 uint32_t* pPhysicalDeviceGroupCount,
2724 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2725{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002726 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002728 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002729 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002730 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2731}
2732#endif
2733#ifdef VK_KHR_external_memory_capabilities
2734static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2735 VkPhysicalDevice physicalDevice,
2736 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2737 VkExternalBufferProperties* pExternalBufferProperties)
2738{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002739 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002740 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002741 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002742}
2743#endif
2744#ifdef VK_KHR_external_memory
2745#endif
2746#ifdef VK_KHR_external_memory_win32
2747static VkResult entry_vkGetMemoryWin32HandleKHR(
2748 VkDevice device,
2749 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2750 HANDLE* pHandle)
2751{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002752 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002754 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002755 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002756 return vkGetMemoryWin32HandleKHR_VkResult_return;
2757}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002758static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2759 VkDevice device,
2760 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2761 HANDLE* pHandle)
2762{
2763 auto resources = ResourceTracker::get();
2764 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2765 {
2766 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
2767 }
2768 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002770 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002771 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002772 return vkGetMemoryWin32HandleKHR_VkResult_return;
2773}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002774static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2775 VkDevice device,
2776 VkExternalMemoryHandleTypeFlagBits handleType,
2777 HANDLE handle,
2778 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002780 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002781 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002782 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002783 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002784 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2785}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002786static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
2787 VkDevice device,
2788 VkExternalMemoryHandleTypeFlagBits handleType,
2789 HANDLE handle,
2790 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2791{
2792 auto resources = ResourceTracker::get();
2793 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2794 {
2795 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
2796 }
2797 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002798 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002799 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002800 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002801 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2802}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002803#endif
2804#ifdef VK_KHR_external_memory_fd
2805static VkResult entry_vkGetMemoryFdKHR(
2806 VkDevice device,
2807 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2808 int* pFd)
2809{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002810 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002811 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002812 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002813 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002814 return vkGetMemoryFdKHR_VkResult_return;
2815}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002816static VkResult dynCheck_entry_vkGetMemoryFdKHR(
2817 VkDevice device,
2818 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2819 int* pFd)
2820{
2821 auto resources = ResourceTracker::get();
2822 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2823 {
2824 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
2825 }
2826 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002827 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002828 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002829 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002830 return vkGetMemoryFdKHR_VkResult_return;
2831}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002832static VkResult entry_vkGetMemoryFdPropertiesKHR(
2833 VkDevice device,
2834 VkExternalMemoryHandleTypeFlagBits handleType,
2835 int fd,
2836 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002838 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002839 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002840 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002841 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002842 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2843}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002844static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
2845 VkDevice device,
2846 VkExternalMemoryHandleTypeFlagBits handleType,
2847 int fd,
2848 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2849{
2850 auto resources = ResourceTracker::get();
2851 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2852 {
2853 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
2854 }
2855 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002856 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002857 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002858 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002859 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2860}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002861#endif
2862#ifdef VK_KHR_win32_keyed_mutex
2863#endif
2864#ifdef VK_KHR_external_semaphore_capabilities
2865static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2866 VkPhysicalDevice physicalDevice,
2867 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2868 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2869{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002870 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002871 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002872 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002873}
2874#endif
2875#ifdef VK_KHR_external_semaphore
2876#endif
2877#ifdef VK_KHR_external_semaphore_win32
2878static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2879 VkDevice device,
2880 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2881{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002882 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002884 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002885 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002886 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2887}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002888static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
2889 VkDevice device,
2890 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2891{
2892 auto resources = ResourceTracker::get();
2893 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2894 {
2895 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2896 }
2897 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002898 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002899 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002900 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002901 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2902}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002903static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2904 VkDevice device,
2905 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2906 HANDLE* pHandle)
2907{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002908 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002909 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002910 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002911 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002912 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2913}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002914static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
2915 VkDevice device,
2916 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2917 HANDLE* pHandle)
2918{
2919 auto resources = ResourceTracker::get();
2920 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2921 {
2922 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2923 }
2924 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002925 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002926 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002927 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002928 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2929}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002930#endif
2931#ifdef VK_KHR_external_semaphore_fd
2932static VkResult entry_vkImportSemaphoreFdKHR(
2933 VkDevice device,
2934 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2935{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002936 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002938 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002939 auto resources = ResourceTracker::get();
2940 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002941 return vkImportSemaphoreFdKHR_VkResult_return;
2942}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002943static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
2944 VkDevice device,
2945 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2946{
2947 auto resources = ResourceTracker::get();
2948 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2949 {
2950 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2951 }
2952 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002953 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002954 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
2955 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
2956 return vkImportSemaphoreFdKHR_VkResult_return;
2957}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002958static VkResult entry_vkGetSemaphoreFdKHR(
2959 VkDevice device,
2960 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
2961 int* pFd)
2962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002963 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002965 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002966 auto resources = ResourceTracker::get();
2967 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002968 return vkGetSemaphoreFdKHR_VkResult_return;
2969}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002970static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
2971 VkDevice device,
2972 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
2973 int* pFd)
2974{
2975 auto resources = ResourceTracker::get();
2976 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2977 {
2978 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2979 }
2980 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002982 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
2983 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
2984 return vkGetSemaphoreFdKHR_VkResult_return;
2985}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002986#endif
2987#ifdef VK_KHR_push_descriptor
2988static void entry_vkCmdPushDescriptorSetKHR(
2989 VkCommandBuffer commandBuffer,
2990 VkPipelineBindPoint pipelineBindPoint,
2991 VkPipelineLayout layout,
2992 uint32_t set,
2993 uint32_t descriptorWriteCount,
2994 const VkWriteDescriptorSet* pDescriptorWrites)
2995{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002996 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002997 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002998 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002999}
3000static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3001 VkCommandBuffer commandBuffer,
3002 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3003 VkPipelineLayout layout,
3004 uint32_t set,
3005 const void* pData)
3006{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003007 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003008 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003009 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003010}
3011#endif
3012#ifdef VK_KHR_16bit_storage
3013#endif
3014#ifdef VK_KHR_incremental_present
3015#endif
3016#ifdef VK_KHR_descriptor_update_template
3017static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3018 VkDevice device,
3019 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3020 const VkAllocationCallbacks* pAllocator,
3021 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3022{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003023 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003024 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003025 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003026 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003027 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3028}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003029static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3030 VkDevice device,
3031 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3032 const VkAllocationCallbacks* pAllocator,
3033 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3034{
3035 auto resources = ResourceTracker::get();
3036 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3037 {
3038 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3039 }
3040 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003041 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003042 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003043 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003044 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3045}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003046static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3047 VkDevice device,
3048 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3049 const VkAllocationCallbacks* pAllocator)
3050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003051 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003052 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003053 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003054}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003055static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3056 VkDevice device,
3057 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3058 const VkAllocationCallbacks* pAllocator)
3059{
3060 auto resources = ResourceTracker::get();
3061 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3062 {
3063 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3064 }
3065 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003066 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003067 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003068}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003069static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3070 VkDevice device,
3071 VkDescriptorSet descriptorSet,
3072 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3073 const void* pData)
3074{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003075 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003077 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003078}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003079static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3080 VkDevice device,
3081 VkDescriptorSet descriptorSet,
3082 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3083 const void* pData)
3084{
3085 auto resources = ResourceTracker::get();
3086 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3087 {
3088 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3089 }
3090 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003091 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003092 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003093}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003094#endif
3095#ifdef VK_KHR_create_renderpass2
3096static VkResult entry_vkCreateRenderPass2KHR(
3097 VkDevice device,
3098 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3099 const VkAllocationCallbacks* pAllocator,
3100 VkRenderPass* pRenderPass)
3101{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003102 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003103 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003104 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003105 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003106 return vkCreateRenderPass2KHR_VkResult_return;
3107}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003108static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3109 VkDevice device,
3110 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3111 const VkAllocationCallbacks* pAllocator,
3112 VkRenderPass* pRenderPass)
3113{
3114 auto resources = ResourceTracker::get();
3115 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3116 {
3117 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3118 }
3119 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003121 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003122 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003123 return vkCreateRenderPass2KHR_VkResult_return;
3124}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003125static void entry_vkCmdBeginRenderPass2KHR(
3126 VkCommandBuffer commandBuffer,
3127 const VkRenderPassBeginInfo* pRenderPassBegin,
3128 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
3129{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003130 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003131 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003132 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003133}
3134static void entry_vkCmdNextSubpass2KHR(
3135 VkCommandBuffer commandBuffer,
3136 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3137 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3138{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003139 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003140 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003141 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003142}
3143static void entry_vkCmdEndRenderPass2KHR(
3144 VkCommandBuffer commandBuffer,
3145 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3146{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003147 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003148 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003149 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003150}
3151#endif
3152#ifdef VK_KHR_shared_presentable_image
3153static VkResult entry_vkGetSwapchainStatusKHR(
3154 VkDevice device,
3155 VkSwapchainKHR swapchain)
3156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003157 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003158 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003159 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003160 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003161 return vkGetSwapchainStatusKHR_VkResult_return;
3162}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003163static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3164 VkDevice device,
3165 VkSwapchainKHR swapchain)
3166{
3167 auto resources = ResourceTracker::get();
3168 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3169 {
3170 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3171 }
3172 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003173 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003174 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003175 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003176 return vkGetSwapchainStatusKHR_VkResult_return;
3177}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003178#endif
3179#ifdef VK_KHR_external_fence_capabilities
3180static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3181 VkPhysicalDevice physicalDevice,
3182 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3183 VkExternalFenceProperties* pExternalFenceProperties)
3184{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003185 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003186 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003187 auto resources = ResourceTracker::get();
3188 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003189}
3190#endif
3191#ifdef VK_KHR_external_fence
3192#endif
3193#ifdef VK_KHR_external_fence_win32
3194static VkResult entry_vkImportFenceWin32HandleKHR(
3195 VkDevice device,
3196 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3197{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003198 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003200 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003201 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003202 return vkImportFenceWin32HandleKHR_VkResult_return;
3203}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003204static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3205 VkDevice device,
3206 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3207{
3208 auto resources = ResourceTracker::get();
3209 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3210 {
3211 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3212 }
3213 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003214 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003215 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003216 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003217 return vkImportFenceWin32HandleKHR_VkResult_return;
3218}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003219static VkResult entry_vkGetFenceWin32HandleKHR(
3220 VkDevice device,
3221 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3222 HANDLE* pHandle)
3223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003224 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003225 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003226 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003227 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003228 return vkGetFenceWin32HandleKHR_VkResult_return;
3229}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003230static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3231 VkDevice device,
3232 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3233 HANDLE* pHandle)
3234{
3235 auto resources = ResourceTracker::get();
3236 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3237 {
3238 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3239 }
3240 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003241 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003242 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003243 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003244 return vkGetFenceWin32HandleKHR_VkResult_return;
3245}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003246#endif
3247#ifdef VK_KHR_external_fence_fd
3248static VkResult entry_vkImportFenceFdKHR(
3249 VkDevice device,
3250 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003252 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003253 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003254 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003255 auto resources = ResourceTracker::get();
3256 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003257 return vkImportFenceFdKHR_VkResult_return;
3258}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003259static VkResult dynCheck_entry_vkImportFenceFdKHR(
3260 VkDevice device,
3261 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3262{
3263 auto resources = ResourceTracker::get();
3264 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3265 {
3266 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3267 }
3268 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003269 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003270 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3271 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3272 return vkImportFenceFdKHR_VkResult_return;
3273}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003274static VkResult entry_vkGetFenceFdKHR(
3275 VkDevice device,
3276 const VkFenceGetFdInfoKHR* pGetFdInfo,
3277 int* pFd)
3278{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003279 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003280 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003281 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003282 auto resources = ResourceTracker::get();
3283 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003284 return vkGetFenceFdKHR_VkResult_return;
3285}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003286static VkResult dynCheck_entry_vkGetFenceFdKHR(
3287 VkDevice device,
3288 const VkFenceGetFdInfoKHR* pGetFdInfo,
3289 int* pFd)
3290{
3291 auto resources = ResourceTracker::get();
3292 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3293 {
3294 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3295 }
3296 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003297 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003298 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3299 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3300 return vkGetFenceFdKHR_VkResult_return;
3301}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003302#endif
3303#ifdef VK_KHR_maintenance2
3304#endif
3305#ifdef VK_KHR_get_surface_capabilities2
3306static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3307 VkPhysicalDevice physicalDevice,
3308 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3309 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003311 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003312 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003313 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003314 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003315 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3316}
3317static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3318 VkPhysicalDevice physicalDevice,
3319 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3320 uint32_t* pSurfaceFormatCount,
3321 VkSurfaceFormat2KHR* pSurfaceFormats)
3322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003323 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003324 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003325 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003326 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003327 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3328}
3329#endif
3330#ifdef VK_KHR_variable_pointers
3331#endif
3332#ifdef VK_KHR_get_display_properties2
3333static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3334 VkPhysicalDevice physicalDevice,
3335 uint32_t* pPropertyCount,
3336 VkDisplayProperties2KHR* pProperties)
3337{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003338 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003339 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003340 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003341 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003342 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3343}
3344static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3345 VkPhysicalDevice physicalDevice,
3346 uint32_t* pPropertyCount,
3347 VkDisplayPlaneProperties2KHR* pProperties)
3348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003349 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003350 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003351 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003352 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003353 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3354}
3355static VkResult entry_vkGetDisplayModeProperties2KHR(
3356 VkPhysicalDevice physicalDevice,
3357 VkDisplayKHR display,
3358 uint32_t* pPropertyCount,
3359 VkDisplayModeProperties2KHR* pProperties)
3360{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003361 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003362 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003363 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003364 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003365 return vkGetDisplayModeProperties2KHR_VkResult_return;
3366}
3367static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3368 VkPhysicalDevice physicalDevice,
3369 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3370 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003372 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003373 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003374 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003375 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003376 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3377}
3378#endif
3379#ifdef VK_KHR_dedicated_allocation
3380#endif
3381#ifdef VK_KHR_storage_buffer_storage_class
3382#endif
3383#ifdef VK_KHR_relaxed_block_layout
3384#endif
3385#ifdef VK_KHR_get_memory_requirements2
3386static void entry_vkGetImageMemoryRequirements2KHR(
3387 VkDevice device,
3388 const VkImageMemoryRequirementsInfo2* pInfo,
3389 VkMemoryRequirements2* pMemoryRequirements)
3390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003391 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003392 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003393 auto resources = ResourceTracker::get();
3394 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003395}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003396static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3397 VkDevice device,
3398 const VkImageMemoryRequirementsInfo2* pInfo,
3399 VkMemoryRequirements2* pMemoryRequirements)
3400{
3401 auto resources = ResourceTracker::get();
3402 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3403 {
3404 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3405 }
3406 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003407 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003408 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3409}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003410static void entry_vkGetBufferMemoryRequirements2KHR(
3411 VkDevice device,
3412 const VkBufferMemoryRequirementsInfo2* pInfo,
3413 VkMemoryRequirements2* pMemoryRequirements)
3414{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003415 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003417 auto resources = ResourceTracker::get();
3418 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003419}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003420static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3421 VkDevice device,
3422 const VkBufferMemoryRequirementsInfo2* pInfo,
3423 VkMemoryRequirements2* pMemoryRequirements)
3424{
3425 auto resources = ResourceTracker::get();
3426 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3427 {
3428 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3429 }
3430 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003431 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003432 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3433}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003434static void entry_vkGetImageSparseMemoryRequirements2KHR(
3435 VkDevice device,
3436 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3437 uint32_t* pSparseMemoryRequirementCount,
3438 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3439{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003440 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003441 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003442 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003443}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003444static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3445 VkDevice device,
3446 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3447 uint32_t* pSparseMemoryRequirementCount,
3448 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3449{
3450 auto resources = ResourceTracker::get();
3451 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3452 {
3453 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3454 }
3455 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003457 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003458}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003459#endif
3460#ifdef VK_KHR_image_format_list
3461#endif
3462#ifdef VK_KHR_sampler_ycbcr_conversion
3463static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3464 VkDevice device,
3465 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3466 const VkAllocationCallbacks* pAllocator,
3467 VkSamplerYcbcrConversion* pYcbcrConversion)
3468{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003469 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003470 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003471 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003472 auto resources = ResourceTracker::get();
3473 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003474 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3475}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003476static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3477 VkDevice device,
3478 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3479 const VkAllocationCallbacks* pAllocator,
3480 VkSamplerYcbcrConversion* pYcbcrConversion)
3481{
3482 auto resources = ResourceTracker::get();
3483 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3484 {
3485 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3486 }
3487 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003488 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003489 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3490 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3491 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3492}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003493static void entry_vkDestroySamplerYcbcrConversionKHR(
3494 VkDevice device,
3495 VkSamplerYcbcrConversion ycbcrConversion,
3496 const VkAllocationCallbacks* pAllocator)
3497{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003498 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003499 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003500 auto resources = ResourceTracker::get();
3501 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003502}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003503static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3504 VkDevice device,
3505 VkSamplerYcbcrConversion ycbcrConversion,
3506 const VkAllocationCallbacks* pAllocator)
3507{
3508 auto resources = ResourceTracker::get();
3509 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3510 {
3511 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3512 }
3513 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003514 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003515 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3516}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003517#endif
3518#ifdef VK_KHR_bind_memory2
3519static VkResult entry_vkBindBufferMemory2KHR(
3520 VkDevice device,
3521 uint32_t bindInfoCount,
3522 const VkBindBufferMemoryInfo* pBindInfos)
3523{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003524 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003525 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003526 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003527 auto resources = ResourceTracker::get();
3528 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003529 return vkBindBufferMemory2KHR_VkResult_return;
3530}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003531static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3532 VkDevice device,
3533 uint32_t bindInfoCount,
3534 const VkBindBufferMemoryInfo* pBindInfos)
3535{
3536 auto resources = ResourceTracker::get();
3537 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3538 {
3539 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3540 }
3541 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003543 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3544 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3545 return vkBindBufferMemory2KHR_VkResult_return;
3546}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003547static VkResult entry_vkBindImageMemory2KHR(
3548 VkDevice device,
3549 uint32_t bindInfoCount,
3550 const VkBindImageMemoryInfo* pBindInfos)
3551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003552 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003554 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003555 auto resources = ResourceTracker::get();
3556 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003557 return vkBindImageMemory2KHR_VkResult_return;
3558}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003559static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3560 VkDevice device,
3561 uint32_t bindInfoCount,
3562 const VkBindImageMemoryInfo* pBindInfos)
3563{
3564 auto resources = ResourceTracker::get();
3565 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3566 {
3567 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3568 }
3569 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003570 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003571 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3572 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3573 return vkBindImageMemory2KHR_VkResult_return;
3574}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003575#endif
3576#ifdef VK_KHR_maintenance3
3577static void entry_vkGetDescriptorSetLayoutSupportKHR(
3578 VkDevice device,
3579 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3580 VkDescriptorSetLayoutSupport* pSupport)
3581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003582 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003583 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003584 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003585}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003586static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3587 VkDevice device,
3588 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3589 VkDescriptorSetLayoutSupport* pSupport)
3590{
3591 auto resources = ResourceTracker::get();
3592 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3593 {
3594 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3595 }
3596 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003598 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003599}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003600#endif
3601#ifdef VK_KHR_draw_indirect_count
3602static void entry_vkCmdDrawIndirectCountKHR(
3603 VkCommandBuffer commandBuffer,
3604 VkBuffer buffer,
3605 VkDeviceSize offset,
3606 VkBuffer countBuffer,
3607 VkDeviceSize countBufferOffset,
3608 uint32_t maxDrawCount,
3609 uint32_t stride)
3610{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003611 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003612 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003613 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003614}
3615static void entry_vkCmdDrawIndexedIndirectCountKHR(
3616 VkCommandBuffer commandBuffer,
3617 VkBuffer buffer,
3618 VkDeviceSize offset,
3619 VkBuffer countBuffer,
3620 VkDeviceSize countBufferOffset,
3621 uint32_t maxDrawCount,
3622 uint32_t stride)
3623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003624 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003625 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003626 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003627}
3628#endif
3629#ifdef VK_KHR_8bit_storage
3630#endif
Lingfeng Yang4c056b22020-07-02 11:43:57 -07003631#ifdef VK_KHR_shader_float16_int8
3632#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08003633#ifdef VK_ANDROID_native_buffer
3634static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3635 VkDevice device,
3636 VkFormat format,
3637 VkImageUsageFlags imageUsage,
3638 int* grallocUsage)
3639{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003640 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003641 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08003642 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003643 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08003644 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3645}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003646static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3647 VkDevice device,
3648 VkFormat format,
3649 VkImageUsageFlags imageUsage,
3650 int* grallocUsage)
3651{
3652 auto resources = ResourceTracker::get();
3653 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3654 {
3655 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3656 }
3657 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003658 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003659 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003660 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003661 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3662}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003663static VkResult entry_vkAcquireImageANDROID(
3664 VkDevice device,
3665 VkImage image,
3666 int nativeFenceFd,
3667 VkSemaphore semaphore,
3668 VkFence fence)
3669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003670 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003671 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08003672 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003673 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08003674 return vkAcquireImageANDROID_VkResult_return;
3675}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003676static VkResult dynCheck_entry_vkAcquireImageANDROID(
3677 VkDevice device,
3678 VkImage image,
3679 int nativeFenceFd,
3680 VkSemaphore semaphore,
3681 VkFence fence)
3682{
3683 auto resources = ResourceTracker::get();
3684 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3685 {
3686 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3687 }
3688 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003689 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003690 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003691 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003692 return vkAcquireImageANDROID_VkResult_return;
3693}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003694static VkResult entry_vkQueueSignalReleaseImageANDROID(
3695 VkQueue queue,
3696 uint32_t waitSemaphoreCount,
3697 const VkSemaphore* pWaitSemaphores,
3698 VkImage image,
3699 int* pNativeFenceFd)
3700{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003701 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003702 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08003703 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003704 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08003705 return vkQueueSignalReleaseImageANDROID_VkResult_return;
3706}
3707#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003708#ifdef VK_EXT_debug_report
3709static VkResult entry_vkCreateDebugReportCallbackEXT(
3710 VkInstance instance,
3711 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3712 const VkAllocationCallbacks* pAllocator,
3713 VkDebugReportCallbackEXT* pCallback)
3714{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003715 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003716 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003717 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003718 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003719 return vkCreateDebugReportCallbackEXT_VkResult_return;
3720}
3721static void entry_vkDestroyDebugReportCallbackEXT(
3722 VkInstance instance,
3723 VkDebugReportCallbackEXT callback,
3724 const VkAllocationCallbacks* pAllocator)
3725{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003726 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003728 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003729}
3730static void entry_vkDebugReportMessageEXT(
3731 VkInstance instance,
3732 VkDebugReportFlagsEXT flags,
3733 VkDebugReportObjectTypeEXT objectType,
3734 uint64_t object,
3735 size_t location,
3736 int32_t messageCode,
3737 const char* pLayerPrefix,
3738 const char* pMessage)
3739{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003740 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003742 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003743}
3744#endif
3745#ifdef VK_NV_glsl_shader
3746#endif
3747#ifdef VK_EXT_depth_range_unrestricted
3748#endif
3749#ifdef VK_IMG_filter_cubic
3750#endif
3751#ifdef VK_AMD_rasterization_order
3752#endif
3753#ifdef VK_AMD_shader_trinary_minmax
3754#endif
3755#ifdef VK_AMD_shader_explicit_vertex_parameter
3756#endif
3757#ifdef VK_EXT_debug_marker
3758static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3759 VkDevice device,
3760 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3761{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003762 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003763 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003764 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003765 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003766 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3767}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003768static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3769 VkDevice device,
3770 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3771{
3772 auto resources = ResourceTracker::get();
3773 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3774 {
3775 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3776 }
3777 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003778 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003779 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003780 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003781 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3782}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3784 VkDevice device,
3785 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3786{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003787 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003788 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003789 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003790 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003791 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3792}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003793static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3794 VkDevice device,
3795 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3796{
3797 auto resources = ResourceTracker::get();
3798 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3799 {
3800 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3801 }
3802 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003803 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003804 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003805 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003806 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3807}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003808static void entry_vkCmdDebugMarkerBeginEXT(
3809 VkCommandBuffer commandBuffer,
3810 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3811{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003812 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003813 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003814 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003815}
3816static void entry_vkCmdDebugMarkerEndEXT(
3817 VkCommandBuffer commandBuffer)
3818{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003819 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003820 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003821 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003822}
3823static void entry_vkCmdDebugMarkerInsertEXT(
3824 VkCommandBuffer commandBuffer,
3825 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3826{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003827 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003828 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003829 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003830}
3831#endif
3832#ifdef VK_AMD_gcn_shader
3833#endif
3834#ifdef VK_NV_dedicated_allocation
3835#endif
3836#ifdef VK_AMD_draw_indirect_count
3837static void entry_vkCmdDrawIndirectCountAMD(
3838 VkCommandBuffer commandBuffer,
3839 VkBuffer buffer,
3840 VkDeviceSize offset,
3841 VkBuffer countBuffer,
3842 VkDeviceSize countBufferOffset,
3843 uint32_t maxDrawCount,
3844 uint32_t stride)
3845{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003846 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003847 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003848 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003849}
3850static void entry_vkCmdDrawIndexedIndirectCountAMD(
3851 VkCommandBuffer commandBuffer,
3852 VkBuffer buffer,
3853 VkDeviceSize offset,
3854 VkBuffer countBuffer,
3855 VkDeviceSize countBufferOffset,
3856 uint32_t maxDrawCount,
3857 uint32_t stride)
3858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003859 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003860 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003861 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003862}
3863#endif
3864#ifdef VK_AMD_negative_viewport_height
3865#endif
3866#ifdef VK_AMD_gpu_shader_half_float
3867#endif
3868#ifdef VK_AMD_shader_ballot
3869#endif
3870#ifdef VK_AMD_texture_gather_bias_lod
3871#endif
3872#ifdef VK_AMD_shader_info
3873static VkResult entry_vkGetShaderInfoAMD(
3874 VkDevice device,
3875 VkPipeline pipeline,
3876 VkShaderStageFlagBits shaderStage,
3877 VkShaderInfoTypeAMD infoType,
3878 size_t* pInfoSize,
3879 void* pInfo)
3880{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003881 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003882 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003883 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003884 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003885 return vkGetShaderInfoAMD_VkResult_return;
3886}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003887static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3888 VkDevice device,
3889 VkPipeline pipeline,
3890 VkShaderStageFlagBits shaderStage,
3891 VkShaderInfoTypeAMD infoType,
3892 size_t* pInfoSize,
3893 void* pInfo)
3894{
3895 auto resources = ResourceTracker::get();
3896 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3897 {
3898 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3899 }
3900 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003901 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003902 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003903 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003904 return vkGetShaderInfoAMD_VkResult_return;
3905}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003906#endif
3907#ifdef VK_AMD_shader_image_load_store_lod
3908#endif
3909#ifdef VK_IMG_format_pvrtc
3910#endif
3911#ifdef VK_NV_external_memory_capabilities
3912static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3913 VkPhysicalDevice physicalDevice,
3914 VkFormat format,
3915 VkImageType type,
3916 VkImageTiling tiling,
3917 VkImageUsageFlags usage,
3918 VkImageCreateFlags flags,
3919 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3920 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3921{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003922 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003923 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003924 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003925 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003926 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3927}
3928#endif
3929#ifdef VK_NV_external_memory
3930#endif
3931#ifdef VK_NV_external_memory_win32
3932static VkResult entry_vkGetMemoryWin32HandleNV(
3933 VkDevice device,
3934 VkDeviceMemory memory,
3935 VkExternalMemoryHandleTypeFlagsNV handleType,
3936 HANDLE* pHandle)
3937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003938 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003940 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003941 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003942 return vkGetMemoryWin32HandleNV_VkResult_return;
3943}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003944static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
3945 VkDevice device,
3946 VkDeviceMemory memory,
3947 VkExternalMemoryHandleTypeFlagsNV handleType,
3948 HANDLE* pHandle)
3949{
3950 auto resources = ResourceTracker::get();
3951 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
3952 {
3953 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
3954 }
3955 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003956 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003957 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003958 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003959 return vkGetMemoryWin32HandleNV_VkResult_return;
3960}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003961#endif
3962#ifdef VK_NV_win32_keyed_mutex
3963#endif
3964#ifdef VK_EXT_validation_flags
3965#endif
3966#ifdef VK_NN_vi_surface
3967static VkResult entry_vkCreateViSurfaceNN(
3968 VkInstance instance,
3969 const VkViSurfaceCreateInfoNN* pCreateInfo,
3970 const VkAllocationCallbacks* pAllocator,
3971 VkSurfaceKHR* pSurface)
3972{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003973 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003974 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003975 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003976 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003977 return vkCreateViSurfaceNN_VkResult_return;
3978}
3979#endif
3980#ifdef VK_EXT_shader_subgroup_ballot
3981#endif
3982#ifdef VK_EXT_shader_subgroup_vote
3983#endif
3984#ifdef VK_EXT_conditional_rendering
3985static void entry_vkCmdBeginConditionalRenderingEXT(
3986 VkCommandBuffer commandBuffer,
3987 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
3988{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003989 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003990 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003991 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003992}
3993static void entry_vkCmdEndConditionalRenderingEXT(
3994 VkCommandBuffer commandBuffer)
3995{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003996 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003997 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003998 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003999}
4000#endif
4001#ifdef VK_NVX_device_generated_commands
4002static void entry_vkCmdProcessCommandsNVX(
4003 VkCommandBuffer commandBuffer,
4004 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4005{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004006 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004007 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004008 vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004009}
4010static void entry_vkCmdReserveSpaceForCommandsNVX(
4011 VkCommandBuffer commandBuffer,
4012 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4013{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004014 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004015 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004016 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004017}
4018static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4019 VkDevice device,
4020 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4021 const VkAllocationCallbacks* pAllocator,
4022 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004024 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004026 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004027 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004028 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4029}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004030static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4031 VkDevice device,
4032 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4033 const VkAllocationCallbacks* pAllocator,
4034 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4035{
4036 auto resources = ResourceTracker::get();
4037 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4038 {
4039 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4040 }
4041 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004042 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004043 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004044 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004045 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4046}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004047static void entry_vkDestroyIndirectCommandsLayoutNVX(
4048 VkDevice device,
4049 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4050 const VkAllocationCallbacks* pAllocator)
4051{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004052 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004053 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004054 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004055}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004056static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4057 VkDevice device,
4058 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4059 const VkAllocationCallbacks* pAllocator)
4060{
4061 auto resources = ResourceTracker::get();
4062 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4063 {
4064 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4065 }
4066 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004068 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004069}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004070static VkResult entry_vkCreateObjectTableNVX(
4071 VkDevice device,
4072 const VkObjectTableCreateInfoNVX* pCreateInfo,
4073 const VkAllocationCallbacks* pAllocator,
4074 VkObjectTableNVX* pObjectTable)
4075{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004076 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004078 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004079 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004080 return vkCreateObjectTableNVX_VkResult_return;
4081}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004082static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4083 VkDevice device,
4084 const VkObjectTableCreateInfoNVX* pCreateInfo,
4085 const VkAllocationCallbacks* pAllocator,
4086 VkObjectTableNVX* pObjectTable)
4087{
4088 auto resources = ResourceTracker::get();
4089 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4090 {
4091 sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4092 }
4093 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004094 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004095 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004096 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004097 return vkCreateObjectTableNVX_VkResult_return;
4098}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004099static void entry_vkDestroyObjectTableNVX(
4100 VkDevice device,
4101 VkObjectTableNVX objectTable,
4102 const VkAllocationCallbacks* pAllocator)
4103{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004104 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004105 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004106 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004107}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004108static void dynCheck_entry_vkDestroyObjectTableNVX(
4109 VkDevice device,
4110 VkObjectTableNVX objectTable,
4111 const VkAllocationCallbacks* pAllocator)
4112{
4113 auto resources = ResourceTracker::get();
4114 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4115 {
4116 sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4117 }
4118 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004120 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004121}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004122static VkResult entry_vkRegisterObjectsNVX(
4123 VkDevice device,
4124 VkObjectTableNVX objectTable,
4125 uint32_t objectCount,
4126 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4127 const uint32_t* pObjectIndices)
4128{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004129 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004131 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004132 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004133 return vkRegisterObjectsNVX_VkResult_return;
4134}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004135static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4136 VkDevice device,
4137 VkObjectTableNVX objectTable,
4138 uint32_t objectCount,
4139 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4140 const uint32_t* pObjectIndices)
4141{
4142 auto resources = ResourceTracker::get();
4143 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4144 {
4145 sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4146 }
4147 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004148 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004149 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004150 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004151 return vkRegisterObjectsNVX_VkResult_return;
4152}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004153static VkResult entry_vkUnregisterObjectsNVX(
4154 VkDevice device,
4155 VkObjectTableNVX objectTable,
4156 uint32_t objectCount,
4157 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4158 const uint32_t* pObjectIndices)
4159{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004160 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004161 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004162 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004163 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004164 return vkUnregisterObjectsNVX_VkResult_return;
4165}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004166static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4167 VkDevice device,
4168 VkObjectTableNVX objectTable,
4169 uint32_t objectCount,
4170 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4171 const uint32_t* pObjectIndices)
4172{
4173 auto resources = ResourceTracker::get();
4174 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4175 {
4176 sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4177 }
4178 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004179 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004180 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004181 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004182 return vkUnregisterObjectsNVX_VkResult_return;
4183}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004184static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4185 VkPhysicalDevice physicalDevice,
4186 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4187 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4188{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004189 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004190 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004191 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004192}
4193#endif
4194#ifdef VK_NV_clip_space_w_scaling
4195static void entry_vkCmdSetViewportWScalingNV(
4196 VkCommandBuffer commandBuffer,
4197 uint32_t firstViewport,
4198 uint32_t viewportCount,
4199 const VkViewportWScalingNV* pViewportWScalings)
4200{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004201 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004202 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004203 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004204}
4205#endif
4206#ifdef VK_EXT_direct_mode_display
4207static VkResult entry_vkReleaseDisplayEXT(
4208 VkPhysicalDevice physicalDevice,
4209 VkDisplayKHR display)
4210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004211 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004212 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004213 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004214 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004215 return vkReleaseDisplayEXT_VkResult_return;
4216}
4217#endif
4218#ifdef VK_EXT_acquire_xlib_display
4219static VkResult entry_vkAcquireXlibDisplayEXT(
4220 VkPhysicalDevice physicalDevice,
4221 Display* dpy,
4222 VkDisplayKHR display)
4223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004224 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004225 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004226 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004227 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004228 return vkAcquireXlibDisplayEXT_VkResult_return;
4229}
4230static VkResult entry_vkGetRandROutputDisplayEXT(
4231 VkPhysicalDevice physicalDevice,
4232 Display* dpy,
4233 RROutput rrOutput,
4234 VkDisplayKHR* pDisplay)
4235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004236 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004237 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004238 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004239 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004240 return vkGetRandROutputDisplayEXT_VkResult_return;
4241}
4242#endif
4243#ifdef VK_EXT_display_surface_counter
4244static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4245 VkPhysicalDevice physicalDevice,
4246 VkSurfaceKHR surface,
4247 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4248{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004249 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004250 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004251 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004252 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004253 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4254}
4255#endif
4256#ifdef VK_EXT_display_control
4257static VkResult entry_vkDisplayPowerControlEXT(
4258 VkDevice device,
4259 VkDisplayKHR display,
4260 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4261{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004262 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004263 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004264 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004265 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004266 return vkDisplayPowerControlEXT_VkResult_return;
4267}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004268static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4269 VkDevice device,
4270 VkDisplayKHR display,
4271 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4272{
4273 auto resources = ResourceTracker::get();
4274 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4275 {
4276 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4277 }
4278 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004279 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004280 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004281 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004282 return vkDisplayPowerControlEXT_VkResult_return;
4283}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004284static VkResult entry_vkRegisterDeviceEventEXT(
4285 VkDevice device,
4286 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4287 const VkAllocationCallbacks* pAllocator,
4288 VkFence* pFence)
4289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004290 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004291 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004292 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004293 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004294 return vkRegisterDeviceEventEXT_VkResult_return;
4295}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004296static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4297 VkDevice device,
4298 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4299 const VkAllocationCallbacks* pAllocator,
4300 VkFence* pFence)
4301{
4302 auto resources = ResourceTracker::get();
4303 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4304 {
4305 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4306 }
4307 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004308 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004309 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004310 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004311 return vkRegisterDeviceEventEXT_VkResult_return;
4312}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004313static VkResult entry_vkRegisterDisplayEventEXT(
4314 VkDevice device,
4315 VkDisplayKHR display,
4316 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4317 const VkAllocationCallbacks* pAllocator,
4318 VkFence* pFence)
4319{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004320 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004321 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004322 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004323 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004324 return vkRegisterDisplayEventEXT_VkResult_return;
4325}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004326static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4327 VkDevice device,
4328 VkDisplayKHR display,
4329 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4330 const VkAllocationCallbacks* pAllocator,
4331 VkFence* pFence)
4332{
4333 auto resources = ResourceTracker::get();
4334 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4335 {
4336 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4337 }
4338 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004339 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004340 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004341 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004342 return vkRegisterDisplayEventEXT_VkResult_return;
4343}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004344static VkResult entry_vkGetSwapchainCounterEXT(
4345 VkDevice device,
4346 VkSwapchainKHR swapchain,
4347 VkSurfaceCounterFlagBitsEXT counter,
4348 uint64_t* pCounterValue)
4349{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004350 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004351 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004352 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004353 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004354 return vkGetSwapchainCounterEXT_VkResult_return;
4355}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004356static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4357 VkDevice device,
4358 VkSwapchainKHR swapchain,
4359 VkSurfaceCounterFlagBitsEXT counter,
4360 uint64_t* pCounterValue)
4361{
4362 auto resources = ResourceTracker::get();
4363 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4364 {
4365 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4366 }
4367 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004368 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004369 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004370 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004371 return vkGetSwapchainCounterEXT_VkResult_return;
4372}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004373#endif
4374#ifdef VK_GOOGLE_display_timing
4375static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4376 VkDevice device,
4377 VkSwapchainKHR swapchain,
4378 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004380 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004381 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004382 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004383 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004384 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4385}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004386static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4387 VkDevice device,
4388 VkSwapchainKHR swapchain,
4389 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4390{
4391 auto resources = ResourceTracker::get();
4392 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4393 {
4394 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4395 }
4396 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004397 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004398 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004399 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004400 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4401}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004402static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4403 VkDevice device,
4404 VkSwapchainKHR swapchain,
4405 uint32_t* pPresentationTimingCount,
4406 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4407{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004408 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004409 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004410 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004411 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004412 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4413}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004414static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4415 VkDevice device,
4416 VkSwapchainKHR swapchain,
4417 uint32_t* pPresentationTimingCount,
4418 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4419{
4420 auto resources = ResourceTracker::get();
4421 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4422 {
4423 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4424 }
4425 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004426 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004427 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004428 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004429 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4430}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004431#endif
4432#ifdef VK_NV_sample_mask_override_coverage
4433#endif
4434#ifdef VK_NV_geometry_shader_passthrough
4435#endif
4436#ifdef VK_NV_viewport_array2
4437#endif
4438#ifdef VK_NVX_multiview_per_view_attributes
4439#endif
4440#ifdef VK_NV_viewport_swizzle
4441#endif
4442#ifdef VK_EXT_discard_rectangles
4443static void entry_vkCmdSetDiscardRectangleEXT(
4444 VkCommandBuffer commandBuffer,
4445 uint32_t firstDiscardRectangle,
4446 uint32_t discardRectangleCount,
4447 const VkRect2D* pDiscardRectangles)
4448{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004449 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004450 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004451 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004452}
4453#endif
4454#ifdef VK_EXT_conservative_rasterization
4455#endif
4456#ifdef VK_EXT_swapchain_colorspace
4457#endif
4458#ifdef VK_EXT_hdr_metadata
4459static void entry_vkSetHdrMetadataEXT(
4460 VkDevice device,
4461 uint32_t swapchainCount,
4462 const VkSwapchainKHR* pSwapchains,
4463 const VkHdrMetadataEXT* pMetadata)
4464{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004465 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004467 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004468}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004469static void dynCheck_entry_vkSetHdrMetadataEXT(
4470 VkDevice device,
4471 uint32_t swapchainCount,
4472 const VkSwapchainKHR* pSwapchains,
4473 const VkHdrMetadataEXT* pMetadata)
4474{
4475 auto resources = ResourceTracker::get();
4476 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4477 {
4478 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4479 }
4480 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004481 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004482 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004483}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004484#endif
4485#ifdef VK_MVK_ios_surface
4486static VkResult entry_vkCreateIOSSurfaceMVK(
4487 VkInstance instance,
4488 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4489 const VkAllocationCallbacks* pAllocator,
4490 VkSurfaceKHR* pSurface)
4491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004492 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004493 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004494 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004495 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004496 return vkCreateIOSSurfaceMVK_VkResult_return;
4497}
4498#endif
4499#ifdef VK_MVK_macos_surface
4500static VkResult entry_vkCreateMacOSSurfaceMVK(
4501 VkInstance instance,
4502 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4503 const VkAllocationCallbacks* pAllocator,
4504 VkSurfaceKHR* pSurface)
4505{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004506 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004507 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004508 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004509 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004510 return vkCreateMacOSSurfaceMVK_VkResult_return;
4511}
4512#endif
4513#ifdef VK_EXT_external_memory_dma_buf
4514#endif
4515#ifdef VK_EXT_queue_family_foreign
4516#endif
4517#ifdef VK_EXT_debug_utils
4518static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4519 VkDevice device,
4520 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004522 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004523 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004524 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004525 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004526 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4527}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004528static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4529 VkDevice device,
4530 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4531{
4532 auto resources = ResourceTracker::get();
4533 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4534 {
4535 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4536 }
4537 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004538 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004539 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004540 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004541 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4542}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004543static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4544 VkDevice device,
4545 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004547 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004548 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004549 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004550 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004551 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4552}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004553static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4554 VkDevice device,
4555 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4556{
4557 auto resources = ResourceTracker::get();
4558 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4559 {
4560 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4561 }
4562 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004563 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004564 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004565 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004566 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4567}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004568static void entry_vkQueueBeginDebugUtilsLabelEXT(
4569 VkQueue queue,
4570 const VkDebugUtilsLabelEXT* pLabelInfo)
4571{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004572 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004573 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004574 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004575}
4576static void entry_vkQueueEndDebugUtilsLabelEXT(
4577 VkQueue queue)
4578{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004579 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004580 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004581 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004582}
4583static void entry_vkQueueInsertDebugUtilsLabelEXT(
4584 VkQueue queue,
4585 const VkDebugUtilsLabelEXT* pLabelInfo)
4586{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004587 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004588 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004589 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004590}
4591static void entry_vkCmdBeginDebugUtilsLabelEXT(
4592 VkCommandBuffer commandBuffer,
4593 const VkDebugUtilsLabelEXT* pLabelInfo)
4594{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004595 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004596 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004597 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004598}
4599static void entry_vkCmdEndDebugUtilsLabelEXT(
4600 VkCommandBuffer commandBuffer)
4601{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004602 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004603 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004604 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004605}
4606static void entry_vkCmdInsertDebugUtilsLabelEXT(
4607 VkCommandBuffer commandBuffer,
4608 const VkDebugUtilsLabelEXT* pLabelInfo)
4609{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004610 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004611 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004612 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004613}
4614static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4615 VkInstance instance,
4616 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4617 const VkAllocationCallbacks* pAllocator,
4618 VkDebugUtilsMessengerEXT* pMessenger)
4619{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004620 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004622 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004623 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004624 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4625}
4626static void entry_vkDestroyDebugUtilsMessengerEXT(
4627 VkInstance instance,
4628 VkDebugUtilsMessengerEXT messenger,
4629 const VkAllocationCallbacks* pAllocator)
4630{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004631 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004632 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004633 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004634}
4635static void entry_vkSubmitDebugUtilsMessageEXT(
4636 VkInstance instance,
4637 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4638 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4639 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4640{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004641 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004642 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004643 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004644}
4645#endif
4646#ifdef VK_ANDROID_external_memory_android_hardware_buffer
4647static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4648 VkDevice device,
4649 const AHardwareBuffer* buffer,
4650 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4651{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004652 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004653 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004654 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004655 auto resources = ResourceTracker::get();
4656 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004657 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4658}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004659static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4660 VkDevice device,
4661 const AHardwareBuffer* buffer,
4662 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4663{
4664 auto resources = ResourceTracker::get();
4665 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4666 {
4667 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4668 }
4669 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004670 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004671 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4672 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4673 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4674}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004675static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4676 VkDevice device,
4677 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4678 AHardwareBuffer** pBuffer)
4679{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004680 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004681 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004682 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004683 auto resources = ResourceTracker::get();
4684 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004685 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4686}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004687static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4688 VkDevice device,
4689 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4690 AHardwareBuffer** pBuffer)
4691{
4692 auto resources = ResourceTracker::get();
4693 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4694 {
4695 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4696 }
4697 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004698 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004699 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4700 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4701 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4702}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004703#endif
4704#ifdef VK_EXT_sampler_filter_minmax
4705#endif
4706#ifdef VK_AMD_gpu_shader_int16
4707#endif
4708#ifdef VK_AMD_mixed_attachment_samples
4709#endif
4710#ifdef VK_AMD_shader_fragment_mask
4711#endif
4712#ifdef VK_EXT_shader_stencil_export
4713#endif
4714#ifdef VK_EXT_sample_locations
4715static void entry_vkCmdSetSampleLocationsEXT(
4716 VkCommandBuffer commandBuffer,
4717 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4718{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004719 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004720 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004721 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004722}
4723static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4724 VkPhysicalDevice physicalDevice,
4725 VkSampleCountFlagBits samples,
4726 VkMultisamplePropertiesEXT* pMultisampleProperties)
4727{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004728 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004729 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004730 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004731}
4732#endif
4733#ifdef VK_EXT_blend_operation_advanced
4734#endif
4735#ifdef VK_NV_fragment_coverage_to_color
4736#endif
4737#ifdef VK_NV_framebuffer_mixed_samples
4738#endif
4739#ifdef VK_NV_fill_rectangle
4740#endif
4741#ifdef VK_EXT_post_depth_coverage
4742#endif
4743#ifdef VK_EXT_validation_cache
4744static VkResult entry_vkCreateValidationCacheEXT(
4745 VkDevice device,
4746 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4747 const VkAllocationCallbacks* pAllocator,
4748 VkValidationCacheEXT* pValidationCache)
4749{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004750 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004751 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004752 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004753 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004754 return vkCreateValidationCacheEXT_VkResult_return;
4755}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004756static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4757 VkDevice device,
4758 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4759 const VkAllocationCallbacks* pAllocator,
4760 VkValidationCacheEXT* pValidationCache)
4761{
4762 auto resources = ResourceTracker::get();
4763 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4764 {
4765 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4766 }
4767 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004769 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004770 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004771 return vkCreateValidationCacheEXT_VkResult_return;
4772}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004773static void entry_vkDestroyValidationCacheEXT(
4774 VkDevice device,
4775 VkValidationCacheEXT validationCache,
4776 const VkAllocationCallbacks* pAllocator)
4777{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004778 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004779 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004780 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004781}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004782static void dynCheck_entry_vkDestroyValidationCacheEXT(
4783 VkDevice device,
4784 VkValidationCacheEXT validationCache,
4785 const VkAllocationCallbacks* pAllocator)
4786{
4787 auto resources = ResourceTracker::get();
4788 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4789 {
4790 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4791 }
4792 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004794 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004795}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004796static VkResult entry_vkMergeValidationCachesEXT(
4797 VkDevice device,
4798 VkValidationCacheEXT dstCache,
4799 uint32_t srcCacheCount,
4800 const VkValidationCacheEXT* pSrcCaches)
4801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004802 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004803 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004804 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004805 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004806 return vkMergeValidationCachesEXT_VkResult_return;
4807}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004808static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4809 VkDevice device,
4810 VkValidationCacheEXT dstCache,
4811 uint32_t srcCacheCount,
4812 const VkValidationCacheEXT* pSrcCaches)
4813{
4814 auto resources = ResourceTracker::get();
4815 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4816 {
4817 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4818 }
4819 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004820 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004821 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004822 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004823 return vkMergeValidationCachesEXT_VkResult_return;
4824}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004825static VkResult entry_vkGetValidationCacheDataEXT(
4826 VkDevice device,
4827 VkValidationCacheEXT validationCache,
4828 size_t* pDataSize,
4829 void* pData)
4830{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004831 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004832 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004833 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004834 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004835 return vkGetValidationCacheDataEXT_VkResult_return;
4836}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004837static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4838 VkDevice device,
4839 VkValidationCacheEXT validationCache,
4840 size_t* pDataSize,
4841 void* pData)
4842{
4843 auto resources = ResourceTracker::get();
4844 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4845 {
4846 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4847 }
4848 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004849 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004850 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004851 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004852 return vkGetValidationCacheDataEXT_VkResult_return;
4853}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004854#endif
4855#ifdef VK_EXT_descriptor_indexing
4856#endif
4857#ifdef VK_EXT_shader_viewport_index_layer
4858#endif
4859#ifdef VK_EXT_global_priority
4860#endif
4861#ifdef VK_EXT_external_memory_host
4862static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4863 VkDevice device,
4864 VkExternalMemoryHandleTypeFlagBits handleType,
4865 const void* pHostPointer,
4866 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004868 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004870 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004871 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004872 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4873}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004874static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4875 VkDevice device,
4876 VkExternalMemoryHandleTypeFlagBits handleType,
4877 const void* pHostPointer,
4878 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4879{
4880 auto resources = ResourceTracker::get();
4881 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4882 {
4883 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4884 }
4885 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004886 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004887 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004888 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004889 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4890}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004891#endif
4892#ifdef VK_AMD_buffer_marker
4893static void entry_vkCmdWriteBufferMarkerAMD(
4894 VkCommandBuffer commandBuffer,
4895 VkPipelineStageFlagBits pipelineStage,
4896 VkBuffer dstBuffer,
4897 VkDeviceSize dstOffset,
4898 uint32_t marker)
4899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004900 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004901 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004902 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004903}
4904#endif
4905#ifdef VK_AMD_shader_core_properties
4906#endif
4907#ifdef VK_EXT_vertex_attribute_divisor
4908#endif
4909#ifdef VK_NV_shader_subgroup_partitioned
4910#endif
4911#ifdef VK_NV_device_diagnostic_checkpoints
4912static void entry_vkCmdSetCheckpointNV(
4913 VkCommandBuffer commandBuffer,
4914 const void* pCheckpointMarker)
4915{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004916 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004917 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004918 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004919}
4920static void entry_vkGetQueueCheckpointDataNV(
4921 VkQueue queue,
4922 uint32_t* pCheckpointDataCount,
4923 VkCheckpointDataNV* pCheckpointData)
4924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004925 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004926 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004927 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004928}
4929#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004930#ifdef VK_GOOGLE_address_space
4931static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
4932 VkDevice device,
4933 VkDeviceMemory memory,
4934 uint64_t* pAddress)
4935{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004936 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004938 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004939 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004940 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
4941}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004942static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
4943 VkDevice device,
4944 VkDeviceMemory memory,
4945 uint64_t* pAddress)
4946{
4947 auto resources = ResourceTracker::get();
4948 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
4949 {
4950 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
4951 }
4952 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004953 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004954 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004955 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004956 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
4957}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004958#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08004959#ifdef VK_GOOGLE_color_buffer
4960static VkResult entry_vkRegisterImageColorBufferGOOGLE(
4961 VkDevice device,
4962 VkImage image,
4963 uint32_t colorBuffer)
4964{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004965 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004966 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08004967 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004968 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08004969 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
4970}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004971static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
4972 VkDevice device,
4973 VkImage image,
4974 uint32_t colorBuffer)
4975{
4976 auto resources = ResourceTracker::get();
4977 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
4978 {
4979 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
4980 }
4981 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004982 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004983 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004984 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004985 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
4986}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08004987static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
4988 VkDevice device,
4989 VkBuffer buffer,
4990 uint32_t colorBuffer)
4991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004992 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08004994 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004995 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08004996 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
4997}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004998static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
4999 VkDevice device,
5000 VkBuffer buffer,
5001 uint32_t colorBuffer)
5002{
5003 auto resources = ResourceTracker::get();
5004 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5005 {
5006 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5007 }
5008 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005009 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005010 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005011 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005012 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5013}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005014#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005015#ifdef VK_GOOGLE_sized_descriptor_update_template
5016static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5017 VkDevice device,
5018 VkDescriptorSet descriptorSet,
5019 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5020 uint32_t imageInfoCount,
5021 uint32_t bufferInfoCount,
5022 uint32_t bufferViewCount,
5023 const uint32_t* pImageInfoEntryIndices,
5024 const uint32_t* pBufferInfoEntryIndices,
5025 const uint32_t* pBufferViewEntryIndices,
5026 const VkDescriptorImageInfo* pImageInfos,
5027 const VkDescriptorBufferInfo* pBufferInfos,
5028 const VkBufferView* pBufferViews)
5029{
5030 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005031 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005032 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005033}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005034static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5035 VkDevice device,
5036 VkDescriptorSet descriptorSet,
5037 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5038 uint32_t imageInfoCount,
5039 uint32_t bufferInfoCount,
5040 uint32_t bufferViewCount,
5041 const uint32_t* pImageInfoEntryIndices,
5042 const uint32_t* pBufferInfoEntryIndices,
5043 const uint32_t* pBufferViewEntryIndices,
5044 const VkDescriptorImageInfo* pImageInfos,
5045 const VkDescriptorBufferInfo* pBufferInfos,
5046 const VkBufferView* pBufferViews)
5047{
5048 auto resources = ResourceTracker::get();
5049 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5050 {
5051 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5052 }
5053 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005054 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005055 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005056}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005057#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005058#ifdef VK_GOOGLE_async_command_buffers
5059static void entry_vkBeginCommandBufferAsyncGOOGLE(
5060 VkCommandBuffer commandBuffer,
5061 const VkCommandBufferBeginInfo* pBeginInfo)
5062{
5063 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005064 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005065 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005066}
5067static void entry_vkEndCommandBufferAsyncGOOGLE(
5068 VkCommandBuffer commandBuffer)
5069{
5070 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005071 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005072 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005073}
5074static void entry_vkResetCommandBufferAsyncGOOGLE(
5075 VkCommandBuffer commandBuffer,
5076 VkCommandBufferResetFlags flags)
5077{
5078 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005079 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005080 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005081}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005082static void entry_vkCommandBufferHostSyncGOOGLE(
5083 VkCommandBuffer commandBuffer,
5084 uint32_t needHostSync,
5085 uint32_t sequenceNumber)
5086{
5087 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005088 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005089 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005090}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005091#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005092#ifdef VK_GOOGLE_create_resources_with_requirements
5093static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5094 VkDevice device,
5095 const VkImageCreateInfo* pCreateInfo,
5096 const VkAllocationCallbacks* pAllocator,
5097 VkImage* pImage,
5098 VkMemoryRequirements* pMemoryRequirements)
5099{
5100 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005101 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00005102 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005103 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00005104 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5105}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005106static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5107 VkDevice device,
5108 const VkImageCreateInfo* pCreateInfo,
5109 const VkAllocationCallbacks* pAllocator,
5110 VkImage* pImage,
5111 VkMemoryRequirements* pMemoryRequirements)
5112{
5113 auto resources = ResourceTracker::get();
5114 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5115 {
5116 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5117 }
5118 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005120 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005121 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005122 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5123}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005124static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5125 VkDevice device,
5126 const VkBufferCreateInfo* pCreateInfo,
5127 const VkAllocationCallbacks* pAllocator,
5128 VkBuffer* pBuffer,
5129 VkMemoryRequirements* pMemoryRequirements)
5130{
5131 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005132 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00005133 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005134 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00005135 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5136}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005137static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5138 VkDevice device,
5139 const VkBufferCreateInfo* pCreateInfo,
5140 const VkAllocationCallbacks* pAllocator,
5141 VkBuffer* pBuffer,
5142 VkMemoryRequirements* pMemoryRequirements)
5143{
5144 auto resources = ResourceTracker::get();
5145 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5146 {
5147 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5148 }
5149 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005150 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005151 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005152 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005153 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5154}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005155#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08005156#ifdef VK_GOOGLE_address_space_info
5157static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5158 VkDevice device,
5159 VkDeviceMemory memory,
5160 uint64_t* pAddress,
5161 uint64_t* pSize,
5162 uint64_t* pHostmemId)
5163{
5164 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005165 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08005166 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005167 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08005168 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5169}
5170static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5171 VkDevice device,
5172 VkDeviceMemory memory,
5173 uint64_t* pAddress,
5174 uint64_t* pSize,
5175 uint64_t* pHostmemId)
5176{
5177 auto resources = ResourceTracker::get();
5178 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5179 {
5180 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5181 }
5182 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005183 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08005184 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005185 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08005186 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5187}
5188#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005189#ifdef VK_GOOGLE_free_memory_sync
5190static VkResult entry_vkFreeMemorySyncGOOGLE(
5191 VkDevice device,
5192 VkDeviceMemory memory,
5193 const VkAllocationCallbacks* pAllocator)
5194{
5195 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005196 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005197 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005198 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005199 return vkFreeMemorySyncGOOGLE_VkResult_return;
5200}
5201static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
5202 VkDevice device,
5203 VkDeviceMemory memory,
5204 const VkAllocationCallbacks* pAllocator)
5205{
5206 auto resources = ResourceTracker::get();
5207 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"))
5208 {
5209 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync");
5210 }
5211 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005212 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005213 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005214 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005215 return vkFreeMemorySyncGOOGLE_VkResult_return;
5216}
5217#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005218#ifdef VK_GOOGLE_async_queue_submit
5219static void entry_vkQueueHostSyncGOOGLE(
5220 VkQueue queue,
5221 uint32_t needHostSync,
5222 uint32_t sequenceNumber)
5223{
5224 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005225 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005226 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005227}
5228static void entry_vkQueueSubmitAsyncGOOGLE(
5229 VkQueue queue,
5230 uint32_t submitCount,
5231 const VkSubmitInfo* pSubmits,
5232 VkFence fence)
5233{
5234 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005235 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005236 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005237}
5238static void entry_vkQueueWaitIdleAsyncGOOGLE(
5239 VkQueue queue)
5240{
5241 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005242 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005243 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005244}
5245static void entry_vkQueueBindSparseAsyncGOOGLE(
5246 VkQueue queue,
5247 uint32_t bindInfoCount,
5248 const VkBindSparseInfo* pBindInfo,
5249 VkFence fence)
5250{
5251 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005252 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005253 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005254}
5255#endif
Yilong Lia48b0102020-09-15 15:08:28 -07005256#ifdef VK_GOOGLE_linear_image_layout
5257static void entry_vkGetLinearImageLayoutGOOGLE(
5258 VkDevice device,
5259 VkFormat format,
5260 VkDeviceSize* pOffset,
5261 VkDeviceSize* pRowPitchAlignment)
5262{
5263 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005264 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005265 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07005266}
5267static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
5268 VkDevice device,
5269 VkFormat format,
5270 VkDeviceSize* pOffset,
5271 VkDeviceSize* pRowPitchAlignment)
5272{
5273 auto resources = ResourceTracker::get();
5274 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout"))
5275 {
5276 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_linear_image_layout");
5277 }
5278 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005279 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005280 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07005281}
5282#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005283#ifdef VK_MVK_moltenvk
5284static void entry_vkGetMTLDeviceMVK(
5285 VkPhysicalDevice physicalDevice,
5286 void** pMTLDevice)
5287{
5288 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005289 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005290 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005291}
5292static VkResult entry_vkSetMTLTextureMVK(
5293 VkImage image,
5294 void* mtlTexture)
5295{
5296 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005297 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005298 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005299 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005300 return vkSetMTLTextureMVK_VkResult_return;
5301}
5302static void entry_vkGetMTLTextureMVK(
5303 VkImage image,
5304 void** pMTLTexture)
5305{
5306 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005307 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005308 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005309}
5310static void entry_vkGetMTLBufferMVK(
5311 VkBuffer buffer,
5312 void** pMTLBuffer)
5313{
5314 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005316 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005317}
5318static VkResult entry_vkUseIOSurfaceMVK(
5319 VkImage image,
5320 void* ioSurface)
5321{
5322 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005323 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005324 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005325 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005326 return vkUseIOSurfaceMVK_VkResult_return;
5327}
5328static void entry_vkGetIOSurfaceMVK(
5329 VkImage image,
5330 void** pIOSurface)
5331{
5332 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005334 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005335}
5336#endif
Lingfeng Yangded34672021-01-22 23:17:47 -08005337#ifdef VK_GOOGLE_queue_submit_with_commands
5338static void entry_vkQueueFlushCommandsGOOGLE(
5339 VkQueue queue,
5340 VkCommandBuffer commandBuffer,
5341 VkDeviceSize dataSize,
5342 const void* pData)
5343{
5344 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
5345 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
5346 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
5347}
5348#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005349void* goldfish_vulkan_get_proc_address(const char* name){
5350#ifdef VK_VERSION_1_0
5351 if (!strcmp(name, "vkCreateInstance"))
5352 {
5353 return (void*)entry_vkCreateInstance;
5354 }
5355 if (!strcmp(name, "vkDestroyInstance"))
5356 {
5357 return (void*)entry_vkDestroyInstance;
5358 }
5359 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5360 {
5361 return (void*)entry_vkEnumeratePhysicalDevices;
5362 }
5363 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5364 {
5365 return (void*)entry_vkGetPhysicalDeviceFeatures;
5366 }
5367 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5368 {
5369 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5370 }
5371 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5372 {
5373 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5374 }
5375 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5376 {
5377 return (void*)entry_vkGetPhysicalDeviceProperties;
5378 }
5379 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5380 {
5381 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5382 }
5383 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5384 {
5385 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5386 }
5387 if (!strcmp(name, "vkGetInstanceProcAddr"))
5388 {
5389 return (void*)entry_vkGetInstanceProcAddr;
5390 }
5391 if (!strcmp(name, "vkGetDeviceProcAddr"))
5392 {
5393 return (void*)entry_vkGetDeviceProcAddr;
5394 }
5395 if (!strcmp(name, "vkCreateDevice"))
5396 {
5397 return (void*)entry_vkCreateDevice;
5398 }
5399 if (!strcmp(name, "vkDestroyDevice"))
5400 {
5401 return (void*)entry_vkDestroyDevice;
5402 }
5403 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5404 {
5405 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5406 }
5407 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5408 {
5409 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5410 }
5411 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5412 {
5413 return (void*)entry_vkEnumerateInstanceLayerProperties;
5414 }
5415 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5416 {
5417 return (void*)entry_vkEnumerateDeviceLayerProperties;
5418 }
5419 if (!strcmp(name, "vkGetDeviceQueue"))
5420 {
5421 return (void*)entry_vkGetDeviceQueue;
5422 }
5423 if (!strcmp(name, "vkQueueSubmit"))
5424 {
5425 return (void*)entry_vkQueueSubmit;
5426 }
5427 if (!strcmp(name, "vkQueueWaitIdle"))
5428 {
5429 return (void*)entry_vkQueueWaitIdle;
5430 }
5431 if (!strcmp(name, "vkDeviceWaitIdle"))
5432 {
5433 return (void*)entry_vkDeviceWaitIdle;
5434 }
5435 if (!strcmp(name, "vkAllocateMemory"))
5436 {
5437 return (void*)entry_vkAllocateMemory;
5438 }
5439 if (!strcmp(name, "vkFreeMemory"))
5440 {
5441 return (void*)entry_vkFreeMemory;
5442 }
5443 if (!strcmp(name, "vkMapMemory"))
5444 {
5445 return (void*)entry_vkMapMemory;
5446 }
5447 if (!strcmp(name, "vkUnmapMemory"))
5448 {
5449 return (void*)entry_vkUnmapMemory;
5450 }
5451 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5452 {
5453 return (void*)entry_vkFlushMappedMemoryRanges;
5454 }
5455 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5456 {
5457 return (void*)entry_vkInvalidateMappedMemoryRanges;
5458 }
5459 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5460 {
5461 return (void*)entry_vkGetDeviceMemoryCommitment;
5462 }
5463 if (!strcmp(name, "vkBindBufferMemory"))
5464 {
5465 return (void*)entry_vkBindBufferMemory;
5466 }
5467 if (!strcmp(name, "vkBindImageMemory"))
5468 {
5469 return (void*)entry_vkBindImageMemory;
5470 }
5471 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5472 {
5473 return (void*)entry_vkGetBufferMemoryRequirements;
5474 }
5475 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5476 {
5477 return (void*)entry_vkGetImageMemoryRequirements;
5478 }
5479 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5480 {
5481 return (void*)entry_vkGetImageSparseMemoryRequirements;
5482 }
5483 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5484 {
5485 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5486 }
5487 if (!strcmp(name, "vkQueueBindSparse"))
5488 {
5489 return (void*)entry_vkQueueBindSparse;
5490 }
5491 if (!strcmp(name, "vkCreateFence"))
5492 {
5493 return (void*)entry_vkCreateFence;
5494 }
5495 if (!strcmp(name, "vkDestroyFence"))
5496 {
5497 return (void*)entry_vkDestroyFence;
5498 }
5499 if (!strcmp(name, "vkResetFences"))
5500 {
5501 return (void*)entry_vkResetFences;
5502 }
5503 if (!strcmp(name, "vkGetFenceStatus"))
5504 {
5505 return (void*)entry_vkGetFenceStatus;
5506 }
5507 if (!strcmp(name, "vkWaitForFences"))
5508 {
5509 return (void*)entry_vkWaitForFences;
5510 }
5511 if (!strcmp(name, "vkCreateSemaphore"))
5512 {
5513 return (void*)entry_vkCreateSemaphore;
5514 }
5515 if (!strcmp(name, "vkDestroySemaphore"))
5516 {
5517 return (void*)entry_vkDestroySemaphore;
5518 }
5519 if (!strcmp(name, "vkCreateEvent"))
5520 {
5521 return (void*)entry_vkCreateEvent;
5522 }
5523 if (!strcmp(name, "vkDestroyEvent"))
5524 {
5525 return (void*)entry_vkDestroyEvent;
5526 }
5527 if (!strcmp(name, "vkGetEventStatus"))
5528 {
5529 return (void*)entry_vkGetEventStatus;
5530 }
5531 if (!strcmp(name, "vkSetEvent"))
5532 {
5533 return (void*)entry_vkSetEvent;
5534 }
5535 if (!strcmp(name, "vkResetEvent"))
5536 {
5537 return (void*)entry_vkResetEvent;
5538 }
5539 if (!strcmp(name, "vkCreateQueryPool"))
5540 {
5541 return (void*)entry_vkCreateQueryPool;
5542 }
5543 if (!strcmp(name, "vkDestroyQueryPool"))
5544 {
5545 return (void*)entry_vkDestroyQueryPool;
5546 }
5547 if (!strcmp(name, "vkGetQueryPoolResults"))
5548 {
5549 return (void*)entry_vkGetQueryPoolResults;
5550 }
5551 if (!strcmp(name, "vkCreateBuffer"))
5552 {
5553 return (void*)entry_vkCreateBuffer;
5554 }
5555 if (!strcmp(name, "vkDestroyBuffer"))
5556 {
5557 return (void*)entry_vkDestroyBuffer;
5558 }
5559 if (!strcmp(name, "vkCreateBufferView"))
5560 {
5561 return (void*)entry_vkCreateBufferView;
5562 }
5563 if (!strcmp(name, "vkDestroyBufferView"))
5564 {
5565 return (void*)entry_vkDestroyBufferView;
5566 }
5567 if (!strcmp(name, "vkCreateImage"))
5568 {
5569 return (void*)entry_vkCreateImage;
5570 }
5571 if (!strcmp(name, "vkDestroyImage"))
5572 {
5573 return (void*)entry_vkDestroyImage;
5574 }
5575 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5576 {
5577 return (void*)entry_vkGetImageSubresourceLayout;
5578 }
5579 if (!strcmp(name, "vkCreateImageView"))
5580 {
5581 return (void*)entry_vkCreateImageView;
5582 }
5583 if (!strcmp(name, "vkDestroyImageView"))
5584 {
5585 return (void*)entry_vkDestroyImageView;
5586 }
5587 if (!strcmp(name, "vkCreateShaderModule"))
5588 {
5589 return (void*)entry_vkCreateShaderModule;
5590 }
5591 if (!strcmp(name, "vkDestroyShaderModule"))
5592 {
5593 return (void*)entry_vkDestroyShaderModule;
5594 }
5595 if (!strcmp(name, "vkCreatePipelineCache"))
5596 {
5597 return (void*)entry_vkCreatePipelineCache;
5598 }
5599 if (!strcmp(name, "vkDestroyPipelineCache"))
5600 {
5601 return (void*)entry_vkDestroyPipelineCache;
5602 }
5603 if (!strcmp(name, "vkGetPipelineCacheData"))
5604 {
5605 return (void*)entry_vkGetPipelineCacheData;
5606 }
5607 if (!strcmp(name, "vkMergePipelineCaches"))
5608 {
5609 return (void*)entry_vkMergePipelineCaches;
5610 }
5611 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5612 {
5613 return (void*)entry_vkCreateGraphicsPipelines;
5614 }
5615 if (!strcmp(name, "vkCreateComputePipelines"))
5616 {
5617 return (void*)entry_vkCreateComputePipelines;
5618 }
5619 if (!strcmp(name, "vkDestroyPipeline"))
5620 {
5621 return (void*)entry_vkDestroyPipeline;
5622 }
5623 if (!strcmp(name, "vkCreatePipelineLayout"))
5624 {
5625 return (void*)entry_vkCreatePipelineLayout;
5626 }
5627 if (!strcmp(name, "vkDestroyPipelineLayout"))
5628 {
5629 return (void*)entry_vkDestroyPipelineLayout;
5630 }
5631 if (!strcmp(name, "vkCreateSampler"))
5632 {
5633 return (void*)entry_vkCreateSampler;
5634 }
5635 if (!strcmp(name, "vkDestroySampler"))
5636 {
5637 return (void*)entry_vkDestroySampler;
5638 }
5639 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5640 {
5641 return (void*)entry_vkCreateDescriptorSetLayout;
5642 }
5643 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5644 {
5645 return (void*)entry_vkDestroyDescriptorSetLayout;
5646 }
5647 if (!strcmp(name, "vkCreateDescriptorPool"))
5648 {
5649 return (void*)entry_vkCreateDescriptorPool;
5650 }
5651 if (!strcmp(name, "vkDestroyDescriptorPool"))
5652 {
5653 return (void*)entry_vkDestroyDescriptorPool;
5654 }
5655 if (!strcmp(name, "vkResetDescriptorPool"))
5656 {
5657 return (void*)entry_vkResetDescriptorPool;
5658 }
5659 if (!strcmp(name, "vkAllocateDescriptorSets"))
5660 {
5661 return (void*)entry_vkAllocateDescriptorSets;
5662 }
5663 if (!strcmp(name, "vkFreeDescriptorSets"))
5664 {
5665 return (void*)entry_vkFreeDescriptorSets;
5666 }
5667 if (!strcmp(name, "vkUpdateDescriptorSets"))
5668 {
5669 return (void*)entry_vkUpdateDescriptorSets;
5670 }
5671 if (!strcmp(name, "vkCreateFramebuffer"))
5672 {
5673 return (void*)entry_vkCreateFramebuffer;
5674 }
5675 if (!strcmp(name, "vkDestroyFramebuffer"))
5676 {
5677 return (void*)entry_vkDestroyFramebuffer;
5678 }
5679 if (!strcmp(name, "vkCreateRenderPass"))
5680 {
5681 return (void*)entry_vkCreateRenderPass;
5682 }
5683 if (!strcmp(name, "vkDestroyRenderPass"))
5684 {
5685 return (void*)entry_vkDestroyRenderPass;
5686 }
5687 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5688 {
5689 return (void*)entry_vkGetRenderAreaGranularity;
5690 }
5691 if (!strcmp(name, "vkCreateCommandPool"))
5692 {
5693 return (void*)entry_vkCreateCommandPool;
5694 }
5695 if (!strcmp(name, "vkDestroyCommandPool"))
5696 {
5697 return (void*)entry_vkDestroyCommandPool;
5698 }
5699 if (!strcmp(name, "vkResetCommandPool"))
5700 {
5701 return (void*)entry_vkResetCommandPool;
5702 }
5703 if (!strcmp(name, "vkAllocateCommandBuffers"))
5704 {
5705 return (void*)entry_vkAllocateCommandBuffers;
5706 }
5707 if (!strcmp(name, "vkFreeCommandBuffers"))
5708 {
5709 return (void*)entry_vkFreeCommandBuffers;
5710 }
5711 if (!strcmp(name, "vkBeginCommandBuffer"))
5712 {
5713 return (void*)entry_vkBeginCommandBuffer;
5714 }
5715 if (!strcmp(name, "vkEndCommandBuffer"))
5716 {
5717 return (void*)entry_vkEndCommandBuffer;
5718 }
5719 if (!strcmp(name, "vkResetCommandBuffer"))
5720 {
5721 return (void*)entry_vkResetCommandBuffer;
5722 }
5723 if (!strcmp(name, "vkCmdBindPipeline"))
5724 {
5725 return (void*)entry_vkCmdBindPipeline;
5726 }
5727 if (!strcmp(name, "vkCmdSetViewport"))
5728 {
5729 return (void*)entry_vkCmdSetViewport;
5730 }
5731 if (!strcmp(name, "vkCmdSetScissor"))
5732 {
5733 return (void*)entry_vkCmdSetScissor;
5734 }
5735 if (!strcmp(name, "vkCmdSetLineWidth"))
5736 {
5737 return (void*)entry_vkCmdSetLineWidth;
5738 }
5739 if (!strcmp(name, "vkCmdSetDepthBias"))
5740 {
5741 return (void*)entry_vkCmdSetDepthBias;
5742 }
5743 if (!strcmp(name, "vkCmdSetBlendConstants"))
5744 {
5745 return (void*)entry_vkCmdSetBlendConstants;
5746 }
5747 if (!strcmp(name, "vkCmdSetDepthBounds"))
5748 {
5749 return (void*)entry_vkCmdSetDepthBounds;
5750 }
5751 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5752 {
5753 return (void*)entry_vkCmdSetStencilCompareMask;
5754 }
5755 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5756 {
5757 return (void*)entry_vkCmdSetStencilWriteMask;
5758 }
5759 if (!strcmp(name, "vkCmdSetStencilReference"))
5760 {
5761 return (void*)entry_vkCmdSetStencilReference;
5762 }
5763 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5764 {
5765 return (void*)entry_vkCmdBindDescriptorSets;
5766 }
5767 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5768 {
5769 return (void*)entry_vkCmdBindIndexBuffer;
5770 }
5771 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5772 {
5773 return (void*)entry_vkCmdBindVertexBuffers;
5774 }
5775 if (!strcmp(name, "vkCmdDraw"))
5776 {
5777 return (void*)entry_vkCmdDraw;
5778 }
5779 if (!strcmp(name, "vkCmdDrawIndexed"))
5780 {
5781 return (void*)entry_vkCmdDrawIndexed;
5782 }
5783 if (!strcmp(name, "vkCmdDrawIndirect"))
5784 {
5785 return (void*)entry_vkCmdDrawIndirect;
5786 }
5787 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5788 {
5789 return (void*)entry_vkCmdDrawIndexedIndirect;
5790 }
5791 if (!strcmp(name, "vkCmdDispatch"))
5792 {
5793 return (void*)entry_vkCmdDispatch;
5794 }
5795 if (!strcmp(name, "vkCmdDispatchIndirect"))
5796 {
5797 return (void*)entry_vkCmdDispatchIndirect;
5798 }
5799 if (!strcmp(name, "vkCmdCopyBuffer"))
5800 {
5801 return (void*)entry_vkCmdCopyBuffer;
5802 }
5803 if (!strcmp(name, "vkCmdCopyImage"))
5804 {
5805 return (void*)entry_vkCmdCopyImage;
5806 }
5807 if (!strcmp(name, "vkCmdBlitImage"))
5808 {
5809 return (void*)entry_vkCmdBlitImage;
5810 }
5811 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5812 {
5813 return (void*)entry_vkCmdCopyBufferToImage;
5814 }
5815 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5816 {
5817 return (void*)entry_vkCmdCopyImageToBuffer;
5818 }
5819 if (!strcmp(name, "vkCmdUpdateBuffer"))
5820 {
5821 return (void*)entry_vkCmdUpdateBuffer;
5822 }
5823 if (!strcmp(name, "vkCmdFillBuffer"))
5824 {
5825 return (void*)entry_vkCmdFillBuffer;
5826 }
5827 if (!strcmp(name, "vkCmdClearColorImage"))
5828 {
5829 return (void*)entry_vkCmdClearColorImage;
5830 }
5831 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5832 {
5833 return (void*)entry_vkCmdClearDepthStencilImage;
5834 }
5835 if (!strcmp(name, "vkCmdClearAttachments"))
5836 {
5837 return (void*)entry_vkCmdClearAttachments;
5838 }
5839 if (!strcmp(name, "vkCmdResolveImage"))
5840 {
5841 return (void*)entry_vkCmdResolveImage;
5842 }
5843 if (!strcmp(name, "vkCmdSetEvent"))
5844 {
5845 return (void*)entry_vkCmdSetEvent;
5846 }
5847 if (!strcmp(name, "vkCmdResetEvent"))
5848 {
5849 return (void*)entry_vkCmdResetEvent;
5850 }
5851 if (!strcmp(name, "vkCmdWaitEvents"))
5852 {
5853 return (void*)entry_vkCmdWaitEvents;
5854 }
5855 if (!strcmp(name, "vkCmdPipelineBarrier"))
5856 {
5857 return (void*)entry_vkCmdPipelineBarrier;
5858 }
5859 if (!strcmp(name, "vkCmdBeginQuery"))
5860 {
5861 return (void*)entry_vkCmdBeginQuery;
5862 }
5863 if (!strcmp(name, "vkCmdEndQuery"))
5864 {
5865 return (void*)entry_vkCmdEndQuery;
5866 }
5867 if (!strcmp(name, "vkCmdResetQueryPool"))
5868 {
5869 return (void*)entry_vkCmdResetQueryPool;
5870 }
5871 if (!strcmp(name, "vkCmdWriteTimestamp"))
5872 {
5873 return (void*)entry_vkCmdWriteTimestamp;
5874 }
5875 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5876 {
5877 return (void*)entry_vkCmdCopyQueryPoolResults;
5878 }
5879 if (!strcmp(name, "vkCmdPushConstants"))
5880 {
5881 return (void*)entry_vkCmdPushConstants;
5882 }
5883 if (!strcmp(name, "vkCmdBeginRenderPass"))
5884 {
5885 return (void*)entry_vkCmdBeginRenderPass;
5886 }
5887 if (!strcmp(name, "vkCmdNextSubpass"))
5888 {
5889 return (void*)entry_vkCmdNextSubpass;
5890 }
5891 if (!strcmp(name, "vkCmdEndRenderPass"))
5892 {
5893 return (void*)entry_vkCmdEndRenderPass;
5894 }
5895 if (!strcmp(name, "vkCmdExecuteCommands"))
5896 {
5897 return (void*)entry_vkCmdExecuteCommands;
5898 }
5899#endif
5900#ifdef VK_VERSION_1_1
5901 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005904 }
5905 if (!strcmp(name, "vkBindBufferMemory2"))
5906 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005907 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005908 }
5909 if (!strcmp(name, "vkBindImageMemory2"))
5910 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005911 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005912 }
5913 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5914 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005915 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005916 }
5917 if (!strcmp(name, "vkCmdSetDeviceMask"))
5918 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005920 }
5921 if (!strcmp(name, "vkCmdDispatchBase"))
5922 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005923 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005924 }
5925 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5926 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005927 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005928 }
5929 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5930 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005931 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005932 }
5933 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5934 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005935 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005936 }
5937 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5938 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005939 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005940 }
5941 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5942 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005943 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005944 }
5945 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5946 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005947 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005948 }
5949 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5950 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005951 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005952 }
5953 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005956 }
5957 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005959 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005960 }
5961 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005963 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005964 }
5965 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005968 }
5969 if (!strcmp(name, "vkTrimCommandPool"))
5970 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005971 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005972 }
5973 if (!strcmp(name, "vkGetDeviceQueue2"))
5974 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005975 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005976 }
5977 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5978 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005979 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005980 }
5981 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5982 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005983 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005984 }
5985 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5986 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005987 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005988 }
5989 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5990 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005991 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005992 }
5993 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5994 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005995 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005996 }
5997 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5998 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005999 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006000 }
6001 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
6002 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006003 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006004 }
6005 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
6006 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006007 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006008 }
6009 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
6010 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006011 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006012 }
6013#endif
6014#ifdef VK_KHR_surface
6015 if (!strcmp(name, "vkDestroySurfaceKHR"))
6016 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006017 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006018 }
6019 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
6020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006022 }
6023 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6024 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006025 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006026 }
6027 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6028 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006029 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006030 }
6031 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6032 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006033 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006034 }
6035#endif
6036#ifdef VK_KHR_swapchain
6037 if (!strcmp(name, "vkCreateSwapchainKHR"))
6038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006040 }
6041 if (!strcmp(name, "vkDestroySwapchainKHR"))
6042 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006043 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006044 }
6045 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6046 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006047 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006048 }
6049 if (!strcmp(name, "vkAcquireNextImageKHR"))
6050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006052 }
6053 if (!strcmp(name, "vkQueuePresentKHR"))
6054 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006055 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006056 }
6057 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6058 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006059 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006060 }
6061 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6062 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006063 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006064 }
6065 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6066 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006067 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006068 }
6069 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6070 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006071 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006072 }
6073#endif
6074#ifdef VK_KHR_display
6075 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006078 }
6079 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6080 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006081 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006082 }
6083 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6084 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006085 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006086 }
6087 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6088 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006089 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006090 }
6091 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6092 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006093 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006094 }
6095 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6096 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006097 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006098 }
6099 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6100 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006101 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006102 }
6103#endif
6104#ifdef VK_KHR_display_swapchain
6105 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6106 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006107 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006108 }
6109#endif
6110#ifdef VK_KHR_xlib_surface
6111 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6112 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006113 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006114 }
6115 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6116 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006117 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006118 }
6119#endif
6120#ifdef VK_KHR_xcb_surface
6121 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6122 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006123 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006124 }
6125 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6126 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006127 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006128 }
6129#endif
6130#ifdef VK_KHR_wayland_surface
6131 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6132 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006133 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006134 }
6135 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6136 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006137 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006138 }
6139#endif
6140#ifdef VK_KHR_mir_surface
6141 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6142 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006143 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006144 }
6145 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6146 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006147 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006148 }
6149#endif
6150#ifdef VK_KHR_android_surface
6151 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6152 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006153 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006154 }
6155#endif
6156#ifdef VK_KHR_win32_surface
6157 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6158 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006159 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006160 }
6161 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6162 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006163 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006164 }
6165#endif
6166#ifdef VK_KHR_get_physical_device_properties2
6167 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6168 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006169 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006170 }
6171 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6172 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006173 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006174 }
6175 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6176 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006177 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006178 }
6179 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6180 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006181 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006182 }
6183 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6184 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006185 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006186 }
6187 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6188 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006189 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006190 }
6191 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6192 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006193 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006194 }
6195#endif
6196#ifdef VK_KHR_device_group
6197 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6198 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006199 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006200 }
6201 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6202 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006203 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006204 }
6205 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6206 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006207 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006208 }
6209#endif
6210#ifdef VK_KHR_maintenance1
6211 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6212 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006213 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006214 }
6215#endif
6216#ifdef VK_KHR_device_group_creation
6217 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6218 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006219 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006220 }
6221#endif
6222#ifdef VK_KHR_external_memory_capabilities
6223 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6224 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006225 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006226 }
6227#endif
6228#ifdef VK_KHR_external_memory_win32
6229 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6230 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006231 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006232 }
6233 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6234 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006235 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006236 }
6237#endif
6238#ifdef VK_KHR_external_memory_fd
6239 if (!strcmp(name, "vkGetMemoryFdKHR"))
6240 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006241 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006242 }
6243 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6244 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006245 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006246 }
6247#endif
6248#ifdef VK_KHR_external_semaphore_capabilities
6249 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6250 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006251 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006252 }
6253#endif
6254#ifdef VK_KHR_external_semaphore_win32
6255 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6256 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006257 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006258 }
6259 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6260 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006261 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006262 }
6263#endif
6264#ifdef VK_KHR_external_semaphore_fd
6265 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6266 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006267 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006268 }
6269 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6270 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006271 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006272 }
6273#endif
6274#ifdef VK_KHR_push_descriptor
6275 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6276 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006277 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006278 }
6279 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6280 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006281 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006282 }
6283#endif
6284#ifdef VK_KHR_descriptor_update_template
6285 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6286 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006287 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006288 }
6289 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6290 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006291 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006292 }
6293 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6294 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006295 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006296 }
6297#endif
6298#ifdef VK_KHR_create_renderpass2
6299 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6300 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006301 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006302 }
6303 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6304 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006305 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006306 }
6307 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6308 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006309 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006310 }
6311 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6312 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006313 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006314 }
6315#endif
6316#ifdef VK_KHR_shared_presentable_image
6317 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6318 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006319 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006320 }
6321#endif
6322#ifdef VK_KHR_external_fence_capabilities
6323 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6324 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006325 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006326 }
6327#endif
6328#ifdef VK_KHR_external_fence_win32
6329 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6330 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006331 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006332 }
6333 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6334 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006335 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006336 }
6337#endif
6338#ifdef VK_KHR_external_fence_fd
6339 if (!strcmp(name, "vkImportFenceFdKHR"))
6340 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006341 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006342 }
6343 if (!strcmp(name, "vkGetFenceFdKHR"))
6344 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006345 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006346 }
6347#endif
6348#ifdef VK_KHR_get_surface_capabilities2
6349 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6350 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006351 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006352 }
6353 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6354 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006355 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006356 }
6357#endif
6358#ifdef VK_KHR_get_display_properties2
6359 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6360 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006361 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006362 }
6363 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6364 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006365 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006366 }
6367 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6368 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006369 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006370 }
6371 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6372 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006373 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006374 }
6375#endif
6376#ifdef VK_KHR_get_memory_requirements2
6377 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6378 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006379 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006380 }
6381 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6382 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006383 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006384 }
6385 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6386 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006387 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006388 }
6389#endif
6390#ifdef VK_KHR_sampler_ycbcr_conversion
6391 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6392 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006393 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006394 }
6395 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6396 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006397 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006398 }
6399#endif
6400#ifdef VK_KHR_bind_memory2
6401 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6402 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006403 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006404 }
6405 if (!strcmp(name, "vkBindImageMemory2KHR"))
6406 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006407 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006408 }
6409#endif
6410#ifdef VK_KHR_maintenance3
6411 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6412 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006413 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006414 }
6415#endif
6416#ifdef VK_KHR_draw_indirect_count
6417 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6418 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006419 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006420 }
6421 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6422 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006423 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006424 }
6425#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006426#ifdef VK_ANDROID_native_buffer
6427 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6428 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006429 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006430 }
6431 if (!strcmp(name, "vkAcquireImageANDROID"))
6432 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006433 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006434 }
6435 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6436 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006437 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006438 }
6439#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006440#ifdef VK_EXT_debug_report
6441 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006443 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006444 }
6445 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6446 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006447 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006448 }
6449 if (!strcmp(name, "vkDebugReportMessageEXT"))
6450 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006451 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006452 }
6453#endif
6454#ifdef VK_EXT_debug_marker
6455 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6456 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006457 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006458 }
6459 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006462 }
6463 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6464 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006465 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006466 }
6467 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6468 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006469 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006470 }
6471 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6472 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006473 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006474 }
6475#endif
6476#ifdef VK_AMD_draw_indirect_count
6477 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6478 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006479 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006480 }
6481 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6482 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006483 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006484 }
6485#endif
6486#ifdef VK_AMD_shader_info
6487 if (!strcmp(name, "vkGetShaderInfoAMD"))
6488 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006489 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006490 }
6491#endif
6492#ifdef VK_NV_external_memory_capabilities
6493 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6494 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006495 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006496 }
6497#endif
6498#ifdef VK_NV_external_memory_win32
6499 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6500 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006501 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006502 }
6503#endif
6504#ifdef VK_NN_vi_surface
6505 if (!strcmp(name, "vkCreateViSurfaceNN"))
6506 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006507 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006508 }
6509#endif
6510#ifdef VK_EXT_conditional_rendering
6511 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6512 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006513 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006514 }
6515 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6516 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006517 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006518 }
6519#endif
6520#ifdef VK_NVX_device_generated_commands
6521 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006524 }
6525 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6526 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006527 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006528 }
6529 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006532 }
6533 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6534 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006535 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006536 }
6537 if (!strcmp(name, "vkCreateObjectTableNVX"))
6538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006540 }
6541 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006544 }
6545 if (!strcmp(name, "vkRegisterObjectsNVX"))
6546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006548 }
6549 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6550 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006551 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006552 }
6553 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6554 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006555 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006556 }
6557#endif
6558#ifdef VK_NV_clip_space_w_scaling
6559 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6560 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006561 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006562 }
6563#endif
6564#ifdef VK_EXT_direct_mode_display
6565 if (!strcmp(name, "vkReleaseDisplayEXT"))
6566 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006567 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006568 }
6569#endif
6570#ifdef VK_EXT_acquire_xlib_display
6571 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6572 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006573 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006574 }
6575 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006578 }
6579#endif
6580#ifdef VK_EXT_display_surface_counter
6581 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6582 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006583 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006584 }
6585#endif
6586#ifdef VK_EXT_display_control
6587 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006590 }
6591 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6592 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006593 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006594 }
6595 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6596 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006597 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006598 }
6599 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6600 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006601 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006602 }
6603#endif
6604#ifdef VK_GOOGLE_display_timing
6605 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6606 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006607 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006608 }
6609 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6610 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006611 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006612 }
6613#endif
6614#ifdef VK_EXT_discard_rectangles
6615 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6616 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006617 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006618 }
6619#endif
6620#ifdef VK_EXT_hdr_metadata
6621 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6622 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006623 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006624 }
6625#endif
6626#ifdef VK_MVK_ios_surface
6627 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6628 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006629 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006630 }
6631#endif
6632#ifdef VK_MVK_macos_surface
6633 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6634 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006635 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006636 }
6637#endif
6638#ifdef VK_EXT_debug_utils
6639 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6640 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006641 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006642 }
6643 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6644 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006645 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006646 }
6647 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6648 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006649 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006650 }
6651 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6652 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006653 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006654 }
6655 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6656 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006657 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006658 }
6659 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6660 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006661 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006662 }
6663 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6664 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006665 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006666 }
6667 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6668 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006669 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006670 }
6671 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006673 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006674 }
6675 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6676 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006677 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006678 }
6679 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6680 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006681 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006682 }
6683#endif
6684#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6685 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6686 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006687 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006688 }
6689 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6690 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006691 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006692 }
6693#endif
6694#ifdef VK_EXT_sample_locations
6695 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6696 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006697 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006698 }
6699 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6700 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006701 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006702 }
6703#endif
6704#ifdef VK_EXT_validation_cache
6705 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6706 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006707 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006708 }
6709 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6710 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006711 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006712 }
6713 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6714 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006715 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006716 }
6717 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6718 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006719 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006720 }
6721#endif
6722#ifdef VK_EXT_external_memory_host
6723 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6724 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006725 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006726 }
6727#endif
6728#ifdef VK_AMD_buffer_marker
6729 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6730 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006731 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006732 }
6733#endif
6734#ifdef VK_NV_device_diagnostic_checkpoints
6735 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6736 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006737 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006738 }
6739 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6740 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006741 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006742 }
6743#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006744#ifdef VK_GOOGLE_address_space
6745 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6746 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006747 return nullptr;
6748 }
6749#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006750#ifdef VK_GOOGLE_color_buffer
6751 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6752 {
6753 return nullptr;
6754 }
6755 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6756 {
6757 return nullptr;
6758 }
6759#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006760#ifdef VK_GOOGLE_sized_descriptor_update_template
6761 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6762 {
6763 return nullptr;
6764 }
6765#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006766#ifdef VK_GOOGLE_async_command_buffers
6767 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6768 {
6769 return nullptr;
6770 }
6771 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6772 {
6773 return nullptr;
6774 }
6775 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6776 {
6777 return nullptr;
6778 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006779 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6780 {
6781 return nullptr;
6782 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006783#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006784#ifdef VK_GOOGLE_create_resources_with_requirements
6785 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6786 {
6787 return nullptr;
6788 }
6789 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6790 {
6791 return nullptr;
6792 }
6793#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006794#ifdef VK_GOOGLE_address_space_info
6795 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6796 {
6797 return nullptr;
6798 }
6799#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006800#ifdef VK_GOOGLE_free_memory_sync
6801 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6802 {
6803 return nullptr;
6804 }
6805#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07006806#ifdef VK_GOOGLE_async_queue_submit
6807 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
6808 {
6809 return nullptr;
6810 }
6811 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
6812 {
6813 return nullptr;
6814 }
6815 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
6816 {
6817 return nullptr;
6818 }
6819 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
6820 {
6821 return nullptr;
6822 }
6823#endif
Yilong Lia48b0102020-09-15 15:08:28 -07006824#ifdef VK_GOOGLE_linear_image_layout
6825 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
6826 {
6827 return nullptr;
6828 }
6829#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08006830#ifdef VK_MVK_moltenvk
6831 if (!strcmp(name, "vkGetMTLDeviceMVK"))
6832 {
6833 return nullptr;
6834 }
6835 if (!strcmp(name, "vkSetMTLTextureMVK"))
6836 {
6837 return nullptr;
6838 }
6839 if (!strcmp(name, "vkGetMTLTextureMVK"))
6840 {
6841 return nullptr;
6842 }
6843 if (!strcmp(name, "vkGetMTLBufferMVK"))
6844 {
6845 return nullptr;
6846 }
6847 if (!strcmp(name, "vkUseIOSurfaceMVK"))
6848 {
6849 return nullptr;
6850 }
6851 if (!strcmp(name, "vkGetIOSurfaceMVK"))
6852 {
6853 return nullptr;
6854 }
6855#endif
Lingfeng Yangded34672021-01-22 23:17:47 -08006856#ifdef VK_GOOGLE_queue_submit_with_commands
6857 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
6858 {
6859 return nullptr;
6860 }
6861#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006862 return nullptr;
6863}
6864void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6865 auto resources = ResourceTracker::get();
6866 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6867#ifdef VK_VERSION_1_0
6868 if (!strcmp(name, "vkCreateInstance"))
6869 {
6870 return (void*)entry_vkCreateInstance;
6871 }
6872 if (!strcmp(name, "vkDestroyInstance"))
6873 {
6874 return (void*)entry_vkDestroyInstance;
6875 }
6876 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6877 {
6878 return (void*)entry_vkEnumeratePhysicalDevices;
6879 }
6880 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6881 {
6882 return (void*)entry_vkGetPhysicalDeviceFeatures;
6883 }
6884 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6885 {
6886 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6887 }
6888 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6889 {
6890 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6891 }
6892 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6893 {
6894 return (void*)entry_vkGetPhysicalDeviceProperties;
6895 }
6896 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6897 {
6898 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6899 }
6900 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6901 {
6902 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6903 }
6904 if (!strcmp(name, "vkGetInstanceProcAddr"))
6905 {
6906 return (void*)entry_vkGetInstanceProcAddr;
6907 }
6908 if (!strcmp(name, "vkGetDeviceProcAddr"))
6909 {
6910 return (void*)entry_vkGetDeviceProcAddr;
6911 }
6912 if (!strcmp(name, "vkCreateDevice"))
6913 {
6914 return (void*)entry_vkCreateDevice;
6915 }
6916 if (!strcmp(name, "vkDestroyDevice"))
6917 {
6918 return (void*)entry_vkDestroyDevice;
6919 }
6920 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6921 {
6922 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6923 }
6924 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6925 {
6926 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6927 }
6928 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6929 {
6930 return (void*)entry_vkEnumerateInstanceLayerProperties;
6931 }
6932 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6933 {
6934 return (void*)entry_vkEnumerateDeviceLayerProperties;
6935 }
6936 if (!strcmp(name, "vkGetDeviceQueue"))
6937 {
6938 return (void*)entry_vkGetDeviceQueue;
6939 }
6940 if (!strcmp(name, "vkQueueSubmit"))
6941 {
6942 return (void*)entry_vkQueueSubmit;
6943 }
6944 if (!strcmp(name, "vkQueueWaitIdle"))
6945 {
6946 return (void*)entry_vkQueueWaitIdle;
6947 }
6948 if (!strcmp(name, "vkDeviceWaitIdle"))
6949 {
6950 return (void*)entry_vkDeviceWaitIdle;
6951 }
6952 if (!strcmp(name, "vkAllocateMemory"))
6953 {
6954 return (void*)entry_vkAllocateMemory;
6955 }
6956 if (!strcmp(name, "vkFreeMemory"))
6957 {
6958 return (void*)entry_vkFreeMemory;
6959 }
6960 if (!strcmp(name, "vkMapMemory"))
6961 {
6962 return (void*)entry_vkMapMemory;
6963 }
6964 if (!strcmp(name, "vkUnmapMemory"))
6965 {
6966 return (void*)entry_vkUnmapMemory;
6967 }
6968 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6969 {
6970 return (void*)entry_vkFlushMappedMemoryRanges;
6971 }
6972 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6973 {
6974 return (void*)entry_vkInvalidateMappedMemoryRanges;
6975 }
6976 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6977 {
6978 return (void*)entry_vkGetDeviceMemoryCommitment;
6979 }
6980 if (!strcmp(name, "vkBindBufferMemory"))
6981 {
6982 return (void*)entry_vkBindBufferMemory;
6983 }
6984 if (!strcmp(name, "vkBindImageMemory"))
6985 {
6986 return (void*)entry_vkBindImageMemory;
6987 }
6988 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6989 {
6990 return (void*)entry_vkGetBufferMemoryRequirements;
6991 }
6992 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6993 {
6994 return (void*)entry_vkGetImageMemoryRequirements;
6995 }
6996 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6997 {
6998 return (void*)entry_vkGetImageSparseMemoryRequirements;
6999 }
7000 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
7001 {
7002 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
7003 }
7004 if (!strcmp(name, "vkQueueBindSparse"))
7005 {
7006 return (void*)entry_vkQueueBindSparse;
7007 }
7008 if (!strcmp(name, "vkCreateFence"))
7009 {
7010 return (void*)entry_vkCreateFence;
7011 }
7012 if (!strcmp(name, "vkDestroyFence"))
7013 {
7014 return (void*)entry_vkDestroyFence;
7015 }
7016 if (!strcmp(name, "vkResetFences"))
7017 {
7018 return (void*)entry_vkResetFences;
7019 }
7020 if (!strcmp(name, "vkGetFenceStatus"))
7021 {
7022 return (void*)entry_vkGetFenceStatus;
7023 }
7024 if (!strcmp(name, "vkWaitForFences"))
7025 {
7026 return (void*)entry_vkWaitForFences;
7027 }
7028 if (!strcmp(name, "vkCreateSemaphore"))
7029 {
7030 return (void*)entry_vkCreateSemaphore;
7031 }
7032 if (!strcmp(name, "vkDestroySemaphore"))
7033 {
7034 return (void*)entry_vkDestroySemaphore;
7035 }
7036 if (!strcmp(name, "vkCreateEvent"))
7037 {
7038 return (void*)entry_vkCreateEvent;
7039 }
7040 if (!strcmp(name, "vkDestroyEvent"))
7041 {
7042 return (void*)entry_vkDestroyEvent;
7043 }
7044 if (!strcmp(name, "vkGetEventStatus"))
7045 {
7046 return (void*)entry_vkGetEventStatus;
7047 }
7048 if (!strcmp(name, "vkSetEvent"))
7049 {
7050 return (void*)entry_vkSetEvent;
7051 }
7052 if (!strcmp(name, "vkResetEvent"))
7053 {
7054 return (void*)entry_vkResetEvent;
7055 }
7056 if (!strcmp(name, "vkCreateQueryPool"))
7057 {
7058 return (void*)entry_vkCreateQueryPool;
7059 }
7060 if (!strcmp(name, "vkDestroyQueryPool"))
7061 {
7062 return (void*)entry_vkDestroyQueryPool;
7063 }
7064 if (!strcmp(name, "vkGetQueryPoolResults"))
7065 {
7066 return (void*)entry_vkGetQueryPoolResults;
7067 }
7068 if (!strcmp(name, "vkCreateBuffer"))
7069 {
7070 return (void*)entry_vkCreateBuffer;
7071 }
7072 if (!strcmp(name, "vkDestroyBuffer"))
7073 {
7074 return (void*)entry_vkDestroyBuffer;
7075 }
7076 if (!strcmp(name, "vkCreateBufferView"))
7077 {
7078 return (void*)entry_vkCreateBufferView;
7079 }
7080 if (!strcmp(name, "vkDestroyBufferView"))
7081 {
7082 return (void*)entry_vkDestroyBufferView;
7083 }
7084 if (!strcmp(name, "vkCreateImage"))
7085 {
7086 return (void*)entry_vkCreateImage;
7087 }
7088 if (!strcmp(name, "vkDestroyImage"))
7089 {
7090 return (void*)entry_vkDestroyImage;
7091 }
7092 if (!strcmp(name, "vkGetImageSubresourceLayout"))
7093 {
7094 return (void*)entry_vkGetImageSubresourceLayout;
7095 }
7096 if (!strcmp(name, "vkCreateImageView"))
7097 {
7098 return (void*)entry_vkCreateImageView;
7099 }
7100 if (!strcmp(name, "vkDestroyImageView"))
7101 {
7102 return (void*)entry_vkDestroyImageView;
7103 }
7104 if (!strcmp(name, "vkCreateShaderModule"))
7105 {
7106 return (void*)entry_vkCreateShaderModule;
7107 }
7108 if (!strcmp(name, "vkDestroyShaderModule"))
7109 {
7110 return (void*)entry_vkDestroyShaderModule;
7111 }
7112 if (!strcmp(name, "vkCreatePipelineCache"))
7113 {
7114 return (void*)entry_vkCreatePipelineCache;
7115 }
7116 if (!strcmp(name, "vkDestroyPipelineCache"))
7117 {
7118 return (void*)entry_vkDestroyPipelineCache;
7119 }
7120 if (!strcmp(name, "vkGetPipelineCacheData"))
7121 {
7122 return (void*)entry_vkGetPipelineCacheData;
7123 }
7124 if (!strcmp(name, "vkMergePipelineCaches"))
7125 {
7126 return (void*)entry_vkMergePipelineCaches;
7127 }
7128 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7129 {
7130 return (void*)entry_vkCreateGraphicsPipelines;
7131 }
7132 if (!strcmp(name, "vkCreateComputePipelines"))
7133 {
7134 return (void*)entry_vkCreateComputePipelines;
7135 }
7136 if (!strcmp(name, "vkDestroyPipeline"))
7137 {
7138 return (void*)entry_vkDestroyPipeline;
7139 }
7140 if (!strcmp(name, "vkCreatePipelineLayout"))
7141 {
7142 return (void*)entry_vkCreatePipelineLayout;
7143 }
7144 if (!strcmp(name, "vkDestroyPipelineLayout"))
7145 {
7146 return (void*)entry_vkDestroyPipelineLayout;
7147 }
7148 if (!strcmp(name, "vkCreateSampler"))
7149 {
7150 return (void*)entry_vkCreateSampler;
7151 }
7152 if (!strcmp(name, "vkDestroySampler"))
7153 {
7154 return (void*)entry_vkDestroySampler;
7155 }
7156 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7157 {
7158 return (void*)entry_vkCreateDescriptorSetLayout;
7159 }
7160 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7161 {
7162 return (void*)entry_vkDestroyDescriptorSetLayout;
7163 }
7164 if (!strcmp(name, "vkCreateDescriptorPool"))
7165 {
7166 return (void*)entry_vkCreateDescriptorPool;
7167 }
7168 if (!strcmp(name, "vkDestroyDescriptorPool"))
7169 {
7170 return (void*)entry_vkDestroyDescriptorPool;
7171 }
7172 if (!strcmp(name, "vkResetDescriptorPool"))
7173 {
7174 return (void*)entry_vkResetDescriptorPool;
7175 }
7176 if (!strcmp(name, "vkAllocateDescriptorSets"))
7177 {
7178 return (void*)entry_vkAllocateDescriptorSets;
7179 }
7180 if (!strcmp(name, "vkFreeDescriptorSets"))
7181 {
7182 return (void*)entry_vkFreeDescriptorSets;
7183 }
7184 if (!strcmp(name, "vkUpdateDescriptorSets"))
7185 {
7186 return (void*)entry_vkUpdateDescriptorSets;
7187 }
7188 if (!strcmp(name, "vkCreateFramebuffer"))
7189 {
7190 return (void*)entry_vkCreateFramebuffer;
7191 }
7192 if (!strcmp(name, "vkDestroyFramebuffer"))
7193 {
7194 return (void*)entry_vkDestroyFramebuffer;
7195 }
7196 if (!strcmp(name, "vkCreateRenderPass"))
7197 {
7198 return (void*)entry_vkCreateRenderPass;
7199 }
7200 if (!strcmp(name, "vkDestroyRenderPass"))
7201 {
7202 return (void*)entry_vkDestroyRenderPass;
7203 }
7204 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7205 {
7206 return (void*)entry_vkGetRenderAreaGranularity;
7207 }
7208 if (!strcmp(name, "vkCreateCommandPool"))
7209 {
7210 return (void*)entry_vkCreateCommandPool;
7211 }
7212 if (!strcmp(name, "vkDestroyCommandPool"))
7213 {
7214 return (void*)entry_vkDestroyCommandPool;
7215 }
7216 if (!strcmp(name, "vkResetCommandPool"))
7217 {
7218 return (void*)entry_vkResetCommandPool;
7219 }
7220 if (!strcmp(name, "vkAllocateCommandBuffers"))
7221 {
7222 return (void*)entry_vkAllocateCommandBuffers;
7223 }
7224 if (!strcmp(name, "vkFreeCommandBuffers"))
7225 {
7226 return (void*)entry_vkFreeCommandBuffers;
7227 }
7228 if (!strcmp(name, "vkBeginCommandBuffer"))
7229 {
7230 return (void*)entry_vkBeginCommandBuffer;
7231 }
7232 if (!strcmp(name, "vkEndCommandBuffer"))
7233 {
7234 return (void*)entry_vkEndCommandBuffer;
7235 }
7236 if (!strcmp(name, "vkResetCommandBuffer"))
7237 {
7238 return (void*)entry_vkResetCommandBuffer;
7239 }
7240 if (!strcmp(name, "vkCmdBindPipeline"))
7241 {
7242 return (void*)entry_vkCmdBindPipeline;
7243 }
7244 if (!strcmp(name, "vkCmdSetViewport"))
7245 {
7246 return (void*)entry_vkCmdSetViewport;
7247 }
7248 if (!strcmp(name, "vkCmdSetScissor"))
7249 {
7250 return (void*)entry_vkCmdSetScissor;
7251 }
7252 if (!strcmp(name, "vkCmdSetLineWidth"))
7253 {
7254 return (void*)entry_vkCmdSetLineWidth;
7255 }
7256 if (!strcmp(name, "vkCmdSetDepthBias"))
7257 {
7258 return (void*)entry_vkCmdSetDepthBias;
7259 }
7260 if (!strcmp(name, "vkCmdSetBlendConstants"))
7261 {
7262 return (void*)entry_vkCmdSetBlendConstants;
7263 }
7264 if (!strcmp(name, "vkCmdSetDepthBounds"))
7265 {
7266 return (void*)entry_vkCmdSetDepthBounds;
7267 }
7268 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7269 {
7270 return (void*)entry_vkCmdSetStencilCompareMask;
7271 }
7272 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7273 {
7274 return (void*)entry_vkCmdSetStencilWriteMask;
7275 }
7276 if (!strcmp(name, "vkCmdSetStencilReference"))
7277 {
7278 return (void*)entry_vkCmdSetStencilReference;
7279 }
7280 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7281 {
7282 return (void*)entry_vkCmdBindDescriptorSets;
7283 }
7284 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7285 {
7286 return (void*)entry_vkCmdBindIndexBuffer;
7287 }
7288 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7289 {
7290 return (void*)entry_vkCmdBindVertexBuffers;
7291 }
7292 if (!strcmp(name, "vkCmdDraw"))
7293 {
7294 return (void*)entry_vkCmdDraw;
7295 }
7296 if (!strcmp(name, "vkCmdDrawIndexed"))
7297 {
7298 return (void*)entry_vkCmdDrawIndexed;
7299 }
7300 if (!strcmp(name, "vkCmdDrawIndirect"))
7301 {
7302 return (void*)entry_vkCmdDrawIndirect;
7303 }
7304 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7305 {
7306 return (void*)entry_vkCmdDrawIndexedIndirect;
7307 }
7308 if (!strcmp(name, "vkCmdDispatch"))
7309 {
7310 return (void*)entry_vkCmdDispatch;
7311 }
7312 if (!strcmp(name, "vkCmdDispatchIndirect"))
7313 {
7314 return (void*)entry_vkCmdDispatchIndirect;
7315 }
7316 if (!strcmp(name, "vkCmdCopyBuffer"))
7317 {
7318 return (void*)entry_vkCmdCopyBuffer;
7319 }
7320 if (!strcmp(name, "vkCmdCopyImage"))
7321 {
7322 return (void*)entry_vkCmdCopyImage;
7323 }
7324 if (!strcmp(name, "vkCmdBlitImage"))
7325 {
7326 return (void*)entry_vkCmdBlitImage;
7327 }
7328 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7329 {
7330 return (void*)entry_vkCmdCopyBufferToImage;
7331 }
7332 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7333 {
7334 return (void*)entry_vkCmdCopyImageToBuffer;
7335 }
7336 if (!strcmp(name, "vkCmdUpdateBuffer"))
7337 {
7338 return (void*)entry_vkCmdUpdateBuffer;
7339 }
7340 if (!strcmp(name, "vkCmdFillBuffer"))
7341 {
7342 return (void*)entry_vkCmdFillBuffer;
7343 }
7344 if (!strcmp(name, "vkCmdClearColorImage"))
7345 {
7346 return (void*)entry_vkCmdClearColorImage;
7347 }
7348 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7349 {
7350 return (void*)entry_vkCmdClearDepthStencilImage;
7351 }
7352 if (!strcmp(name, "vkCmdClearAttachments"))
7353 {
7354 return (void*)entry_vkCmdClearAttachments;
7355 }
7356 if (!strcmp(name, "vkCmdResolveImage"))
7357 {
7358 return (void*)entry_vkCmdResolveImage;
7359 }
7360 if (!strcmp(name, "vkCmdSetEvent"))
7361 {
7362 return (void*)entry_vkCmdSetEvent;
7363 }
7364 if (!strcmp(name, "vkCmdResetEvent"))
7365 {
7366 return (void*)entry_vkCmdResetEvent;
7367 }
7368 if (!strcmp(name, "vkCmdWaitEvents"))
7369 {
7370 return (void*)entry_vkCmdWaitEvents;
7371 }
7372 if (!strcmp(name, "vkCmdPipelineBarrier"))
7373 {
7374 return (void*)entry_vkCmdPipelineBarrier;
7375 }
7376 if (!strcmp(name, "vkCmdBeginQuery"))
7377 {
7378 return (void*)entry_vkCmdBeginQuery;
7379 }
7380 if (!strcmp(name, "vkCmdEndQuery"))
7381 {
7382 return (void*)entry_vkCmdEndQuery;
7383 }
7384 if (!strcmp(name, "vkCmdResetQueryPool"))
7385 {
7386 return (void*)entry_vkCmdResetQueryPool;
7387 }
7388 if (!strcmp(name, "vkCmdWriteTimestamp"))
7389 {
7390 return (void*)entry_vkCmdWriteTimestamp;
7391 }
7392 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7393 {
7394 return (void*)entry_vkCmdCopyQueryPoolResults;
7395 }
7396 if (!strcmp(name, "vkCmdPushConstants"))
7397 {
7398 return (void*)entry_vkCmdPushConstants;
7399 }
7400 if (!strcmp(name, "vkCmdBeginRenderPass"))
7401 {
7402 return (void*)entry_vkCmdBeginRenderPass;
7403 }
7404 if (!strcmp(name, "vkCmdNextSubpass"))
7405 {
7406 return (void*)entry_vkCmdNextSubpass;
7407 }
7408 if (!strcmp(name, "vkCmdEndRenderPass"))
7409 {
7410 return (void*)entry_vkCmdEndRenderPass;
7411 }
7412 if (!strcmp(name, "vkCmdExecuteCommands"))
7413 {
7414 return (void*)entry_vkCmdExecuteCommands;
7415 }
7416#endif
7417#ifdef VK_VERSION_1_1
7418 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7419 {
7420 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7421 }
7422 if (!strcmp(name, "vkBindBufferMemory2"))
7423 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007424 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007425 }
7426 if (!strcmp(name, "vkBindImageMemory2"))
7427 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007428 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007429 }
7430 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7431 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007432 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007433 }
7434 if (!strcmp(name, "vkCmdSetDeviceMask"))
7435 {
7436 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7437 }
7438 if (!strcmp(name, "vkCmdDispatchBase"))
7439 {
7440 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7441 }
7442 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7443 {
7444 return nullptr;
7445 }
7446 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7447 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007448 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007449 }
7450 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7451 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007452 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007453 }
7454 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7455 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007456 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007457 }
7458 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7459 {
7460 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7461 }
7462 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7463 {
7464 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7465 }
7466 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7467 {
7468 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7469 }
7470 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7471 {
7472 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7473 }
7474 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7475 {
7476 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7477 }
7478 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7479 {
7480 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7481 }
7482 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7483 {
7484 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7485 }
7486 if (!strcmp(name, "vkTrimCommandPool"))
7487 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007488 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007489 }
7490 if (!strcmp(name, "vkGetDeviceQueue2"))
7491 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007492 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007493 }
7494 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7495 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007496 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007497 }
7498 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7499 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007500 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007501 }
7502 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7503 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007504 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007505 }
7506 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7507 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007508 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007509 }
7510 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7511 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007512 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007513 }
7514 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7515 {
7516 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7517 }
7518 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7519 {
7520 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7521 }
7522 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7523 {
7524 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7525 }
7526 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7527 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007528 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007529 }
7530#endif
7531#ifdef VK_KHR_surface
7532 if (!strcmp(name, "vkDestroySurfaceKHR"))
7533 {
7534 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7535 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7536 }
7537 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7538 {
7539 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7540 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7541 }
7542 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7543 {
7544 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7545 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7546 }
7547 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7548 {
7549 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7550 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7551 }
7552 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7553 {
7554 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7555 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7556 }
7557#endif
7558#ifdef VK_KHR_swapchain
7559 if (!strcmp(name, "vkCreateSwapchainKHR"))
7560 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007561 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007562 }
7563 if (!strcmp(name, "vkDestroySwapchainKHR"))
7564 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007565 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007566 }
7567 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7568 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007569 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007570 }
7571 if (!strcmp(name, "vkAcquireNextImageKHR"))
7572 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007573 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007574 }
7575 if (!strcmp(name, "vkQueuePresentKHR"))
7576 {
7577 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7578 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7579 }
7580 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7581 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007582 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007583 }
7584 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7585 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007586 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007587 }
7588 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7589 {
7590 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7591 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7592 }
7593 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7594 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007595 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007596 }
7597#endif
7598#ifdef VK_KHR_display
7599 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7600 {
7601 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7602 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7603 }
7604 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7605 {
7606 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7607 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7608 }
7609 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7610 {
7611 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7612 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7613 }
7614 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7615 {
7616 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7617 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7618 }
7619 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7620 {
7621 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7622 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7623 }
7624 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7625 {
7626 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7627 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7628 }
7629 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7630 {
7631 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7632 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7633 }
7634#endif
7635#ifdef VK_KHR_display_swapchain
7636 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7637 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007638 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007639 }
7640#endif
7641#ifdef VK_KHR_xlib_surface
7642 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7643 {
7644 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7645 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7646 }
7647 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7648 {
7649 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7650 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7651 }
7652#endif
7653#ifdef VK_KHR_xcb_surface
7654 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7655 {
7656 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7657 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7658 }
7659 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7660 {
7661 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7662 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7663 }
7664#endif
7665#ifdef VK_KHR_wayland_surface
7666 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7667 {
7668 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7669 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7670 }
7671 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7672 {
7673 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7674 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7675 }
7676#endif
7677#ifdef VK_KHR_mir_surface
7678 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7679 {
7680 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7681 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7682 }
7683 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7684 {
7685 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7686 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7687 }
7688#endif
7689#ifdef VK_KHR_android_surface
7690 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7691 {
7692 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7693 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7694 }
7695#endif
7696#ifdef VK_KHR_win32_surface
7697 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7698 {
7699 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7700 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7701 }
7702 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7703 {
7704 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7705 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7706 }
7707#endif
7708#ifdef VK_KHR_get_physical_device_properties2
7709 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7710 {
7711 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7712 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7713 }
7714 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7715 {
7716 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7717 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7718 }
7719 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7720 {
7721 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7722 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7723 }
7724 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7725 {
7726 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7727 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7728 }
7729 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7730 {
7731 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7732 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7733 }
7734 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7735 {
7736 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7737 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7738 }
7739 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7740 {
7741 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7742 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7743 }
7744#endif
7745#ifdef VK_KHR_device_group
7746 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7747 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007748 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007749 }
7750 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7751 {
7752 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7753 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7754 }
7755 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7756 {
7757 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7758 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7759 }
7760#endif
7761#ifdef VK_KHR_maintenance1
7762 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7763 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007764 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007765 }
7766#endif
7767#ifdef VK_KHR_device_group_creation
7768 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7769 {
7770 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7771 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7772 }
7773#endif
7774#ifdef VK_KHR_external_memory_capabilities
7775 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7776 {
7777 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7778 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7779 }
7780#endif
7781#ifdef VK_KHR_external_memory_win32
7782 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7783 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007784 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007785 }
7786 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7787 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007788 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007789 }
7790#endif
7791#ifdef VK_KHR_external_memory_fd
7792 if (!strcmp(name, "vkGetMemoryFdKHR"))
7793 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007794 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007795 }
7796 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7797 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007798 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007799 }
7800#endif
7801#ifdef VK_KHR_external_semaphore_capabilities
7802 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7803 {
7804 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7805 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7806 }
7807#endif
7808#ifdef VK_KHR_external_semaphore_win32
7809 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7810 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007811 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007812 }
7813 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7814 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007815 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007816 }
7817#endif
7818#ifdef VK_KHR_external_semaphore_fd
7819 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7820 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007821 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007822 }
7823 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7824 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007825 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007826 }
7827#endif
7828#ifdef VK_KHR_push_descriptor
7829 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7830 {
7831 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7832 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7833 }
7834 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7835 {
7836 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7837 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7838 }
7839#endif
7840#ifdef VK_KHR_descriptor_update_template
7841 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7842 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007843 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007844 }
7845 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7846 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007847 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007848 }
7849 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7850 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007851 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007852 }
7853#endif
7854#ifdef VK_KHR_create_renderpass2
7855 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7856 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007857 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007858 }
7859 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7860 {
7861 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7862 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7863 }
7864 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7865 {
7866 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7867 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7868 }
7869 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7870 {
7871 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7872 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7873 }
7874#endif
7875#ifdef VK_KHR_shared_presentable_image
7876 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7877 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007878 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007879 }
7880#endif
7881#ifdef VK_KHR_external_fence_capabilities
7882 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7883 {
7884 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7885 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7886 }
7887#endif
7888#ifdef VK_KHR_external_fence_win32
7889 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7890 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007891 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007892 }
7893 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7894 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007895 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007896 }
7897#endif
7898#ifdef VK_KHR_external_fence_fd
7899 if (!strcmp(name, "vkImportFenceFdKHR"))
7900 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007901 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007902 }
7903 if (!strcmp(name, "vkGetFenceFdKHR"))
7904 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007905 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007906 }
7907#endif
7908#ifdef VK_KHR_get_surface_capabilities2
7909 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7910 {
7911 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7912 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7913 }
7914 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7915 {
7916 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7917 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7918 }
7919#endif
7920#ifdef VK_KHR_get_display_properties2
7921 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7922 {
7923 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7924 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7925 }
7926 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7927 {
7928 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7929 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7930 }
7931 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7932 {
7933 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7934 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7935 }
7936 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7937 {
7938 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7939 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7940 }
7941#endif
7942#ifdef VK_KHR_get_memory_requirements2
7943 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7944 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007945 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007946 }
7947 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7948 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007949 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007950 }
7951 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7952 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007953 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007954 }
7955#endif
7956#ifdef VK_KHR_sampler_ycbcr_conversion
7957 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7958 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007959 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007960 }
7961 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7962 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007963 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007964 }
7965#endif
7966#ifdef VK_KHR_bind_memory2
7967 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7968 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007969 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007970 }
7971 if (!strcmp(name, "vkBindImageMemory2KHR"))
7972 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007973 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007974 }
7975#endif
7976#ifdef VK_KHR_maintenance3
7977 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7978 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007979 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007980 }
7981#endif
7982#ifdef VK_KHR_draw_indirect_count
7983 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7984 {
7985 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7986 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7987 }
7988 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7989 {
7990 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7991 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7992 }
7993#endif
7994#ifdef VK_ANDROID_native_buffer
7995 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7996 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007997 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007998 }
7999 if (!strcmp(name, "vkAcquireImageANDROID"))
8000 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008001 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008002 }
8003 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
8004 {
8005 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
8006 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
8007 }
8008#endif
8009#ifdef VK_EXT_debug_report
8010 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
8011 {
8012 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8013 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
8014 }
8015 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
8016 {
8017 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8018 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
8019 }
8020 if (!strcmp(name, "vkDebugReportMessageEXT"))
8021 {
8022 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8023 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
8024 }
8025#endif
8026#ifdef VK_EXT_debug_marker
8027 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
8028 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008029 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008030 }
8031 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
8032 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008033 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008034 }
8035 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
8036 {
8037 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8038 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
8039 }
8040 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
8041 {
8042 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8043 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
8044 }
8045 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8046 {
8047 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8048 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8049 }
8050#endif
8051#ifdef VK_AMD_draw_indirect_count
8052 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8053 {
8054 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8055 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8056 }
8057 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8058 {
8059 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8060 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8061 }
8062#endif
8063#ifdef VK_AMD_shader_info
8064 if (!strcmp(name, "vkGetShaderInfoAMD"))
8065 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008066 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008067 }
8068#endif
8069#ifdef VK_NV_external_memory_capabilities
8070 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8071 {
8072 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
8073 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8074 }
8075#endif
8076#ifdef VK_NV_external_memory_win32
8077 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8078 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008079 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008080 }
8081#endif
8082#ifdef VK_NN_vi_surface
8083 if (!strcmp(name, "vkCreateViSurfaceNN"))
8084 {
8085 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
8086 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8087 }
8088#endif
8089#ifdef VK_EXT_conditional_rendering
8090 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8091 {
8092 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8093 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8094 }
8095 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8096 {
8097 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8098 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8099 }
8100#endif
8101#ifdef VK_NVX_device_generated_commands
8102 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8103 {
8104 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8105 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8106 }
8107 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8108 {
8109 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8110 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8111 }
8112 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8113 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008114 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008115 }
8116 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8117 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008118 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008119 }
8120 if (!strcmp(name, "vkCreateObjectTableNVX"))
8121 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008122 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008123 }
8124 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8125 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008126 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008127 }
8128 if (!strcmp(name, "vkRegisterObjectsNVX"))
8129 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008130 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008131 }
8132 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8133 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008134 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008135 }
8136 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8137 {
8138 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8139 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8140 }
8141#endif
8142#ifdef VK_NV_clip_space_w_scaling
8143 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8144 {
8145 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8146 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8147 }
8148#endif
8149#ifdef VK_EXT_direct_mode_display
8150 if (!strcmp(name, "vkReleaseDisplayEXT"))
8151 {
8152 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8153 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8154 }
8155#endif
8156#ifdef VK_EXT_acquire_xlib_display
8157 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8158 {
8159 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8160 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8161 }
8162 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8163 {
8164 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8165 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8166 }
8167#endif
8168#ifdef VK_EXT_display_surface_counter
8169 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8170 {
8171 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8172 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8173 }
8174#endif
8175#ifdef VK_EXT_display_control
8176 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8177 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008178 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008179 }
8180 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8181 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008182 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008183 }
8184 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8185 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008186 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008187 }
8188 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8189 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008190 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008191 }
8192#endif
8193#ifdef VK_GOOGLE_display_timing
8194 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8195 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008196 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008197 }
8198 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8199 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008200 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008201 }
8202#endif
8203#ifdef VK_EXT_discard_rectangles
8204 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8205 {
8206 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8207 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8208 }
8209#endif
8210#ifdef VK_EXT_hdr_metadata
8211 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8212 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008213 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008214 }
8215#endif
8216#ifdef VK_MVK_ios_surface
8217 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8218 {
8219 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8220 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8221 }
8222#endif
8223#ifdef VK_MVK_macos_surface
8224 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8225 {
8226 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8227 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8228 }
8229#endif
8230#ifdef VK_EXT_debug_utils
8231 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8232 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008233 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008234 }
8235 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8236 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008237 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008238 }
8239 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8240 {
8241 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8242 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8243 }
8244 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8245 {
8246 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8247 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8248 }
8249 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8250 {
8251 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8252 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8253 }
8254 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8255 {
8256 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8257 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8258 }
8259 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8260 {
8261 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8262 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8263 }
8264 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8265 {
8266 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8267 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8268 }
8269 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8270 {
8271 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8272 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8273 }
8274 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8275 {
8276 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8277 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8278 }
8279 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8280 {
8281 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8282 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8283 }
8284#endif
8285#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8286 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8287 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008288 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008289 }
8290 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8291 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008292 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008293 }
8294#endif
8295#ifdef VK_EXT_sample_locations
8296 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8297 {
8298 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8299 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8300 }
8301 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8302 {
8303 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8304 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8305 }
8306#endif
8307#ifdef VK_EXT_validation_cache
8308 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8309 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008310 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008311 }
8312 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8313 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008314 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008315 }
8316 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8317 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008318 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008319 }
8320 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8321 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008322 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008323 }
8324#endif
8325#ifdef VK_EXT_external_memory_host
8326 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8327 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008328 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008329 }
8330#endif
8331#ifdef VK_AMD_buffer_marker
8332 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8333 {
8334 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8335 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8336 }
8337#endif
8338#ifdef VK_NV_device_diagnostic_checkpoints
8339 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8340 {
8341 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8342 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8343 }
8344 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8345 {
8346 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8347 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8348 }
8349#endif
8350#ifdef VK_GOOGLE_address_space
8351 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8352 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008353 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008354 }
8355#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008356#ifdef VK_GOOGLE_color_buffer
8357 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8358 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008359 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008360 }
8361 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8362 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008363 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008364 }
8365#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008366#ifdef VK_GOOGLE_sized_descriptor_update_template
8367 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8368 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008369 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008370 }
8371#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008372#ifdef VK_GOOGLE_async_command_buffers
8373 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8374 {
8375 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8376 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8377 }
8378 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8379 {
8380 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8381 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8382 }
8383 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8384 {
8385 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8386 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8387 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008388 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8389 {
8390 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8391 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8392 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008393#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008394#ifdef VK_GOOGLE_create_resources_with_requirements
8395 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8396 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008397 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008398 }
8399 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8400 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008401 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008402 }
8403#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008404#ifdef VK_GOOGLE_address_space_info
8405 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8406 {
8407 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8408 }
8409#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008410#ifdef VK_GOOGLE_free_memory_sync
8411 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8412 {
8413 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8414 }
8415#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008416#ifdef VK_GOOGLE_async_queue_submit
8417 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
8418 {
8419 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8420 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
8421 }
8422 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
8423 {
8424 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8425 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
8426 }
8427 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
8428 {
8429 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8430 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
8431 }
8432 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
8433 {
8434 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8435 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
8436 }
8437#endif
Yilong Lia48b0102020-09-15 15:08:28 -07008438#ifdef VK_GOOGLE_linear_image_layout
8439 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
8440 {
8441 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
8442 }
8443#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08008444#ifdef VK_MVK_moltenvk
8445 if (!strcmp(name, "vkGetMTLDeviceMVK"))
8446 {
8447 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8448 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
8449 }
8450 if (!strcmp(name, "vkSetMTLTextureMVK"))
8451 {
8452 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8453 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
8454 }
8455 if (!strcmp(name, "vkGetMTLTextureMVK"))
8456 {
8457 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8458 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
8459 }
8460 if (!strcmp(name, "vkGetMTLBufferMVK"))
8461 {
8462 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8463 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
8464 }
8465 if (!strcmp(name, "vkUseIOSurfaceMVK"))
8466 {
8467 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8468 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
8469 }
8470 if (!strcmp(name, "vkGetIOSurfaceMVK"))
8471 {
8472 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8473 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
8474 }
8475#endif
Lingfeng Yangded34672021-01-22 23:17:47 -08008476#ifdef VK_GOOGLE_queue_submit_with_commands
8477 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
8478 {
8479 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_queue_submit_with_commands");
8480 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
8481 }
8482#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008483 return nullptr;
8484}
8485void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8486 auto resources = ResourceTracker::get();
8487 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8488#ifdef VK_VERSION_1_0
8489 if (!strcmp(name, "vkCreateInstance"))
8490 {
8491 return (void*)entry_vkCreateInstance;
8492 }
8493 if (!strcmp(name, "vkDestroyInstance"))
8494 {
8495 return (void*)entry_vkDestroyInstance;
8496 }
8497 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8498 {
8499 return (void*)entry_vkEnumeratePhysicalDevices;
8500 }
8501 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8502 {
8503 return (void*)entry_vkGetPhysicalDeviceFeatures;
8504 }
8505 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8506 {
8507 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8508 }
8509 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8510 {
8511 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8512 }
8513 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8514 {
8515 return (void*)entry_vkGetPhysicalDeviceProperties;
8516 }
8517 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8518 {
8519 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8520 }
8521 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8522 {
8523 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8524 }
8525 if (!strcmp(name, "vkGetInstanceProcAddr"))
8526 {
8527 return (void*)entry_vkGetInstanceProcAddr;
8528 }
8529 if (!strcmp(name, "vkGetDeviceProcAddr"))
8530 {
8531 return (void*)entry_vkGetDeviceProcAddr;
8532 }
8533 if (!strcmp(name, "vkCreateDevice"))
8534 {
8535 return (void*)entry_vkCreateDevice;
8536 }
8537 if (!strcmp(name, "vkDestroyDevice"))
8538 {
8539 return (void*)entry_vkDestroyDevice;
8540 }
8541 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8542 {
8543 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8544 }
8545 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8546 {
8547 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8548 }
8549 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8550 {
8551 return (void*)entry_vkEnumerateInstanceLayerProperties;
8552 }
8553 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8554 {
8555 return (void*)entry_vkEnumerateDeviceLayerProperties;
8556 }
8557 if (!strcmp(name, "vkGetDeviceQueue"))
8558 {
8559 return (void*)entry_vkGetDeviceQueue;
8560 }
8561 if (!strcmp(name, "vkQueueSubmit"))
8562 {
8563 return (void*)entry_vkQueueSubmit;
8564 }
8565 if (!strcmp(name, "vkQueueWaitIdle"))
8566 {
8567 return (void*)entry_vkQueueWaitIdle;
8568 }
8569 if (!strcmp(name, "vkDeviceWaitIdle"))
8570 {
8571 return (void*)entry_vkDeviceWaitIdle;
8572 }
8573 if (!strcmp(name, "vkAllocateMemory"))
8574 {
8575 return (void*)entry_vkAllocateMemory;
8576 }
8577 if (!strcmp(name, "vkFreeMemory"))
8578 {
8579 return (void*)entry_vkFreeMemory;
8580 }
8581 if (!strcmp(name, "vkMapMemory"))
8582 {
8583 return (void*)entry_vkMapMemory;
8584 }
8585 if (!strcmp(name, "vkUnmapMemory"))
8586 {
8587 return (void*)entry_vkUnmapMemory;
8588 }
8589 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8590 {
8591 return (void*)entry_vkFlushMappedMemoryRanges;
8592 }
8593 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8594 {
8595 return (void*)entry_vkInvalidateMappedMemoryRanges;
8596 }
8597 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8598 {
8599 return (void*)entry_vkGetDeviceMemoryCommitment;
8600 }
8601 if (!strcmp(name, "vkBindBufferMemory"))
8602 {
8603 return (void*)entry_vkBindBufferMemory;
8604 }
8605 if (!strcmp(name, "vkBindImageMemory"))
8606 {
8607 return (void*)entry_vkBindImageMemory;
8608 }
8609 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8610 {
8611 return (void*)entry_vkGetBufferMemoryRequirements;
8612 }
8613 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8614 {
8615 return (void*)entry_vkGetImageMemoryRequirements;
8616 }
8617 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8618 {
8619 return (void*)entry_vkGetImageSparseMemoryRequirements;
8620 }
8621 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8622 {
8623 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8624 }
8625 if (!strcmp(name, "vkQueueBindSparse"))
8626 {
8627 return (void*)entry_vkQueueBindSparse;
8628 }
8629 if (!strcmp(name, "vkCreateFence"))
8630 {
8631 return (void*)entry_vkCreateFence;
8632 }
8633 if (!strcmp(name, "vkDestroyFence"))
8634 {
8635 return (void*)entry_vkDestroyFence;
8636 }
8637 if (!strcmp(name, "vkResetFences"))
8638 {
8639 return (void*)entry_vkResetFences;
8640 }
8641 if (!strcmp(name, "vkGetFenceStatus"))
8642 {
8643 return (void*)entry_vkGetFenceStatus;
8644 }
8645 if (!strcmp(name, "vkWaitForFences"))
8646 {
8647 return (void*)entry_vkWaitForFences;
8648 }
8649 if (!strcmp(name, "vkCreateSemaphore"))
8650 {
8651 return (void*)entry_vkCreateSemaphore;
8652 }
8653 if (!strcmp(name, "vkDestroySemaphore"))
8654 {
8655 return (void*)entry_vkDestroySemaphore;
8656 }
8657 if (!strcmp(name, "vkCreateEvent"))
8658 {
8659 return (void*)entry_vkCreateEvent;
8660 }
8661 if (!strcmp(name, "vkDestroyEvent"))
8662 {
8663 return (void*)entry_vkDestroyEvent;
8664 }
8665 if (!strcmp(name, "vkGetEventStatus"))
8666 {
8667 return (void*)entry_vkGetEventStatus;
8668 }
8669 if (!strcmp(name, "vkSetEvent"))
8670 {
8671 return (void*)entry_vkSetEvent;
8672 }
8673 if (!strcmp(name, "vkResetEvent"))
8674 {
8675 return (void*)entry_vkResetEvent;
8676 }
8677 if (!strcmp(name, "vkCreateQueryPool"))
8678 {
8679 return (void*)entry_vkCreateQueryPool;
8680 }
8681 if (!strcmp(name, "vkDestroyQueryPool"))
8682 {
8683 return (void*)entry_vkDestroyQueryPool;
8684 }
8685 if (!strcmp(name, "vkGetQueryPoolResults"))
8686 {
8687 return (void*)entry_vkGetQueryPoolResults;
8688 }
8689 if (!strcmp(name, "vkCreateBuffer"))
8690 {
8691 return (void*)entry_vkCreateBuffer;
8692 }
8693 if (!strcmp(name, "vkDestroyBuffer"))
8694 {
8695 return (void*)entry_vkDestroyBuffer;
8696 }
8697 if (!strcmp(name, "vkCreateBufferView"))
8698 {
8699 return (void*)entry_vkCreateBufferView;
8700 }
8701 if (!strcmp(name, "vkDestroyBufferView"))
8702 {
8703 return (void*)entry_vkDestroyBufferView;
8704 }
8705 if (!strcmp(name, "vkCreateImage"))
8706 {
8707 return (void*)entry_vkCreateImage;
8708 }
8709 if (!strcmp(name, "vkDestroyImage"))
8710 {
8711 return (void*)entry_vkDestroyImage;
8712 }
8713 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8714 {
8715 return (void*)entry_vkGetImageSubresourceLayout;
8716 }
8717 if (!strcmp(name, "vkCreateImageView"))
8718 {
8719 return (void*)entry_vkCreateImageView;
8720 }
8721 if (!strcmp(name, "vkDestroyImageView"))
8722 {
8723 return (void*)entry_vkDestroyImageView;
8724 }
8725 if (!strcmp(name, "vkCreateShaderModule"))
8726 {
8727 return (void*)entry_vkCreateShaderModule;
8728 }
8729 if (!strcmp(name, "vkDestroyShaderModule"))
8730 {
8731 return (void*)entry_vkDestroyShaderModule;
8732 }
8733 if (!strcmp(name, "vkCreatePipelineCache"))
8734 {
8735 return (void*)entry_vkCreatePipelineCache;
8736 }
8737 if (!strcmp(name, "vkDestroyPipelineCache"))
8738 {
8739 return (void*)entry_vkDestroyPipelineCache;
8740 }
8741 if (!strcmp(name, "vkGetPipelineCacheData"))
8742 {
8743 return (void*)entry_vkGetPipelineCacheData;
8744 }
8745 if (!strcmp(name, "vkMergePipelineCaches"))
8746 {
8747 return (void*)entry_vkMergePipelineCaches;
8748 }
8749 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8750 {
8751 return (void*)entry_vkCreateGraphicsPipelines;
8752 }
8753 if (!strcmp(name, "vkCreateComputePipelines"))
8754 {
8755 return (void*)entry_vkCreateComputePipelines;
8756 }
8757 if (!strcmp(name, "vkDestroyPipeline"))
8758 {
8759 return (void*)entry_vkDestroyPipeline;
8760 }
8761 if (!strcmp(name, "vkCreatePipelineLayout"))
8762 {
8763 return (void*)entry_vkCreatePipelineLayout;
8764 }
8765 if (!strcmp(name, "vkDestroyPipelineLayout"))
8766 {
8767 return (void*)entry_vkDestroyPipelineLayout;
8768 }
8769 if (!strcmp(name, "vkCreateSampler"))
8770 {
8771 return (void*)entry_vkCreateSampler;
8772 }
8773 if (!strcmp(name, "vkDestroySampler"))
8774 {
8775 return (void*)entry_vkDestroySampler;
8776 }
8777 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8778 {
8779 return (void*)entry_vkCreateDescriptorSetLayout;
8780 }
8781 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8782 {
8783 return (void*)entry_vkDestroyDescriptorSetLayout;
8784 }
8785 if (!strcmp(name, "vkCreateDescriptorPool"))
8786 {
8787 return (void*)entry_vkCreateDescriptorPool;
8788 }
8789 if (!strcmp(name, "vkDestroyDescriptorPool"))
8790 {
8791 return (void*)entry_vkDestroyDescriptorPool;
8792 }
8793 if (!strcmp(name, "vkResetDescriptorPool"))
8794 {
8795 return (void*)entry_vkResetDescriptorPool;
8796 }
8797 if (!strcmp(name, "vkAllocateDescriptorSets"))
8798 {
8799 return (void*)entry_vkAllocateDescriptorSets;
8800 }
8801 if (!strcmp(name, "vkFreeDescriptorSets"))
8802 {
8803 return (void*)entry_vkFreeDescriptorSets;
8804 }
8805 if (!strcmp(name, "vkUpdateDescriptorSets"))
8806 {
8807 return (void*)entry_vkUpdateDescriptorSets;
8808 }
8809 if (!strcmp(name, "vkCreateFramebuffer"))
8810 {
8811 return (void*)entry_vkCreateFramebuffer;
8812 }
8813 if (!strcmp(name, "vkDestroyFramebuffer"))
8814 {
8815 return (void*)entry_vkDestroyFramebuffer;
8816 }
8817 if (!strcmp(name, "vkCreateRenderPass"))
8818 {
8819 return (void*)entry_vkCreateRenderPass;
8820 }
8821 if (!strcmp(name, "vkDestroyRenderPass"))
8822 {
8823 return (void*)entry_vkDestroyRenderPass;
8824 }
8825 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8826 {
8827 return (void*)entry_vkGetRenderAreaGranularity;
8828 }
8829 if (!strcmp(name, "vkCreateCommandPool"))
8830 {
8831 return (void*)entry_vkCreateCommandPool;
8832 }
8833 if (!strcmp(name, "vkDestroyCommandPool"))
8834 {
8835 return (void*)entry_vkDestroyCommandPool;
8836 }
8837 if (!strcmp(name, "vkResetCommandPool"))
8838 {
8839 return (void*)entry_vkResetCommandPool;
8840 }
8841 if (!strcmp(name, "vkAllocateCommandBuffers"))
8842 {
8843 return (void*)entry_vkAllocateCommandBuffers;
8844 }
8845 if (!strcmp(name, "vkFreeCommandBuffers"))
8846 {
8847 return (void*)entry_vkFreeCommandBuffers;
8848 }
8849 if (!strcmp(name, "vkBeginCommandBuffer"))
8850 {
8851 return (void*)entry_vkBeginCommandBuffer;
8852 }
8853 if (!strcmp(name, "vkEndCommandBuffer"))
8854 {
8855 return (void*)entry_vkEndCommandBuffer;
8856 }
8857 if (!strcmp(name, "vkResetCommandBuffer"))
8858 {
8859 return (void*)entry_vkResetCommandBuffer;
8860 }
8861 if (!strcmp(name, "vkCmdBindPipeline"))
8862 {
8863 return (void*)entry_vkCmdBindPipeline;
8864 }
8865 if (!strcmp(name, "vkCmdSetViewport"))
8866 {
8867 return (void*)entry_vkCmdSetViewport;
8868 }
8869 if (!strcmp(name, "vkCmdSetScissor"))
8870 {
8871 return (void*)entry_vkCmdSetScissor;
8872 }
8873 if (!strcmp(name, "vkCmdSetLineWidth"))
8874 {
8875 return (void*)entry_vkCmdSetLineWidth;
8876 }
8877 if (!strcmp(name, "vkCmdSetDepthBias"))
8878 {
8879 return (void*)entry_vkCmdSetDepthBias;
8880 }
8881 if (!strcmp(name, "vkCmdSetBlendConstants"))
8882 {
8883 return (void*)entry_vkCmdSetBlendConstants;
8884 }
8885 if (!strcmp(name, "vkCmdSetDepthBounds"))
8886 {
8887 return (void*)entry_vkCmdSetDepthBounds;
8888 }
8889 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8890 {
8891 return (void*)entry_vkCmdSetStencilCompareMask;
8892 }
8893 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8894 {
8895 return (void*)entry_vkCmdSetStencilWriteMask;
8896 }
8897 if (!strcmp(name, "vkCmdSetStencilReference"))
8898 {
8899 return (void*)entry_vkCmdSetStencilReference;
8900 }
8901 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8902 {
8903 return (void*)entry_vkCmdBindDescriptorSets;
8904 }
8905 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8906 {
8907 return (void*)entry_vkCmdBindIndexBuffer;
8908 }
8909 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8910 {
8911 return (void*)entry_vkCmdBindVertexBuffers;
8912 }
8913 if (!strcmp(name, "vkCmdDraw"))
8914 {
8915 return (void*)entry_vkCmdDraw;
8916 }
8917 if (!strcmp(name, "vkCmdDrawIndexed"))
8918 {
8919 return (void*)entry_vkCmdDrawIndexed;
8920 }
8921 if (!strcmp(name, "vkCmdDrawIndirect"))
8922 {
8923 return (void*)entry_vkCmdDrawIndirect;
8924 }
8925 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8926 {
8927 return (void*)entry_vkCmdDrawIndexedIndirect;
8928 }
8929 if (!strcmp(name, "vkCmdDispatch"))
8930 {
8931 return (void*)entry_vkCmdDispatch;
8932 }
8933 if (!strcmp(name, "vkCmdDispatchIndirect"))
8934 {
8935 return (void*)entry_vkCmdDispatchIndirect;
8936 }
8937 if (!strcmp(name, "vkCmdCopyBuffer"))
8938 {
8939 return (void*)entry_vkCmdCopyBuffer;
8940 }
8941 if (!strcmp(name, "vkCmdCopyImage"))
8942 {
8943 return (void*)entry_vkCmdCopyImage;
8944 }
8945 if (!strcmp(name, "vkCmdBlitImage"))
8946 {
8947 return (void*)entry_vkCmdBlitImage;
8948 }
8949 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8950 {
8951 return (void*)entry_vkCmdCopyBufferToImage;
8952 }
8953 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8954 {
8955 return (void*)entry_vkCmdCopyImageToBuffer;
8956 }
8957 if (!strcmp(name, "vkCmdUpdateBuffer"))
8958 {
8959 return (void*)entry_vkCmdUpdateBuffer;
8960 }
8961 if (!strcmp(name, "vkCmdFillBuffer"))
8962 {
8963 return (void*)entry_vkCmdFillBuffer;
8964 }
8965 if (!strcmp(name, "vkCmdClearColorImage"))
8966 {
8967 return (void*)entry_vkCmdClearColorImage;
8968 }
8969 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8970 {
8971 return (void*)entry_vkCmdClearDepthStencilImage;
8972 }
8973 if (!strcmp(name, "vkCmdClearAttachments"))
8974 {
8975 return (void*)entry_vkCmdClearAttachments;
8976 }
8977 if (!strcmp(name, "vkCmdResolveImage"))
8978 {
8979 return (void*)entry_vkCmdResolveImage;
8980 }
8981 if (!strcmp(name, "vkCmdSetEvent"))
8982 {
8983 return (void*)entry_vkCmdSetEvent;
8984 }
8985 if (!strcmp(name, "vkCmdResetEvent"))
8986 {
8987 return (void*)entry_vkCmdResetEvent;
8988 }
8989 if (!strcmp(name, "vkCmdWaitEvents"))
8990 {
8991 return (void*)entry_vkCmdWaitEvents;
8992 }
8993 if (!strcmp(name, "vkCmdPipelineBarrier"))
8994 {
8995 return (void*)entry_vkCmdPipelineBarrier;
8996 }
8997 if (!strcmp(name, "vkCmdBeginQuery"))
8998 {
8999 return (void*)entry_vkCmdBeginQuery;
9000 }
9001 if (!strcmp(name, "vkCmdEndQuery"))
9002 {
9003 return (void*)entry_vkCmdEndQuery;
9004 }
9005 if (!strcmp(name, "vkCmdResetQueryPool"))
9006 {
9007 return (void*)entry_vkCmdResetQueryPool;
9008 }
9009 if (!strcmp(name, "vkCmdWriteTimestamp"))
9010 {
9011 return (void*)entry_vkCmdWriteTimestamp;
9012 }
9013 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
9014 {
9015 return (void*)entry_vkCmdCopyQueryPoolResults;
9016 }
9017 if (!strcmp(name, "vkCmdPushConstants"))
9018 {
9019 return (void*)entry_vkCmdPushConstants;
9020 }
9021 if (!strcmp(name, "vkCmdBeginRenderPass"))
9022 {
9023 return (void*)entry_vkCmdBeginRenderPass;
9024 }
9025 if (!strcmp(name, "vkCmdNextSubpass"))
9026 {
9027 return (void*)entry_vkCmdNextSubpass;
9028 }
9029 if (!strcmp(name, "vkCmdEndRenderPass"))
9030 {
9031 return (void*)entry_vkCmdEndRenderPass;
9032 }
9033 if (!strcmp(name, "vkCmdExecuteCommands"))
9034 {
9035 return (void*)entry_vkCmdExecuteCommands;
9036 }
9037#endif
9038#ifdef VK_VERSION_1_1
9039 if (!strcmp(name, "vkEnumerateInstanceVersion"))
9040 {
9041 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
9042 }
9043 if (!strcmp(name, "vkBindBufferMemory2"))
9044 {
9045 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
9046 }
9047 if (!strcmp(name, "vkBindImageMemory2"))
9048 {
9049 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
9050 }
9051 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
9052 {
9053 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
9054 }
9055 if (!strcmp(name, "vkCmdSetDeviceMask"))
9056 {
9057 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
9058 }
9059 if (!strcmp(name, "vkCmdDispatchBase"))
9060 {
9061 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
9062 }
9063 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
9064 {
9065 return nullptr;
9066 }
9067 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
9068 {
9069 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
9070 }
9071 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
9072 {
9073 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
9074 }
9075 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
9076 {
9077 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
9078 }
9079 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
9080 {
9081 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
9082 }
9083 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
9084 {
9085 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
9086 }
9087 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
9088 {
9089 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
9090 }
9091 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9092 {
9093 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
9094 }
9095 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9096 {
9097 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
9098 }
9099 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9100 {
9101 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
9102 }
9103 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9104 {
9105 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
9106 }
9107 if (!strcmp(name, "vkTrimCommandPool"))
9108 {
9109 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
9110 }
9111 if (!strcmp(name, "vkGetDeviceQueue2"))
9112 {
9113 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
9114 }
9115 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9116 {
9117 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
9118 }
9119 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9120 {
9121 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
9122 }
9123 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9124 {
9125 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
9126 }
9127 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9128 {
9129 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
9130 }
9131 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9132 {
9133 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
9134 }
9135 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9136 {
9137 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
9138 }
9139 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9140 {
9141 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
9142 }
9143 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9144 {
9145 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
9146 }
9147 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9148 {
9149 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
9150 }
9151#endif
9152#ifdef VK_KHR_surface
9153 if (!strcmp(name, "vkDestroySurfaceKHR"))
9154 {
9155 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9156 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
9157 }
9158 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9159 {
9160 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9161 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
9162 }
9163 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9164 {
9165 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9166 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
9167 }
9168 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9169 {
9170 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9171 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
9172 }
9173 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9174 {
9175 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9176 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
9177 }
9178#endif
9179#ifdef VK_KHR_swapchain
9180 if (!strcmp(name, "vkCreateSwapchainKHR"))
9181 {
9182 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9183 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9184 }
9185 if (!strcmp(name, "vkDestroySwapchainKHR"))
9186 {
9187 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9188 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9189 }
9190 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9191 {
9192 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9193 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9194 }
9195 if (!strcmp(name, "vkAcquireNextImageKHR"))
9196 {
9197 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9198 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9199 }
9200 if (!strcmp(name, "vkQueuePresentKHR"))
9201 {
9202 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9203 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9204 }
9205 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9206 {
9207 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9208 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9209 }
9210 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9211 {
9212 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9213 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9214 }
9215 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9216 {
9217 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9218 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9219 }
9220 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9221 {
9222 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9223 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9224 }
9225#endif
9226#ifdef VK_KHR_display
9227 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9228 {
9229 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9230 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9231 }
9232 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9233 {
9234 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9235 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9236 }
9237 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9238 {
9239 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9240 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9241 }
9242 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9243 {
9244 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9245 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9246 }
9247 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9248 {
9249 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9250 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9251 }
9252 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9253 {
9254 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9255 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9256 }
9257 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9258 {
9259 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9260 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9261 }
9262#endif
9263#ifdef VK_KHR_display_swapchain
9264 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9265 {
9266 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9267 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9268 }
9269#endif
9270#ifdef VK_KHR_xlib_surface
9271 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9272 {
9273 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9274 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9275 }
9276 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9277 {
9278 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9279 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9280 }
9281#endif
9282#ifdef VK_KHR_xcb_surface
9283 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9284 {
9285 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9286 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9287 }
9288 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9289 {
9290 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9291 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9292 }
9293#endif
9294#ifdef VK_KHR_wayland_surface
9295 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9296 {
9297 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9298 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9299 }
9300 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9301 {
9302 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9303 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9304 }
9305#endif
9306#ifdef VK_KHR_mir_surface
9307 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9308 {
9309 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9310 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9311 }
9312 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9313 {
9314 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9315 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9316 }
9317#endif
9318#ifdef VK_KHR_android_surface
9319 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9320 {
9321 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9322 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9323 }
9324#endif
9325#ifdef VK_KHR_win32_surface
9326 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9327 {
9328 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9329 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9330 }
9331 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9332 {
9333 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9334 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9335 }
9336#endif
9337#ifdef VK_KHR_get_physical_device_properties2
9338 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9339 {
9340 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9341 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9342 }
9343 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9344 {
9345 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9346 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9347 }
9348 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9349 {
9350 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9351 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9352 }
9353 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9354 {
9355 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9356 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9357 }
9358 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9359 {
9360 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9361 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9362 }
9363 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9364 {
9365 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9366 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9367 }
9368 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9369 {
9370 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9371 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9372 }
9373#endif
9374#ifdef VK_KHR_device_group
9375 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9376 {
9377 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9378 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9379 }
9380 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9381 {
9382 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9383 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9384 }
9385 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9386 {
9387 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9388 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9389 }
9390#endif
9391#ifdef VK_KHR_maintenance1
9392 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9393 {
9394 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9395 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9396 }
9397#endif
9398#ifdef VK_KHR_device_group_creation
9399 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9400 {
9401 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9402 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9403 }
9404#endif
9405#ifdef VK_KHR_external_memory_capabilities
9406 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9407 {
9408 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9409 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9410 }
9411#endif
9412#ifdef VK_KHR_external_memory_win32
9413 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9414 {
9415 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9416 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9417 }
9418 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9419 {
9420 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9421 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9422 }
9423#endif
9424#ifdef VK_KHR_external_memory_fd
9425 if (!strcmp(name, "vkGetMemoryFdKHR"))
9426 {
9427 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9428 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9429 }
9430 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9431 {
9432 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9433 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9434 }
9435#endif
9436#ifdef VK_KHR_external_semaphore_capabilities
9437 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9438 {
9439 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9440 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9441 }
9442#endif
9443#ifdef VK_KHR_external_semaphore_win32
9444 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9445 {
9446 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9447 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9448 }
9449 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9450 {
9451 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9452 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9453 }
9454#endif
9455#ifdef VK_KHR_external_semaphore_fd
9456 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9457 {
9458 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9459 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9460 }
9461 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9462 {
9463 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9464 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9465 }
9466#endif
9467#ifdef VK_KHR_push_descriptor
9468 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9469 {
9470 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9471 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9472 }
9473 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9474 {
9475 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9476 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9477 }
9478#endif
9479#ifdef VK_KHR_descriptor_update_template
9480 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9481 {
9482 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9483 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9484 }
9485 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9486 {
9487 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9488 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9489 }
9490 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9491 {
9492 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9493 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9494 }
9495#endif
9496#ifdef VK_KHR_create_renderpass2
9497 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9498 {
9499 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9500 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9501 }
9502 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9503 {
9504 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9505 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9506 }
9507 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9508 {
9509 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9510 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9511 }
9512 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9513 {
9514 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9515 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9516 }
9517#endif
9518#ifdef VK_KHR_shared_presentable_image
9519 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9520 {
9521 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9522 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9523 }
9524#endif
9525#ifdef VK_KHR_external_fence_capabilities
9526 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9527 {
9528 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9529 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9530 }
9531#endif
9532#ifdef VK_KHR_external_fence_win32
9533 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9534 {
9535 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9536 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9537 }
9538 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9539 {
9540 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9541 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9542 }
9543#endif
9544#ifdef VK_KHR_external_fence_fd
9545 if (!strcmp(name, "vkImportFenceFdKHR"))
9546 {
9547 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9548 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9549 }
9550 if (!strcmp(name, "vkGetFenceFdKHR"))
9551 {
9552 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9553 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9554 }
9555#endif
9556#ifdef VK_KHR_get_surface_capabilities2
9557 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9558 {
9559 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9560 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9561 }
9562 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9563 {
9564 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9565 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9566 }
9567#endif
9568#ifdef VK_KHR_get_display_properties2
9569 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9570 {
9571 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9572 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9573 }
9574 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9575 {
9576 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9577 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9578 }
9579 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9580 {
9581 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9582 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9583 }
9584 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9585 {
9586 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9587 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9588 }
9589#endif
9590#ifdef VK_KHR_get_memory_requirements2
9591 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9592 {
9593 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9594 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9595 }
9596 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9597 {
9598 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9599 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9600 }
9601 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9602 {
9603 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9604 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9605 }
9606#endif
9607#ifdef VK_KHR_sampler_ycbcr_conversion
9608 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9609 {
9610 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9611 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9612 }
9613 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9614 {
9615 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9616 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9617 }
9618#endif
9619#ifdef VK_KHR_bind_memory2
9620 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9621 {
9622 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9623 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9624 }
9625 if (!strcmp(name, "vkBindImageMemory2KHR"))
9626 {
9627 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9628 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9629 }
9630#endif
9631#ifdef VK_KHR_maintenance3
9632 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9633 {
9634 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9635 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9636 }
9637#endif
9638#ifdef VK_KHR_draw_indirect_count
9639 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9640 {
9641 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9642 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9643 }
9644 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9645 {
9646 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9647 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9648 }
9649#endif
9650#ifdef VK_ANDROID_native_buffer
9651 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9652 {
9653 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9654 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9655 }
9656 if (!strcmp(name, "vkAcquireImageANDROID"))
9657 {
9658 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9659 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9660 }
9661 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9662 {
9663 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9664 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9665 }
9666#endif
9667#ifdef VK_EXT_debug_report
9668 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9669 {
9670 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9671 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9672 }
9673 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9674 {
9675 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9676 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9677 }
9678 if (!strcmp(name, "vkDebugReportMessageEXT"))
9679 {
9680 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9681 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9682 }
9683#endif
9684#ifdef VK_EXT_debug_marker
9685 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9686 {
9687 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9688 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9689 }
9690 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9691 {
9692 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9693 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9694 }
9695 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9696 {
9697 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9698 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9699 }
9700 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9701 {
9702 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9703 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9704 }
9705 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9706 {
9707 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9708 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9709 }
9710#endif
9711#ifdef VK_AMD_draw_indirect_count
9712 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9713 {
9714 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9715 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9716 }
9717 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9718 {
9719 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9720 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9721 }
9722#endif
9723#ifdef VK_AMD_shader_info
9724 if (!strcmp(name, "vkGetShaderInfoAMD"))
9725 {
9726 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9727 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9728 }
9729#endif
9730#ifdef VK_NV_external_memory_capabilities
9731 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9732 {
9733 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9734 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9735 }
9736#endif
9737#ifdef VK_NV_external_memory_win32
9738 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9739 {
9740 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9741 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9742 }
9743#endif
9744#ifdef VK_NN_vi_surface
9745 if (!strcmp(name, "vkCreateViSurfaceNN"))
9746 {
9747 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9748 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9749 }
9750#endif
9751#ifdef VK_EXT_conditional_rendering
9752 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9753 {
9754 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9755 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9756 }
9757 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9758 {
9759 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9760 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9761 }
9762#endif
9763#ifdef VK_NVX_device_generated_commands
9764 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9765 {
9766 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9767 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9768 }
9769 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9770 {
9771 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9772 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9773 }
9774 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9775 {
9776 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9777 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9778 }
9779 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9780 {
9781 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9782 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9783 }
9784 if (!strcmp(name, "vkCreateObjectTableNVX"))
9785 {
9786 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9787 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9788 }
9789 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9790 {
9791 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9792 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9793 }
9794 if (!strcmp(name, "vkRegisterObjectsNVX"))
9795 {
9796 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9797 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9798 }
9799 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9800 {
9801 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9802 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9803 }
9804 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9805 {
9806 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9807 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9808 }
9809#endif
9810#ifdef VK_NV_clip_space_w_scaling
9811 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9812 {
9813 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9814 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9815 }
9816#endif
9817#ifdef VK_EXT_direct_mode_display
9818 if (!strcmp(name, "vkReleaseDisplayEXT"))
9819 {
9820 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9821 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9822 }
9823#endif
9824#ifdef VK_EXT_acquire_xlib_display
9825 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9826 {
9827 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9828 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9829 }
9830 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9831 {
9832 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9833 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9834 }
9835#endif
9836#ifdef VK_EXT_display_surface_counter
9837 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9838 {
9839 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9840 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9841 }
9842#endif
9843#ifdef VK_EXT_display_control
9844 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9845 {
9846 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9847 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9848 }
9849 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9850 {
9851 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9852 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9853 }
9854 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9855 {
9856 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9857 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9858 }
9859 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9860 {
9861 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9862 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9863 }
9864#endif
9865#ifdef VK_GOOGLE_display_timing
9866 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9867 {
9868 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9869 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9870 }
9871 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9872 {
9873 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9874 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9875 }
9876#endif
9877#ifdef VK_EXT_discard_rectangles
9878 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9879 {
9880 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9881 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9882 }
9883#endif
9884#ifdef VK_EXT_hdr_metadata
9885 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9886 {
9887 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9888 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9889 }
9890#endif
9891#ifdef VK_MVK_ios_surface
9892 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9893 {
9894 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9895 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9896 }
9897#endif
9898#ifdef VK_MVK_macos_surface
9899 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9900 {
9901 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9902 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9903 }
9904#endif
9905#ifdef VK_EXT_debug_utils
9906 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9907 {
9908 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9909 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9910 }
9911 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9912 {
9913 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9914 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9915 }
9916 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9917 {
9918 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9919 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9920 }
9921 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9922 {
9923 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9924 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9925 }
9926 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9927 {
9928 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9929 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9930 }
9931 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9932 {
9933 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9934 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9935 }
9936 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9937 {
9938 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9939 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9940 }
9941 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9942 {
9943 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9944 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9945 }
9946 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9947 {
9948 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9949 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9950 }
9951 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9952 {
9953 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9954 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9955 }
9956 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9957 {
9958 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9959 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9960 }
9961#endif
9962#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9963 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9964 {
9965 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9966 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9967 }
9968 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9969 {
9970 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9971 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9972 }
9973#endif
9974#ifdef VK_EXT_sample_locations
9975 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9976 {
9977 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9978 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9979 }
9980 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9981 {
9982 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9983 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9984 }
9985#endif
9986#ifdef VK_EXT_validation_cache
9987 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9988 {
9989 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9990 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9991 }
9992 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9993 {
9994 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9995 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9996 }
9997 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9998 {
9999 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
10000 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
10001 }
10002 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
10003 {
10004 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
10005 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
10006 }
10007#endif
10008#ifdef VK_EXT_external_memory_host
10009 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
10010 {
10011 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
10012 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
10013 }
10014#endif
10015#ifdef VK_AMD_buffer_marker
10016 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
10017 {
10018 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
10019 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
10020 }
10021#endif
10022#ifdef VK_NV_device_diagnostic_checkpoints
10023 if (!strcmp(name, "vkCmdSetCheckpointNV"))
10024 {
10025 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
10026 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
10027 }
10028 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
10029 {
10030 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
10031 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
10032 }
10033#endif
10034#ifdef VK_GOOGLE_address_space
10035 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
10036 {
10037 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
10038 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080010039 }
10040#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080010041#ifdef VK_GOOGLE_color_buffer
10042 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
10043 {
10044 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
10045 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
10046 }
10047 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
10048 {
10049 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
10050 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
10051 }
10052#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070010053#ifdef VK_GOOGLE_sized_descriptor_update_template
10054 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
10055 {
10056 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
10057 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
10058 }
10059#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010060#ifdef VK_GOOGLE_async_command_buffers
10061 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
10062 {
10063 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10064 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
10065 }
10066 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
10067 {
10068 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10069 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
10070 }
10071 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
10072 {
10073 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10074 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
10075 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070010076 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
10077 {
10078 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10079 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
10080 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010081#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +000010082#ifdef VK_GOOGLE_create_resources_with_requirements
10083 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
10084 {
10085 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10086 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
10087 }
10088 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
10089 {
10090 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10091 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
10092 }
10093#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080010094#ifdef VK_GOOGLE_address_space_info
10095 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
10096 {
10097 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
10098 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
10099 }
10100#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070010101#ifdef VK_GOOGLE_free_memory_sync
10102 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
10103 {
10104 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
10105 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
10106 }
10107#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010108#ifdef VK_GOOGLE_async_queue_submit
10109 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
10110 {
10111 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10112 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
10113 }
10114 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
10115 {
10116 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10117 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
10118 }
10119 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
10120 {
10121 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10122 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
10123 }
10124 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
10125 {
10126 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10127 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
10128 }
10129#endif
Yilong Lia48b0102020-09-15 15:08:28 -070010130#ifdef VK_GOOGLE_linear_image_layout
10131 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
10132 {
10133 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout");
10134 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
10135 }
10136#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -080010137#ifdef VK_MVK_moltenvk
10138 if (!strcmp(name, "vkGetMTLDeviceMVK"))
10139 {
10140 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10141 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
10142 }
10143 if (!strcmp(name, "vkSetMTLTextureMVK"))
10144 {
10145 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10146 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
10147 }
10148 if (!strcmp(name, "vkGetMTLTextureMVK"))
10149 {
10150 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10151 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
10152 }
10153 if (!strcmp(name, "vkGetMTLBufferMVK"))
10154 {
10155 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10156 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
10157 }
10158 if (!strcmp(name, "vkUseIOSurfaceMVK"))
10159 {
10160 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10161 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
10162 }
10163 if (!strcmp(name, "vkGetIOSurfaceMVK"))
10164 {
10165 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10166 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
10167 }
10168#endif
Lingfeng Yangded34672021-01-22 23:17:47 -080010169#ifdef VK_GOOGLE_queue_submit_with_commands
10170 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
10171 {
10172 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_queue_submit_with_commands");
10173 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
10174 }
10175#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010176 return nullptr;
10177}
10178
10179} // namespace goldfish_vk