blob: d40fdd92cb22deadc691911442291d17cf69094f [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 Yang0b81df22018-11-05 21:40:30 -08005337void* goldfish_vulkan_get_proc_address(const char* name){
5338#ifdef VK_VERSION_1_0
5339 if (!strcmp(name, "vkCreateInstance"))
5340 {
5341 return (void*)entry_vkCreateInstance;
5342 }
5343 if (!strcmp(name, "vkDestroyInstance"))
5344 {
5345 return (void*)entry_vkDestroyInstance;
5346 }
5347 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5348 {
5349 return (void*)entry_vkEnumeratePhysicalDevices;
5350 }
5351 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5352 {
5353 return (void*)entry_vkGetPhysicalDeviceFeatures;
5354 }
5355 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5356 {
5357 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5358 }
5359 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5360 {
5361 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5362 }
5363 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5364 {
5365 return (void*)entry_vkGetPhysicalDeviceProperties;
5366 }
5367 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5368 {
5369 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5370 }
5371 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5372 {
5373 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5374 }
5375 if (!strcmp(name, "vkGetInstanceProcAddr"))
5376 {
5377 return (void*)entry_vkGetInstanceProcAddr;
5378 }
5379 if (!strcmp(name, "vkGetDeviceProcAddr"))
5380 {
5381 return (void*)entry_vkGetDeviceProcAddr;
5382 }
5383 if (!strcmp(name, "vkCreateDevice"))
5384 {
5385 return (void*)entry_vkCreateDevice;
5386 }
5387 if (!strcmp(name, "vkDestroyDevice"))
5388 {
5389 return (void*)entry_vkDestroyDevice;
5390 }
5391 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5392 {
5393 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5394 }
5395 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5396 {
5397 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5398 }
5399 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5400 {
5401 return (void*)entry_vkEnumerateInstanceLayerProperties;
5402 }
5403 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5404 {
5405 return (void*)entry_vkEnumerateDeviceLayerProperties;
5406 }
5407 if (!strcmp(name, "vkGetDeviceQueue"))
5408 {
5409 return (void*)entry_vkGetDeviceQueue;
5410 }
5411 if (!strcmp(name, "vkQueueSubmit"))
5412 {
5413 return (void*)entry_vkQueueSubmit;
5414 }
5415 if (!strcmp(name, "vkQueueWaitIdle"))
5416 {
5417 return (void*)entry_vkQueueWaitIdle;
5418 }
5419 if (!strcmp(name, "vkDeviceWaitIdle"))
5420 {
5421 return (void*)entry_vkDeviceWaitIdle;
5422 }
5423 if (!strcmp(name, "vkAllocateMemory"))
5424 {
5425 return (void*)entry_vkAllocateMemory;
5426 }
5427 if (!strcmp(name, "vkFreeMemory"))
5428 {
5429 return (void*)entry_vkFreeMemory;
5430 }
5431 if (!strcmp(name, "vkMapMemory"))
5432 {
5433 return (void*)entry_vkMapMemory;
5434 }
5435 if (!strcmp(name, "vkUnmapMemory"))
5436 {
5437 return (void*)entry_vkUnmapMemory;
5438 }
5439 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5440 {
5441 return (void*)entry_vkFlushMappedMemoryRanges;
5442 }
5443 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5444 {
5445 return (void*)entry_vkInvalidateMappedMemoryRanges;
5446 }
5447 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5448 {
5449 return (void*)entry_vkGetDeviceMemoryCommitment;
5450 }
5451 if (!strcmp(name, "vkBindBufferMemory"))
5452 {
5453 return (void*)entry_vkBindBufferMemory;
5454 }
5455 if (!strcmp(name, "vkBindImageMemory"))
5456 {
5457 return (void*)entry_vkBindImageMemory;
5458 }
5459 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5460 {
5461 return (void*)entry_vkGetBufferMemoryRequirements;
5462 }
5463 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5464 {
5465 return (void*)entry_vkGetImageMemoryRequirements;
5466 }
5467 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5468 {
5469 return (void*)entry_vkGetImageSparseMemoryRequirements;
5470 }
5471 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5472 {
5473 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5474 }
5475 if (!strcmp(name, "vkQueueBindSparse"))
5476 {
5477 return (void*)entry_vkQueueBindSparse;
5478 }
5479 if (!strcmp(name, "vkCreateFence"))
5480 {
5481 return (void*)entry_vkCreateFence;
5482 }
5483 if (!strcmp(name, "vkDestroyFence"))
5484 {
5485 return (void*)entry_vkDestroyFence;
5486 }
5487 if (!strcmp(name, "vkResetFences"))
5488 {
5489 return (void*)entry_vkResetFences;
5490 }
5491 if (!strcmp(name, "vkGetFenceStatus"))
5492 {
5493 return (void*)entry_vkGetFenceStatus;
5494 }
5495 if (!strcmp(name, "vkWaitForFences"))
5496 {
5497 return (void*)entry_vkWaitForFences;
5498 }
5499 if (!strcmp(name, "vkCreateSemaphore"))
5500 {
5501 return (void*)entry_vkCreateSemaphore;
5502 }
5503 if (!strcmp(name, "vkDestroySemaphore"))
5504 {
5505 return (void*)entry_vkDestroySemaphore;
5506 }
5507 if (!strcmp(name, "vkCreateEvent"))
5508 {
5509 return (void*)entry_vkCreateEvent;
5510 }
5511 if (!strcmp(name, "vkDestroyEvent"))
5512 {
5513 return (void*)entry_vkDestroyEvent;
5514 }
5515 if (!strcmp(name, "vkGetEventStatus"))
5516 {
5517 return (void*)entry_vkGetEventStatus;
5518 }
5519 if (!strcmp(name, "vkSetEvent"))
5520 {
5521 return (void*)entry_vkSetEvent;
5522 }
5523 if (!strcmp(name, "vkResetEvent"))
5524 {
5525 return (void*)entry_vkResetEvent;
5526 }
5527 if (!strcmp(name, "vkCreateQueryPool"))
5528 {
5529 return (void*)entry_vkCreateQueryPool;
5530 }
5531 if (!strcmp(name, "vkDestroyQueryPool"))
5532 {
5533 return (void*)entry_vkDestroyQueryPool;
5534 }
5535 if (!strcmp(name, "vkGetQueryPoolResults"))
5536 {
5537 return (void*)entry_vkGetQueryPoolResults;
5538 }
5539 if (!strcmp(name, "vkCreateBuffer"))
5540 {
5541 return (void*)entry_vkCreateBuffer;
5542 }
5543 if (!strcmp(name, "vkDestroyBuffer"))
5544 {
5545 return (void*)entry_vkDestroyBuffer;
5546 }
5547 if (!strcmp(name, "vkCreateBufferView"))
5548 {
5549 return (void*)entry_vkCreateBufferView;
5550 }
5551 if (!strcmp(name, "vkDestroyBufferView"))
5552 {
5553 return (void*)entry_vkDestroyBufferView;
5554 }
5555 if (!strcmp(name, "vkCreateImage"))
5556 {
5557 return (void*)entry_vkCreateImage;
5558 }
5559 if (!strcmp(name, "vkDestroyImage"))
5560 {
5561 return (void*)entry_vkDestroyImage;
5562 }
5563 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5564 {
5565 return (void*)entry_vkGetImageSubresourceLayout;
5566 }
5567 if (!strcmp(name, "vkCreateImageView"))
5568 {
5569 return (void*)entry_vkCreateImageView;
5570 }
5571 if (!strcmp(name, "vkDestroyImageView"))
5572 {
5573 return (void*)entry_vkDestroyImageView;
5574 }
5575 if (!strcmp(name, "vkCreateShaderModule"))
5576 {
5577 return (void*)entry_vkCreateShaderModule;
5578 }
5579 if (!strcmp(name, "vkDestroyShaderModule"))
5580 {
5581 return (void*)entry_vkDestroyShaderModule;
5582 }
5583 if (!strcmp(name, "vkCreatePipelineCache"))
5584 {
5585 return (void*)entry_vkCreatePipelineCache;
5586 }
5587 if (!strcmp(name, "vkDestroyPipelineCache"))
5588 {
5589 return (void*)entry_vkDestroyPipelineCache;
5590 }
5591 if (!strcmp(name, "vkGetPipelineCacheData"))
5592 {
5593 return (void*)entry_vkGetPipelineCacheData;
5594 }
5595 if (!strcmp(name, "vkMergePipelineCaches"))
5596 {
5597 return (void*)entry_vkMergePipelineCaches;
5598 }
5599 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5600 {
5601 return (void*)entry_vkCreateGraphicsPipelines;
5602 }
5603 if (!strcmp(name, "vkCreateComputePipelines"))
5604 {
5605 return (void*)entry_vkCreateComputePipelines;
5606 }
5607 if (!strcmp(name, "vkDestroyPipeline"))
5608 {
5609 return (void*)entry_vkDestroyPipeline;
5610 }
5611 if (!strcmp(name, "vkCreatePipelineLayout"))
5612 {
5613 return (void*)entry_vkCreatePipelineLayout;
5614 }
5615 if (!strcmp(name, "vkDestroyPipelineLayout"))
5616 {
5617 return (void*)entry_vkDestroyPipelineLayout;
5618 }
5619 if (!strcmp(name, "vkCreateSampler"))
5620 {
5621 return (void*)entry_vkCreateSampler;
5622 }
5623 if (!strcmp(name, "vkDestroySampler"))
5624 {
5625 return (void*)entry_vkDestroySampler;
5626 }
5627 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5628 {
5629 return (void*)entry_vkCreateDescriptorSetLayout;
5630 }
5631 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5632 {
5633 return (void*)entry_vkDestroyDescriptorSetLayout;
5634 }
5635 if (!strcmp(name, "vkCreateDescriptorPool"))
5636 {
5637 return (void*)entry_vkCreateDescriptorPool;
5638 }
5639 if (!strcmp(name, "vkDestroyDescriptorPool"))
5640 {
5641 return (void*)entry_vkDestroyDescriptorPool;
5642 }
5643 if (!strcmp(name, "vkResetDescriptorPool"))
5644 {
5645 return (void*)entry_vkResetDescriptorPool;
5646 }
5647 if (!strcmp(name, "vkAllocateDescriptorSets"))
5648 {
5649 return (void*)entry_vkAllocateDescriptorSets;
5650 }
5651 if (!strcmp(name, "vkFreeDescriptorSets"))
5652 {
5653 return (void*)entry_vkFreeDescriptorSets;
5654 }
5655 if (!strcmp(name, "vkUpdateDescriptorSets"))
5656 {
5657 return (void*)entry_vkUpdateDescriptorSets;
5658 }
5659 if (!strcmp(name, "vkCreateFramebuffer"))
5660 {
5661 return (void*)entry_vkCreateFramebuffer;
5662 }
5663 if (!strcmp(name, "vkDestroyFramebuffer"))
5664 {
5665 return (void*)entry_vkDestroyFramebuffer;
5666 }
5667 if (!strcmp(name, "vkCreateRenderPass"))
5668 {
5669 return (void*)entry_vkCreateRenderPass;
5670 }
5671 if (!strcmp(name, "vkDestroyRenderPass"))
5672 {
5673 return (void*)entry_vkDestroyRenderPass;
5674 }
5675 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5676 {
5677 return (void*)entry_vkGetRenderAreaGranularity;
5678 }
5679 if (!strcmp(name, "vkCreateCommandPool"))
5680 {
5681 return (void*)entry_vkCreateCommandPool;
5682 }
5683 if (!strcmp(name, "vkDestroyCommandPool"))
5684 {
5685 return (void*)entry_vkDestroyCommandPool;
5686 }
5687 if (!strcmp(name, "vkResetCommandPool"))
5688 {
5689 return (void*)entry_vkResetCommandPool;
5690 }
5691 if (!strcmp(name, "vkAllocateCommandBuffers"))
5692 {
5693 return (void*)entry_vkAllocateCommandBuffers;
5694 }
5695 if (!strcmp(name, "vkFreeCommandBuffers"))
5696 {
5697 return (void*)entry_vkFreeCommandBuffers;
5698 }
5699 if (!strcmp(name, "vkBeginCommandBuffer"))
5700 {
5701 return (void*)entry_vkBeginCommandBuffer;
5702 }
5703 if (!strcmp(name, "vkEndCommandBuffer"))
5704 {
5705 return (void*)entry_vkEndCommandBuffer;
5706 }
5707 if (!strcmp(name, "vkResetCommandBuffer"))
5708 {
5709 return (void*)entry_vkResetCommandBuffer;
5710 }
5711 if (!strcmp(name, "vkCmdBindPipeline"))
5712 {
5713 return (void*)entry_vkCmdBindPipeline;
5714 }
5715 if (!strcmp(name, "vkCmdSetViewport"))
5716 {
5717 return (void*)entry_vkCmdSetViewport;
5718 }
5719 if (!strcmp(name, "vkCmdSetScissor"))
5720 {
5721 return (void*)entry_vkCmdSetScissor;
5722 }
5723 if (!strcmp(name, "vkCmdSetLineWidth"))
5724 {
5725 return (void*)entry_vkCmdSetLineWidth;
5726 }
5727 if (!strcmp(name, "vkCmdSetDepthBias"))
5728 {
5729 return (void*)entry_vkCmdSetDepthBias;
5730 }
5731 if (!strcmp(name, "vkCmdSetBlendConstants"))
5732 {
5733 return (void*)entry_vkCmdSetBlendConstants;
5734 }
5735 if (!strcmp(name, "vkCmdSetDepthBounds"))
5736 {
5737 return (void*)entry_vkCmdSetDepthBounds;
5738 }
5739 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5740 {
5741 return (void*)entry_vkCmdSetStencilCompareMask;
5742 }
5743 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5744 {
5745 return (void*)entry_vkCmdSetStencilWriteMask;
5746 }
5747 if (!strcmp(name, "vkCmdSetStencilReference"))
5748 {
5749 return (void*)entry_vkCmdSetStencilReference;
5750 }
5751 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5752 {
5753 return (void*)entry_vkCmdBindDescriptorSets;
5754 }
5755 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5756 {
5757 return (void*)entry_vkCmdBindIndexBuffer;
5758 }
5759 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5760 {
5761 return (void*)entry_vkCmdBindVertexBuffers;
5762 }
5763 if (!strcmp(name, "vkCmdDraw"))
5764 {
5765 return (void*)entry_vkCmdDraw;
5766 }
5767 if (!strcmp(name, "vkCmdDrawIndexed"))
5768 {
5769 return (void*)entry_vkCmdDrawIndexed;
5770 }
5771 if (!strcmp(name, "vkCmdDrawIndirect"))
5772 {
5773 return (void*)entry_vkCmdDrawIndirect;
5774 }
5775 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5776 {
5777 return (void*)entry_vkCmdDrawIndexedIndirect;
5778 }
5779 if (!strcmp(name, "vkCmdDispatch"))
5780 {
5781 return (void*)entry_vkCmdDispatch;
5782 }
5783 if (!strcmp(name, "vkCmdDispatchIndirect"))
5784 {
5785 return (void*)entry_vkCmdDispatchIndirect;
5786 }
5787 if (!strcmp(name, "vkCmdCopyBuffer"))
5788 {
5789 return (void*)entry_vkCmdCopyBuffer;
5790 }
5791 if (!strcmp(name, "vkCmdCopyImage"))
5792 {
5793 return (void*)entry_vkCmdCopyImage;
5794 }
5795 if (!strcmp(name, "vkCmdBlitImage"))
5796 {
5797 return (void*)entry_vkCmdBlitImage;
5798 }
5799 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5800 {
5801 return (void*)entry_vkCmdCopyBufferToImage;
5802 }
5803 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5804 {
5805 return (void*)entry_vkCmdCopyImageToBuffer;
5806 }
5807 if (!strcmp(name, "vkCmdUpdateBuffer"))
5808 {
5809 return (void*)entry_vkCmdUpdateBuffer;
5810 }
5811 if (!strcmp(name, "vkCmdFillBuffer"))
5812 {
5813 return (void*)entry_vkCmdFillBuffer;
5814 }
5815 if (!strcmp(name, "vkCmdClearColorImage"))
5816 {
5817 return (void*)entry_vkCmdClearColorImage;
5818 }
5819 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5820 {
5821 return (void*)entry_vkCmdClearDepthStencilImage;
5822 }
5823 if (!strcmp(name, "vkCmdClearAttachments"))
5824 {
5825 return (void*)entry_vkCmdClearAttachments;
5826 }
5827 if (!strcmp(name, "vkCmdResolveImage"))
5828 {
5829 return (void*)entry_vkCmdResolveImage;
5830 }
5831 if (!strcmp(name, "vkCmdSetEvent"))
5832 {
5833 return (void*)entry_vkCmdSetEvent;
5834 }
5835 if (!strcmp(name, "vkCmdResetEvent"))
5836 {
5837 return (void*)entry_vkCmdResetEvent;
5838 }
5839 if (!strcmp(name, "vkCmdWaitEvents"))
5840 {
5841 return (void*)entry_vkCmdWaitEvents;
5842 }
5843 if (!strcmp(name, "vkCmdPipelineBarrier"))
5844 {
5845 return (void*)entry_vkCmdPipelineBarrier;
5846 }
5847 if (!strcmp(name, "vkCmdBeginQuery"))
5848 {
5849 return (void*)entry_vkCmdBeginQuery;
5850 }
5851 if (!strcmp(name, "vkCmdEndQuery"))
5852 {
5853 return (void*)entry_vkCmdEndQuery;
5854 }
5855 if (!strcmp(name, "vkCmdResetQueryPool"))
5856 {
5857 return (void*)entry_vkCmdResetQueryPool;
5858 }
5859 if (!strcmp(name, "vkCmdWriteTimestamp"))
5860 {
5861 return (void*)entry_vkCmdWriteTimestamp;
5862 }
5863 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5864 {
5865 return (void*)entry_vkCmdCopyQueryPoolResults;
5866 }
5867 if (!strcmp(name, "vkCmdPushConstants"))
5868 {
5869 return (void*)entry_vkCmdPushConstants;
5870 }
5871 if (!strcmp(name, "vkCmdBeginRenderPass"))
5872 {
5873 return (void*)entry_vkCmdBeginRenderPass;
5874 }
5875 if (!strcmp(name, "vkCmdNextSubpass"))
5876 {
5877 return (void*)entry_vkCmdNextSubpass;
5878 }
5879 if (!strcmp(name, "vkCmdEndRenderPass"))
5880 {
5881 return (void*)entry_vkCmdEndRenderPass;
5882 }
5883 if (!strcmp(name, "vkCmdExecuteCommands"))
5884 {
5885 return (void*)entry_vkCmdExecuteCommands;
5886 }
5887#endif
5888#ifdef VK_VERSION_1_1
5889 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5890 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005891 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005892 }
5893 if (!strcmp(name, "vkBindBufferMemory2"))
5894 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005895 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005896 }
5897 if (!strcmp(name, "vkBindImageMemory2"))
5898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005900 }
5901 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005904 }
5905 if (!strcmp(name, "vkCmdSetDeviceMask"))
5906 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005907 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005908 }
5909 if (!strcmp(name, "vkCmdDispatchBase"))
5910 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005911 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005912 }
5913 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5914 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005915 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005916 }
5917 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5918 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005920 }
5921 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5922 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005923 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005924 }
5925 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5926 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005927 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005928 }
5929 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5930 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005931 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005932 }
5933 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5934 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005935 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005936 }
5937 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5938 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005939 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005940 }
5941 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5942 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005943 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005944 }
5945 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5946 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005947 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005948 }
5949 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5950 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005951 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005952 }
5953 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005956 }
5957 if (!strcmp(name, "vkTrimCommandPool"))
5958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005959 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005960 }
5961 if (!strcmp(name, "vkGetDeviceQueue2"))
5962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005963 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005964 }
5965 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005968 }
5969 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5970 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005971 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005972 }
5973 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5974 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005975 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005976 }
5977 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5978 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005979 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005980 }
5981 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5982 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005983 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005984 }
5985 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5986 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005987 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005988 }
5989 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5990 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005991 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005992 }
5993 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5994 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005995 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005996 }
5997 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5998 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005999 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006000 }
6001#endif
6002#ifdef VK_KHR_surface
6003 if (!strcmp(name, "vkDestroySurfaceKHR"))
6004 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006005 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006006 }
6007 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
6008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006010 }
6011 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6012 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006013 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006014 }
6015 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6016 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006017 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006018 }
6019 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006022 }
6023#endif
6024#ifdef VK_KHR_swapchain
6025 if (!strcmp(name, "vkCreateSwapchainKHR"))
6026 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006027 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006028 }
6029 if (!strcmp(name, "vkDestroySwapchainKHR"))
6030 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006031 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006032 }
6033 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6034 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006035 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006036 }
6037 if (!strcmp(name, "vkAcquireNextImageKHR"))
6038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006040 }
6041 if (!strcmp(name, "vkQueuePresentKHR"))
6042 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006043 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006044 }
6045 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6046 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006047 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006048 }
6049 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006052 }
6053 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6054 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006055 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006056 }
6057 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6058 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006059 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006060 }
6061#endif
6062#ifdef VK_KHR_display
6063 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6064 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006065 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006066 }
6067 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6068 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006069 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006070 }
6071 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6072 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006073 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006074 }
6075 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006078 }
6079 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6080 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006081 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006082 }
6083 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6084 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006085 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006086 }
6087 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6088 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006089 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006090 }
6091#endif
6092#ifdef VK_KHR_display_swapchain
6093 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6094 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006095 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006096 }
6097#endif
6098#ifdef VK_KHR_xlib_surface
6099 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6100 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006101 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006102 }
6103 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6104 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006105 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006106 }
6107#endif
6108#ifdef VK_KHR_xcb_surface
6109 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6110 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006111 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006112 }
6113 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6114 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006115 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006116 }
6117#endif
6118#ifdef VK_KHR_wayland_surface
6119 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6120 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006121 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006122 }
6123 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6124 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006125 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006126 }
6127#endif
6128#ifdef VK_KHR_mir_surface
6129 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6130 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006131 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006132 }
6133 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6134 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006135 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006136 }
6137#endif
6138#ifdef VK_KHR_android_surface
6139 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6140 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006141 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006142 }
6143#endif
6144#ifdef VK_KHR_win32_surface
6145 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6146 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006147 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006148 }
6149 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6150 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006151 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006152 }
6153#endif
6154#ifdef VK_KHR_get_physical_device_properties2
6155 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6156 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006157 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006158 }
6159 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6160 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006161 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006162 }
6163 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6164 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006165 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006166 }
6167 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6168 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006169 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006170 }
6171 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6172 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006173 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006174 }
6175 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6176 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006177 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006178 }
6179 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6180 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006181 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006182 }
6183#endif
6184#ifdef VK_KHR_device_group
6185 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6186 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006187 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006188 }
6189 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6190 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006191 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006192 }
6193 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6194 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006195 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006196 }
6197#endif
6198#ifdef VK_KHR_maintenance1
6199 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6200 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006201 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006202 }
6203#endif
6204#ifdef VK_KHR_device_group_creation
6205 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
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_external_memory_capabilities
6211 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
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_external_memory_win32
6217 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6218 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006219 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006220 }
6221 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6222 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006223 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006224 }
6225#endif
6226#ifdef VK_KHR_external_memory_fd
6227 if (!strcmp(name, "vkGetMemoryFdKHR"))
6228 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006229 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006230 }
6231 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6232 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006233 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006234 }
6235#endif
6236#ifdef VK_KHR_external_semaphore_capabilities
6237 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6238 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006239 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006240 }
6241#endif
6242#ifdef VK_KHR_external_semaphore_win32
6243 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6244 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006245 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006246 }
6247 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6248 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006249 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006250 }
6251#endif
6252#ifdef VK_KHR_external_semaphore_fd
6253 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6254 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006255 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006256 }
6257 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6258 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006259 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006260 }
6261#endif
6262#ifdef VK_KHR_push_descriptor
6263 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6264 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006265 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006266 }
6267 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6268 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006269 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006270 }
6271#endif
6272#ifdef VK_KHR_descriptor_update_template
6273 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6274 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006275 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006276 }
6277 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6278 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006279 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006280 }
6281 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6282 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006283 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006284 }
6285#endif
6286#ifdef VK_KHR_create_renderpass2
6287 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6288 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006289 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006290 }
6291 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6292 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006293 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006294 }
6295 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6296 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006297 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006298 }
6299 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6300 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006301 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006302 }
6303#endif
6304#ifdef VK_KHR_shared_presentable_image
6305 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6306 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006307 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006308 }
6309#endif
6310#ifdef VK_KHR_external_fence_capabilities
6311 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
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_external_fence_win32
6317 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6318 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006319 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006320 }
6321 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6322 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006323 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006324 }
6325#endif
6326#ifdef VK_KHR_external_fence_fd
6327 if (!strcmp(name, "vkImportFenceFdKHR"))
6328 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006329 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006330 }
6331 if (!strcmp(name, "vkGetFenceFdKHR"))
6332 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006333 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006334 }
6335#endif
6336#ifdef VK_KHR_get_surface_capabilities2
6337 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6338 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006339 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006340 }
6341 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6342 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006343 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006344 }
6345#endif
6346#ifdef VK_KHR_get_display_properties2
6347 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6348 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006349 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006350 }
6351 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6352 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006353 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006354 }
6355 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6356 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006357 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006358 }
6359 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6360 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006361 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006362 }
6363#endif
6364#ifdef VK_KHR_get_memory_requirements2
6365 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6366 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006367 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006368 }
6369 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6370 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006371 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006372 }
6373 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6374 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006375 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006376 }
6377#endif
6378#ifdef VK_KHR_sampler_ycbcr_conversion
6379 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6380 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006381 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006382 }
6383 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6384 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006385 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006386 }
6387#endif
6388#ifdef VK_KHR_bind_memory2
6389 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6390 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006391 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006392 }
6393 if (!strcmp(name, "vkBindImageMemory2KHR"))
6394 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006395 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006396 }
6397#endif
6398#ifdef VK_KHR_maintenance3
6399 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6400 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006401 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006402 }
6403#endif
6404#ifdef VK_KHR_draw_indirect_count
6405 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6406 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006407 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006408 }
6409 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6410 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006411 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006412 }
6413#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006414#ifdef VK_ANDROID_native_buffer
6415 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6416 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006417 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006418 }
6419 if (!strcmp(name, "vkAcquireImageANDROID"))
6420 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006421 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006422 }
6423 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6424 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006425 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006426 }
6427#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006428#ifdef VK_EXT_debug_report
6429 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6430 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006431 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006432 }
6433 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6434 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006435 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006436 }
6437 if (!strcmp(name, "vkDebugReportMessageEXT"))
6438 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006439 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006440 }
6441#endif
6442#ifdef VK_EXT_debug_marker
6443 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6444 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006445 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006446 }
6447 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6448 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006449 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006450 }
6451 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6452 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006454 }
6455 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6456 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006457 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006458 }
6459 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006462 }
6463#endif
6464#ifdef VK_AMD_draw_indirect_count
6465 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6466 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006467 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006468 }
6469 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6470 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006471 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006472 }
6473#endif
6474#ifdef VK_AMD_shader_info
6475 if (!strcmp(name, "vkGetShaderInfoAMD"))
6476 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006477 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006478 }
6479#endif
6480#ifdef VK_NV_external_memory_capabilities
6481 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6482 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006483 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006484 }
6485#endif
6486#ifdef VK_NV_external_memory_win32
6487 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6488 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006489 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006490 }
6491#endif
6492#ifdef VK_NN_vi_surface
6493 if (!strcmp(name, "vkCreateViSurfaceNN"))
6494 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006495 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006496 }
6497#endif
6498#ifdef VK_EXT_conditional_rendering
6499 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6500 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006501 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006502 }
6503 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006506 }
6507#endif
6508#ifdef VK_NVX_device_generated_commands
6509 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6510 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006511 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006512 }
6513 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006516 }
6517 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6518 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006520 }
6521 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006524 }
6525 if (!strcmp(name, "vkCreateObjectTableNVX"))
6526 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006527 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006528 }
6529 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006532 }
6533 if (!strcmp(name, "vkRegisterObjectsNVX"))
6534 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006535 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006536 }
6537 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006540 }
6541 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006544 }
6545#endif
6546#ifdef VK_NV_clip_space_w_scaling
6547 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6548 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006549 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006550 }
6551#endif
6552#ifdef VK_EXT_direct_mode_display
6553 if (!strcmp(name, "vkReleaseDisplayEXT"))
6554 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006555 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006556 }
6557#endif
6558#ifdef VK_EXT_acquire_xlib_display
6559 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6560 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006561 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006562 }
6563 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6564 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006565 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006566 }
6567#endif
6568#ifdef VK_EXT_display_surface_counter
6569 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6570 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006571 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006572 }
6573#endif
6574#ifdef VK_EXT_display_control
6575 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006578 }
6579 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6580 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006581 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006582 }
6583 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6584 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006585 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006586 }
6587 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006590 }
6591#endif
6592#ifdef VK_GOOGLE_display_timing
6593 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6594 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006595 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006596 }
6597 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6598 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006599 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006600 }
6601#endif
6602#ifdef VK_EXT_discard_rectangles
6603 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6604 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006605 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006606 }
6607#endif
6608#ifdef VK_EXT_hdr_metadata
6609 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6610 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006611 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006612 }
6613#endif
6614#ifdef VK_MVK_ios_surface
6615 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6616 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006617 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006618 }
6619#endif
6620#ifdef VK_MVK_macos_surface
6621 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6622 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006623 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006624 }
6625#endif
6626#ifdef VK_EXT_debug_utils
6627 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6628 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006629 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006630 }
6631 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006634 }
6635 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6636 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006637 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006638 }
6639 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6640 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006641 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006642 }
6643 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6644 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006645 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006646 }
6647 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6648 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006649 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006650 }
6651 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6652 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006653 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006654 }
6655 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6656 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006657 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006658 }
6659 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6660 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006661 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006662 }
6663 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6664 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006665 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006666 }
6667 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6668 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006669 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006670 }
6671#endif
6672#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6673 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6674 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006675 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006676 }
6677 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6678 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006679 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006680 }
6681#endif
6682#ifdef VK_EXT_sample_locations
6683 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6684 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006685 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006686 }
6687 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006690 }
6691#endif
6692#ifdef VK_EXT_validation_cache
6693 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6694 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006695 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006696 }
6697 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6698 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006699 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006700 }
6701 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6702 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006703 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006704 }
6705 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6706 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006707 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006708 }
6709#endif
6710#ifdef VK_EXT_external_memory_host
6711 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6712 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006713 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006714 }
6715#endif
6716#ifdef VK_AMD_buffer_marker
6717 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6718 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006719 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006720 }
6721#endif
6722#ifdef VK_NV_device_diagnostic_checkpoints
6723 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6724 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006725 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006726 }
6727 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6728 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006729 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006730 }
6731#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006732#ifdef VK_GOOGLE_address_space
6733 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6734 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006735 return nullptr;
6736 }
6737#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006738#ifdef VK_GOOGLE_color_buffer
6739 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6740 {
6741 return nullptr;
6742 }
6743 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6744 {
6745 return nullptr;
6746 }
6747#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006748#ifdef VK_GOOGLE_sized_descriptor_update_template
6749 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6750 {
6751 return nullptr;
6752 }
6753#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006754#ifdef VK_GOOGLE_async_command_buffers
6755 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6756 {
6757 return nullptr;
6758 }
6759 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6760 {
6761 return nullptr;
6762 }
6763 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6764 {
6765 return nullptr;
6766 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006767 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6768 {
6769 return nullptr;
6770 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006771#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006772#ifdef VK_GOOGLE_create_resources_with_requirements
6773 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6774 {
6775 return nullptr;
6776 }
6777 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6778 {
6779 return nullptr;
6780 }
6781#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006782#ifdef VK_GOOGLE_address_space_info
6783 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6784 {
6785 return nullptr;
6786 }
6787#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006788#ifdef VK_GOOGLE_free_memory_sync
6789 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6790 {
6791 return nullptr;
6792 }
6793#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07006794#ifdef VK_GOOGLE_async_queue_submit
6795 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
6796 {
6797 return nullptr;
6798 }
6799 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
6800 {
6801 return nullptr;
6802 }
6803 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
6804 {
6805 return nullptr;
6806 }
6807 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
6808 {
6809 return nullptr;
6810 }
6811#endif
Yilong Lia48b0102020-09-15 15:08:28 -07006812#ifdef VK_GOOGLE_linear_image_layout
6813 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
6814 {
6815 return nullptr;
6816 }
6817#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08006818#ifdef VK_MVK_moltenvk
6819 if (!strcmp(name, "vkGetMTLDeviceMVK"))
6820 {
6821 return nullptr;
6822 }
6823 if (!strcmp(name, "vkSetMTLTextureMVK"))
6824 {
6825 return nullptr;
6826 }
6827 if (!strcmp(name, "vkGetMTLTextureMVK"))
6828 {
6829 return nullptr;
6830 }
6831 if (!strcmp(name, "vkGetMTLBufferMVK"))
6832 {
6833 return nullptr;
6834 }
6835 if (!strcmp(name, "vkUseIOSurfaceMVK"))
6836 {
6837 return nullptr;
6838 }
6839 if (!strcmp(name, "vkGetIOSurfaceMVK"))
6840 {
6841 return nullptr;
6842 }
6843#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006844 return nullptr;
6845}
6846void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6847 auto resources = ResourceTracker::get();
6848 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6849#ifdef VK_VERSION_1_0
6850 if (!strcmp(name, "vkCreateInstance"))
6851 {
6852 return (void*)entry_vkCreateInstance;
6853 }
6854 if (!strcmp(name, "vkDestroyInstance"))
6855 {
6856 return (void*)entry_vkDestroyInstance;
6857 }
6858 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6859 {
6860 return (void*)entry_vkEnumeratePhysicalDevices;
6861 }
6862 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6863 {
6864 return (void*)entry_vkGetPhysicalDeviceFeatures;
6865 }
6866 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6867 {
6868 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6869 }
6870 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6871 {
6872 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6873 }
6874 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6875 {
6876 return (void*)entry_vkGetPhysicalDeviceProperties;
6877 }
6878 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6879 {
6880 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6881 }
6882 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6883 {
6884 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6885 }
6886 if (!strcmp(name, "vkGetInstanceProcAddr"))
6887 {
6888 return (void*)entry_vkGetInstanceProcAddr;
6889 }
6890 if (!strcmp(name, "vkGetDeviceProcAddr"))
6891 {
6892 return (void*)entry_vkGetDeviceProcAddr;
6893 }
6894 if (!strcmp(name, "vkCreateDevice"))
6895 {
6896 return (void*)entry_vkCreateDevice;
6897 }
6898 if (!strcmp(name, "vkDestroyDevice"))
6899 {
6900 return (void*)entry_vkDestroyDevice;
6901 }
6902 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6903 {
6904 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6905 }
6906 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6907 {
6908 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6909 }
6910 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6911 {
6912 return (void*)entry_vkEnumerateInstanceLayerProperties;
6913 }
6914 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6915 {
6916 return (void*)entry_vkEnumerateDeviceLayerProperties;
6917 }
6918 if (!strcmp(name, "vkGetDeviceQueue"))
6919 {
6920 return (void*)entry_vkGetDeviceQueue;
6921 }
6922 if (!strcmp(name, "vkQueueSubmit"))
6923 {
6924 return (void*)entry_vkQueueSubmit;
6925 }
6926 if (!strcmp(name, "vkQueueWaitIdle"))
6927 {
6928 return (void*)entry_vkQueueWaitIdle;
6929 }
6930 if (!strcmp(name, "vkDeviceWaitIdle"))
6931 {
6932 return (void*)entry_vkDeviceWaitIdle;
6933 }
6934 if (!strcmp(name, "vkAllocateMemory"))
6935 {
6936 return (void*)entry_vkAllocateMemory;
6937 }
6938 if (!strcmp(name, "vkFreeMemory"))
6939 {
6940 return (void*)entry_vkFreeMemory;
6941 }
6942 if (!strcmp(name, "vkMapMemory"))
6943 {
6944 return (void*)entry_vkMapMemory;
6945 }
6946 if (!strcmp(name, "vkUnmapMemory"))
6947 {
6948 return (void*)entry_vkUnmapMemory;
6949 }
6950 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6951 {
6952 return (void*)entry_vkFlushMappedMemoryRanges;
6953 }
6954 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6955 {
6956 return (void*)entry_vkInvalidateMappedMemoryRanges;
6957 }
6958 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6959 {
6960 return (void*)entry_vkGetDeviceMemoryCommitment;
6961 }
6962 if (!strcmp(name, "vkBindBufferMemory"))
6963 {
6964 return (void*)entry_vkBindBufferMemory;
6965 }
6966 if (!strcmp(name, "vkBindImageMemory"))
6967 {
6968 return (void*)entry_vkBindImageMemory;
6969 }
6970 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6971 {
6972 return (void*)entry_vkGetBufferMemoryRequirements;
6973 }
6974 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6975 {
6976 return (void*)entry_vkGetImageMemoryRequirements;
6977 }
6978 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6979 {
6980 return (void*)entry_vkGetImageSparseMemoryRequirements;
6981 }
6982 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6983 {
6984 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6985 }
6986 if (!strcmp(name, "vkQueueBindSparse"))
6987 {
6988 return (void*)entry_vkQueueBindSparse;
6989 }
6990 if (!strcmp(name, "vkCreateFence"))
6991 {
6992 return (void*)entry_vkCreateFence;
6993 }
6994 if (!strcmp(name, "vkDestroyFence"))
6995 {
6996 return (void*)entry_vkDestroyFence;
6997 }
6998 if (!strcmp(name, "vkResetFences"))
6999 {
7000 return (void*)entry_vkResetFences;
7001 }
7002 if (!strcmp(name, "vkGetFenceStatus"))
7003 {
7004 return (void*)entry_vkGetFenceStatus;
7005 }
7006 if (!strcmp(name, "vkWaitForFences"))
7007 {
7008 return (void*)entry_vkWaitForFences;
7009 }
7010 if (!strcmp(name, "vkCreateSemaphore"))
7011 {
7012 return (void*)entry_vkCreateSemaphore;
7013 }
7014 if (!strcmp(name, "vkDestroySemaphore"))
7015 {
7016 return (void*)entry_vkDestroySemaphore;
7017 }
7018 if (!strcmp(name, "vkCreateEvent"))
7019 {
7020 return (void*)entry_vkCreateEvent;
7021 }
7022 if (!strcmp(name, "vkDestroyEvent"))
7023 {
7024 return (void*)entry_vkDestroyEvent;
7025 }
7026 if (!strcmp(name, "vkGetEventStatus"))
7027 {
7028 return (void*)entry_vkGetEventStatus;
7029 }
7030 if (!strcmp(name, "vkSetEvent"))
7031 {
7032 return (void*)entry_vkSetEvent;
7033 }
7034 if (!strcmp(name, "vkResetEvent"))
7035 {
7036 return (void*)entry_vkResetEvent;
7037 }
7038 if (!strcmp(name, "vkCreateQueryPool"))
7039 {
7040 return (void*)entry_vkCreateQueryPool;
7041 }
7042 if (!strcmp(name, "vkDestroyQueryPool"))
7043 {
7044 return (void*)entry_vkDestroyQueryPool;
7045 }
7046 if (!strcmp(name, "vkGetQueryPoolResults"))
7047 {
7048 return (void*)entry_vkGetQueryPoolResults;
7049 }
7050 if (!strcmp(name, "vkCreateBuffer"))
7051 {
7052 return (void*)entry_vkCreateBuffer;
7053 }
7054 if (!strcmp(name, "vkDestroyBuffer"))
7055 {
7056 return (void*)entry_vkDestroyBuffer;
7057 }
7058 if (!strcmp(name, "vkCreateBufferView"))
7059 {
7060 return (void*)entry_vkCreateBufferView;
7061 }
7062 if (!strcmp(name, "vkDestroyBufferView"))
7063 {
7064 return (void*)entry_vkDestroyBufferView;
7065 }
7066 if (!strcmp(name, "vkCreateImage"))
7067 {
7068 return (void*)entry_vkCreateImage;
7069 }
7070 if (!strcmp(name, "vkDestroyImage"))
7071 {
7072 return (void*)entry_vkDestroyImage;
7073 }
7074 if (!strcmp(name, "vkGetImageSubresourceLayout"))
7075 {
7076 return (void*)entry_vkGetImageSubresourceLayout;
7077 }
7078 if (!strcmp(name, "vkCreateImageView"))
7079 {
7080 return (void*)entry_vkCreateImageView;
7081 }
7082 if (!strcmp(name, "vkDestroyImageView"))
7083 {
7084 return (void*)entry_vkDestroyImageView;
7085 }
7086 if (!strcmp(name, "vkCreateShaderModule"))
7087 {
7088 return (void*)entry_vkCreateShaderModule;
7089 }
7090 if (!strcmp(name, "vkDestroyShaderModule"))
7091 {
7092 return (void*)entry_vkDestroyShaderModule;
7093 }
7094 if (!strcmp(name, "vkCreatePipelineCache"))
7095 {
7096 return (void*)entry_vkCreatePipelineCache;
7097 }
7098 if (!strcmp(name, "vkDestroyPipelineCache"))
7099 {
7100 return (void*)entry_vkDestroyPipelineCache;
7101 }
7102 if (!strcmp(name, "vkGetPipelineCacheData"))
7103 {
7104 return (void*)entry_vkGetPipelineCacheData;
7105 }
7106 if (!strcmp(name, "vkMergePipelineCaches"))
7107 {
7108 return (void*)entry_vkMergePipelineCaches;
7109 }
7110 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7111 {
7112 return (void*)entry_vkCreateGraphicsPipelines;
7113 }
7114 if (!strcmp(name, "vkCreateComputePipelines"))
7115 {
7116 return (void*)entry_vkCreateComputePipelines;
7117 }
7118 if (!strcmp(name, "vkDestroyPipeline"))
7119 {
7120 return (void*)entry_vkDestroyPipeline;
7121 }
7122 if (!strcmp(name, "vkCreatePipelineLayout"))
7123 {
7124 return (void*)entry_vkCreatePipelineLayout;
7125 }
7126 if (!strcmp(name, "vkDestroyPipelineLayout"))
7127 {
7128 return (void*)entry_vkDestroyPipelineLayout;
7129 }
7130 if (!strcmp(name, "vkCreateSampler"))
7131 {
7132 return (void*)entry_vkCreateSampler;
7133 }
7134 if (!strcmp(name, "vkDestroySampler"))
7135 {
7136 return (void*)entry_vkDestroySampler;
7137 }
7138 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7139 {
7140 return (void*)entry_vkCreateDescriptorSetLayout;
7141 }
7142 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7143 {
7144 return (void*)entry_vkDestroyDescriptorSetLayout;
7145 }
7146 if (!strcmp(name, "vkCreateDescriptorPool"))
7147 {
7148 return (void*)entry_vkCreateDescriptorPool;
7149 }
7150 if (!strcmp(name, "vkDestroyDescriptorPool"))
7151 {
7152 return (void*)entry_vkDestroyDescriptorPool;
7153 }
7154 if (!strcmp(name, "vkResetDescriptorPool"))
7155 {
7156 return (void*)entry_vkResetDescriptorPool;
7157 }
7158 if (!strcmp(name, "vkAllocateDescriptorSets"))
7159 {
7160 return (void*)entry_vkAllocateDescriptorSets;
7161 }
7162 if (!strcmp(name, "vkFreeDescriptorSets"))
7163 {
7164 return (void*)entry_vkFreeDescriptorSets;
7165 }
7166 if (!strcmp(name, "vkUpdateDescriptorSets"))
7167 {
7168 return (void*)entry_vkUpdateDescriptorSets;
7169 }
7170 if (!strcmp(name, "vkCreateFramebuffer"))
7171 {
7172 return (void*)entry_vkCreateFramebuffer;
7173 }
7174 if (!strcmp(name, "vkDestroyFramebuffer"))
7175 {
7176 return (void*)entry_vkDestroyFramebuffer;
7177 }
7178 if (!strcmp(name, "vkCreateRenderPass"))
7179 {
7180 return (void*)entry_vkCreateRenderPass;
7181 }
7182 if (!strcmp(name, "vkDestroyRenderPass"))
7183 {
7184 return (void*)entry_vkDestroyRenderPass;
7185 }
7186 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7187 {
7188 return (void*)entry_vkGetRenderAreaGranularity;
7189 }
7190 if (!strcmp(name, "vkCreateCommandPool"))
7191 {
7192 return (void*)entry_vkCreateCommandPool;
7193 }
7194 if (!strcmp(name, "vkDestroyCommandPool"))
7195 {
7196 return (void*)entry_vkDestroyCommandPool;
7197 }
7198 if (!strcmp(name, "vkResetCommandPool"))
7199 {
7200 return (void*)entry_vkResetCommandPool;
7201 }
7202 if (!strcmp(name, "vkAllocateCommandBuffers"))
7203 {
7204 return (void*)entry_vkAllocateCommandBuffers;
7205 }
7206 if (!strcmp(name, "vkFreeCommandBuffers"))
7207 {
7208 return (void*)entry_vkFreeCommandBuffers;
7209 }
7210 if (!strcmp(name, "vkBeginCommandBuffer"))
7211 {
7212 return (void*)entry_vkBeginCommandBuffer;
7213 }
7214 if (!strcmp(name, "vkEndCommandBuffer"))
7215 {
7216 return (void*)entry_vkEndCommandBuffer;
7217 }
7218 if (!strcmp(name, "vkResetCommandBuffer"))
7219 {
7220 return (void*)entry_vkResetCommandBuffer;
7221 }
7222 if (!strcmp(name, "vkCmdBindPipeline"))
7223 {
7224 return (void*)entry_vkCmdBindPipeline;
7225 }
7226 if (!strcmp(name, "vkCmdSetViewport"))
7227 {
7228 return (void*)entry_vkCmdSetViewport;
7229 }
7230 if (!strcmp(name, "vkCmdSetScissor"))
7231 {
7232 return (void*)entry_vkCmdSetScissor;
7233 }
7234 if (!strcmp(name, "vkCmdSetLineWidth"))
7235 {
7236 return (void*)entry_vkCmdSetLineWidth;
7237 }
7238 if (!strcmp(name, "vkCmdSetDepthBias"))
7239 {
7240 return (void*)entry_vkCmdSetDepthBias;
7241 }
7242 if (!strcmp(name, "vkCmdSetBlendConstants"))
7243 {
7244 return (void*)entry_vkCmdSetBlendConstants;
7245 }
7246 if (!strcmp(name, "vkCmdSetDepthBounds"))
7247 {
7248 return (void*)entry_vkCmdSetDepthBounds;
7249 }
7250 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7251 {
7252 return (void*)entry_vkCmdSetStencilCompareMask;
7253 }
7254 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7255 {
7256 return (void*)entry_vkCmdSetStencilWriteMask;
7257 }
7258 if (!strcmp(name, "vkCmdSetStencilReference"))
7259 {
7260 return (void*)entry_vkCmdSetStencilReference;
7261 }
7262 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7263 {
7264 return (void*)entry_vkCmdBindDescriptorSets;
7265 }
7266 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7267 {
7268 return (void*)entry_vkCmdBindIndexBuffer;
7269 }
7270 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7271 {
7272 return (void*)entry_vkCmdBindVertexBuffers;
7273 }
7274 if (!strcmp(name, "vkCmdDraw"))
7275 {
7276 return (void*)entry_vkCmdDraw;
7277 }
7278 if (!strcmp(name, "vkCmdDrawIndexed"))
7279 {
7280 return (void*)entry_vkCmdDrawIndexed;
7281 }
7282 if (!strcmp(name, "vkCmdDrawIndirect"))
7283 {
7284 return (void*)entry_vkCmdDrawIndirect;
7285 }
7286 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7287 {
7288 return (void*)entry_vkCmdDrawIndexedIndirect;
7289 }
7290 if (!strcmp(name, "vkCmdDispatch"))
7291 {
7292 return (void*)entry_vkCmdDispatch;
7293 }
7294 if (!strcmp(name, "vkCmdDispatchIndirect"))
7295 {
7296 return (void*)entry_vkCmdDispatchIndirect;
7297 }
7298 if (!strcmp(name, "vkCmdCopyBuffer"))
7299 {
7300 return (void*)entry_vkCmdCopyBuffer;
7301 }
7302 if (!strcmp(name, "vkCmdCopyImage"))
7303 {
7304 return (void*)entry_vkCmdCopyImage;
7305 }
7306 if (!strcmp(name, "vkCmdBlitImage"))
7307 {
7308 return (void*)entry_vkCmdBlitImage;
7309 }
7310 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7311 {
7312 return (void*)entry_vkCmdCopyBufferToImage;
7313 }
7314 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7315 {
7316 return (void*)entry_vkCmdCopyImageToBuffer;
7317 }
7318 if (!strcmp(name, "vkCmdUpdateBuffer"))
7319 {
7320 return (void*)entry_vkCmdUpdateBuffer;
7321 }
7322 if (!strcmp(name, "vkCmdFillBuffer"))
7323 {
7324 return (void*)entry_vkCmdFillBuffer;
7325 }
7326 if (!strcmp(name, "vkCmdClearColorImage"))
7327 {
7328 return (void*)entry_vkCmdClearColorImage;
7329 }
7330 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7331 {
7332 return (void*)entry_vkCmdClearDepthStencilImage;
7333 }
7334 if (!strcmp(name, "vkCmdClearAttachments"))
7335 {
7336 return (void*)entry_vkCmdClearAttachments;
7337 }
7338 if (!strcmp(name, "vkCmdResolveImage"))
7339 {
7340 return (void*)entry_vkCmdResolveImage;
7341 }
7342 if (!strcmp(name, "vkCmdSetEvent"))
7343 {
7344 return (void*)entry_vkCmdSetEvent;
7345 }
7346 if (!strcmp(name, "vkCmdResetEvent"))
7347 {
7348 return (void*)entry_vkCmdResetEvent;
7349 }
7350 if (!strcmp(name, "vkCmdWaitEvents"))
7351 {
7352 return (void*)entry_vkCmdWaitEvents;
7353 }
7354 if (!strcmp(name, "vkCmdPipelineBarrier"))
7355 {
7356 return (void*)entry_vkCmdPipelineBarrier;
7357 }
7358 if (!strcmp(name, "vkCmdBeginQuery"))
7359 {
7360 return (void*)entry_vkCmdBeginQuery;
7361 }
7362 if (!strcmp(name, "vkCmdEndQuery"))
7363 {
7364 return (void*)entry_vkCmdEndQuery;
7365 }
7366 if (!strcmp(name, "vkCmdResetQueryPool"))
7367 {
7368 return (void*)entry_vkCmdResetQueryPool;
7369 }
7370 if (!strcmp(name, "vkCmdWriteTimestamp"))
7371 {
7372 return (void*)entry_vkCmdWriteTimestamp;
7373 }
7374 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7375 {
7376 return (void*)entry_vkCmdCopyQueryPoolResults;
7377 }
7378 if (!strcmp(name, "vkCmdPushConstants"))
7379 {
7380 return (void*)entry_vkCmdPushConstants;
7381 }
7382 if (!strcmp(name, "vkCmdBeginRenderPass"))
7383 {
7384 return (void*)entry_vkCmdBeginRenderPass;
7385 }
7386 if (!strcmp(name, "vkCmdNextSubpass"))
7387 {
7388 return (void*)entry_vkCmdNextSubpass;
7389 }
7390 if (!strcmp(name, "vkCmdEndRenderPass"))
7391 {
7392 return (void*)entry_vkCmdEndRenderPass;
7393 }
7394 if (!strcmp(name, "vkCmdExecuteCommands"))
7395 {
7396 return (void*)entry_vkCmdExecuteCommands;
7397 }
7398#endif
7399#ifdef VK_VERSION_1_1
7400 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7401 {
7402 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7403 }
7404 if (!strcmp(name, "vkBindBufferMemory2"))
7405 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007406 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007407 }
7408 if (!strcmp(name, "vkBindImageMemory2"))
7409 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007410 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007411 }
7412 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7413 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007414 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007415 }
7416 if (!strcmp(name, "vkCmdSetDeviceMask"))
7417 {
7418 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7419 }
7420 if (!strcmp(name, "vkCmdDispatchBase"))
7421 {
7422 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7423 }
7424 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7425 {
7426 return nullptr;
7427 }
7428 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7429 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007430 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007431 }
7432 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7433 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007434 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007435 }
7436 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7437 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007438 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007439 }
7440 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7441 {
7442 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7443 }
7444 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7445 {
7446 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7447 }
7448 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7449 {
7450 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7451 }
7452 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7453 {
7454 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7455 }
7456 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7457 {
7458 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7459 }
7460 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7461 {
7462 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7463 }
7464 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7465 {
7466 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7467 }
7468 if (!strcmp(name, "vkTrimCommandPool"))
7469 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007470 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007471 }
7472 if (!strcmp(name, "vkGetDeviceQueue2"))
7473 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007474 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007475 }
7476 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7477 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007478 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007479 }
7480 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7481 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007482 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007483 }
7484 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7485 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007486 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007487 }
7488 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7489 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007490 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007491 }
7492 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7493 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007494 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007495 }
7496 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7497 {
7498 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7499 }
7500 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7501 {
7502 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7503 }
7504 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7505 {
7506 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7507 }
7508 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7509 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007510 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007511 }
7512#endif
7513#ifdef VK_KHR_surface
7514 if (!strcmp(name, "vkDestroySurfaceKHR"))
7515 {
7516 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7517 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7518 }
7519 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7520 {
7521 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7522 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7523 }
7524 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7525 {
7526 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7527 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7528 }
7529 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7530 {
7531 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7532 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7533 }
7534 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7535 {
7536 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7537 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7538 }
7539#endif
7540#ifdef VK_KHR_swapchain
7541 if (!strcmp(name, "vkCreateSwapchainKHR"))
7542 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007543 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007544 }
7545 if (!strcmp(name, "vkDestroySwapchainKHR"))
7546 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007547 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007548 }
7549 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7550 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007551 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007552 }
7553 if (!strcmp(name, "vkAcquireNextImageKHR"))
7554 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007555 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007556 }
7557 if (!strcmp(name, "vkQueuePresentKHR"))
7558 {
7559 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7560 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7561 }
7562 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7563 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007564 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007565 }
7566 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7567 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007568 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007569 }
7570 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7571 {
7572 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7573 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7574 }
7575 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7576 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007577 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007578 }
7579#endif
7580#ifdef VK_KHR_display
7581 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7582 {
7583 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7584 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7585 }
7586 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7587 {
7588 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7589 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7590 }
7591 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7592 {
7593 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7594 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7595 }
7596 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7597 {
7598 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7599 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7600 }
7601 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7602 {
7603 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7604 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7605 }
7606 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7607 {
7608 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7609 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7610 }
7611 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7612 {
7613 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7614 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7615 }
7616#endif
7617#ifdef VK_KHR_display_swapchain
7618 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7619 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007620 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007621 }
7622#endif
7623#ifdef VK_KHR_xlib_surface
7624 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7625 {
7626 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7627 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7628 }
7629 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7630 {
7631 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7632 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7633 }
7634#endif
7635#ifdef VK_KHR_xcb_surface
7636 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7637 {
7638 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7639 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7640 }
7641 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7642 {
7643 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7644 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7645 }
7646#endif
7647#ifdef VK_KHR_wayland_surface
7648 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7649 {
7650 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7651 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7652 }
7653 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7654 {
7655 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7656 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7657 }
7658#endif
7659#ifdef VK_KHR_mir_surface
7660 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7661 {
7662 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7663 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7664 }
7665 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7666 {
7667 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7668 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7669 }
7670#endif
7671#ifdef VK_KHR_android_surface
7672 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7673 {
7674 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7675 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7676 }
7677#endif
7678#ifdef VK_KHR_win32_surface
7679 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7680 {
7681 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7682 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7683 }
7684 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7685 {
7686 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7687 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7688 }
7689#endif
7690#ifdef VK_KHR_get_physical_device_properties2
7691 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7692 {
7693 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7694 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7695 }
7696 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7697 {
7698 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7699 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7700 }
7701 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7702 {
7703 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7704 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7705 }
7706 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7707 {
7708 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7709 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7710 }
7711 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7712 {
7713 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7714 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7715 }
7716 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7717 {
7718 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7719 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7720 }
7721 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7722 {
7723 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7724 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7725 }
7726#endif
7727#ifdef VK_KHR_device_group
7728 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7729 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007730 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007731 }
7732 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7733 {
7734 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7735 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7736 }
7737 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7738 {
7739 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7740 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7741 }
7742#endif
7743#ifdef VK_KHR_maintenance1
7744 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7745 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007746 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007747 }
7748#endif
7749#ifdef VK_KHR_device_group_creation
7750 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7751 {
7752 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7753 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7754 }
7755#endif
7756#ifdef VK_KHR_external_memory_capabilities
7757 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7758 {
7759 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7760 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7761 }
7762#endif
7763#ifdef VK_KHR_external_memory_win32
7764 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7765 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007766 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007767 }
7768 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7769 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007770 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007771 }
7772#endif
7773#ifdef VK_KHR_external_memory_fd
7774 if (!strcmp(name, "vkGetMemoryFdKHR"))
7775 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007776 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007777 }
7778 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7779 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007780 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007781 }
7782#endif
7783#ifdef VK_KHR_external_semaphore_capabilities
7784 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7785 {
7786 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7787 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7788 }
7789#endif
7790#ifdef VK_KHR_external_semaphore_win32
7791 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7792 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007793 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007794 }
7795 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7796 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007797 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007798 }
7799#endif
7800#ifdef VK_KHR_external_semaphore_fd
7801 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7802 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007803 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007804 }
7805 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7806 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007807 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007808 }
7809#endif
7810#ifdef VK_KHR_push_descriptor
7811 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7812 {
7813 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7814 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7815 }
7816 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7817 {
7818 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7819 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7820 }
7821#endif
7822#ifdef VK_KHR_descriptor_update_template
7823 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7824 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007825 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007826 }
7827 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7828 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007829 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007830 }
7831 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7832 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007833 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007834 }
7835#endif
7836#ifdef VK_KHR_create_renderpass2
7837 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7838 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007839 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007840 }
7841 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7842 {
7843 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7844 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7845 }
7846 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7847 {
7848 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7849 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7850 }
7851 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7852 {
7853 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7854 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7855 }
7856#endif
7857#ifdef VK_KHR_shared_presentable_image
7858 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7859 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007860 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007861 }
7862#endif
7863#ifdef VK_KHR_external_fence_capabilities
7864 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7865 {
7866 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7867 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7868 }
7869#endif
7870#ifdef VK_KHR_external_fence_win32
7871 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7872 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007873 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007874 }
7875 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7876 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007877 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007878 }
7879#endif
7880#ifdef VK_KHR_external_fence_fd
7881 if (!strcmp(name, "vkImportFenceFdKHR"))
7882 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007883 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007884 }
7885 if (!strcmp(name, "vkGetFenceFdKHR"))
7886 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007887 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007888 }
7889#endif
7890#ifdef VK_KHR_get_surface_capabilities2
7891 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7892 {
7893 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7894 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7895 }
7896 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7897 {
7898 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7899 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7900 }
7901#endif
7902#ifdef VK_KHR_get_display_properties2
7903 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7904 {
7905 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7906 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7907 }
7908 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7909 {
7910 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7911 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7912 }
7913 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7914 {
7915 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7916 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7917 }
7918 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7919 {
7920 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7921 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7922 }
7923#endif
7924#ifdef VK_KHR_get_memory_requirements2
7925 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7926 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007927 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007928 }
7929 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7930 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007931 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007932 }
7933 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7934 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007935 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007936 }
7937#endif
7938#ifdef VK_KHR_sampler_ycbcr_conversion
7939 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7940 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007941 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007942 }
7943 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7944 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007945 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007946 }
7947#endif
7948#ifdef VK_KHR_bind_memory2
7949 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7950 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007951 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007952 }
7953 if (!strcmp(name, "vkBindImageMemory2KHR"))
7954 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007955 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007956 }
7957#endif
7958#ifdef VK_KHR_maintenance3
7959 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7960 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007961 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007962 }
7963#endif
7964#ifdef VK_KHR_draw_indirect_count
7965 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7966 {
7967 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7968 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7969 }
7970 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7971 {
7972 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7973 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7974 }
7975#endif
7976#ifdef VK_ANDROID_native_buffer
7977 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7978 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007979 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007980 }
7981 if (!strcmp(name, "vkAcquireImageANDROID"))
7982 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007983 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007984 }
7985 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7986 {
7987 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7988 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7989 }
7990#endif
7991#ifdef VK_EXT_debug_report
7992 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7993 {
7994 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7995 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7996 }
7997 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7998 {
7999 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8000 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
8001 }
8002 if (!strcmp(name, "vkDebugReportMessageEXT"))
8003 {
8004 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8005 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
8006 }
8007#endif
8008#ifdef VK_EXT_debug_marker
8009 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
8010 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008011 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008012 }
8013 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
8014 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008015 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008016 }
8017 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
8018 {
8019 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8020 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
8021 }
8022 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
8023 {
8024 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8025 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
8026 }
8027 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8028 {
8029 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8030 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8031 }
8032#endif
8033#ifdef VK_AMD_draw_indirect_count
8034 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8035 {
8036 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8037 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8038 }
8039 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8040 {
8041 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8042 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8043 }
8044#endif
8045#ifdef VK_AMD_shader_info
8046 if (!strcmp(name, "vkGetShaderInfoAMD"))
8047 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008048 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008049 }
8050#endif
8051#ifdef VK_NV_external_memory_capabilities
8052 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8053 {
8054 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
8055 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8056 }
8057#endif
8058#ifdef VK_NV_external_memory_win32
8059 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8060 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008061 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008062 }
8063#endif
8064#ifdef VK_NN_vi_surface
8065 if (!strcmp(name, "vkCreateViSurfaceNN"))
8066 {
8067 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
8068 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8069 }
8070#endif
8071#ifdef VK_EXT_conditional_rendering
8072 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8073 {
8074 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8075 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8076 }
8077 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8078 {
8079 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8080 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8081 }
8082#endif
8083#ifdef VK_NVX_device_generated_commands
8084 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8085 {
8086 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8087 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8088 }
8089 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8090 {
8091 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8092 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8093 }
8094 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8095 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008096 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008097 }
8098 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8099 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008100 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008101 }
8102 if (!strcmp(name, "vkCreateObjectTableNVX"))
8103 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008104 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008105 }
8106 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8107 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008108 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008109 }
8110 if (!strcmp(name, "vkRegisterObjectsNVX"))
8111 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008112 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008113 }
8114 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8115 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008116 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008117 }
8118 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8119 {
8120 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8121 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8122 }
8123#endif
8124#ifdef VK_NV_clip_space_w_scaling
8125 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8126 {
8127 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8128 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8129 }
8130#endif
8131#ifdef VK_EXT_direct_mode_display
8132 if (!strcmp(name, "vkReleaseDisplayEXT"))
8133 {
8134 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8135 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8136 }
8137#endif
8138#ifdef VK_EXT_acquire_xlib_display
8139 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8140 {
8141 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8142 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8143 }
8144 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8145 {
8146 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8147 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8148 }
8149#endif
8150#ifdef VK_EXT_display_surface_counter
8151 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8152 {
8153 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8154 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8155 }
8156#endif
8157#ifdef VK_EXT_display_control
8158 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8159 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008160 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008161 }
8162 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8163 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008164 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008165 }
8166 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8167 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008168 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008169 }
8170 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8171 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008172 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008173 }
8174#endif
8175#ifdef VK_GOOGLE_display_timing
8176 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8177 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008178 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008179 }
8180 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8181 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008182 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008183 }
8184#endif
8185#ifdef VK_EXT_discard_rectangles
8186 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8187 {
8188 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8189 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8190 }
8191#endif
8192#ifdef VK_EXT_hdr_metadata
8193 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8194 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008195 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008196 }
8197#endif
8198#ifdef VK_MVK_ios_surface
8199 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8200 {
8201 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8202 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8203 }
8204#endif
8205#ifdef VK_MVK_macos_surface
8206 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8207 {
8208 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8209 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8210 }
8211#endif
8212#ifdef VK_EXT_debug_utils
8213 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8214 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008215 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008216 }
8217 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8218 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008219 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008220 }
8221 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8222 {
8223 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8224 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8225 }
8226 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8227 {
8228 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8229 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8230 }
8231 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8232 {
8233 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8234 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8235 }
8236 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8237 {
8238 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8239 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8240 }
8241 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8242 {
8243 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8244 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8245 }
8246 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8247 {
8248 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8249 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8250 }
8251 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8252 {
8253 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8254 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8255 }
8256 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8257 {
8258 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8259 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8260 }
8261 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8262 {
8263 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8264 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8265 }
8266#endif
8267#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8268 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8269 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008270 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008271 }
8272 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8273 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008274 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008275 }
8276#endif
8277#ifdef VK_EXT_sample_locations
8278 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8279 {
8280 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8281 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8282 }
8283 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8284 {
8285 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8286 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8287 }
8288#endif
8289#ifdef VK_EXT_validation_cache
8290 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8291 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008292 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008293 }
8294 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8295 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008296 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008297 }
8298 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8299 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008300 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008301 }
8302 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8303 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008304 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008305 }
8306#endif
8307#ifdef VK_EXT_external_memory_host
8308 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8309 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008310 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008311 }
8312#endif
8313#ifdef VK_AMD_buffer_marker
8314 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8315 {
8316 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8317 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8318 }
8319#endif
8320#ifdef VK_NV_device_diagnostic_checkpoints
8321 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8322 {
8323 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8324 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8325 }
8326 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8327 {
8328 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8329 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8330 }
8331#endif
8332#ifdef VK_GOOGLE_address_space
8333 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8334 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008335 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008336 }
8337#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008338#ifdef VK_GOOGLE_color_buffer
8339 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8340 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008341 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008342 }
8343 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8344 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008345 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008346 }
8347#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008348#ifdef VK_GOOGLE_sized_descriptor_update_template
8349 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8350 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008351 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008352 }
8353#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008354#ifdef VK_GOOGLE_async_command_buffers
8355 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8356 {
8357 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8358 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8359 }
8360 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8361 {
8362 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8363 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8364 }
8365 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8366 {
8367 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8368 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8369 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008370 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8371 {
8372 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8373 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8374 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008375#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008376#ifdef VK_GOOGLE_create_resources_with_requirements
8377 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8378 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008379 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008380 }
8381 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8382 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008383 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008384 }
8385#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008386#ifdef VK_GOOGLE_address_space_info
8387 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8388 {
8389 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8390 }
8391#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008392#ifdef VK_GOOGLE_free_memory_sync
8393 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8394 {
8395 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8396 }
8397#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008398#ifdef VK_GOOGLE_async_queue_submit
8399 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
8400 {
8401 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8402 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
8403 }
8404 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
8405 {
8406 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8407 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
8408 }
8409 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
8410 {
8411 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8412 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
8413 }
8414 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
8415 {
8416 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8417 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
8418 }
8419#endif
Yilong Lia48b0102020-09-15 15:08:28 -07008420#ifdef VK_GOOGLE_linear_image_layout
8421 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
8422 {
8423 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
8424 }
8425#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08008426#ifdef VK_MVK_moltenvk
8427 if (!strcmp(name, "vkGetMTLDeviceMVK"))
8428 {
8429 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8430 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
8431 }
8432 if (!strcmp(name, "vkSetMTLTextureMVK"))
8433 {
8434 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8435 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
8436 }
8437 if (!strcmp(name, "vkGetMTLTextureMVK"))
8438 {
8439 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8440 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
8441 }
8442 if (!strcmp(name, "vkGetMTLBufferMVK"))
8443 {
8444 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8445 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
8446 }
8447 if (!strcmp(name, "vkUseIOSurfaceMVK"))
8448 {
8449 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8450 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
8451 }
8452 if (!strcmp(name, "vkGetIOSurfaceMVK"))
8453 {
8454 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8455 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
8456 }
8457#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008458 return nullptr;
8459}
8460void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8461 auto resources = ResourceTracker::get();
8462 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8463#ifdef VK_VERSION_1_0
8464 if (!strcmp(name, "vkCreateInstance"))
8465 {
8466 return (void*)entry_vkCreateInstance;
8467 }
8468 if (!strcmp(name, "vkDestroyInstance"))
8469 {
8470 return (void*)entry_vkDestroyInstance;
8471 }
8472 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8473 {
8474 return (void*)entry_vkEnumeratePhysicalDevices;
8475 }
8476 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8477 {
8478 return (void*)entry_vkGetPhysicalDeviceFeatures;
8479 }
8480 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8481 {
8482 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8483 }
8484 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8485 {
8486 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8487 }
8488 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8489 {
8490 return (void*)entry_vkGetPhysicalDeviceProperties;
8491 }
8492 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8493 {
8494 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8495 }
8496 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8497 {
8498 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8499 }
8500 if (!strcmp(name, "vkGetInstanceProcAddr"))
8501 {
8502 return (void*)entry_vkGetInstanceProcAddr;
8503 }
8504 if (!strcmp(name, "vkGetDeviceProcAddr"))
8505 {
8506 return (void*)entry_vkGetDeviceProcAddr;
8507 }
8508 if (!strcmp(name, "vkCreateDevice"))
8509 {
8510 return (void*)entry_vkCreateDevice;
8511 }
8512 if (!strcmp(name, "vkDestroyDevice"))
8513 {
8514 return (void*)entry_vkDestroyDevice;
8515 }
8516 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8517 {
8518 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8519 }
8520 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8521 {
8522 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8523 }
8524 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8525 {
8526 return (void*)entry_vkEnumerateInstanceLayerProperties;
8527 }
8528 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8529 {
8530 return (void*)entry_vkEnumerateDeviceLayerProperties;
8531 }
8532 if (!strcmp(name, "vkGetDeviceQueue"))
8533 {
8534 return (void*)entry_vkGetDeviceQueue;
8535 }
8536 if (!strcmp(name, "vkQueueSubmit"))
8537 {
8538 return (void*)entry_vkQueueSubmit;
8539 }
8540 if (!strcmp(name, "vkQueueWaitIdle"))
8541 {
8542 return (void*)entry_vkQueueWaitIdle;
8543 }
8544 if (!strcmp(name, "vkDeviceWaitIdle"))
8545 {
8546 return (void*)entry_vkDeviceWaitIdle;
8547 }
8548 if (!strcmp(name, "vkAllocateMemory"))
8549 {
8550 return (void*)entry_vkAllocateMemory;
8551 }
8552 if (!strcmp(name, "vkFreeMemory"))
8553 {
8554 return (void*)entry_vkFreeMemory;
8555 }
8556 if (!strcmp(name, "vkMapMemory"))
8557 {
8558 return (void*)entry_vkMapMemory;
8559 }
8560 if (!strcmp(name, "vkUnmapMemory"))
8561 {
8562 return (void*)entry_vkUnmapMemory;
8563 }
8564 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8565 {
8566 return (void*)entry_vkFlushMappedMemoryRanges;
8567 }
8568 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8569 {
8570 return (void*)entry_vkInvalidateMappedMemoryRanges;
8571 }
8572 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8573 {
8574 return (void*)entry_vkGetDeviceMemoryCommitment;
8575 }
8576 if (!strcmp(name, "vkBindBufferMemory"))
8577 {
8578 return (void*)entry_vkBindBufferMemory;
8579 }
8580 if (!strcmp(name, "vkBindImageMemory"))
8581 {
8582 return (void*)entry_vkBindImageMemory;
8583 }
8584 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8585 {
8586 return (void*)entry_vkGetBufferMemoryRequirements;
8587 }
8588 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8589 {
8590 return (void*)entry_vkGetImageMemoryRequirements;
8591 }
8592 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8593 {
8594 return (void*)entry_vkGetImageSparseMemoryRequirements;
8595 }
8596 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8597 {
8598 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8599 }
8600 if (!strcmp(name, "vkQueueBindSparse"))
8601 {
8602 return (void*)entry_vkQueueBindSparse;
8603 }
8604 if (!strcmp(name, "vkCreateFence"))
8605 {
8606 return (void*)entry_vkCreateFence;
8607 }
8608 if (!strcmp(name, "vkDestroyFence"))
8609 {
8610 return (void*)entry_vkDestroyFence;
8611 }
8612 if (!strcmp(name, "vkResetFences"))
8613 {
8614 return (void*)entry_vkResetFences;
8615 }
8616 if (!strcmp(name, "vkGetFenceStatus"))
8617 {
8618 return (void*)entry_vkGetFenceStatus;
8619 }
8620 if (!strcmp(name, "vkWaitForFences"))
8621 {
8622 return (void*)entry_vkWaitForFences;
8623 }
8624 if (!strcmp(name, "vkCreateSemaphore"))
8625 {
8626 return (void*)entry_vkCreateSemaphore;
8627 }
8628 if (!strcmp(name, "vkDestroySemaphore"))
8629 {
8630 return (void*)entry_vkDestroySemaphore;
8631 }
8632 if (!strcmp(name, "vkCreateEvent"))
8633 {
8634 return (void*)entry_vkCreateEvent;
8635 }
8636 if (!strcmp(name, "vkDestroyEvent"))
8637 {
8638 return (void*)entry_vkDestroyEvent;
8639 }
8640 if (!strcmp(name, "vkGetEventStatus"))
8641 {
8642 return (void*)entry_vkGetEventStatus;
8643 }
8644 if (!strcmp(name, "vkSetEvent"))
8645 {
8646 return (void*)entry_vkSetEvent;
8647 }
8648 if (!strcmp(name, "vkResetEvent"))
8649 {
8650 return (void*)entry_vkResetEvent;
8651 }
8652 if (!strcmp(name, "vkCreateQueryPool"))
8653 {
8654 return (void*)entry_vkCreateQueryPool;
8655 }
8656 if (!strcmp(name, "vkDestroyQueryPool"))
8657 {
8658 return (void*)entry_vkDestroyQueryPool;
8659 }
8660 if (!strcmp(name, "vkGetQueryPoolResults"))
8661 {
8662 return (void*)entry_vkGetQueryPoolResults;
8663 }
8664 if (!strcmp(name, "vkCreateBuffer"))
8665 {
8666 return (void*)entry_vkCreateBuffer;
8667 }
8668 if (!strcmp(name, "vkDestroyBuffer"))
8669 {
8670 return (void*)entry_vkDestroyBuffer;
8671 }
8672 if (!strcmp(name, "vkCreateBufferView"))
8673 {
8674 return (void*)entry_vkCreateBufferView;
8675 }
8676 if (!strcmp(name, "vkDestroyBufferView"))
8677 {
8678 return (void*)entry_vkDestroyBufferView;
8679 }
8680 if (!strcmp(name, "vkCreateImage"))
8681 {
8682 return (void*)entry_vkCreateImage;
8683 }
8684 if (!strcmp(name, "vkDestroyImage"))
8685 {
8686 return (void*)entry_vkDestroyImage;
8687 }
8688 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8689 {
8690 return (void*)entry_vkGetImageSubresourceLayout;
8691 }
8692 if (!strcmp(name, "vkCreateImageView"))
8693 {
8694 return (void*)entry_vkCreateImageView;
8695 }
8696 if (!strcmp(name, "vkDestroyImageView"))
8697 {
8698 return (void*)entry_vkDestroyImageView;
8699 }
8700 if (!strcmp(name, "vkCreateShaderModule"))
8701 {
8702 return (void*)entry_vkCreateShaderModule;
8703 }
8704 if (!strcmp(name, "vkDestroyShaderModule"))
8705 {
8706 return (void*)entry_vkDestroyShaderModule;
8707 }
8708 if (!strcmp(name, "vkCreatePipelineCache"))
8709 {
8710 return (void*)entry_vkCreatePipelineCache;
8711 }
8712 if (!strcmp(name, "vkDestroyPipelineCache"))
8713 {
8714 return (void*)entry_vkDestroyPipelineCache;
8715 }
8716 if (!strcmp(name, "vkGetPipelineCacheData"))
8717 {
8718 return (void*)entry_vkGetPipelineCacheData;
8719 }
8720 if (!strcmp(name, "vkMergePipelineCaches"))
8721 {
8722 return (void*)entry_vkMergePipelineCaches;
8723 }
8724 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8725 {
8726 return (void*)entry_vkCreateGraphicsPipelines;
8727 }
8728 if (!strcmp(name, "vkCreateComputePipelines"))
8729 {
8730 return (void*)entry_vkCreateComputePipelines;
8731 }
8732 if (!strcmp(name, "vkDestroyPipeline"))
8733 {
8734 return (void*)entry_vkDestroyPipeline;
8735 }
8736 if (!strcmp(name, "vkCreatePipelineLayout"))
8737 {
8738 return (void*)entry_vkCreatePipelineLayout;
8739 }
8740 if (!strcmp(name, "vkDestroyPipelineLayout"))
8741 {
8742 return (void*)entry_vkDestroyPipelineLayout;
8743 }
8744 if (!strcmp(name, "vkCreateSampler"))
8745 {
8746 return (void*)entry_vkCreateSampler;
8747 }
8748 if (!strcmp(name, "vkDestroySampler"))
8749 {
8750 return (void*)entry_vkDestroySampler;
8751 }
8752 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8753 {
8754 return (void*)entry_vkCreateDescriptorSetLayout;
8755 }
8756 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8757 {
8758 return (void*)entry_vkDestroyDescriptorSetLayout;
8759 }
8760 if (!strcmp(name, "vkCreateDescriptorPool"))
8761 {
8762 return (void*)entry_vkCreateDescriptorPool;
8763 }
8764 if (!strcmp(name, "vkDestroyDescriptorPool"))
8765 {
8766 return (void*)entry_vkDestroyDescriptorPool;
8767 }
8768 if (!strcmp(name, "vkResetDescriptorPool"))
8769 {
8770 return (void*)entry_vkResetDescriptorPool;
8771 }
8772 if (!strcmp(name, "vkAllocateDescriptorSets"))
8773 {
8774 return (void*)entry_vkAllocateDescriptorSets;
8775 }
8776 if (!strcmp(name, "vkFreeDescriptorSets"))
8777 {
8778 return (void*)entry_vkFreeDescriptorSets;
8779 }
8780 if (!strcmp(name, "vkUpdateDescriptorSets"))
8781 {
8782 return (void*)entry_vkUpdateDescriptorSets;
8783 }
8784 if (!strcmp(name, "vkCreateFramebuffer"))
8785 {
8786 return (void*)entry_vkCreateFramebuffer;
8787 }
8788 if (!strcmp(name, "vkDestroyFramebuffer"))
8789 {
8790 return (void*)entry_vkDestroyFramebuffer;
8791 }
8792 if (!strcmp(name, "vkCreateRenderPass"))
8793 {
8794 return (void*)entry_vkCreateRenderPass;
8795 }
8796 if (!strcmp(name, "vkDestroyRenderPass"))
8797 {
8798 return (void*)entry_vkDestroyRenderPass;
8799 }
8800 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8801 {
8802 return (void*)entry_vkGetRenderAreaGranularity;
8803 }
8804 if (!strcmp(name, "vkCreateCommandPool"))
8805 {
8806 return (void*)entry_vkCreateCommandPool;
8807 }
8808 if (!strcmp(name, "vkDestroyCommandPool"))
8809 {
8810 return (void*)entry_vkDestroyCommandPool;
8811 }
8812 if (!strcmp(name, "vkResetCommandPool"))
8813 {
8814 return (void*)entry_vkResetCommandPool;
8815 }
8816 if (!strcmp(name, "vkAllocateCommandBuffers"))
8817 {
8818 return (void*)entry_vkAllocateCommandBuffers;
8819 }
8820 if (!strcmp(name, "vkFreeCommandBuffers"))
8821 {
8822 return (void*)entry_vkFreeCommandBuffers;
8823 }
8824 if (!strcmp(name, "vkBeginCommandBuffer"))
8825 {
8826 return (void*)entry_vkBeginCommandBuffer;
8827 }
8828 if (!strcmp(name, "vkEndCommandBuffer"))
8829 {
8830 return (void*)entry_vkEndCommandBuffer;
8831 }
8832 if (!strcmp(name, "vkResetCommandBuffer"))
8833 {
8834 return (void*)entry_vkResetCommandBuffer;
8835 }
8836 if (!strcmp(name, "vkCmdBindPipeline"))
8837 {
8838 return (void*)entry_vkCmdBindPipeline;
8839 }
8840 if (!strcmp(name, "vkCmdSetViewport"))
8841 {
8842 return (void*)entry_vkCmdSetViewport;
8843 }
8844 if (!strcmp(name, "vkCmdSetScissor"))
8845 {
8846 return (void*)entry_vkCmdSetScissor;
8847 }
8848 if (!strcmp(name, "vkCmdSetLineWidth"))
8849 {
8850 return (void*)entry_vkCmdSetLineWidth;
8851 }
8852 if (!strcmp(name, "vkCmdSetDepthBias"))
8853 {
8854 return (void*)entry_vkCmdSetDepthBias;
8855 }
8856 if (!strcmp(name, "vkCmdSetBlendConstants"))
8857 {
8858 return (void*)entry_vkCmdSetBlendConstants;
8859 }
8860 if (!strcmp(name, "vkCmdSetDepthBounds"))
8861 {
8862 return (void*)entry_vkCmdSetDepthBounds;
8863 }
8864 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8865 {
8866 return (void*)entry_vkCmdSetStencilCompareMask;
8867 }
8868 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8869 {
8870 return (void*)entry_vkCmdSetStencilWriteMask;
8871 }
8872 if (!strcmp(name, "vkCmdSetStencilReference"))
8873 {
8874 return (void*)entry_vkCmdSetStencilReference;
8875 }
8876 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8877 {
8878 return (void*)entry_vkCmdBindDescriptorSets;
8879 }
8880 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8881 {
8882 return (void*)entry_vkCmdBindIndexBuffer;
8883 }
8884 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8885 {
8886 return (void*)entry_vkCmdBindVertexBuffers;
8887 }
8888 if (!strcmp(name, "vkCmdDraw"))
8889 {
8890 return (void*)entry_vkCmdDraw;
8891 }
8892 if (!strcmp(name, "vkCmdDrawIndexed"))
8893 {
8894 return (void*)entry_vkCmdDrawIndexed;
8895 }
8896 if (!strcmp(name, "vkCmdDrawIndirect"))
8897 {
8898 return (void*)entry_vkCmdDrawIndirect;
8899 }
8900 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8901 {
8902 return (void*)entry_vkCmdDrawIndexedIndirect;
8903 }
8904 if (!strcmp(name, "vkCmdDispatch"))
8905 {
8906 return (void*)entry_vkCmdDispatch;
8907 }
8908 if (!strcmp(name, "vkCmdDispatchIndirect"))
8909 {
8910 return (void*)entry_vkCmdDispatchIndirect;
8911 }
8912 if (!strcmp(name, "vkCmdCopyBuffer"))
8913 {
8914 return (void*)entry_vkCmdCopyBuffer;
8915 }
8916 if (!strcmp(name, "vkCmdCopyImage"))
8917 {
8918 return (void*)entry_vkCmdCopyImage;
8919 }
8920 if (!strcmp(name, "vkCmdBlitImage"))
8921 {
8922 return (void*)entry_vkCmdBlitImage;
8923 }
8924 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8925 {
8926 return (void*)entry_vkCmdCopyBufferToImage;
8927 }
8928 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8929 {
8930 return (void*)entry_vkCmdCopyImageToBuffer;
8931 }
8932 if (!strcmp(name, "vkCmdUpdateBuffer"))
8933 {
8934 return (void*)entry_vkCmdUpdateBuffer;
8935 }
8936 if (!strcmp(name, "vkCmdFillBuffer"))
8937 {
8938 return (void*)entry_vkCmdFillBuffer;
8939 }
8940 if (!strcmp(name, "vkCmdClearColorImage"))
8941 {
8942 return (void*)entry_vkCmdClearColorImage;
8943 }
8944 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8945 {
8946 return (void*)entry_vkCmdClearDepthStencilImage;
8947 }
8948 if (!strcmp(name, "vkCmdClearAttachments"))
8949 {
8950 return (void*)entry_vkCmdClearAttachments;
8951 }
8952 if (!strcmp(name, "vkCmdResolveImage"))
8953 {
8954 return (void*)entry_vkCmdResolveImage;
8955 }
8956 if (!strcmp(name, "vkCmdSetEvent"))
8957 {
8958 return (void*)entry_vkCmdSetEvent;
8959 }
8960 if (!strcmp(name, "vkCmdResetEvent"))
8961 {
8962 return (void*)entry_vkCmdResetEvent;
8963 }
8964 if (!strcmp(name, "vkCmdWaitEvents"))
8965 {
8966 return (void*)entry_vkCmdWaitEvents;
8967 }
8968 if (!strcmp(name, "vkCmdPipelineBarrier"))
8969 {
8970 return (void*)entry_vkCmdPipelineBarrier;
8971 }
8972 if (!strcmp(name, "vkCmdBeginQuery"))
8973 {
8974 return (void*)entry_vkCmdBeginQuery;
8975 }
8976 if (!strcmp(name, "vkCmdEndQuery"))
8977 {
8978 return (void*)entry_vkCmdEndQuery;
8979 }
8980 if (!strcmp(name, "vkCmdResetQueryPool"))
8981 {
8982 return (void*)entry_vkCmdResetQueryPool;
8983 }
8984 if (!strcmp(name, "vkCmdWriteTimestamp"))
8985 {
8986 return (void*)entry_vkCmdWriteTimestamp;
8987 }
8988 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8989 {
8990 return (void*)entry_vkCmdCopyQueryPoolResults;
8991 }
8992 if (!strcmp(name, "vkCmdPushConstants"))
8993 {
8994 return (void*)entry_vkCmdPushConstants;
8995 }
8996 if (!strcmp(name, "vkCmdBeginRenderPass"))
8997 {
8998 return (void*)entry_vkCmdBeginRenderPass;
8999 }
9000 if (!strcmp(name, "vkCmdNextSubpass"))
9001 {
9002 return (void*)entry_vkCmdNextSubpass;
9003 }
9004 if (!strcmp(name, "vkCmdEndRenderPass"))
9005 {
9006 return (void*)entry_vkCmdEndRenderPass;
9007 }
9008 if (!strcmp(name, "vkCmdExecuteCommands"))
9009 {
9010 return (void*)entry_vkCmdExecuteCommands;
9011 }
9012#endif
9013#ifdef VK_VERSION_1_1
9014 if (!strcmp(name, "vkEnumerateInstanceVersion"))
9015 {
9016 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
9017 }
9018 if (!strcmp(name, "vkBindBufferMemory2"))
9019 {
9020 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
9021 }
9022 if (!strcmp(name, "vkBindImageMemory2"))
9023 {
9024 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
9025 }
9026 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
9027 {
9028 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
9029 }
9030 if (!strcmp(name, "vkCmdSetDeviceMask"))
9031 {
9032 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
9033 }
9034 if (!strcmp(name, "vkCmdDispatchBase"))
9035 {
9036 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
9037 }
9038 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
9039 {
9040 return nullptr;
9041 }
9042 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
9043 {
9044 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
9045 }
9046 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
9047 {
9048 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
9049 }
9050 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
9051 {
9052 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
9053 }
9054 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
9055 {
9056 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
9057 }
9058 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
9059 {
9060 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
9061 }
9062 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
9063 {
9064 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
9065 }
9066 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9067 {
9068 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
9069 }
9070 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9071 {
9072 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
9073 }
9074 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9075 {
9076 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
9077 }
9078 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9079 {
9080 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
9081 }
9082 if (!strcmp(name, "vkTrimCommandPool"))
9083 {
9084 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
9085 }
9086 if (!strcmp(name, "vkGetDeviceQueue2"))
9087 {
9088 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
9089 }
9090 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9091 {
9092 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
9093 }
9094 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9095 {
9096 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
9097 }
9098 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9099 {
9100 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
9101 }
9102 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9103 {
9104 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
9105 }
9106 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9107 {
9108 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
9109 }
9110 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9111 {
9112 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
9113 }
9114 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9115 {
9116 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
9117 }
9118 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9119 {
9120 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
9121 }
9122 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9123 {
9124 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
9125 }
9126#endif
9127#ifdef VK_KHR_surface
9128 if (!strcmp(name, "vkDestroySurfaceKHR"))
9129 {
9130 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9131 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
9132 }
9133 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9134 {
9135 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9136 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
9137 }
9138 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9139 {
9140 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9141 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
9142 }
9143 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9144 {
9145 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9146 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
9147 }
9148 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9149 {
9150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9151 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
9152 }
9153#endif
9154#ifdef VK_KHR_swapchain
9155 if (!strcmp(name, "vkCreateSwapchainKHR"))
9156 {
9157 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9158 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9159 }
9160 if (!strcmp(name, "vkDestroySwapchainKHR"))
9161 {
9162 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9163 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9164 }
9165 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9166 {
9167 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9168 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9169 }
9170 if (!strcmp(name, "vkAcquireNextImageKHR"))
9171 {
9172 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9173 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9174 }
9175 if (!strcmp(name, "vkQueuePresentKHR"))
9176 {
9177 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9178 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9179 }
9180 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9181 {
9182 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9183 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9184 }
9185 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9186 {
9187 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9188 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9189 }
9190 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9191 {
9192 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9193 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9194 }
9195 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9196 {
9197 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9198 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9199 }
9200#endif
9201#ifdef VK_KHR_display
9202 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9203 {
9204 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9205 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9206 }
9207 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9208 {
9209 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9210 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9211 }
9212 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9213 {
9214 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9215 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9216 }
9217 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9218 {
9219 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9220 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9221 }
9222 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9223 {
9224 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9225 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9226 }
9227 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9228 {
9229 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9230 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9231 }
9232 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9233 {
9234 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9235 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9236 }
9237#endif
9238#ifdef VK_KHR_display_swapchain
9239 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9240 {
9241 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9242 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9243 }
9244#endif
9245#ifdef VK_KHR_xlib_surface
9246 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9247 {
9248 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9249 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9250 }
9251 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9252 {
9253 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9254 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9255 }
9256#endif
9257#ifdef VK_KHR_xcb_surface
9258 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9259 {
9260 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9261 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9262 }
9263 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9264 {
9265 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9266 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9267 }
9268#endif
9269#ifdef VK_KHR_wayland_surface
9270 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9271 {
9272 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9273 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9274 }
9275 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9276 {
9277 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9278 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9279 }
9280#endif
9281#ifdef VK_KHR_mir_surface
9282 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9283 {
9284 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9285 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9286 }
9287 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9288 {
9289 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9290 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9291 }
9292#endif
9293#ifdef VK_KHR_android_surface
9294 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9295 {
9296 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9297 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9298 }
9299#endif
9300#ifdef VK_KHR_win32_surface
9301 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9302 {
9303 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9304 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9305 }
9306 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9307 {
9308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9309 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9310 }
9311#endif
9312#ifdef VK_KHR_get_physical_device_properties2
9313 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9314 {
9315 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9316 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9317 }
9318 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9319 {
9320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9321 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9322 }
9323 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9324 {
9325 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9326 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9327 }
9328 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9329 {
9330 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9331 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9332 }
9333 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9334 {
9335 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9336 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9337 }
9338 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9339 {
9340 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9341 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9342 }
9343 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9344 {
9345 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9346 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9347 }
9348#endif
9349#ifdef VK_KHR_device_group
9350 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9351 {
9352 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9353 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9354 }
9355 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9356 {
9357 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9358 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9359 }
9360 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9361 {
9362 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9363 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9364 }
9365#endif
9366#ifdef VK_KHR_maintenance1
9367 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9368 {
9369 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9370 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9371 }
9372#endif
9373#ifdef VK_KHR_device_group_creation
9374 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9375 {
9376 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9377 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9378 }
9379#endif
9380#ifdef VK_KHR_external_memory_capabilities
9381 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9382 {
9383 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9384 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9385 }
9386#endif
9387#ifdef VK_KHR_external_memory_win32
9388 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9389 {
9390 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9391 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9392 }
9393 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9394 {
9395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9396 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9397 }
9398#endif
9399#ifdef VK_KHR_external_memory_fd
9400 if (!strcmp(name, "vkGetMemoryFdKHR"))
9401 {
9402 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9403 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9404 }
9405 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9406 {
9407 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9408 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9409 }
9410#endif
9411#ifdef VK_KHR_external_semaphore_capabilities
9412 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9413 {
9414 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9415 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9416 }
9417#endif
9418#ifdef VK_KHR_external_semaphore_win32
9419 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9420 {
9421 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9422 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9423 }
9424 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9425 {
9426 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9427 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9428 }
9429#endif
9430#ifdef VK_KHR_external_semaphore_fd
9431 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9432 {
9433 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9434 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9435 }
9436 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9437 {
9438 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9439 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9440 }
9441#endif
9442#ifdef VK_KHR_push_descriptor
9443 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9444 {
9445 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9446 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9447 }
9448 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9449 {
9450 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9451 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9452 }
9453#endif
9454#ifdef VK_KHR_descriptor_update_template
9455 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9456 {
9457 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9458 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9459 }
9460 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9461 {
9462 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9463 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9464 }
9465 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9466 {
9467 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9468 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9469 }
9470#endif
9471#ifdef VK_KHR_create_renderpass2
9472 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9473 {
9474 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9475 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9476 }
9477 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9478 {
9479 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9480 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9481 }
9482 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9483 {
9484 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9485 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9486 }
9487 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9488 {
9489 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9490 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9491 }
9492#endif
9493#ifdef VK_KHR_shared_presentable_image
9494 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9495 {
9496 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9497 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9498 }
9499#endif
9500#ifdef VK_KHR_external_fence_capabilities
9501 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9502 {
9503 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9504 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9505 }
9506#endif
9507#ifdef VK_KHR_external_fence_win32
9508 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9509 {
9510 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9511 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9512 }
9513 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9514 {
9515 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9516 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9517 }
9518#endif
9519#ifdef VK_KHR_external_fence_fd
9520 if (!strcmp(name, "vkImportFenceFdKHR"))
9521 {
9522 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9523 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9524 }
9525 if (!strcmp(name, "vkGetFenceFdKHR"))
9526 {
9527 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9528 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9529 }
9530#endif
9531#ifdef VK_KHR_get_surface_capabilities2
9532 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9533 {
9534 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9535 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9536 }
9537 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9538 {
9539 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9540 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9541 }
9542#endif
9543#ifdef VK_KHR_get_display_properties2
9544 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9545 {
9546 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9547 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9548 }
9549 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9550 {
9551 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9552 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9553 }
9554 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9555 {
9556 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9557 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9558 }
9559 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9560 {
9561 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9562 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9563 }
9564#endif
9565#ifdef VK_KHR_get_memory_requirements2
9566 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9567 {
9568 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9569 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9570 }
9571 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9572 {
9573 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9574 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9575 }
9576 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9577 {
9578 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9579 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9580 }
9581#endif
9582#ifdef VK_KHR_sampler_ycbcr_conversion
9583 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9584 {
9585 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9586 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9587 }
9588 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9589 {
9590 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9591 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9592 }
9593#endif
9594#ifdef VK_KHR_bind_memory2
9595 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9596 {
9597 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9598 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9599 }
9600 if (!strcmp(name, "vkBindImageMemory2KHR"))
9601 {
9602 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9603 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9604 }
9605#endif
9606#ifdef VK_KHR_maintenance3
9607 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9608 {
9609 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9610 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9611 }
9612#endif
9613#ifdef VK_KHR_draw_indirect_count
9614 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9615 {
9616 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9617 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9618 }
9619 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9620 {
9621 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9622 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9623 }
9624#endif
9625#ifdef VK_ANDROID_native_buffer
9626 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9627 {
9628 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9629 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9630 }
9631 if (!strcmp(name, "vkAcquireImageANDROID"))
9632 {
9633 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9634 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9635 }
9636 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9637 {
9638 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9639 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9640 }
9641#endif
9642#ifdef VK_EXT_debug_report
9643 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9644 {
9645 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9646 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9647 }
9648 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9649 {
9650 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9651 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9652 }
9653 if (!strcmp(name, "vkDebugReportMessageEXT"))
9654 {
9655 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9656 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9657 }
9658#endif
9659#ifdef VK_EXT_debug_marker
9660 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9661 {
9662 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9663 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9664 }
9665 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9666 {
9667 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9668 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9669 }
9670 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9671 {
9672 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9673 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9674 }
9675 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9676 {
9677 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9678 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9679 }
9680 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9681 {
9682 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9683 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9684 }
9685#endif
9686#ifdef VK_AMD_draw_indirect_count
9687 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9688 {
9689 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9690 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9691 }
9692 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9693 {
9694 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9695 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9696 }
9697#endif
9698#ifdef VK_AMD_shader_info
9699 if (!strcmp(name, "vkGetShaderInfoAMD"))
9700 {
9701 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9702 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9703 }
9704#endif
9705#ifdef VK_NV_external_memory_capabilities
9706 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9707 {
9708 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9709 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9710 }
9711#endif
9712#ifdef VK_NV_external_memory_win32
9713 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9714 {
9715 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9716 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9717 }
9718#endif
9719#ifdef VK_NN_vi_surface
9720 if (!strcmp(name, "vkCreateViSurfaceNN"))
9721 {
9722 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9723 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9724 }
9725#endif
9726#ifdef VK_EXT_conditional_rendering
9727 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9728 {
9729 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9730 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9731 }
9732 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9733 {
9734 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9735 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9736 }
9737#endif
9738#ifdef VK_NVX_device_generated_commands
9739 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9740 {
9741 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9742 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9743 }
9744 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9745 {
9746 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9747 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9748 }
9749 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9750 {
9751 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9752 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9753 }
9754 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9755 {
9756 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9757 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9758 }
9759 if (!strcmp(name, "vkCreateObjectTableNVX"))
9760 {
9761 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9762 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9763 }
9764 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9765 {
9766 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9767 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9768 }
9769 if (!strcmp(name, "vkRegisterObjectsNVX"))
9770 {
9771 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9772 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9773 }
9774 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9775 {
9776 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9777 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9778 }
9779 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9780 {
9781 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9782 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9783 }
9784#endif
9785#ifdef VK_NV_clip_space_w_scaling
9786 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9787 {
9788 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9789 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9790 }
9791#endif
9792#ifdef VK_EXT_direct_mode_display
9793 if (!strcmp(name, "vkReleaseDisplayEXT"))
9794 {
9795 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9796 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9797 }
9798#endif
9799#ifdef VK_EXT_acquire_xlib_display
9800 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9801 {
9802 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9803 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9804 }
9805 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9806 {
9807 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9808 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9809 }
9810#endif
9811#ifdef VK_EXT_display_surface_counter
9812 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9813 {
9814 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9815 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9816 }
9817#endif
9818#ifdef VK_EXT_display_control
9819 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9820 {
9821 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9822 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9823 }
9824 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9825 {
9826 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9827 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9828 }
9829 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9830 {
9831 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9832 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9833 }
9834 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9835 {
9836 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9837 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9838 }
9839#endif
9840#ifdef VK_GOOGLE_display_timing
9841 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9842 {
9843 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9844 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9845 }
9846 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9847 {
9848 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9849 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9850 }
9851#endif
9852#ifdef VK_EXT_discard_rectangles
9853 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9854 {
9855 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9856 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9857 }
9858#endif
9859#ifdef VK_EXT_hdr_metadata
9860 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9861 {
9862 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9863 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9864 }
9865#endif
9866#ifdef VK_MVK_ios_surface
9867 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9868 {
9869 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9870 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9871 }
9872#endif
9873#ifdef VK_MVK_macos_surface
9874 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9875 {
9876 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9877 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9878 }
9879#endif
9880#ifdef VK_EXT_debug_utils
9881 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9882 {
9883 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9884 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9885 }
9886 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9887 {
9888 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9889 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9890 }
9891 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9892 {
9893 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9894 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9895 }
9896 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9897 {
9898 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9899 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9900 }
9901 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9902 {
9903 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9904 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9905 }
9906 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9907 {
9908 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9909 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9910 }
9911 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9912 {
9913 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9914 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9915 }
9916 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9917 {
9918 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9919 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9920 }
9921 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9922 {
9923 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9924 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9925 }
9926 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9927 {
9928 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9929 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9930 }
9931 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9932 {
9933 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9934 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9935 }
9936#endif
9937#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9938 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9939 {
9940 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9941 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9942 }
9943 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9944 {
9945 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9946 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9947 }
9948#endif
9949#ifdef VK_EXT_sample_locations
9950 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9951 {
9952 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9953 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9954 }
9955 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9956 {
9957 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9958 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9959 }
9960#endif
9961#ifdef VK_EXT_validation_cache
9962 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9963 {
9964 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9965 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9966 }
9967 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9968 {
9969 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9970 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9971 }
9972 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9973 {
9974 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9975 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9976 }
9977 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9978 {
9979 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9980 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9981 }
9982#endif
9983#ifdef VK_EXT_external_memory_host
9984 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9985 {
9986 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9987 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9988 }
9989#endif
9990#ifdef VK_AMD_buffer_marker
9991 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9992 {
9993 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9994 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9995 }
9996#endif
9997#ifdef VK_NV_device_diagnostic_checkpoints
9998 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9999 {
10000 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
10001 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
10002 }
10003 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
10004 {
10005 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
10006 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
10007 }
10008#endif
10009#ifdef VK_GOOGLE_address_space
10010 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
10011 {
10012 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
10013 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080010014 }
10015#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080010016#ifdef VK_GOOGLE_color_buffer
10017 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
10018 {
10019 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
10020 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
10021 }
10022 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
10023 {
10024 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
10025 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
10026 }
10027#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070010028#ifdef VK_GOOGLE_sized_descriptor_update_template
10029 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
10030 {
10031 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
10032 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
10033 }
10034#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010035#ifdef VK_GOOGLE_async_command_buffers
10036 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
10037 {
10038 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10039 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
10040 }
10041 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
10042 {
10043 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10044 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
10045 }
10046 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
10047 {
10048 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10049 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
10050 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070010051 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
10052 {
10053 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10054 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
10055 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010056#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +000010057#ifdef VK_GOOGLE_create_resources_with_requirements
10058 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
10059 {
10060 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10061 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
10062 }
10063 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
10064 {
10065 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10066 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
10067 }
10068#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080010069#ifdef VK_GOOGLE_address_space_info
10070 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
10071 {
10072 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
10073 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
10074 }
10075#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070010076#ifdef VK_GOOGLE_free_memory_sync
10077 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
10078 {
10079 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
10080 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
10081 }
10082#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010083#ifdef VK_GOOGLE_async_queue_submit
10084 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
10085 {
10086 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10087 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
10088 }
10089 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
10090 {
10091 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10092 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
10093 }
10094 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
10095 {
10096 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10097 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
10098 }
10099 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
10100 {
10101 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10102 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
10103 }
10104#endif
Yilong Lia48b0102020-09-15 15:08:28 -070010105#ifdef VK_GOOGLE_linear_image_layout
10106 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
10107 {
10108 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout");
10109 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
10110 }
10111#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -080010112#ifdef VK_MVK_moltenvk
10113 if (!strcmp(name, "vkGetMTLDeviceMVK"))
10114 {
10115 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10116 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
10117 }
10118 if (!strcmp(name, "vkSetMTLTextureMVK"))
10119 {
10120 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10121 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
10122 }
10123 if (!strcmp(name, "vkGetMTLTextureMVK"))
10124 {
10125 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10126 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
10127 }
10128 if (!strcmp(name, "vkGetMTLBufferMVK"))
10129 {
10130 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10131 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
10132 }
10133 if (!strcmp(name, "vkUseIOSurfaceMVK"))
10134 {
10135 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10136 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
10137 }
10138 if (!strcmp(name, "vkGetIOSurfaceMVK"))
10139 {
10140 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10141 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
10142 }
10143#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010144 return nullptr;
10145}
10146
10147} // namespace goldfish_vk